一、TCP协议格式
1.报头的含义
(1) 16位源端口号/16位目的端口号
自己的端口号 和 对方的端口号
(2) 4位首部长度
表示报头长度(TCP报头总长度 = 4位首部长度 * 4字节)最少有20字节
TCP报头总长度 -> 0000 ~ 1111 -> [0, 15] * 4 -> [0, 60] -> [20, 60] -> 0101 ~ 1111
(3) 32位序号/32位确认序号
TCP将每个字节的数据都进行了编号,即为序号
32位序号:标识发送的数据
32位确认序号:接收方已经收到了所有连续的
(4) 16位窗口大小
(5) 6个标志位
① SYN:请求建立连接
② FIN:通知对方本端要关闭
③ ACK:确认应答
④ PSH:用于催促接收方,让上层尽快取走数据
⑤ URG + 16位紧急指针:告诉系统此报文段中有紧急数据,应该尽快传送,而不按照原来的排队序列来传送
⑥ RST(reset):一个报文段发往基准的连接出现错误,TCP都会发出一个复位报文段
2.解包/分用
如何解包:通过4位首部长度得到报头长度,剩下的就是有效载荷
如何分用:通过目的端口号,就可以找到应用层的进程了,数据就可以交付给进程
二、TCP的策略
1.确认应答机制
(1)为什么网络传输时会存在不可靠问题?答:就是因为距离太长了
(2)不可靠问题的常见场景?答:丢包、乱序、校验错误、重复收到同一个报文…
(3)TCP的可靠性怎么保证?切入点:确认应答
2.超时重传机制
3.连接管理机制
4.流量控制
5.拥塞控制
6.延迟应答
捎带应答
三、面向字节流