博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TCP三次握手四次挥手相关问题探讨
阅读量:6458 次
发布时间:2019-06-23

本文共 983 字,大约阅读时间需要 3 分钟。

TCP的握手挥手和状态转换是很多网络问题的基础。在此进行相关问题的讨论及记录。

首先,这幅图大致介绍了TCP连接和断开的过程:

注意其中的几个状态:

LISTEN, SYN-SEND, SYN-RCVD, ESTABLISHED, FIN-WAIT-1, CLOSE-WAIT, FIN_WAIT-2, LAST-ACK, TIME-WAIT, CLOSE. 

貌似还有一些同时发送FIN包的情况,但是容易混淆,所以我觉得可以忽略(最下面补了一张图,其实同时关闭是走到了CLOSING的状态)。

 

下面,还有一些值得注意的问题:

1. 为什么连接的时候是3次握手,而断开的时候是4次。

Answer: 因为发起连接的时候,ACK和SYN可以一起返回。而断开连接的时候,可能接收方还有数据未发出,所以FIN还不能直接发出,只能先发出ACK.

 

2. 3次握手,如果最后一个ACK丢失,会怎样。

Answer:接收端会等待ACK超时,然后重新发送之前的SYN+ACK,并且超时会翻倍增加避免网络拥塞。这时候连接还没有建立。如果发送方发送数据报文,会收到接收方返回的RST包。

 

3. 为什么TIME_WAIT是2MSL。

Answer:

1. 为了防止最后一个ACK丢失。如果ACK丢失,接收方会重新发出FIN,这时发送方需要重发ACK。可以避免接收方反复超时重传。

2. 防止lost duplicatie + incarnation connection的出现。lost duplicate指的是由于网络拥塞而延迟到达的、已经失效的重复包,而incarnation connection指的是新的连接和原来的socket pair一模一样。当这两种情况同时出现时,很可能造成数据混乱。等待2MSL,可以让lost duplicate的包在网络中消失。

 

内容参考:

http://blog.csdn.net/whuslei/article/details/6667471

http://blog.sina.com.cn/s/blog_5d2054d9010189l2.html

 

补一张包含同时关闭的TCP状态转移图吧。其实我还是觉得开始的那张图清晰、易懂、易记,哈哈。

 

转载于:https://www.cnblogs.com/charlesblc/p/5427527.html

你可能感兴趣的文章
linux 连网vim安装,Ubuntu下安装Gvim及添加菜单项目[多图]
查看>>
c语言字符串getline,如何使用std :: getline()将文本文件读入C中的字符串数组?
查看>>
山科c语言考试题库,山科c语言考试重点.doc
查看>>
c语言实例 魔术师的猜牌术(1),C语言实例 魔术师的猜牌术(1)
查看>>
c语言 蛇形矩阵,蛇形矩阵输出是要怎么写代码,感觉没有眉目啊,大佬能说一下思想吗...
查看>>
c语言假设有21根火柴棍,10道火柴棍趣味智力题,据说全对的都是天才!
查看>>
国二考vb和c语言,全国计算机二级《VB》练习题及答案(2)
查看>>
c语言双链表的插入和删除,关于....多向循环双链表的插入和删除技术点,求大神帮破...
查看>>
c#语言结构体定义,深入解析C#编程中struct所定义的结构
查看>>
android static 函数调用吗,无法对非静态方法进行静态引用(Android getApplicationContext())...
查看>>
android百度地图画圆,使用百度地图Api,在地图上画圆形区域
查看>>
小米android n 分屏,官方确认!这些小米手机都支持分屏
查看>>
html动态图片怎么设背景,微信8.0状态背景视频怎么设置?状态视频动态背景图设置教程[多图]...
查看>>
html禁用ctrl健,保护网站版权JS代码 禁止 Ctrl和S、F12控制台、保存页面、复制文字...
查看>>
传递HTML字符串virtual,是否可以将VirtualFile用作HTML模板提供程序?如何?
查看>>
html模型的作用,数据模型的作用是什么
查看>>
计算机三级网络题,计算机三级网络技术Windows操作试题
查看>>
固定链接设置朴素正常html无法显示,WordPress更改固定链接诸项事宜
查看>>
【灵性的觉醒】复活节的精神之旅
查看>>
老鸟带你开发专业规范的MySQL启动脚本
查看>>