面向无连接的传输:UDP协议
上次我们简单的介绍了一下传输层以及相关协议,这次我们就来详细的研究一下UDP,研究一下该协议是怎么工作,具有哪些功能。
最开始还是关于UDP的定义,首先看来自百度百科的:
UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。
UDP协议全称是用户数据报协议[1] ,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。
与所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。UDP协议的主要作用是将网络数据流量压缩成数据包的形式。一个典型的数据包就是一个二进制数据的传输单位。每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。
这段时间在网上查了一下关于UDP的资料,有人把UDP比作IP协议的傀儡,因为UDP也是不可靠传输,也只是尽力而为服务,而且值得注意的是,使用UDP时,在发送报文段之前,发送方和接收方的运输层实体之间没有握手。正因为如此,UDP才被称为无连接的。关于这个比喻更加详细的信息的话,大家可以看看这个:http://www.cnblogs.com/vamei/archive/2012/12/05/2798208.html
正因为如此,我们在选择传输层协议的时候,一定注意选择正确的,适宜的协议,关于选择协议时有一下几个建议:
1.是否需要连接建立;
2.是否需要从连接状态中获取参数;
3.分组的首部开销。(每个TCP报文段都有20字节的首部开销,而UDP仅有8字节的开销)
流行的因特网应用及其下面的运输协议:
应用 |
应用层协议 |
运输层协议 |
电子邮件 |
SMTP |
TCP |
远程终端访问 |
Telnet |
TCP |
Web |
HTTP |
TCP |
文件传输 |
FTP |
TCP |
远程文件服务器 |
NFS |
通常UDP |
流式多媒体 |
通常专用 |
UDP或TCP |
因特网电话 |
通常专用 |
UDP或TCP |
网络管理 |
SNMP |
通常UDP |
路由选择协议 |
RIP |
通常UDP |
名字转换 |
DNS |
通常UDP |
UDP报文结构:
UDP首部字段中只有4个字段,每个字段由两个字节组成,故UDP首部长度应为64bit(即一开始所说的8个字节)。
长度字段就如同它的名称一样相当于整个UDP报文段的字节数。
而检验和则提供了差错检测的功能。
那么在UDP首部中唯一值得注意的就是UDP检验和的计算。
UDP检验和的具体计算步骤是:发送方对报文段中的所有16bit字的和进行反码运算,求和时遇到的任何一处都被回卷。
回卷及时将超出16位的数字1与后16位数字相加。
比方说一共有3个16bit的字:
0110011001100000
0101010101010101
1000111100001100
那么前两个之和是:
0110011001100000+0101010101010101=1011101110110101
再将其与第三个相加,得出:
1011101110110101+1000111100001100=0100101011000010
由于最后一次相加有溢出,我们就把它回卷,因此最后一个就可以得出以上的结果,那么在接收方我们将以上的4个16bit字(包括检验和)全部加在一起,如果没有出现差错就应该是1111111111111111。
虽然根据UDP的检验和,UDP提供了相应的差错检测,但它对差错恢复无能无力。UDP的某种实现知识丢弃受损的报文段;其他实现是将受损的报文段交给应用程序并给出警告。
相关推荐
但TCP/IP协议的传输速度方面没有面向非连接的UDP协议高,因此基于UDP的研究成了网络传输协议研究的重要方向之一。UDP的主要特点是高速、乱序、丢包较多、面向非连接、系统开销少等特点,针对这些特点并进行分析后...
UDP(User Datagram Protocol)是一种面向数据报的无连接传输层协议。相较于面向流字符的TCP协议,UDP在发送数据报时不需要进行握手过程,这大大减少了通信建立的时间成本,提高了数据传输效率,非常适合于实时性...
1. 连接方式:TCP是面向连接的协议,在传输数据之前必须建立连接,而UDP是无连接的协议,不需要建立连接。 2. 可靠性:TCP提供可靠的传输服务,而UDP提供的是不可靠的传输服务。 3. 报文结构:TCP报文头部较长,包含...
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的可靠的传输层协议,它支持在不可靠网络上实现面向连接的可靠的数据传输。TCP 协议的主要特点是: 1. 面向连接:在数据传输之前,TCP 需要建立...
- TCP是面向连接的协议,在数据传输之前需要建立连接。 - UDP是无连接的协议,无需事先建立连接。 - **可靠性**: - TCP提供可靠的数据传输服务,确保数据包按顺序到达,并且不会丢失。 - UDP不保证数据包的到达...
UDP协议,全称为User Datagram Protocol,即用户数据报协议,是一种在OSI模型中位于传输层的无连接的网络传输协议。它主要提供的是面向事务的简单不可靠信息传送服务。UDP协议作为IP协议的上一层,被设计为在不需要...
TCP协议是一种面向连接的协议,而UDP协议是一种非面向连接的协议。 TCP协议是可靠的协议,原因是它具有确认机制。当数据从A端传到B端后,B端会发送一个确认包(ACK包)给A端,告知A端数据我已收到!这确保了数据的...
首先,TCP是一种面向连接的、可靠的传输协议。在数据传输之前,TCP会建立一个端到端的连接,确保数据能够按照顺序、无丢失地传递。TCP通过三次握手来建立连接,并使用序列号和确认应答机制来保证数据的可靠性。此外...
UDP协议是一种面向事务的、无连接的协议,其设计目标是尽可能减少协议机制,从而实现快速的数据传输。因此,它不提供任何关于交付和重复保护的保证。对于需要有序可靠地传输大量数据的应用程序,建议使用传输控制...
UDP用户数据报协议(User Datagram Protocol)是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP 协议基本上是 IP 协议与上层协议的接口。UDP 协议适用端口分辨运行在同一台设备上的多个应用...
UDP是一种传输层协议,与面向连接的TCP协议不同,它不保证数据的顺序、可靠性和完整性,但具有更低的延迟和更高的效率。 描述中提到的"UdpSrv"是服务器端程序,而"UdpClient"则是客户端程序。这两个程序都是在...
* 连接方式:UDP 协议是无连接的,TCP 协议是面向连接的。 * 可靠性:UDP 协议提供不可靠的数据传输服务,TCP 协议提供可靠的数据传输服务。 * 检验和:UDP 协议的检验和是可选字段,TCP 协议的检验和是必选字段。 ...
**UDP协议**,即用户数据报协议,是一种面向非连接的传输层协议。相比于TCP协议,UDP协议更加轻量级,适用于对实时性和速度要求较高的应用场景,如在线游戏、实时视频流传输等。 ##### UDP协议的特点: 1. **非连接...
【基于UDP协议的聊天工具】是一款使用C#编程语言实现的通信软件,它利用了用户数据报协议(UDP)来实现实时的数据传输。UDP是一种无连接的、不可靠的传输协议,它在互联网协议栈中位于传输层,相较于TCP协议,它的...
UDP协议的主要特点包括: 1. 无连接:UDP发送数据前不需要建立连接,发送结束后也不需要断开连接,这种特性使得UDP的通信延迟更低。 2. 不可靠传输:UDP不保证数据的可靠传输,不提供数据包的顺序保证、重传机制和...
TCP通过建立面向连接的数据管理策略以及重传机制来确保数据的可靠传输,但对于音频和视频流这类对实时性要求极高的应用场景来说,TCP的频繁确认和重传机制反而会导致数据无法实现实时传送。因此,在此类应用场景下...
与之相对的是TCP(Transmission Control Protocol),后者是面向连接的协议,提供了可靠的数据传输服务。 在UDP中,数据包被称为数据报,每个数据报包含源和目的的IP地址以及端口号,允许数据直接从发送方发送到...
TCP是面向连接的协议,提供可靠的、有序的、无损的数据传输服务,适合对数据完整性要求高的应用,如网页浏览、电子邮件和文件传输。相比之下,UDP更适合实时通信应用,如语音通话和在线游戏,因为这些应用对数据的...
TCP,即传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。它通过三次握手建立连接,并在数据传输过程中进行流量控制、拥塞控制和错误检测,确保数据的正确顺序到达接收端。因此,TCP适合于那些...