TCP三次握手、四次挥手及特殊情况总结
前言
TCP协议是一个非常重要的传输层协议,它是一个基于连接的、具有可靠性的数据流协议。
TCP三次握手
流程
- 发送方向接受方发送
SYN
,进入SYN_SENT
阶段。 - 接受方收到后若接受连接请求,向发送方发送
SYN ACK
,进入SYN_RCVD
阶段。 - 发送方收到后,向接受方发送
ACK
,进入ESTABLISHED
阶段。 - 接受方收到ACK后进入
ESTABLISHED
阶段。
为什么是三次握手而不是两次或是四次?
- 三次握手是保证连接的最少次数。
- 如果是两次连接:
- 不能有效防止洪范攻击,没有半连接队列,无法连接数量进行控制;
- 假定当前网络状况不佳,A向B发送了SYN请求连接,此时因网络原因阻塞造成超时。A重发SYN,B收到后建立起连接并传输数据后关闭,此时之前阻塞的SYN再次到达B,B会以为A又要建立连接。