目录
运输层协议概述
进程之间的通信
运输层的两个主要协议
运输层的端口
用户数据报协议 UDP
UDP 概述
UDP的首部格式
传输控制协议 TCP 概述
TCP 最主要的特点
TCP的连接
可靠传输的工作原理
停止等待协议
连续 ARQ 协议
TCP 报文段的首部格式
TCP可靠传输的实现
以字节为单位的滑动窗口
超时重传时间的选择
选择确认 SACK
TCP的流量控制
利用滑动窗口实现流量控制
TCP 的传输效率
TCP的拥塞控制
拥塞控制的一般原理
TCP 的拥塞控制方法
主动队列管理 AQM(了解即可)
TCP 的运输连接管理
TCP 的连接建立
TCP 的连接释放
TCP 的有限状态机
两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元 TPDU 。
TCP 传送的数据单位协议是 TCP 报文段 (segment)。
UDP 传送的数据单位协议是 UDP 报文或用户数据报。
源端口:源端口号。在需要对方回信时选用。不需要时可用全 0
目的端口:目的端口号。终点交付报文时必须使用
长度:UDP 用户数据报的长度,其最小值是 8(仅有首部)
检验和:检测 UDP 用户数据报在传输中是否有错。有错就丢弃
伪首部的第三个字段为全0
第四个字段17代表,封装UDP报文的IP数据报首部协议字段是17。
UDP长度:UDP首部8B+数据部分长度(不包括伪首部)
假设A发送确认分组时间为TD B发送确认分组时间为TA
确认丢失也不必重传指的是发送方在超时计时器到期后也不必重发某些分组 只需要等待累计确认再进行重发即可
源端口和目的端口:各占 2 字节。端口是运输层与应用层的服务接口。 运输层的复用和分用功能通过端口实现
序号:占 4 字节。TCP 连接中传送的数据流中的每一个字节都有一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号
确认号:占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号
若确认号 = N,则表明:到序号 N – 1 为止的所有数据都已正确收到
数据偏移(即首部长度):占 4 位,指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。单位是 32 位字(以 4 字节为计算单位)
保留:占 6 位,保留为今后使用,但目前应置为 0
紧急 URG:控制位。当 URG = 1 时,表明紧急指针字段有效,告诉系统此报文段中有紧急数据,应尽快传送 (相当于高优先级的数据)
确认 ACK:控制位。只有当 ACK =1 时,确认号字段才有效。当 ACK =0 时,确认号无效
推送 PSH (PuSH) :控制位。接收 TCP 收到 PSH = 1 的报文段后,就尽快(即“推送”向前)交付接收应用进程,而不再等到整个缓存都填满后再交付
复位 RST (ReSeT) :控制位。当 RST=1 时,表明 TCP 连接中出现严重差错(如主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接
同步 SYN (SYNchronization) :控制位。 同步 SYN = 1 表示这是一个连接请求或连接接受报文。 当 SYN = 1,ACK = 0 时,表明这是一个连接请求报文段。 当 SYN = 1,ACK = 1 时,表明这是一个连接接受报文段。
终止 FIN (FINish) :控制位。用来释放一个连接。 FIN=1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接
窗口:占 2 字节。 窗口值告诉对方:从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量(以字节为单位)
检验和:占 2 字节。检验和字段检验的范围包括首部和数据这两部分。 在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部 与UDP不同的是第四个字段为6 该字段代表封装TCP报文的IP数据报首部协议字段为6
紧急指针:占 2 字节。在 URG = 1时,指出本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据),指出了紧急数据的末尾在报文段中的位置
选项:长度可变,最长可达 40 字节
填充:使整个 TCP 首部长度是 4 字节的整数倍
MSS TCP报文段中数据部分的最大长度
确认 ACK:控制位。只有当 ACK =1 时,确认号字段才有效。当 ACK =0 时,确认号无效
序号(seq):占 4 字节。TCP 连接中传送的数据流中的每一个字节都有一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号
确认号(ack):占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号
当接收方接收窗口已满要求发送发不再发送后,若接收窗口空闲了允许A发送,但此信息丢失,会导致A等待接收B允许发送的消息,B等待接收A要发送的消息 造成死锁
为解决该问题 引入持续计时器
下列增加量可简单理解为发送发每收到一个确认 拥塞窗口就加一
拥塞窗口的单位应该是SMSS
慢开始门限变为MAX(原拥塞窗口的一半,2) 拥塞窗口大小为1
rwnd代表滑动窗口 cwnd代表拥塞窗口
通信子网包括物理层、数据链路层、网络层,资源子网包括会话层、表示层、应用层
传输层负责向高层用户屏蔽下面通信子网的细节(如网络拓扑、路由协议)
传输协议是否可靠取决于是否采用确认机制来确保传输的数据不丢失
套接字(IP地址:端口号)可以唯一确定一个在网络上通信的进程
端口号只标识本计算机应用层的各个进程,同一台计算机中的TCP和UDP分别拥有自己的端口号,二者互不干扰
当用户采用不可靠的UDP进行传输时,可靠性方面交由应用层负责
UDP中的伪首部字段仅仅是为了计算校验和 并不会一起发送出去
端口号分为服务器端和客户端 熟知端口号都属于服务器端,即某某端口号对应某服务器进程或客户端进程
IP首部中的协议字段 17代表UDP 6代表TCP
TCP报文段独有而UDP没有的是序列号字段 ---> 与可靠传输有关
滑动窗口(发送窗口和接收窗口)以字节为单位
发送窗口的大小 = min{接收窗口,拥塞窗口} 有可能接收方只接受而不取走 会导致接收窗口逐渐变小 从而影响发送窗口 要注意题目条件
TCP面向字节发送,每次发送xx大小的字节,但是发送确认是对发送了一个报文段大小的字节后进行确认,并非每发送一次字节数就发一次确认
注意SYN报文段和FIN报文段都需要消耗一个序列号
TCP规定SYN报文段不能携带数据 注意TCP建立和释放的状态转换