一、UDP简单介绍
(1)UDP是“无修饰”、“不加渲染的”因特网传输层协议。 (2)UDP提供“尽最大努力”服务,即不保证可靠交付,同时也不使用拥塞控制。使得UDP数据段可能丢失或传递失序的报文到应用程序。 (3)UDP是面向无连接的协议,即在UDP接收者与发送者之间没有握手、每个UDP数据段的处理独立于其它数据段。 (4)UDP只在IP的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。
为什么会有UDP呢?主要有以下几点: (1)不需要建立连接,这样就减少了延迟。 (2)在发送者和接收者之间不需要连接状态,使得数据传输更简单。 (3)具有很小的数据段首部。 (4)没有拥塞控制,UDP能够用尽可能快的速度传递。 很适合多媒体通信的要求。
二、UDP是面向报文的
UDP是面向报文的,具体表现为:应用层传输的是报文,到传输层之后将应用层的报文转换为数据段,在数据段前端加上UDP首部,再将首部和数据部分传送到IP层时,IP层的前端又添加了IP首部。UDP主要用于流式多媒体的应用。可以容忍丢包,速度非常快。
三、UDP的首部格式
首部格式:由两个字段构成,分别为首部字段与数据字段。首部字段有8个字节,又由4个字段构成,分别为源端口、目的端口、长度、校验和。每个字段都有两个字节。长度是首部和数据的总长度。
四、UDP基于端口的分用
UDP是基于端口的分用:端口1、端口2、端口3通过应用层的端口到了下层传输层时进行UDP分用,加上UDP首部之后,将首部和数据报传到了下层的IP层。这是从上到下的过程,如果是从上到下的话IP层的数据段在传送时由UDP进行分用,通过分用将数据传到应用层的每一个端口。
五、UDP校验和
在计算校验和时,临时把“伪首部”和UDP用户数据报连接在一起。伪首部仅仅是为了计算检验和。这个过程中我们要去校验发送到对端的数据报是不是本身发的数据报。为了解决这个问题使用校验和去进行校验。在这个过程中可以看到目的IP地址是4个字节、0是1字节、17是1字节、UDP长度是2字节,通过下面的伪首部可以看到总共是12个字节,伪首部再加上源端口号,目的端口号、长度与校验和又封装成了UDP用户数据报的首部,UDP用户数据报首部加上数据发到下层IP层进行数据发送。 校验原理就是一个差错检测的过程。 发送方将用户数据发到了接收方,发送方将数据段看成16bit的整数序列,发送方的UDP对报文段中的所有16比特字的和进行反码运算,求和时遇到的任何溢出都被回卷。将校验和的值放入UDP的校验和域。接收方计算收到数据段的校验和,然后检查校验和是否等于校验和域中的值。如果相等说明数据完整。 计算校验和例子如下图所示:
|