简介
UDP(User Datagram Protocol)即用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。UDP报文没有可靠性保证、顺序保证和流量控制字段等,可靠性较差。但是正因为UDP协议的控制选项较少,在数据传输过程中延迟小、数据传输效率高,适合对可靠性要求不高的应用程序,或者可以保障可靠性的应用程序,如DNS、TFTP、SNMP等。
特点:1.无连接 2.尽最大努力交付(不保证可靠传输) 3.面向报文 4.无拥塞控制 5.支持一对一,一对多,多对多的交互通信 6.首部开销小
封包格式及各字段分析
封包格式
字段分析
(1)源端口: 占16位、源端口号。在需要对方回信时选用。不需要时可用全0。
(2)目的端口: 占16位、目的端口号。这在终点交付报文时必须使用。
(3)长度: 占16位、UDP用户数据报的长度,其最小值是8(仅有首部)。
(4)检验和: 占16位、检测UDP用户数据报在传输中是否有错。有错就丢弃。
数据包分析
其他相关
端口:
服务器端使用的端口号:这里分为两类,最重要的一类叫做熟知端口号或系统端口号,数值为0~1023。这些数值可在网址 www .lana.org查到。IANA把这些端口号指派给了 TCP /P最重要的一些应用程序,让所有的用户都知道。当种新的应用程序出现后,IANA必须为它指派一个熟知端口,否则互联网上的其他应用进程就无法和它进行通信。另一类叫做登记端口号,数值为1024~49151。这类端口号是为没有熟知端口号的应用程序使用的。使用这类端口号必须在IANA按照规定的手续登记,以防止重复。
客户端使用的端口号:数值为49152-65535。由于这类端口号仅在客户进程运行时才动态选择,因此又叫做短暂端口号。这类端口号留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的端口号,因而可以把数据发送给客户进程。通信结束后,刚才已使用过的客户端口号就不复存在,这个端口号就可以供其他客户进程使用。
校验方式和伪首部:
UDP用户数据报首部中检验和的计算方法有些特殊。在计算检验和时,要在UDP用户数据报之前增加12个字节的伪首部。所谓“伪首部”是因为这种伪首部并不是UDP用户数据报真正的首部。只是在计算检验和时,临时添加在UDP用户数据报前面,得到一个临时的UDP用户数据报。检验和就是按照这个临时的UDP用户数据报来计算的。伪首部既不向下传 送也不向上递交,而仅仅是为了计算检验和。上图也给出了伪首部各字段的内容。
UDP端口分用:
比起TCP协议,UDP协议当中的东西就少很多了,一般情况下,运输层中TCP和UDP是占主导地位的,将TCP和UDP类比学习,将会比较透彻。