文章目录
5.1 传输层提供的服务
5.1.1 传输层功能
传输层 | 网络层 |
---|---|
进程与进程之间的通信 | 主机与主机之间的通信 |
5.1.2 传输层的寻址与端口
数据链路层 | 网络层 | 传输层 |
---|---|---|
MAC地址 | IP地址 | 端口 |
5.1.3 无连接服务与面向连接服务
TCP(面向连接) | UDP (无连接) |
---|---|
HTTP、TELNET、FTP | DNS、SMTP、TFTP、SNMP |
面向字节/字节流 | 面向报文 |
5.2 UDP协议
5.2.1 UDP数据报
UDP首部格式
- UDP协议实现分用依据 目的端口号
- 长度:
UDP数据报的整个长度(包括首部和数据)
最小是8B(仅有首部) - 校验和:
检验UDP数据报是否有错
5.2.2 UDP校验
例题
UDP首部为8B 源端口、目的端口、UDP数据报长度、校验和
都是2B/16bit
5.3 TCP协议
5.3.1 TCP协议的特点
5.3.2 TCP报文段
- 源端口和目的端口:
各占2B
用来实现复用和分用功能 - 序号字段:
占4B
本报文段所发送的数据字段的第一个序号(因为是按字节/字节流发送;所以一个TCP报文段可汗多个字节)
- 确认号字段:
占4B
期望收到对方下一个报文段的数据的第一个字节序号
- 数据偏移:
占4位
描述首部长度(数据起始处距离TCP报文段起始处的距离)
单位为4B
- URG:
URG=1
表示有紧急数据(可以插队传送) - 确认位ACK:
ACK=1时确认号才有效
- 推送位PSH:
PSH=1
收到报文段就交付,不用等缓存队列满了再交付 - 复位位RST:
RST=1表示连接出现严重差错
- 同步位SYN:
SYN=1表示是一个
连接请求/接收报文
SYN=1 ACK=0 #连接请求报文
SYN=1 ACK=1 #连接响应报文
-
终止位FIN:
FIN=1表示数据已发送完毕
-
窗口:现在允许对方发送的数据量
-
校验和:
校验
首部和数据部分(也要和UDP一样加上12B伪首部UDP是17、TCP是6)
-
紧急指针:
配合URG=1时使用
5.3.3 TCP连接管理
例题
5.3.4 TCP可靠传输
5.3.5 TCP流量控制
因为发送窗口为400,seq=201虽然丢失,但也占用发送窗口,超时请求重传
rwnd=0
:发送窗口为0,不要再发数据了
5.3.6 TCP拥塞控制
ssthresh
为慢开始门限
出现拥塞时
把拥塞窗口置为1新的ssthresh
置为网络拥塞时的窗口1/2
出现拥塞时
把拥塞窗口置为新的ssthresh(门限)ssthresh门限和慢开始一样,为拥塞时窗口的1/2
==(而不是1)
然后拥塞窗口线性增长
因为拥塞窗口等于新的门限值所以只有线性增长不是指数增长