计算机网络 - Charles-Charmless/Charles-Charmless.github.io GitHub Wiki
应用层
传输层
tcp报文段结构
网络层
- TCP,UDP传输层协议
- 为运行在不同主机上的应用进程之间提供逻辑通信
网络层提供了主机之间的逻辑通信,运输层为运行在不同主机上的进程之间提供了逻辑通信。
运输层协议只工作在端系统中,负责将应用进程的报文移动到网络边缘(网络层)
tcp:可靠,面向连接,报文段
udp:不可靠,无连接,数据报
将主机间交付扩展到进程间交付被称为运输层的多路复用和多路分解
进程到进程的数据交付和差错检查是两种最低限度的传输层服务(udp所能提供的仅有的两种服务),除此之外,tcp还提供可靠的数据传输(通过使用流量控制,序号,确认和定时器)和阻塞控制
- 多路分解:将运输层报文段中的数据交付到正确的套接字。
- 多路复用:将源主机从不同的套接字收集数据块,并为每个数据块封装上头部信息,(用来后续分解),从而生成报文段,然后将报文段传递到网络层。
套接字的唯一标识符:端口号。
一个udp套接字是由一个二元组来全面标识的,该二元组包含一个目的ip地址和一个目的端口地址。
tcp套接字是由一个四元组来标识的:源ip地址,源端口号,目的ip地址,目的端口号。与udp不同,两个具有不同源ip地址和端口号的到达tcp报文将被定向到两个不同的套接字,除非携带了初始创建连接的请求。
tcp阻塞控制防止任何一条tcp连接用过多的流量来淹没通信主机之间的链路和交换设备。
udp流量不可调节。
套接字用来连接传输层和网络层。
ARP自动重传请求,数据包错误,请求重传
- 差错检验
- 接受方反馈
- 重传
可靠传输协议:
- 1.0
- 2.0 加入自动重传请求,停等协议
- 2.1 加入数据分组编号
- 2.2
- 3.0 加入倒计数定时器,比特交替协议
对于SR(选择重传)协议而言,窗口长必须小于或等于序号空间大小的一半
tcp首部一般是20个字节
udp首部一般是12个字节
源端口和目的端口被用于多路复用和多路分解
序号和确认号字段被tcp发送方和接受方用来实现可靠数据传输服务。
接收窗口字段:用于流量控制,指示接收方愿意接收的字节数量
首部长度字段:指示了以32比特的字节为单位的TCP首部长度(由于tcp选项字段原因,tcp首部的长度是可变的)
可选与变长的选项字段:用于发送方与接收方协商最大报文段长度(MSS)时,或在高速网络环境下用作窗口调节因子时使用。
标志字段:
- ACK:指示确认字段中的值是有效的,即报文段包含一个对已被成功接收报文段的确认
- RST:
- SYN:
- FIN:
- PSH:表示接收方应立即将数据交给上层
- URG:指示报文段里存在着被发送端的上层尸体置为“紧急”的数据
主机A填充报文段的确认号是主机A期望从主机B收到的下一个字节的序号
tcp被称为提供累积确认
ip协议(网际协议)
ip服务模型为尽力而为交付服务,不确保报文段的交付,也不保证报文段的按序交付。