开发者社区> 云语科技> 正文

为什么新开发的可靠传输协议都是基于UDP协议?

简介:
+关注继续查看
(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅1698元/3年,点击这里立即抢购>>>

(福利推荐:你还在高价请网络公司做企业网站?现在阿里云建站来啦,仅需500元/年快速搭建企业官网,点击这里立即抢购>>>

我有一次发了一个贴,介绍镭速传输协议是基于UDP的可靠传输协议,很多人在跟帖里面质疑我说,“UDP是不可靠的,你在这里胡说八道”。

今天,在这里介绍一下为什么很多新的传输协议都是基于UDP协议的,它的技术原因在哪里?下面这个图,是大学里面计算机网络必教的内容,OSI的7层模型和TCP/IP协议栈的5层模型。其中传输层的主要代表协议为TCP协议和UDP协议。

OSI-TCPIP.png

新开发的一些传输协议,比如google的QUIC、aspera的FASP、开源的UDT,为什么都是基于UDP的呢?甚至于IETF在2000年新制定的SCTP协议标准,放到互联网来运行时,都特意增加一个UDP的封包协议,见IETF RFC UDP Encapsulation of SCTP Packets for End-Host to End-Host Communication

有人说,因为UDP发包快,这些协议为了跑快一点,所以用UDP协议。有人说,UDP可以广播,所以用UDP协议。

众说纷纭,到底为什么这些协议到了我们现实使用的Internet上时,都是使用UDP协议。揭晓答案,因为现实Internet环境中,有大量的NAT网络设备,为了适应兼容这些已经在网络中到处运行NAT网络设备,新的协议必须使用UDP协议来作为承载层。

首先介绍NAT,NAT是Network Address Translation的缩写,翻译成中文是“网络地址转换”或者“网络地址翻译”

维基中文:https://zh.wikipedia.org/wiki/%E7%BD%91%E7%BB%9C%E5%9C%B0%E5%9D%80%E8%BD%AC%E6%8D%A2

维基英文:https://en.wikipedia.org/wiki/Network_address_translation

1990年代中期,NAT是作为一种解决IPv4地址短缺以避免保留IP地址困难的方案而流行起来的。网络地址转换在很多国家有广泛的使用。所以NAT就成了家庭和小型办公室网络连接上的路由器的一个标准特征,因为对他们来说,申请独立的IP地址的代价要高于所带来的效益。
在一个典型的配置中,一个本地网络使用一个专有网络的指定子网(比如192.168.x.x或10.x.x.x)和连在这个网络上的一个路由器。这个路由器占有这个网络地址空间的一个专有地址(比如192.168.0.1),同时它还通过一个或多个因特网服务提供商提供的公有的IP地址(叫做“过载”NAT)连接到因特网上。当信息由本地网络向因特网传递时,源地址从专有地址转换为公用地址。由路由器跟踪每个连接上的基本数据,主要是目的地址和端口。当有回复返回路由器时,它通过输出阶段记录的连接跟踪数据来决定该转发给内部网的哪个主机;如果有多个公用地址可用,当数据包返回时,TCP或UDP客户机的端口号可以用来分解数据包。对于因特网上的通信,路由器本身充源和目的。
流行在网络上的一种看法认为,IPv6的广泛采用将使得NAT不再需要,因为NAT只是一个处理IPv4的地址空间不足的方法。

大家都见过和用过NAT盒子,每个人家里的上网拨号路由器就是一个典型的NAT网络设备,这个设备除了用来上网以外,完成了你的内网电脑的IP地址(比如192.168.0.x)转换为一个IPv4公网地址。

那这个NAT设备与传输协议有什么关系呢?我们来看一下IP报文的头部,

ip报文头.png

其中的8位协议字段,是用来表示IP报文承载的上层传输协议类型,当IP报文里面的内容是TCP报文时,这个值为6,当IP报文里面的内容是UDP报文时,这个值为17,当IP报文里面的内容是SCTP报文时,这个值为132。这个8bit的字段,用满的话理论上可以支持255种协议。

前面说了,NAT网络设备是用来完成网络地址转换工作的,因此NAT设备必须要能够认识并理解对应的协议,不幸的是,大部分普通NAT设备只认识TCP和UDP这两种传输协议,就连IETF RFC标准规定好的SCTP传输协议,普通的NAT设备都不认识。不认识就意味着,当你使用SCTP协议从一个内网向公网发送报文时,你的SCTP报文会被你的NAT网络设备丢弃,连接无法建立,通信无法进行。

但是聪明的计算机从业者很快发现,UDP和IP层并无本质区别,都是提供包发送服务,既然在IP层上面去定义自己的新协议有NAT网络设备的兼容问题,那我在UDP报文之上去做就好了,所有的NAT网络设备都必然支持UDP协议的地址转换。

因此,所有的新的可靠传输协议,都是基于UDP报文进一步封装后进行开发的。

附件提供google QUIC的协议设计论文,原版出自https://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/46403.pdf,考虑到很多同学访问外比较慢,这里附上一份。

?

#quic.pdf#

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
三十九、传输层概述和UDP协议
三十九、传输层概述和UDP协议
21 0
arp、ethernet、icmp、udp、ip协议的C语言实现(计算机网络协议栈实验)
arp、ethernet、icmp、udp、ip协议的C语言实现(计算机网络协议栈实验)
43 0
TCP和UDP协议(深信服X计划)
TCP和UDP协议(深信服X计划)
72 0
计算机网络-传输层:UDP协议
计算机网络-传输层:UDP协议
40 0
详解 UDP 协议
详解 UDP 协议
61 0
传输层协议(TCP和UDP,三次握手和四次挥手)
传输层协议(TCP和UDP,三次握手和四次挥手) 1、TCP/IP 协议栈介绍 TCP/IP协议:Transmission Control Protocol/Internet Protocol 传输控制协议/因特网互联协议。
46 0
【计算机网络】UDP协议
UDP协议是传输层的协议,是不可靠的,无连接的,也就是说传输层我们不能改变,也不能扩展,所以只能在应用层进行扩展,而实现方式可以参考TCP协议是如何保证数据进行可靠传输的,如添加确认应答,超时重传,连接管理等机制确保数据可以被接收,从而实现数据的可靠传输
75 0
计算机网络 ,什么是Internet?什么是协议?TCP/UDP的区别以及优缺点 分组交换与电路交换的区别以及优缺点
Internet是互联网(大型的网络)internet是企业网(小型网络,内部网)1、类似人类协议2、是机器之间的协议,而非人与人之间的协议3、Internet中所有的通信行为都受到协议的制约协议定义了在两个或多个通信实体之间交换的报文格式和次序,以及在报文传输和/或接收或其他事件方面所采取的动作Web、VoIP、email、分布式游戏、电子商务、社交网络...............
40 0
TCP协议和UDP协议有何异同
TCP协议和UDP协议有何异同
57 0
揭开tcp&udp协议的真实面貌
tcp需要解决网络不可靠带来的所有不确定因素,作为很多应用层的首选传输协议,udp只管数据的发送与接收,高效的收发机制成为很多通讯应用的首选。
55 0
+关注
云语科技
超过10年通信设备研发,精通网络传输,专注于跨国网络问题解决。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
TCP Cluster for mqtt技术实施方案
立即下载
Instagram Direct 高效可靠的数据端到端传输
立即下载
低代码开发师(初级)实战教程
立即下载


http://www.vxiaotou.com