一、UDP协议的介绍
UDP是User Datagram Protocol(用户数据报协议)的英文缩写。UDP只提供一种基本的、低延迟的被称为数据报的通讯。所谓数据报,就是一种自带寻址信息,从发送端走到接收端的数据包。UDP协议经常用于路由表数据交换转发和系统信息、网络监控数据等的交换。UDP协没有TCP那样的三次握手并且基于数据报,因此UDP不基于连接,也没有TCP那样丰富的头信息以实现诸多功能。
UDP数据报的头只包含了类似于TCP中包含的UDP源端口、UDP目的端口号、两个字节的校验和域、两个字节的信息长度域(用来告诉接收端信息的大小,让接收端判断信息是否有效)。
由于UDP协议是如此简单,所以不要指望UDP连接会像TCP连接那样可靠,它一点都不可靠,UDP只负责尽力的转发数据包,但是却不会把错误的数据报重新发送,它会丢弃掉所有被破坏或者损坏的数据报,并且继续后面的传送,至于被丢弃的部分,发送端不知道,也不会被接收端要求重新发送;除此之外,UDP不具备把乱序到达的数据报重新排列的功能(因为没有TCP头中包含的TCP序列号),这样一来,UDP便是完全不可靠的,因为你根本就无法保证你收到的数据是完整的。但是,UDP协议的不可靠并不代表UDP是毫无用处的,恰恰相反,没有了和TCP一样的复杂头信息,各种设备处理UDP数据报的时间将会大大缩短,效率比TCP要高得多,你可以想象,你看13页书比看4页书需要用的时间谁会更多。由于UDP处理的这种高效性,UDP往往被用于那些数据报不断出现的应用,比如IP电话或者实时视频会议,也被用于在路由器之间传输路由表更新信息、传送网络管理和监控数据等,DNS也是使用UDP协议进行域名转换。
二、TCP协议的介绍
TCP,全称Transfer Control Protocol(传输控制协议),它工作在OSI的传输层,提供面向连接的可靠传输服务。
TCP的工作主要是建立连接,然后从应用层程序中接收数据并进行传输。TCP采用虚电路连接方式进行工作,在发送数据前它需要在发送方和接收方建立一个连接,数据在发送出去后,发送方会等待接收方给出一个确认性的应答,否则发送方将认为此数据丢失,并重新发送此数据。
三、UDP与TCP的差异
不同点:
TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。
UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!
TCP协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。比如,我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。QQ就使用UDP发消息,因此有时会出现收不到消息的情况。TCP协议和UDP协议各有所长、各有所短,适用于不同要求的通信环境,概括的讲都是传输协议,不同的是可靠性有高低成本有高低传输大小有差异。
相同点:
两者都是传输层协议,不同点是报头不能,开销不同,主要是tcp需要确认,而udp不需要。