端口
- 每个应用程序进出网络都需要经过一个唯一端口,通过端口号来识别数据交由哪个应用程序处理。
- 服务端:固定端口号。
- 客户端:1024以上随机端口。
- 知名端口号:
- TCP80:HTTP
- TCP20:FTP
- TCP23:Telnet
- TCP25:SMTP(远端邮件传输协议)
- UDP53:DNS
TCP
TCP报文格式
- 源端口
- 目的端口
- 序列号
- 确认号(ACK):期望下一次从对方收到数据包的序列号
- 数据偏移:用于数据分段的重组
- 保留:后续功能扩展
- 置位符:
- SYN:同步标志位
- FIN:结束标志位
- ACK:确认标志位
- RST:重置标志位,直接强行结束TCP连接
- URG:紧急开关标志位,数据段里面有紧急内容,需要优先转发
- PSH
- 窗口:
- 校验和
- 紧急指针:指示报文中紧急的内容的位置
- 选项
- 填充
TCP可靠性机制
- 确认机制
Seq=上一次的ACK
ACK=上一次的seq+length
如果没有接收到,或接收到的是不完整数据,会再次发送ACK请求对方重发。
- 三次握手
ps:四次挥手 - 窗口机制
滑动窗口:通过通告对方本机接收能力,来实现流量控制。
- 完整性校验
通过Checksum来检查数据完整性
TCP特征
- 优点:传输可靠性高
- 缺点:占用带宽高,传输延迟高
- 适用场景:对数据完整性要求高,但是对传输延迟要求低
UDP
UDP报文格式
UDP特征
- 优点:占用带宽低,传输延迟低
- 缺点:没有任何可靠性机制
- UDP适用场景:对传输延迟要求高,但数据完整性要求低