TCP 是一个工作在传输层的可靠数据传输服务 TCP 是面向连接的,可靠的,基于字节流的传输层通信协议 面向连接:一对一 字节流:分组,有序 TCP 连接:用于保证可靠性和流量控制维护的某些状态信息,Socket,序列号,窗口大小
三次握手#
- 防止历史SYN建立连接
- 同步序列号
- 避免资源浪费
初始序列号随机:计时器+哈希 IP分片+MSS:便于重传
第一次握手丢失:客户端超时重传,1 2 4 8 16 32 第二次握手丢失:客户端超时重传,服务器超时重传 第三次握手丢失:服务器超时重传
四次挥手#
四次挥手的原因: ACK和FIN分开发送
close()关闭连接超时自动关闭,shutdown()关闭连接
第一次挥手丢失:客户端超时重传 第二次挥手丢失:客户端超时重传 第三次挥手丢失:客户端自动关闭,服务器超时重传 第四次挥手丢失:服务器超时重传,客户端开启2MSL计时器
TIME_WAIT:
- 防止历史连接中的数据,被后面相同四元组的连接错误接收:2MSL足以让两个方向上数据包都被丢弃,使得原来连接的数据包在网络中都自然消失,再出现的数据包一定都是新建立的连接所产生的。
- 保证被动关闭连接的一方能够正确的关闭。
