TCP的三次握手
首先我们先理解其中字段的意思
SYN=1的值表示希望连接
ACK=1确认字段ack有效
seq:发送数据包的序号
ack=seq+1:表示收到发送的数据,并且希望他发送下一个序号的数据包
以下我实际中的例证(抓包工具为科来,服务端为QQ):
打开抓包软件后在启动QQ
可以看到本地与QQ之间建立的三次握手
第一步(我发送给QQ的数据)
SYN=1(我希望与QQ建立连接)
seq=2605745043 (我对QQ说:我的发送的数据包序为2605745043 )
ACK=0(没有确认字段)
ack=0 (因为是建立连接的发起者所以为0)
第二步(QQ发送给我的数据)
SYN=1(QQ希望与我建立连接)
seq=1104303432(QQ对我说:QQ发送的数据包序为1104303432)
ACK=1(有确认字段所以值为1)
ack=seq(我客户端的)+1=2605745044(QQ说:我收到你客户端发送的数据包序啦,并且我希望你发送下一条数据包序)
第三步(我发送给QQ的数据)
seq=2605745044(第二条中QQ希望我发的数据包序为2605745044,所以我这次就发送)
ACK=1(有确认字段所以值为1)
ack=seq(QQ的)+1=1104303433(我收到你数据包序为1104303432的数据包啦,并且我希望收到下一个数据包)
第四步开始通信