5.0 重点
5.1 传输层提供的服务
进程间的逻辑通信
传输层寻址与端口
- 端口 是传输层的 TSAP (Transport Service Access Point)
- 端口号长度 16 bit
- 套接字 = (主机 IP, 端口号)
5.2 UDP
首部
- 固定长度 8B
- 16 位源端口号
- 16 位目的端口号
- 16 位 UDP 长度:包括首部和数据,于是最小为 8
- 校验和(可选)
校验和
- 添加伪首部
- 按二进制反码计算和
5.3 TCP 协议
特点
- 面向连接
- 每条 TCP 仅对应两个端点
- 可靠服务
- 全双工通信
- 面向字节流
TCP 报文段
- 组成
- 源端口 2B
- 目的端口 2B
- 序号字段 seq 4B
- 确认号字段 ack 4B
- 数据偏移(首部长度) 4b,单位4B,即最长首部 60B
- 保留字段 6b
- 紧急位URG:为1时应尽快发送
- 确认位ACK
- 推送位PSH:为1时需尽快交付给进程
- 复位位RST:为1时表示连接有严重差错
- 同步位SYN:为1时表示是连接请求或者连接接收报文
- 终止位FIN:为1时表示要求释放连接
- 窗口子段 2B,单位为 1B,即最大表示 65535B 大小的窗口
- 校验和 2B
- 紧急指针字段 2B:指明报文首部紧急数据的位数
- 选项字段 可变长
- 填充字段 使首部长度为4B整数倍
- 建立连接
- SYN = 1, seq =x
- SYN = 1, ACK = 1, seq = y, ack = x + 1
- ACK = 1, seq = x + 1, ack = y + 1
- 连接释放
- FIN = 1, seq = u
- (如果还有数据) ACK = 1, seq = v, ack = u + 1
- FIN = 1, ACK = 1, seq = w, ack = u + 1
- ACK = 1, seq = u + 1, ack = w + 1
TCP 可靠传输
- 序号
- 确认
- 重传
- 超时
- 冗余重传(快速重传)
TCP 流量控制
- 动态修改 接受窗口 字段值
TCP 拥塞控制
- 动态计算 拥塞窗口 上限值
- 最终 发送窗口 = min(接受窗口,拥塞窗口)
- 慢开始算法
- 从 $2^0$ 开始按指数上升至门限 ssthresh
- 拥塞避免算法
- 每次窗口仅增加一个 MSS(最大报文段长度)
- 出现超时后 当前窗口大小归 1 ,重新慢开始,且将门限 ssthresh 砍半
- 快恢复
- 当出现快速重传时,将当前窗口大小砍半,不改变门限,直接进行拥塞避免算法