TCP握手与分手

230 阅读1分钟

TCP协议报文结构


TCP协议的3次握手


上图是wireshark抓包看的tcp请求报文交互。

首先请求方发送syn请求给接收方,seq为随机生成的(在wireshark当中,seq采用的相对位置,所以显示的是0)。

接收方在收到syn请求后,发送ACK,SYN同样标示。其中ACK会是上次对方请求的seq+长度,意思是告诉对方,我已经接收到了这么多数据。标志位占长度1.

接下里回复ACK,此时SYN不再标示,因为第一个SYN占用长度为1,所以seq变成1。这个请求不占用字节,长度为0。

报文发送


这是3次握手之后发送的第一个请求,其中Seq=1,长度为314,接收在回复ACK是ACK=315。如下图所示:



4次分手

在分手时,发起方发送FIN请求,告诉对方我已经不用再发送请求了,接收方收到之后发送ACK告诉对方。此时一条链路断开。同时另外一方发送FIN请求,对方再次回复ACK。总共需要四次请求。

有一种特殊情况,分手只有3次,这种情况是ACK与FIN一起发送的。