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 参考资料 .................................................................. ...
随机推荐
- js fetch处理异步请求
以往一直认为异步请求只能使用原生js的XMLHttpRequest或jQuery的$.ajax().$.post()等框架封装的异步请求方法 原来js还提供fetch来替代XMLHttpRequest ...
- .net core 入坑经验 - 1、await async
已经有些日子没学习新知识了,心血来潮想试试core有多大变化和跨平台运行 所以现在就开始捣鼓,然而由于是从.net 4.0直接"跃升"到.net core 以及 asp.net m ...
- H.__mro__) MRO- C3算法
- AtCoder Regular Contest
一句话题解 因为上篇AGC的写的有点长……估计这篇也短不了所以放个一句话题解方便查阅啥的吧QwQ 具体的题意代码题解还是往下翻…… ARC 058 D:简单容斥计数. E:用二进制表示放的数字,然后状 ...
- easyui combobox 带 checkbox 亲自验证
$('#cc').combobox({ url:'combobox_data1.json', method:'get', ...
- WorldWind源码剖析系列:表面影像类SurfaceImage
表面影像类SurfaceImage描述星球类(如地球)表面纹理影像.该类的类图如下. 表面影像类SurfaceImage包含的主要的字段.属性和方法如下: string m_ImageFilePath ...
- C#中XmlSerializer实现序列化浅析
C# XmlSerializer类是实现序列化的一个类,那么关于C# XmlSerializer的学习我们要掌握怎么样的操作方法呢?那么这里向你详细介绍具体的操作细节情况. C# XmlSeriali ...
- DDOS攻击详解
导读 Ddos的攻击方式有很多种,最基本的Dos攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应. 在信息安全的三要素——“保密性”.“完整性”和“可用性”中,DoS( ...
- JS日历控件优化(增加时分秒)
JS日历控件优化 在今年7月份时候 写了一篇关于 "JS日历控件" 的文章 , 当时只支持 年月日 的日历控件,现在优化如下: 1. 在原基础上 支持 yyyy ...
- PAT B1002 写出这个数
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式:在一行内输出n的各位数字之和的每 ...