计算机网络——传输层
运输层概述
TCP面向连接,UDP无连接
套接字 = (IP地址:端口号)
端口号:0~65535(16 bit )
熟知端口号:0~1023
可靠:使用确认机制确保数据不丢失
连接:
UDP
UDP数据报首部
| 16比特 源端口 | 16比特 目的端口 |
|---|---|
| 16比特 UDP长度 | 16比特 校验和 |
UDP校验
- 错误即抛弃
- 校验和可选,全0代表不校验,校验和恰好为全0,取全1
- 校验和采用模2加法(即反码运算)再取反的方法获得。
- 校验和计算对象为伪首部 + UDP数据报 + 1B填充字段(用来凑齐数据位为16的倍数)
TCP
TCP报文段
首部
- 16bit源端口 16bit目的端口
- 32bit序号(发送方)
- 32bit确认号(接收方)
- 4bit数据偏移(意味着最长15*4B的首部) 保留 标志位(用于确认机制,TCP连接等),16bit窗口(接收窗口,用于流量控制)
- 16bit检验和,16bit紧急指针
- (可变长选项)(填充字段(填充为4B倍数))
TCP连接管理
TCP连接建立
- --> SYN, seq 客户机伸手
- <-- SYN, ACK, seq, ack 服务器伸手
- --> data 客户机握手
客户机握手报文段到达服务器后,服务器才进入连接建立态,所以叫三次握手(实际上第二个RTT的开始就开始传数据了)
TCP连接释放
- --> FIN 客户机停止传送数据报文
- <-- ACK 服务器知晓客户机无数据
- <-- FIN 服务器停止传送
- --> ACK 客户机知晓
- --- 客户机等待,仅当服务器知晓 客户机知晓服务器停止 服务器才不会发送报文。服务器收到ACK知道数据传送终止,释放资源,引起客户机超时;超时后客户机知晓对方没有数据传送,释放资源。
TCP可靠传输
校验机制
丢弃校验失败的包(报文段损坏 = 报文段丢失)
确认机制
- 序号:保证TCP报文段之间的顺序正确,报文段的序号为首字节序号
- 确认:TCP使用累积确认,确认号代表未收到的第一个字节。
重传机制
保证可靠传输关键在于触发重传的机制:
超时重传(报文段丢失)
- 机制:每发送一个包启动一个计时器,由ACK停止,ACK超时则触发重传
- 超时重传时间RTO:由以移动平均的RTT计算得知。
快速重传(报文段丢失)
- 机制:当连续收到三个冗余ACK(即共计收到四个ACK),触发重传
TCP发送窗口
发送窗口大小 = min{rwnd, cwnd}
TCP流量控制:接收窗口rwnd
- 接收窗口大小以字节为单位
- 接收窗口大小由接收方填写,在窗口字段告知发送方
发送方限制未确认的数据量在rwnd之内
TCP拥塞控制:拥塞窗口cwnd
- cwnd以每个RTT按MSS为单位的速度增减。
- 拥塞控制是为了避免网络拥堵,流量控制是为了匹配接发速率
代表网络拥塞的不同事件导致不同策略(TCP Reno):
- 无拥塞:
- cwnd < ssthresh: cwnd = min{cwnd*2, ssthresh}(慢开始)
- cwnd > ssthresh: cwnd = cwnd + 1; (拥塞避免)
- 重传:ssthresh/2,cwnd = 1 (慢开始)
- 快重传:连续三个冗余ACK,ssthresh/2, cwnd = ssthresh (拥塞避免) (这个跳过慢开始的策略叫快恢复)。
杂记
- 应用层只是用而已。
- 运输层提供端口到端口通信,协议首部中只包含16bit的端口号,将传到主机的IP数据报分拣到各端口;
- 网络层提供IP到IP通信,协议中的SAC为4B(32bit)的IPv4地址,在网络中将上层数据包成IP快递送来送去;
- 数据链路层提供硬件到硬件通信,协议中的SAC为MAC地址
- 物理层是真传。
传输层的长度是全部长度,网络层的长度是首部长度

浙公网安备 33010602011771号