前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >新梦想干货分享|网络情缘之TCP的握手和分手

新梦想干货分享|网络情缘之TCP的握手和分手

作者头像
新梦想IT职业教育
修改2019-11-05 17:02:08
2770
修改2019-11-05 17:02:08
举报

    最近给学员们复习接口测试的时候,有人找到一个面试的时候被问到的问题:“请说明TCP的三次握手。”然后有人笑着回答说:“就是问女朋友‘约吗’?”女朋友说:“约”,然后再说:“走吧”,这样的过程。看到这个回答,有点好像理解了,但又不知道理解什么了的感觉,所以今天我们就来聊一下TCP协议相关的内容吧,希望对大家以后做接口测试有所帮助。

    不知道大家有没有寄大件物品的经历,比如寄一张床,小明同学肯定有(小明是谁?我也不知道)。有一天小明要给老家寄一张大床,于是去了物流公司,找到客服小MM咨询。小MM问:“你住哪,要把东西寄到哪里去?”于是小明赶紧说了自己的情况:“我住长沙五一新干线1430,寄到湖南省长沙县某某村222号”

    小MM继续问:“这个村有很多个收快递的点,你要放到哪个点呢?”小明想了一下:“放到标有80的快递点,他们会有人来拿的。”

    小MM说:“我现在还不知道那个地方是不是营业,我先帮你确定一下。”于是她叫了一个小弟说:“你给长沙县某某村去送个信,说我们要给他们发个快递,看他们还营业嘛或者有空没有”小弟听完就出去了。(不要问为什么不打电话,因为剧情需要)一个小时后,小弟回来了,说:“他们营业的,有空。”小MM说:“你再跑一趟,告诉他我们知道了,我们就要给他们送个物品过去了。”小弟又出去跑了一趟,小明觉得这个小MM是有点消遣人,让人家跑三趟,小MM做出解释:“我们要建立一个可靠的连接通道,不跑三趟怎么证明我们双方收件发件没有问题呢。我们要保证你的东西能寄到的话就一定要这么做,自己琢磨琢磨就知道了。”看到这里大家应该差不多知道TCP建立连接的三次握手是怎么回事了 。

新梦想干货分享
新梦想干货分享

图一:wireshark抓取的数据包

第一次握手:192.168.1.105发送位码syn=1数据包到119.75.219.45,119.75.219.45由SYN=1知道192.168.1.105要求建立联机;

第二次握手:119.75.219.45收到请求后要确认联机信息,向192.168.1.105发送ack , v发送syn=1,ack=1的确认包;

第三次握手:192.168.1.105收到后检查位码ack是否为1,若正确,192.168.1.105会再发ack=1,119.75.219.45收到后确认seq=seq+1,ack=1则连接建立成功。

新梦想干货分享
新梦想干货分享

图二、三次握手

    小明的床经过很多次快递后,终于把所有的零部件都送出去了。这时小MM说:“都发过去了,可以跟那边不联系了。”于是把之前的小弟叫来说:“跟那边说一下,该发的包都发送完了。”过了一会,小弟回来说:“他们知道了,有事情会跟我们联系的。”过了一会,又有一个小弟过来说:“我们那边已经没有事情了,今天的事情结束了,我们会等待半小时,如果你们没有事情了,半个小时后,就不联系了。”小MM很开心说:“那你带个结束确认信过去,我们也等半小时,如果他们没有事情,今天就结束了。”小明说:“你们这结束连接也还挺麻烦的。”小MM说:“那是自然,万一有什么临时事情发生呢,这叫四次分手。”

    TCP结束连接需要进行四次对话,双方确保没有数据要发送了,才能断开连接。

新梦想干货分享
新梦想干货分享

图三:wireshark抓取四次挥手的数据包

第一次挥手:客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。

第二次挥手:服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1,和SYN一样,一个FIN将占用一个序号。

第三次挥手:服务器B关闭与客户端A的连接,发送一个FIN给客户端A。

第四次挥手:客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。

新梦想干货分享
新梦想干货分享

图四、TCP数据传输的过程

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档