You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
如果是三次握手,即便发生丢包也不会有问题,比如如果第三次握手客户端发的确认 ack 报文丢失,服务端在一段时间内没有收到确认 ack 报文的话就会重新进行第二次握手,也就是服务端会重发 SYN 报文段,客户端收到重发的报文段后会再次给服务端发送确认 ack 报文。
131
+
如果是三次握手,即便发生丢包也不会有问题,比如如果第三次握手客户端发的确认报文丢失,服务端在一段时间内没有收到确认报文的话就会重新进行第二次握手,也就是服务端会重发 SYN 报文段,客户端收到重发的报文段后会再次给服务端发送确认报文。
133
132
134
133
135
134
### 为什么 TCP 连接是三次握手,关闭的时候却要四次挥手?
136
135
137
-
因为只有在客户端和服务端都没有数据要发送的时候才能断开 TCP。而客户端发出 FIN 报文时只能保证客户端没有数据发了,服务端还有没有数据发客户端是不知道的。而服务端收到客户端的 FIN 报文后只能先回复客户端一个确认报文来告诉客户端我服务端已经收到你的 FIN 报文了,但我服务端还有一些数据没发完,等这些数据发完了服务端才能给客户端发 FIN 报文(所以不能一次性将确认报文和 FIN 报文发给客户端,就是这里多出来了一次)。
136
+
因为只有在客户端和服务端都没有数据要发送的时候才能断开 TCP 连接。而客户端发出 FIN 报文时只能保证客户端没有数据发了,服务端还有没有数据发客户端是不知道的。而服务端收到客户端的 FIN 报文后只能先回复客户端一个确认报文来告诉客户端我服务端已经收到你的 FIN 报文了,但我服务端还有一些数据没发完,等这些数据发完了服务端才能给客户端发 FIN 报文(所以不能一次性将确认报文和 FIN 报文发给客户端,就是这里多出来了一次)。
0 commit comments