TCP协议三次握手分析
在TCP/IP协议中,TCP(Transmission Control Protocol)是可靠传输协议,是传输层的重要协议,提供可靠的连接服务,采用三次握手来建立连接。
一般来说,我们把发起连接的称为客户端(C),接收连接的称为服务端(S)。TCP三次握手可以概括如下:
- C -> S 客户端向服务端发送SYN报文
- S->C 服务端向客户端发送SYN+ACK报文
- C->S 客户端向服务端发送ACK报文
另外,我们可以通过抓包来分析其序列号和确认号的变换。首先,做一下补充,序列号表示此次发包是从哪一个字节开始的,确认号表示我已经收到在此之前所有的包了。
上图中的红框即是三次握手的过程
- 第一条 SYN标志位置1,seq(序列号) = 0,此时服务端知道客户端可以发送数据包
- 第二条 SYN和ACK标志位置1,seq = 0,ack (确认号)= 1,此时客户端知道服务端可以接收和发送数据包
- 第三条 ACK标志位置1,seq =1, ack = 1,此时服务端知道客户端可以接收数据包
至此,三次握手过程完成,双方建立TCP连接,可以发送数据了。
(PS:第一次写博客,如有错误,请大家指出)