tcp头分析
偏移:头部长度(包含选项和填充)
保留区:6个0
URG-紧急指针有效
ACK-确认序号有效
PSH-接收方应尽快将这个报文交给应用层
RST-连接重置
SYN-同步序号用来发起一个连接
FIN-终止一个连接
窗口字段:窗口的字节容量
校验和:看数据有没有被改
紧急指针:是一个正偏移量,与序号字段中的值相加表示紧急数据最后一个字节的序号。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式
选项与填充(必须为4字节整数倍,不够补0):
最常见的可选字段的最长报文大小MSS(Maximum Segment Size),每个连接方通常都在一个报文段中指明这个选项。它指明本端所能接收的最大长度的报文段。该选项如果不设置,默认为536(20+20+536=576字节的IP数据报)
MMS确认
最大消息长度在第三次握手时确定
窗口控制
收到一个再发一个太慢了,
一次发多个,用窗口报存
高速重发控制
一次没收到再等一等,说不定下一秒就到了,连续三次催了再重发
流控制
没处理的多了就把窗口调小,另一端就会发少一点。
拥塞控制
选min(接受端允许窗口大小,拥塞窗口大小)作为发包多少的标准。
拥塞窗口:建立连接初始为0,每收到ACK应答就快速变大。
一开始不允许发太多,防止一开始就卡死;
重复确认应答:窗口减半;(高速重发控制,遇到连续3次催)
超时:窗口设0;
nagle算法(内容及优缺点)
发的都有ack回 || 当前要发的积累到MSS了 才发
减少发包数,可能会产生延迟;
延迟确认应答机制
等窗口里的包处理一些了再回(应答包的窗口大小会大一点)
捎带应答机制
延迟确认应答机制的基础上,把确认应答塞到要回的数据包里;
减少发包数量。
缺:长时间没准备好数据包,会连应答也没发回去。
转载:https://blog.csdn.net/qq_42948022/article/details/102487940