三次握手
TCP的链接建立是一个三次握手的过程,目的是为了通信双方确认开始序号,以便后续通信的有序进行,主要步骤如下:
-
客户端将标志位设置为1,即
SYN = 1
,并随机产生一个连接序号seq
的值,即seq = j
,并将该数据包发送给Server(服务器端) -
Server(服务器端)收到数据包之后由标志位
SYN = 1
知道Client请求建立连接,Server将标志位SYN
和ACK
都设置为1,即SYN = 1
ACK = 1
,将确认序号ack
设置为ack = j + 1
,随机产生一个值seq = k
,并将该数据包发送给Client以确认连接请求。 -
Client收到确认后,检查
ack
是否为j + 1
,ACK 是否为 1
,如果正确则将标志位ACK 设置为1
,确认序号ack = k + 1
,并将该数据包发送给Server,Server收到该数据包之后,会去检查ack 是否为 k + 1,ACK是否为1,
如果正确则建立连接成功,完成三次握手
四次挥手
-
Client发送一个标志位 FIN = 1,以及随机产生一个连接序号 seq = j
-
Server收到 FIN 之后,判断FIN是否等于1,如果 FIN = 1, 则会发送一个 ACK = 1 给 Client,以及 确认的序号 ack,ack = j + 1
-
Server发送一个 FIN = 1,以及产生随机的连接序号,seq = k,给Client。
-
Client接收到Server发送来的FIN后,判断是否 FIN = 1,如果等于1,紧接着发送一个 ACK = 1 给Server,确认的序号 ack = k + 1. Server 收到之后,进入关闭状态,完成四次挥手。