TCP的三次握手与四次挥手
Tcp/Ip协议是一个面向连接的安全的传输协议。
首先要了解Tcp报文格式:
报文解读:
32位序号和确认序号为tcp可靠传输的重要部分,序号(seq)表明客户端向服务端的报文的唯一序号。确认序号(ack)是对于上一条发送的信息进行一个消息的确认,并且指明下一个期待收到的字节序号。
SYN表示建立连接。
FIN表示释放连接。
ACK表示确认报文信息。
三次握手的目的是让客户端与服务器建立安全可靠的连接。
一次握手:客户端向服务端发送连接请求,SYN=1,seq=10000;
二次握手:服务器收到客户端的连接请求并向客户端发送连接请求,SYN=1,seq=20000,ACK=1,ack=10001.
此时,客户端知道了服务器端能够收到自己的信息,但是服务器不知道客户端能不能收到它的信息。所以需要三次握手。
三次握手:客户端收到了服务器的消息,发送消息确认包ACK=1,ack=20001
其中三次握手是最少确认连接的通信次数。
四次挥手
第一次挥手:客户端向服务器发送断开连接的请求,FIN=1,seq=25368
第二次挥手:此时服务器可能没有准备好(还有部分数据未传输完成)与客户端断开连接,只是进行一个消息确认ACK=1,ack=25369
第三次挥手:服务器准备好了与客户端断开连接,FIN=1,seq=10568
第四次挥手:客户端向服务器发送客户端断开连接的请求确认,ACK=1,ack=10569