本文主要是介绍TCP协议的连接与断开的过程以及自己对于这些过程的理解。
(1) 客户端:发送SYN报文请求连接 ,置发送序号为X
(2) 服务端:接收到客户端的请求连接报文,发送SYN-ACK报文给客户端,其中确认序号为X+1,发送序号为Y
(3) 客户端:发送acK报文,并置发送序号为X+1,并置确认序号为Y+1
此时连接建立起来,客户端和服务器端可以发送数据。
四次握手断开连接
(1) 客户端(主动):发送请求FIN报文,发送序号为u
(2) 服务端(被动):发送ACK报文,序号为v,确认号为u+1;确认客户端断开,服务器不再接受该客户端发来的数据。这时候成为半关闭状态。
(3) 服务端:等待Close-wait时间后,服务端做好了关闭的准备,向客户端发送一个关闭连接的FIN-ACK报文,确认号为u+1,序号为w
(4) 客户端:发送ACK报文,确认号为w+1,序号为u+1,确认关闭连接.
客户端最后等待2MSL是因为报文的生存时间为MSL,如果服务器端没有收到客户端发来的确认报文,那么服务端会重新发送一次FIN报文请求断开。2MSL即是服务器端发出为FIN报文和客户端发出的ACK确认报文所能保持有效的最大时长
PS: 图片来源于百度图片,侵删!