你们好啊,我是老杨。
有点基本技术常识的粉丝朋友都知道,UDP肯定是比TCP快的。
很多人对TCP和UDP的了解很浅,直到自己真的经历了一些通信项目之后,你才会愿意根据实际情况埋头苦学,企图“速成”一下。
要是问你为什么快,我相信大多数人,也是能从各个角度,说上几句有的没的。
但是,既然如此,为什么TCP仍然占据优势地位,没有被淘汰?
你的心里有些许困惑,看完这篇文章就好说了。
今日文章阅读福利:《 UDP 协议分析实验 》
关于UDP,理解概念肯定是最基础的,但实验肯定能让你更加深入地学习。私信我,发送暗号“UDP”,获取这份实验资料。
01 为什么UDP比TCP快?
再聊这个问题之前,我们先把问题拆解一下,了解两个技术的基本内涵,降低一点小白的阅读门槛。
想直接了解问题答案的,可以往下拉多一点,跳过这段哈。
01 TCP到底是个啥?
TCP传输控制协议(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。
计算机通信协议是对那些计算机必须遵守以便彼此通信的的规则的描述。TCP是互联网协议之一,也是主要的协议之一。
为啥?
因为它起源于最初的网络实施,在网络实施中,它对互联网协议起到了重要的补充作用。因此,整个套件通常被人称呼为TCP/IP。
它定义了电子设备(比如计算机)如何连入因特网,以及数据如何在它们之间传输的标准。
TCP主要是给在用IP网络通信的主机上运行的应用程序之间,提供一种可靠、有序且经过错误检查的八位字节流传递。
TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。
02 啥是UDP?
如果是那种不需要靠数据流服务的应用程序,就可以使用UDP(用户数据报协议),它和TCP(传输控制协议)不同,前者强调降低延迟,后者强调可靠有序。
UDP (User Datagram Protocol)的全称是用户数据电报协议。
它是一种无连接、不可靠、面向报文的协议,提供不可靠的用户数据报服务,1980 年发布的 RFC 768 定义了 UDP 协议。
如果你想给女朋友发一句消息,你会发现通过UDP发,和TCP发,是有两种截然不同的过程。
用TCP和女朋友聊天的过程我之前写过,感兴趣的朋友可以戳链接回顾一下:《一台主机上只能保持最多 65535 个 TCP 连接吗?》
用UDP的话,会是什么样的画面?
如果你想给女朋友发一句:“我想你了”,UDP只会把这消息消息交给IP层,原封不动。
也就是说,它的目的就是将数据包发出去,尽最大努力的交付。
和TCP的传输的“三次握手”不同,UDP是个直爽性子,争取一步到位。这就会导致消息的不稳定和不确定性。
女朋友到底收到没?不知道。
发消息的时候信号好吗?不知道。
女朋友收到消息之后什么反应?不知道。
一问三不知,所以UDP相对“不那么可靠”。
UDP虽然不可靠,但是它胜在“快”,不需要你谨小慎微的建立连接,然后再发数据,也不需要每一个包都ACK之后再发送下一个。
快,是这个时代的主旋律,从这个角度,UDP还是有很大的用武之地的。
我在看美女直播,想给美女打赏,慢了怎么行?
我在玩游戏放大招,慢了怎么搞?
所以啊,UDP和TCP各有各的好。
再附上一张图,横向对比一下两种协议的区别:
之前在网络上刷到过一个段子,也能很生动形象的区别二者:
《假如用TCP和UDP送快递》
TCP:您好,TCP快递,请问您在家吗,如果在家我现在送过去,请您当面签收一下,如果不在家,我们再约时间哦~
UDP:喂,快递放小区门口了,丢了我不管啊,886。
现在,你能区分这俩兄弟了不?
02 话说回来,为什么TCP仍然占据主要地位?
既然UDP快,为什么不直接都用UDP,这个问题,相信你在看完上半部分,应该会有一个明确的答案,那就是:
UDP不靠谱啊。
是的,虽然不靠谱,但是快,所以对延迟特别敏感的应用,比如视频、语音通话,在线会议等,都会用到UDP技术。
速度快,所以延迟小,这是很多人对UDP的认识。
再加上其实UDP更快不是一个普适性的结论,对于大多数人来说在UDP上搞一个可靠的传输协议绝大多数还不如TCP。
在可靠性非常差的时候,大家都先选择先解决可靠性而已。只能在传输层补齐物理层和链路层的不足。
就像你做一个大型项目,当然,能在ddl之前把项目完美完成并交付给甲方是很体现能力的一件事情,但这个事情的前提是“完美完成”。
很多人做项目很难做到完美,能完成就很难得。而越大的项目就越不可控,越不可控就越要细分颗粒度,把控到位,这样才具有“稳定”输出细节,得到相对理想的完成项目的结果。
UDP明显不具备“稳定”的功能,而相反,TCP的“谨慎”,才是它一直处于主流地位的真正原因。
加上由于TCP有拥塞控制、流量控制。网络设备和运营商更喜欢TCP。
在互联网时代,快速是一个很重要很亮眼的标签,但稳定输出,才是根本基石和一切之本。
TCP如此,工作亦如是。
最后,想要系统学习TCP/IP的小友,也欢迎私聊我,网络基础其实在HCIA/CCNA认证课程中就有系统涉及到。
原创:老杨丨10年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部
标签:协议,UDP,IP,TCP,可靠,传输,更快 From: https://blog.51cto.com/u_15281548/8741275