三次握手:(客户端发起,即时连接)
序列号 Seq(随机生成) | 标志位(共6个) | 确认号 Ack (只有ACK标志位为1时,确认序号字段才有效, Ack=Seq+1) | |
---|---|---|---|
Clinet | X | SYN=1 | |
Server | Y | SYN=1, ACK=1 | X+1 |
Client | X+1 | ACK=1 | Y+1 |
四次挥手:(双方均可发起,等待断开)
序列号 Seq | 标志位(共6个) | 确认号 Ack (只有ACK标志位为1时,确认序号字段才有效, Ack=Seq+1) | |
---|---|---|---|
主动方 | X | FIN=1, ACK=1 | Y |
被动方 | Y | ACK=1 | X+1 |
被动方 | Y+1 | FIN=1, ACK=1 | |
主动方 | X+1 | ACK=1 | Y+2 |
![](https://i-blog.csdnimg.cn/blog_migrate/662847e1fbfed034bb94de2e915a1285.jpeg)
(1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
(2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1
(3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:
(A)URG:紧急指针(urgent pointer)有效。
(B)ACK:确认序号有效。
(C)PSH(push传送):接收方应该尽快将这个报文交给应用层。
(D)RST(reset重置):重置连接。
(E)SYN(synchronous建立联机):发起一个新连接。
(F)FIN(finish结束):释放一个连接。
需要注意的是:
(A)不要将确认序号Ack与标志位中的ACK搞混了。
(B)确认方Ack=发起方Req+1,两端配对
确认号 Ack
(只有ACK标志位为1时,确认序号字段才有效,
Ack=Seq+1)