博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网络协议TCP 的三次握手和四次挥手
阅读量:5938 次
发布时间:2019-06-19

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

hot3.png

TCP协议来自 。 https://www.ietf.org/rfc/rfc793.txt

1。 为什么三次握手?

正确答案:TCP三次握手,实际上是双方各握手一次,各做一次确认,其中一次握手和确认合并在一起。(就这样简单,完全没有别的幺儿子)。

来此上面链接的Page27页。

1) A --> B  SYN my sequence number is X2) A <-- B  ACK your sequence number is X3) A <-- B  SYN my sequence number is Y4) A --> B  ACK your sequence number is Y

答案解释:TCP有2个特性1. “全双工” 2.“通信稳定”

特性1需要双向确认,特性2引入了SEQ(sequence numbers 序列号),用SEQ确定报文的前后顺序。

--错误答案:引用谢希仁著《计算机网络》第四版中,讲 “三次握手” 的目的是 “为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。这句话来自文首链接的Page 32的“The principle reason for the three-way handshake is to prevent old duplicate connection initiations from causing confusion”。

这句针对的问题应该是“如果协议只发SYN,不需要ACK就完成建立连接步骤可行吗?“

即:

1) A --> B  SYN my sequence number is X   2) A <-- B  SYN my sequence number is Y

后面一句很重要 “To deal with this, a special control message, reset, has been devised.” 

连一起解释就是如果2次握手,会出现失效的重复链接问题。3次握手+reset可以避免”失效的重复链接问题“!

 

2。 为什么四次挥手?

正确答案:双方各挥手一次,各做一次确认。几乎和握手一模一样,只是中间的2,3因为存在时间差无法合并。

1) A --> B  FIN my sequence number is X2) A <-- B  ACK your sequence number is X3) A <-- B  FIN my sequence number is Y4) A --> B  ACK your sequence number is Y

给出的讨论在page38 

There are essentially three cases:    1) The user initiates by telling the TCP to CLOSE the connection    2) The remote TCP initiates by sending a FIN control signal    3) Both users CLOSE simultaneously

就是说,只有case3的情况下,第2,3两步骤不存在时间差,可以做到3次挥手。但这种特例显然不应该被推荐为通用标准。更合理的4次挥手标准诞生了。

 

 

转载于:https://my.oschina.net/u/2382040/blog/3017122

你可能感兴趣的文章
oracle exp/imp命令详解
查看>>
开发安全的 API 所需要核对的清单
查看>>
Mycat源码中的单例模式
查看>>
WPF Dispatcher介绍
查看>>
fiddler展示serverIP方法
查看>>
C语言中的随意跳转
查看>>
006-spring cloud gateway-GatewayAutoConfiguration核心配置-GatewayProperties初始化加载、Route初始化加载...
查看>>
WPF中如何将ListViewItem双击事件绑定到Command
查看>>
《聚散两依依》
查看>>
小tips:你不知道的 npm init
查看>>
The Beam Model:Stream & Tables翻译(上)
查看>>
领扣-191 位1的个数 Number of 1 Bits MD
查看>>
Mac笔记本中是用Idea开发工具在Java项目中调用python脚本遇到的环境变量问题解决...
查看>>
Jmeter也能IP欺骗!
查看>>
JS获取字符串实际长度(包含汉字)的简单方法
查看>>
Rust 阴阳谜题,及纯基于代码的分析与化简
查看>>
ASP.NET Core的身份认证框架IdentityServer4(4)- 支持的规范
查看>>
(原創) array可以使用reference方式傳進function嗎? (C/C++)
查看>>
STM32F103--(二) GPIO实践
查看>>
关于开源无线路由器的资料
查看>>