TCP 的那些事 | 三次握手

TCP在建立连接时,会进行三次握手,流程如图1所示:

图1 TCP  三次握手流程图

3次握手的主要目的是初始化Sequence Number 的初始值及协商一些通信双方的通信参数。通信的双方要互相通知对方自己的初始化的Sequence Number(缩写为ISN:Inital Sequence Number)。SYN,全称Synchronize Sequence Numbers。也就上图中的 x 和 y。这个号要作为以后的数据通信的序号,以保证应用层接收到的数据不会因为网络上的传输的问题而乱序(TCP会用这个序号来拼接数据)。

第一步:Client首先向Server发送了SYN,seq为x,

第二步:Server向Client回复了SYN + ACK,seq为y,ACK为x+1,其中x为Client的seq

第三步:Client向Server发送ACK,值为y+1,其中,y为第二步Server的seq

 

其中,第一步及第二步是告知对方各自的起始seq,第三步是链接请求方向对方发送收到其SYN+ACK的确认包ACK。此时,你就会疑惑,如果第三步的ACK丢了怎么办,那么Server没有收到ACK,它并不知道Client是否有收到其SYN+ACK。那么你可能会想,Server收到ACK后,在回一个确认包,如果这样,那么Client在收到这个包后,是否还应该回复一个包?这样就陷入的无穷无尽的交互中。为了打破这种情况,于是将握手次数定为3。

 

通过 Wireshark 对三次握手进行抓包,如下图2所示:

图2 三次握手
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值