1. 传输层的作用概述
- 提供 TCP/UDP 的数据传输服务
- 维护会话状态
- 对应用层数据进行分段和封装
- 执行流量控制(Window 窗口大小)
- 「TCP(IP 协议号 6)」: 面向连接(可靠),开销大(Header 复杂);在不可靠的链路可靠传输
- 「UDP(IP 协议号 17)」: 无连接(不可靠),开销小(Header 简单);在较可靠的链路上传输
- 「TCP/UDP」都是依靠端口号转发
- 「TCP/UDP」不能被分片
- 通过端口实现多路复用,可用的端口号最大 65535(216)
- 小于1024(0~1023)的端口号为知名端口号(已有协议使用),其他为随机端口
2. TCP
- 面向连接,可靠的传输层协议,因为三次握手建立连接,四次挥手断开连接和重传机制
- 端口号大的一端主动发起连接
1)建立和端口 Session 过程
TCP是一个[双向]协议,先建立「Session」(三次握手)在传输数据。如果 TCP 数据包丢了,可以通过「序列号(seq)」找出并重传丢失的数据包
2)TCP Header Message 格式
TCP标准 Header 长度 20Byte。如果有可选项,长度持续增大
- TCP Header Message 字段解释
- Source Port:源端口
- Destination Port:目的端口
- Sequence Number:32bit,序列号(随机数),丢失检测、乱序重排
- Acknowledgment Number:32bit,确认号(对端序列号+1)
- Data Offset:4bit,Header 长度
- Flags
- URG:紧急位(需要尽快传送的高优先级流量,与紧急指针联动)
- ACK:确认建立会话
- PSH:尽快推送给应用层
- RST:重新连接
- SYN:请求建立会话(三次握手)
- FIN:中止会话(四次挥手)
- Window:16bit,滑动窗口(流控,控制发送数据 Byte 的大小)
- Checksum:校验和
- Urgent Pointer:紧急指针
- Options:可选项
- UDP Header 报文字段解释
- Source Port:源端口
- Destination Port:目的端口
- Length:总长度(UDP Header + Data)
- Checksum:校验和
- Data:数据