用户工具

站点工具


01-基础学习:网络:tcp三次握手

TCP三次握手

client: SYN=1,ACK=0,seq=0 (SYN: Connection establish request)
server: SYN=1,ACK=1,seq=0,ack=1 (SYN+ACK: Connection establish acknowledge)
client: ACK=1,seq=1,ack=1

1. seq=x
2. seq=y,ack=x+1
3. seq=x+1,ack=y+1

图片

TCP四次挥手

client: FIN=1,ACK=1,seq=1,ack=22 (FIN: Connection finish)
server: ACK=1,seq=22,ack=2
server: FIN=1,ACK=1,PSH=1,seq=22,ack=2
client: ACK=1,seq=2,ack=23

1. seq=u
2. seq=v,ack=u+1
3. seq=w,ack=u+1
4. seq=u+1,ack=w+1

seq值

seq,ack值

问题:TCP三次握手机制中的seq和ack的值到底是什么意思?

答案:

seq是序列号,这是为了连接以后传送数据用的,ack是对收到的数据包的确认,值是等待接收的数据包的序列号。在第一次消息发送中,A随机选取一个序列号作为自己的初始序号发送给B;第二次消息B使用ack对A的数据包进行确认,因为已经收到了序列号为x 的数据包,准备接收序列号为x+1的包,所以ack=x+1,同时B告诉A自己的初始序列号,就是seq=y;第三条消息A告诉B收到了B的确认消息并准备建 立连接,A自己此条消息的序列号是x+1,所以seq=x+1,而ack=y+1是表示A正准备接收B序列号为y+1的数据包。seq是数据包本身的序列号;ack是期望对方继续发送的那个数据包的序列号。

seq是数据包本身的序列号;ack是期望对方继续发送的那个数据包的序列号。

01-基础学习/网络/tcp三次握手.txt · 最后更改: 2020/04/07 06:34 由 annhe