TCP
面向链接、可靠的字节流服务,全双工
1、头部,socket也指一个IP、端口对
2、三次握手 同时打开
3、连接超时 SYN间隔递增,大约75秒放弃
4、MSS TCP传往另一端的最大块数据的长度
只在SYN出现,MSS限制数据包最大值,滑动窗口与缓冲期有关
5、四次挥手 TIME_WAIT
6、状态变迁图
7、backlog 三次握手完成,应用层还没accept,积压队列长度
8、tcp确认延迟机制 ack不立即发送,数据捎带ack
9、nagel算法,任何时刻网络仅有一个未确认的tcp数据包,可以解决网络拥塞
1)达到MSS
2)包含FIN
3)超时
4)未启用nagle
cork算法将小数据包集中发送
10、滑动窗口 流量控制
11、tcp拥塞控制采用拥塞窗口(cwnd)控制
拥塞依据,即重传:
1.把ssthresh降低为cwnd值的一半
2.把cwnd重新设置为1
3.重新进入慢启动过程。
慢启动 当新建连接时,cwnd初始化为1个最大报文段(MSS)大小,发送端开始按照拥塞窗口大小发送数据,
每当有一个报文段被确认,cwnd就增加1个MSS大小
拥塞避免 慢启动达到一定门限ssthresh不再指数级上涨,而是加法增加,慢慢达到cwnd最佳值
快速重传:如果一连串收到3个或3个以上的重复ACK,就非常可能是一个报文段丢失了。
于是我们就重传丢失的数据报文段,而无需等待超时定时器溢出。
快速恢复:接下来执行拥塞避免算法
12、tcp四个定时器:重传定时器、坚持定时器、保活定时器、2MSL定时器
RTT往返时间 传播时间+未端处理时间+路由处理缓存排队时间
坚定定时器:当TCP服务器收到了客户端的0滑动窗口报文的时候,就启动一个定时器来计时,并在定时器溢出的时候向向客户端
查询窗口是否已经增大,如果得到非零的窗口就重新开始发送数据,如果得到0窗口就再开一个新的定时器准备下一次查询。
糊涂窗口综合症
保活定时器:Keepalive SO_KEEPALIVE选项
每隔2小时(可以调整)发送保活探测报文
13、优化tcp性能
路径MTU发现
窗口扩大因子,序号回绕保护
为事务用的tcp扩展,即T/TCP