Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >为什么新开发的可靠传输协议都是基于UDP协议?

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

原创
作者头像
云语科技
修改于 2018-04-25 00:09:35
修改于 2018-04-25 00:09:35
3.9K5
举报

今天,在这里介绍一下为什么很多新的可靠传输协议(比如QUIC、KCP、Fasp、UDT)都是基于UDP协议的,它的技术原因在哪里?

下面这个图,是大学里面计算机网络必教的内容,OSI的7层模型和TCP/IP协议栈的5层模型。其中传输层的主要代表协议为TCP协议和UDP协议。

OSI-TCPIP.png
OSI-TCPIP.png

新开发的一些传输协议,比如google的QUIC、aspera的FASP、开源的UDT,为什么都是基于UDP,而不是基于IP协议呢?甚至于IETF在2000年新制定的SCTP协议标准,标准本身是基于IP协议的,当放到实际互联网来运行时,标准特意增加一个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
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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
5 条评论
热度
最新
之前只听过tcp协议与udp协议,但是没有深入了解过他们的区别与联系
之前只听过tcp协议与udp协议,但是没有深入了解过他们的区别与联系
回复回复点赞举报
网游以及即时聊天软件都是UDP协议吧
网游以及即时聊天软件都是UDP协议吧
回复回复点赞举报
udp还是万物之源啊
udp还是万物之源啊
回复回复点赞举报
UDP是不可靠的协议,但基于UDP运行的未必就不可靠。不过我觉得这篇文章的重点有点问题,似乎没讲清可靠在哪里,可要与NAT有什么关系?
UDP是不可靠的协议,但基于UDP运行的未必就不可靠。不过我觉得这篇文章的重点有点问题,似乎没讲清可靠在哪里,可要与NAT有什么关系?
11点赞举报
这个意见提的很好,这篇文章本身没有涉及基于UDP的可靠传输协议是怎么设计的? 我原来第一段也是自己吐槽,现在看来把题目带偏了,删掉了关于“基于UDP运行是否可靠的吐槽”。
这个意见提的很好,这篇文章本身没有涉及基于UDP的可靠传输协议是怎么设计的? 我原来第一段也是自己吐槽,现在看来把题目带偏了,删掉了关于“基于UDP运行是否可靠的吐槽”。
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
网络协议之:基于UDP的高速数据传输协议UDT
简单就是美。在网络协议的世界中,TCP和UDP是建立在IP协议基础上的两个非常通用的协议。我们现在经常使用的HTTP协议就是建立在TCP协议的基础上的。相当于TCP的稳定性来说,UDP因为其数据传输的不可靠性,所以用在某些特定的场合,如直播、广播消息、视频音频流处理等不太需要校验数据完整性的场合。
程序那些事
2021/12/09
1.3K0
网络协议之:基于UDP的高速数据传输协议UDT
【计算机网络三】一篇文章详解TCP/IP四层协议簇
DNS ,即 Domain Name System ,域名系统。 DNS 是一整套从域名映射到 IP 的系统。
小皮侠
2024/10/29
5310
【计算机网络三】一篇文章详解TCP/IP四层协议簇
漫话:全球IPv4地址正式耗尽?到底什么是IPv4和IPv6?
导读:近日欧洲网络协调中心(RIPE NCC)宣布,全球所有 43 亿个 IPv4 地址已在11 月 25 日分配完毕,完全耗尽。那么什么是IPv4,耗尽了会怎样?
IT阅读排行榜
2019/12/10
2.2K0
漫话:全球IPv4地址正式耗尽?到底什么是IPv4和IPv6?
流媒体传输协议浅析(三)可靠UDP传输方案
从流媒体的业务特征和TCP,UDP各种特点,UDP在媒体传输方面具有很大优越性,但UDP可靠性需要业务开发这投入大量的人力;相反 tcp 技术成熟,可以复用已稳定的http 服务器技术,不需要投入人力和技术解决可靠性问题,成熟,开发简单,拿来即用。故TCP在传统的流媒体协议还是广泛存在。但实际的网络拥塞,带宽不足,信号衰减会造成tcp 传输的音视频体验很糟糕。对稳定性,实时性,抗弱网抖动性的要求高的场景,UDP媒体传输技术正在崛起。
用户4148957
2022/06/14
2.3K0
流媒体传输协议浅析(三)可靠UDP传输方案
TCP/IP协议族 详解(TCP/IP四层模型、OSI七层模型)
TCP/IP协议族(TCP/IP Protocol Suite,或TCP/IP Protocols),简称TCP/IP。由于在网络通讯协议普遍采用分层的结构,当多个层次的协议共同工作时,类似计算机科学中的堆栈,因此又被称为TCP/IP协议栈(英语:TCP/IP Protocol Stack) 。这些协议最早发源于美国国防部(缩写为DoD)的ARPA网项目,因此也被称作DoD模型(DoD Model)。这个协议族由互联网工程任务组负责维护。
微风-- 轻许--
2022/04/13
5.2K0
python 网络通信协议/TCP,UD
一.osi七层协议 互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层 协议具体内容 各层的功能简述: 【1】物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类
py3study
2020/01/19
8380
TCP/IP关键协议记忆小卡片
在互联网中实际使用的是TCP/IP参考模型。实际存在的协议主要包括在:物理层、数据链路层、网络层、传输层和应用层。 应用层   ·DHCP(动态主机分配协议)   · DNS (域名解析)   · FTP(File Transfer Protocol)文件传输协议   · Gopher (英文原义:The Internet Gopher Protocol 中文释义:(RFC-1436)网际Gopher协议)   · HTTP (Hypertext Transfer Protocol)超文本传
程序员互动联盟
2018/03/12
1.1K0
TCP/IP关键协议记忆小卡片
Web应用系统介绍-TCP/IP协议
大家先冷静一下上了一天班的大脑先~~~ 然后我们再讲理论~ 以下内容非常枯燥,但是也是非常有用~ 在我们开始CTF的道路之前,希望你们能知道并理解下面基本概念,其中有一些是计算机类毕业生必学的内容 学过的同学可以回顾一下 没学过的同学通过我们的抛砖引玉加深自己的理论学习 首先就是TCP/IP协议 TCP/IP协议源于1969年,是针对Internet开发的一种体系结构和协议标准,其目的在于解决异种计算机网络的通信问题 TCP/IP的全称是Transmission Control Protocol/Inte
用户1631416
2018/04/24
1.2K0
Web应用系统介绍-TCP/IP协议
36 张图详解计算机网络知识点
速率:bps=bit/s 时延:发送时延、传播时延、排队时延、处理时延 往返时间RTT:数据报文在端到端通信中的来回一次的时间。
公众号: 云原生生态圈
2022/02/16
1K0
36 张图详解计算机网络知识点
WEB性能–UDP
1980年8月,紧随TCP/IP之后,UDP(User Datagram Protocol,用户数据报协议)被加入了核心网络协议套件。UDP的主要功能和亮点并不在于它引入了什么特性,而在于它忽略的那些特性。UDP一般称为无(NULL)协议,RFC768描述了它的运作机制,全文完全可以写在一张餐巾纸上!
从入门到进错门
2019/09/06
8440
TCP/IP协议四层模型
  接下来的学习重心会放在Linux网络编程这一块,我的博客也会随之更新。参照的书籍有《Linux高性能服务器编程》(游双著)、《UNIX网络编程-卷1:套接字联网API》。
全栈程序员站长
2022/09/07
3520
TCP/IP协议四层模型
UNPv13:#附录A#IPv4、IPv6、ICMPv4和ICMPv6
IPv4首部 IP层提供无连接不可靠的数据报递送服务。它会尽最大努力把IP数据报递送到指定的目的地,然而并不保证它们一定到达,也不保证它们的到达顺序与发送顺序一致,还不保证每个IP数据报只到达一次。任何期望的可靠性(即无差错按顺序不重复地递送用户数据)必须由上层提供支持。对于TCP(或SCTP)应用程序而言,这由TCP(或SCTP)本身完成。对于UDP应用程序而言,这得由应用程序完成,因为UDP是不可靠的。 IP层最重要的功能之一是路由(routing)。每个IP数据报包含一个源地址和一个目
_gongluck
2018/03/08
1.2K0
UNPv13:#附录A#IPv4、IPv6、ICMPv4和ICMPv6
网络协议之:sctp流控制传输协议
要讲网络协议,肯定离不开OSI(Open System Interconnection)的七层模型。 我们一般关注的是网络层之上的几层,比如IPV4 IPV6所在的网络层,TCP UDP所在的传输层,HTTP FTP所在的应用层等。
程序那些事
2022/05/16
1.5K0
计算机网络知识点全面总结
原文:https://blog.csdn.net/Royalic/article/details/119985591
入门笔记
2022/06/02
5100
计算机网络知识点全面总结
20张图说清楚 IP 协议
轻解网络系列又来了,今天咱们说说 IP 协议,这可是网络协议中最最核心的一个协议了,还记得我们刚刚知道什么是IP地址、怎么给电脑修改 IP 的时候吗?今天我们就来探究一下 IP 协议。
古时的风筝
2023/03/24
9800
20张图说清楚 IP 协议
IP协议(网络)
主机: 配有IP地址, 但是不进行路由控制的设备; 路由器: 即配有IP地址, 又能进行路由控制; 节点: 主机和路由器的统称;
ljw695
2025/01/03
1280
IP协议(网络)
计算机网络基础知识总结 转
计算机网络学习的核心内容就是网络协议的学习。网络协议是为计算机网络中进行数据交换而建立的规则、标准或者说是约定的集合。因为不同用户的数据终端可能采取的字符集是不同的,两者需要进行通信,必须要在一定的标准上进行。
wuweixiang
2018/10/11
6170
为什么 HTTP/3 基于UDP,可靠么?
实际上,UDP并不是像大家想象中的那样不可信,它只是因为简单,才让你有这样的认知。从另一个角度来说,它其实是最纯洁的传输层协议。
时代疯
2021/07/22
1.4K0
计算机网络——网络层(1)
我的计算机网络专栏,是自己在计算机网络学习过程中的学习笔记与心得,在参考相关教材,网络搜素的前提下,结合自己过去一段时间笔记整理,而推出的该专栏,整体架构是根据计算机网络自顶向下方法而整理的,包括各大高校教学都是以此顺序进行的。 面向群体:在学计网的在校大学生,工作后想要提升的各位伙伴,
学编程的小程
2024/05/26
1530
计算机网络——网络层(1)
Linux网络-IP协议
网络层就是为了解决不同网络有不同的规范要求的差异问题,寻找一个不同网络间都能共同遵守的网络通信规范,以便不同网络间能相互识别,并接受对方的网络请求。也就是一个中转站的作用,两个毫无交集的网络通过这个中转站来建立交集
用户9645905
2022/11/15
4.2K0
Linux网络-IP协议
相关推荐
网络协议之:基于UDP的高速数据传输协议UDT
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档