
我曾经发表过一篇文章,介绍了镭速传输协议作为基于UDP的可靠传输协议. 许在帖子中问我,说: “ UDP不可靠,您在这里胡说八道. ”
今天,让我介绍为什么许多新的传输协议都基于UDP协议. 技术原因是什么?下图是大学计算机网络,OSI的7层模型和TCP / IP协议栈的5层模型必须教的内容. 传输层的主要代表协议是TCP协议和UDP协议.

为什么有些新开发的传输协议(例如Google的QUIC,aspera的FASP和开源UDT)全部基于UDP?即使IETF在2000年新建立的SCTP协议标准在Internet上投入运行,也添加了UDP数据包协议. 请参阅SCTP数据包的IETF RFC UDP封装,以实现端到端通信.

有人说,因为UDP发送数据包的速度更快,所以这些协议使用UDP协议才能更快地运行. 有人说UDP可以广播,所以使用UDP协议.
对于这些协议为何在Internet上实际使用时为何使用UDP协议存在很多分歧. 之所以透露答案,是因为真实的Internet环境中有很多NAT网络设备. 为了适应这些已经在网络中各处运行的NAT网络设备,新协议必须使用UDP协议作为承载层.
首先介绍NAT,NAT是网络地址翻译的缩写,翻译成中文是“网络地址翻译”或“网络地址翻译”
Wiki中文: %E7%BD%91%E7%BB%9C%E5%9C%B0%E5%9D%80%E8%BD%AC%E6%8D%A2

Wiki英语:
在1990年代中期,NAT作为一种解决IPv4地址短缺的解决方案而广受欢迎,从而避免了保留IP地址的麻烦. 网络地址转换已在许多国家/地区广泛使用. 因此,NAT已成为连接到家庭和小型办公室网络的路由器的标准功能,因为对于他们来说,申请独立IP地址的成本要高于收益.
在典型配置中,局域网使用专用网络的指定子网(例如192.168.x.x或10.x.x.x)和连接到网络的路由器. 路由器在网络地址空间中占用一个专用地址(例如192.168.0.1),并且还通过一个或多个Internet服务提供商提供的公共IP地址(称为“过载” NAT)连接到Internet. 当信息从本地网络传输到Internet时udp可靠传输,源地址将从私有地址转换为公共地址. 路由器跟踪每个连接上的基本数据,主要是目标地址和端口. 当回复返回给路由器时,它使用在输出阶段记录的连接跟踪数据来确定将哪个主机转发到Intranet. 如果有多个公共地址,则当数据包返回时,可以使用TCP或UDP客户端的端口号来分解数据包. 对于Internet上的通信,路由器本身充当源和目的地.
Internet上的一种流行观点认为,IPv6的广泛采用将不再需要NAT,因为NAT只是解决IPv4地址空间不足的一种方法.

每个人都已经看到并使用了NAT盒. 每个人的Internet拨号路由器都是典型的NAT网络设备. 该设备将完成您的Intranet计算机的IP地址(例如192.168. 0.x)udp可靠传输,然后转换为IPv4公用网络地址.
那么,这个NAT设备与传输协议有什么关系?让我们看一下IP消息的标题,

8位协议字段用于指示IP消息承载的上层传输协议的类型. 当IP消息的内容为TCP消息时,值为6;当IP消息的内容为For UDP消息时,该值为17;当IP消息的内容为SCTP消息时,该值为132. 如果该8位字段已满,则理论上可以支持255个协议.

如前所述,NAT网络设备用于完成网络地址转换,因此NAT设备必须能够识别和理解相应的协议. 不幸的是,大多数普通的NAT设备只能识别TCP和UDP. 普通的NAT设备都不知道该传输协议,即使是IETF RFC标准中指定的SCTP传输协议. 不知道意味着当您使用SCTP协议将邮件从内部网络发送到公用网络时,您的SCTP邮件将被NAT网络设备丢弃,无法建立连接,并且无法进行通信.
但是,聪明的计算机从业者很快发现UDP和IP层之间没有本质区别,它们都提供数据包发送服务. 由于在IP层上定义新协议存在与NAT网络设备的兼容性问题,因此我只是在UDP数据包之上执行此操作,因此所有NAT网络设备都必须支持UDP协议地址转换.
因此,在进一步封装UDP数据包的基础上,开发了所有新的可靠传输协议.
附件提供了Google QUIC协议设计文件. 原始版本来自. 考虑到许多学生访问缓慢,这里有一个副本.
#quic.pdf#
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-216814-1.html
今天击沉一艘
一个生病孩子急需大家的帮助