关于第三次握手的疑问

关于第三次握手的疑问

看了老师别的同学的回答,我还是不明白,这里为什么ack =1,按照我的理解,第三次握手发送的 ack=y+1,也就是客户端期望收到服务器第 y+1 号包,所以这里 ack 应该为第二次握手中 seq 的 y+1 才对吧?

http://img1.sycdn.imooc.com//climg/5d316c8d0001daf309560122.jpg
http://img1.sycdn.imooc.com//climg/5d316c9b0001a26305100436.jpg

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手。祝学习愉快!

  • 雨之赞歌 提问者 #1
    ACK 和 ack 是什么关系?有什么区别? 我图中的红框不是 ack 吗?
    2019-07-19 17:22:13
  • 好帮手慕小尤 回复 提问者 雨之赞歌 #2
    同学你好,ACK也好,ack也好,只不过是个代号而已,叫他张三也行,叫他李四也没事,没有任何影响,因为咱们不会改动那个东西。就算是把名字记反了,对咱们也没有任何影响,大家知道三次握手的数据包里有这么两个东西就行了。一个是确认值(Acknowledgement),为1便是确认连接。另一个是确认编号(Acknowledgement Number),即接收到的上一次远端主机传来的seq然后+1,再发送给远端主机。提示远端主机已经成功接收上一次所有数据。祝学习愉快!
    2019-07-19 18:32:54
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
PHP典型功能与Laravel5框架开发
  • 参与学习           人
  • 解答问题       722    个

掌握开发中必备技能解锁缓存、支付,邮件和短信发送等高端接口运用,直击工作重难点,通过开发简书项目熟练掌握Laravel5的开发技术。完成以上三个阶段的学习,成为满足企业需求的开发工程师。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师