三次握手
- 第一次握手主机A通过一个标识为SYN标识位的数据段发送给主机B请求连接,通过该数据段告诉主机B希望建立连接,需要B应答,并告诉主机B传输的起始序列号
- 第二次握手是主机B用一个确认应答ACK和同步序列号SYNC标志位的数据段来响应主机A,一是发送ACK告诉主机A收到了数据段,二是通知主机A从哪个序列号做标记。
- 第三次握手是主机A确认收到了主机B的数据段并可以开始传输实际数据。
四次挥手
- 主机A发送FIN控制位发出断开连接的请求
- 主机B进行响应,确认收到断开连接请求
- 主机B提出反方向的关闭要求
- 主机A确认收到的主机B的关闭连接请求
TCP的状态 (SYN, FIN, ACK, PSH, RST, URG)
-
tcp 全双工
-
为什么需要三次握手? 确保双方收发都是正常的
-
为什么需要四次挥手? 双方数据发送完毕,都认为可以断开
-
为什么需要等待? A向B发的FIN可能丢失
-
为什么握手是三次,但挥手却是四次?
-
当Server端收到FIN报文时,很可能并不会立即关闭SOCKET