TCP三路握手,本质是一个通信原理相关的问题
在通信系统中,最基本的信息的传递都需要两步,发送方发送的消息和对方的回复确认:A->B Send, B->A Reply(ACK)。如果多接触一下其他行业的通信流程和规范,例如航空、铁路调度,就会明白这一点。
TCP 建联,本质上需要传递两条信息:A->B 的初始 SYN 号,B->A 的初始 SYN 号,那么理论上需要四步通信( A->B 的初始 SYN 号,B->A 的 ACK ; B->A 的初始 SYN 号,A->B 的 ACK );只不过为了效率和性能,中间两条消息可以合并为一条,这便是现在的三路握手的来源。后续的所有报文的传递机制,依然是Send/Ack两步 + 消息合并。
仅有Send没有Reply,属于不可靠传递;Send有单条Reply,可以实现99%的容错。只有发送方才有责任确保消息传递完整性,而且因为两军问题,任何信道不可能实现100%的有效性。所以折衷考虑,一般一条Send只需有一个Reply.
通信技术,关心的是通信的基本单元(单条消息、一个独立的数据包...),如何尽可能可靠地传递的流程,适用于所有领域,属于通用的泛化的规则。例如上述Send/Reply模型。
而协议,描述的则是消息的内容、格式,以及多条消息之间如何交互,是和应用领域相关的。例如:没有Reply意味着什么,Reply可以是什么样的信息格式,不同的格式代表什么含义,不同的格式下采用什么行为...
例如在航空通信,塔台向客机发送指令的协议:
- 需要先报航班号,采用军队电文报数,之后是方位角、高度、行为等指令;
- 航班必须在相同频率下先回复参数,最后附加航班号
上海管制区PVG进近塔台:东方三两幺拐,航向187度上3000保持!
MU3217机长:航向187度上3000保持,东方三两幺拐!
指令格式可以自定义,但塔台发出的指令,必须有Reply。
再比如在大家关心的计算机网络领域,包括但不限于以下语义及协议:
- 信息包括SYN号,通过SYN号确保报文顺序性,有效性;
- 跳跃ACK号(Reply),语义是“ACK号之前的包对方也都收到了”;
.....
TCP协议还可以定义状态机、定义新的类型字段、新的语义,但是任何一方主动发出的消息,必须有Reply(ACK).
所以,目前中文互联网的所谓“原因分析”都是皮肉之象,比如“防止包乱序及可能的重连”、“确认对方有收和发的能力”.....都不是三路握手的问题的本质。因为混淆了通信技术和TCP协议,甚至对通信基本原理没有任何感知。
TCP三路握手,本质是一个通信原理相关的问题的更多相关文章
- 两将军问题、拜占庭将军问题、TCP三路握手过程的联系
2015年初时产生了一个疑问:基于不可靠的通信链路,为什么在两将军问题中永远无法达到共识,而在TCP三路握手中可以? 今天抽出了一些时间进行研究发现,实际上TCP三路握手也不是完全可靠的,只是一个近似 ...
- 27.Socket,TCP,UDP,HTTP基本通信原理
Socket,TCP,UDP,HTTP基本通信原理(摘自百度): TCP.UDP,HTTP 底层通信都是通过 socket 套接字实现 网络上不同的计算机,也可以通信,那么就得使用网络套接字(sock ...
- Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)
转载地址:http://blog.csdn.net/mad1989/article/details/9147661 ZERO.前言 有关通信原理内容是在网上或百科整理得到,代码部分为本人所写,如果不当 ...
- TCP协议—三次握手四次挥手的原理<转>
三次握手四次挥手的原理 TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接.在TCP/IP协议中,TCP 协议提供可靠的连接服务,连接是通过三次握手进行初始化的.三 ...
- C#版清晰易懂TCP通信原理解析(附demo)
[转] C#版清晰易懂TCP通信原理解析(附demo) (点击上方蓝字,可快速关注我们) 来源:周见智 cnblogs.com/xiaozhi_5638/p/4244797.html 对.NET中网络 ...
- 通信原理之TCP/IP基本概念 (二)
本来想写写,但发现有人写的很好了,不造轮子了! 直接转了 一.为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是 ...
- 基于web的IM软件通信原理分析
关于IM(InstantMessaging)即时通信类软件(如微信,QQ),大多数都是桌面应用程序或者native应用较为流行,而网上关于原生IM或桌面IM软件类的通信原理介绍也较多,此处不再赘述.而 ...
- SSL 通信原理及Tomcat SSL 配置
SSL 通信原理及Tomcat SSL 双向配置 目录1 参考资料 .................................................................. ...
- SSL 通信原理及Tomcat SSL 双向配置
SSL 通信原理及Tomcat SSL 双向配置 目录1 参考资料 .................................................................. ...
随机推荐
- struts2框架
详细教程 参考struts教程https://www.w3cschool.cn/struts_2/struts_configuration.html Struts2 基于MVC设计模式的web应用程序 ...
- 2017 SDN第一次作业
(1)我会选择的,因为网络现在越来越重要,各行各业都离不开网络,这个方向可以适合各种岗位,感觉比较容易就业.但选这个课是为了多学一点东西,没想太多,嘎嘎嘎. (2)SDNLAB,是一个SDN的大的中文 ...
- 团队作业——Alpha冲刺 10/12
团队作业--Alpha冲刺 冲刺任务安排 杨光海天 今日任务:编辑界面返回以及预览的intent实现 明日任务:未能按时间要求完成的失败总结 郭剑南 今日任务:优化图像预处理所有功能的函数代码,尝试与 ...
- ORACLE 11GR2常用命令
一.ORACLE的启动和关闭 1.在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a.启动ORACLE系统 oracle>svrmgrl ...
- collate字段详细讲解
collate可以在库级别上,表级别上,列级别上设计:意思就是“排列规则”;通常和charset结合使用: 例如: 建议使用utf8mb4而不是utf8,因为utf8最多支持3字节得长度,但是有些字符 ...
- VMware虚拟机下Linux系统的全屏显示
在VMware虚拟机下的Linux无法全屏的问题的解决方案如下: 1. 启动虚拟机,并启动Redhat6.4. 2. 点击“view”——然后将Autofit window这个选项勾选.(一般 ...
- C#中使用WeiFenLuo.WinFormsUI.Docking.dll实现窗口停靠效果
很酷的效果,很值得好好去学习的哈. 重置工具箱: 新建一个WinForm程序,项目名称为TestDockPanelControl.选中Form1窗体后选择工具箱--->>新建个添加选项卡命 ...
- h5实现手机端等级进度条
h5实现等级进度条 需求如下: 实现一个动画进度条,页面一打开实现一个进度条动画,因为App这个页面会经常改,所以没有使用原审Android或者IOS来实现,希望通过H5来做: 服务器端返回如下数据: ...
- Android使用正则表达式验证手机号
国内手机号代码段分配如下: 移动:134.135.136.137.138.139.150.151.157(TD).158.159.187.188 联通:130.131.132.152.155.156. ...
- 所谓的液晶屏驱动IC是单独的IC还是在屏内就集成
所谓的液晶屏驱动IC是单独的IC还是在屏内就集成 时间:2016-12-05 作者:admin 其实无论什么液晶屏,想要正常工作必须包括两个人:玻璃屏+驱动IC:但是现在有一些液晶厂商他们不 ...