咱们都知道TCP和UDP做为传输协议,被普遍应用于网络通讯。这些基础的网络知识也是须要了解,既然两种传输协议均可以用于通讯,那它们二者又有何区别。本文将如下面5个点进行对比:html
在比较这二者的区别以前,有必要了解下TCP/IP模型,这有利于咱们理解下面的内容。缓存
网络模型并不是一开始就有的,在网络发展初期,网络协议都是互联网公司本身定义的。因为各家公司的网络协议不一样,没有统一标准的网络协议来规定,各个公司的协议都不能互通。这对于网络发展很不利,为了解决这个问题,国际标准化组织 1984 提出的模型标准,简称 OSI(Open Systems Interconnection Model),这是一个标准,并不是实现。TCP/IP 协议就是基于此模型设计。安全
TCP/IP模型是一个四层模型,自底而上分别是网络接口层、网络层、传输层和应用层网络
UDP是一种无链接的传输层协议,由于在使用UDP发送报文段时,发送端和接收端的传输层实体之间没有进行握手。所谓的握手,就是发送端和接收端经过发送一些特定的报文段来互相确认,从而为发送作准备。因为UDP能够不用任何准备便可进行数据数据传输,所以UDP的数据传输速度会比TCP快。 ide
TCP是一种面向链接的传输层协议,网络系统须要在两台计算机之间发送数据以前先创建链接。相似于咱们打电话同样,通讯以前须要呼叫和应答。其过程分为创建链接(三次握手)、使用链接(数据传输)、释放链接(四次挥手)三个过程。因为这些机制,TCP数据传输会比UDP可靠,即确保双方都互通后再发送数据,保证数据包可以完整的发送过去。 spa
UDP是无链接的传输协议,不须要维护链接状态,包括收发状态,能够实现一对一,一对多,多对一和多对多的交互通讯。 设计
TCP是面向链接的传输协议,发送数据须要双方创建链接,属于端到端的通讯,实现的是一对一的交互通讯。 3d
UDP是面向报文的。发送端的传输层对应用层交下来的报文,在添加报头后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界。接收端传输层接收到报文会去掉报头,将数据部分交给应用层。 指针
TCP是面向字节流的。发送端的应用层将数据字节流交付到传输层的缓存区,根据发送策略对字节流分片,添加报头发送TCP报文。接收端传输层收到报文后,去掉报头存储到接收缓存。接收缓存将字节流片断交给应用层,应用层再将字节流片断重组还原为可用的数据。 视频
UDP提供无链接的不可靠服务。在发送端到接收端的传递过程当中出现数据包丢失或接收误码的状况,协议自己并不能作出任何检测或提示。UDP只是尽量快地把数据扔到网络上,并不保证数据包的完整性。所以UDP没有可靠性保证、顺序保证和流量控制字段。
TCP提供面向链接的可靠服务。在发送端到接收端的传递过程当中出现数据包丢失或接收误码的状况,接收端在定时器超时后没有收到相应的确认,发送端会从新发送数据包。TCP链接每一方的接收缓冲空间大小都固定,接收端只容许另外一端发送接收端缓冲区所能接纳的数据,TCP在此基础上提供流量控制,防止较快主机导致较慢主机的缓冲区溢出。
UDP传输的段有8个字节的报头和有效载荷字段构成。UDP报头由4个域组成,其中每一个域各占用2个字节,具体包括源端口号、目标端口号、数据报长度、校验和。
TCP传输的段有最小20字节的报头和有效载荷字段构成。TCP具体组成包括端口号、序号、确认号、保留域、标志域、窗口、校验和、紧急指针构成,另外可扩展首部包括选项和填充。
经常使用于实时应用。例如视频直播、IP电话,QQ语音和QQ视频就是使用UDP的协议。
经常使用于对可靠性要求高的通讯。例如文件传输。
原文出处:https://www.cnblogs.com/chanwahfung/p/12273717.html