之前一直没有能理解三次握手,四次握手,这次好好的查了一下,看到很好的解释,比较通俗易懂,我这里就概括一下吧,也当时温故而知新。
1.三次握手(建立连接)
- 客户端给服务器发送同步序列号syn,告诉服务端我要发送东西了,且syn为x,等待服务器确认(客户端状态为syn_sent)
- 服务器接收到了syn,服务器发送确认包ack,告诉客户端我收到了,同时发送一个syn包为y(服务器状态为syn_recv),也就是说服务端发送两个包ack和syn
- 客户端受到服务端的两个包后,向服务端发送确认包ack(客户端和服务端的状态为establish),及tcp连接成功
2.四次握手(断开连接)
ps:可以是客户端发出,也可以是服务端发出
- a端给b端发送FIN,请求断开链接
- b端收到a发送后,b还有没有传完的数据,所以b先给a发送确认包ACK
- b端忙完了,就可以断开链接了,此时b向a发送FIN,确认断开
- a端受到b端FIN后,向b发送确认包ACK,2个MSL是报文段发送和接收的最长时间