UDP协议

前面我们介绍了了TCP协议,深入浅出TCP协议,为什么需要TCP协议?知道TCP是面向连接的提供可靠性服务的传输层协议,今天讲下同属于传输层的另一个协议——UDP。

正文

1

什么是UDP?

UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,传输可靠性没有保证。

2

UDP报文头

UDP报文分为UDP报文头和UDP数据区域两部分。报头由源端口、目的端口、报文长度以及校验和组成。

UDP头部的标识如下:

16位源端口号:源主机的应用程序使用的端口号。

16位目的端口号:目的主机的应用程序使用的端口号。

16位UDP长度:是指UDP头部和UDP数据的字节长度。因为UDP头部长度为8字节,所以该字段的最小值为8。

16位UDP校验和:该字段提供了与TCP校验字段同样的功能;该字段是可选的。

3

为什么需要UDP?

UDP(User Datagram Protocol)传输与IP传输非常类似,它的传输方式也是"Best Effort"的,所以UDP协议也是不可靠的。

我们知道TCP就是为了解决IP层不可靠的传输层协议,既然UDP是不可靠的,为什么不直接使用IP协议而要额外增加一个UDP协议呢?

1、一个重要的原因是IP协议中并没有端口(port)的概念。IP协议进行的是IP地址到IP地址的传输,这意味者两台计算机之间的对话。但每台计算机中需要有多个通信通道,并将多个通信通道分配给不同的进程使用。一个端口就代表了这样的一个通信通道。UDP协议实现了端口,从而让数据包可以在送到IP地址的基础上,进一步可以送到某个端口。

2、对于一些简单的通信,我们只需要“Best Effort”式的IP传输就可以了,而不需要TCP协议复杂的建立连接的方式(特别是在早期网络环境中,如果过多的建立TCP连接,会造成很大的网络负担,而UDP协议可以相对快速的处理这些简单通信)

3、在使用TCP协议传输数据时,如果一个数据段丢失或者接收端对某个数据段没有确认,发送端会重新发送该数据段。TCP重新发送数据会带来传输延迟和重复数据,降低了用户的体验。对于迟延敏感的应用,少量的数据丢失一般可以被忽略,这时使用UDP传输将能够提升用户的体验。

4

UDP应用场景:

当应用程序对传输的可靠性要求不高,但是对传输速度和延迟要求较高时,可以用UDP协议来替代TCP协议在传输层控制数据的转发。

UDP适合于实时数据传输,如语音和视频通信,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。例如:我们在看视频的时候偶尔丢一两个包也不影响体验。

常用的使用UDP协议包括:TFTP、SNMP、NFS、DNS、BOOTP。

UDP端口号有:53(DNS)、69(TFTP)、161(SNMP)。

5

UDP协议不可靠,可靠性由谁保障

UDP将数据从源端发送到目的端时,无需事先建立连接,没有使用TCP中的确认技术或滑动窗口机制,因此UDP不能保证数据传输的可靠性,也无法避免接收到重复数据的情况。

UDP传输的可靠性由应用层负责,由应用程序根据需要提供报文到达确认、排序、流量控制等功能。

6

UDP协议优缺点:

优点:UDP协议的控制选项较少,在数据传输过程中延迟小、数据传输效率高,开销更小,适合对可靠性要求不高的应用程序,或者可以保障可靠性的应用程序,如DNS、TFTP、SNMP等。

缺点:UDP报文没有可靠性保证、顺序保证和流量控制字段等,

7

UDP工作原理

主机A发送数据包时,这些数据包是以有序的方式发送到网络中的,每个数据包独立地在网络中被发送,所以不同的数据包可能会通过不同的网络路径到达主机B。这样的情况下,先发送的数据包不一定先到达主机B。

因为UDP数据包没有序号,主机B将无法通过UDP协议将数据包按照原来的顺序重新组合,所以此时需要应用程序提供报文的到达确认、排序和流量控制等功能。

通常情况下,UDP采用实时传输机制和时间戳来传输语音和视频数据。

8

UDP和TCP有什么区别呢

相同点:
UDP协议与TCP协议一样用于处理数据包,在OSI模型中,两者都位于传输层,处于IP协议的上一层。

不同点:

1、TCP 是面向连接的传输控制协议,而UDP 提供了无连接的数据报服务;

2、TCP 具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;UDP 在传输数据前不建立连接,不对数据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复、乱序,应用程序需要负责传输可靠性方面的所有工作;

3、UDP 具有较好的实时性,工作效率较 TCP 协议高;

4、UDP 段结构比 TCP 的段结构简单,因此网络开销也小。

9

实战

下面在华为ENSP模型器上去搭建下环境抓一个UDP报文进行解析,之前介绍过ENSP模拟器的下载和使用 【必备软件】华为eNSP模拟器安装和介绍(内附下载链接),通过wireshark抓包的方式看下数据是如何封装的?网络工程师必备技能|如何在华为ENSP模拟器上通过wireshark抓包

拓扑如图所示:PC1和PC2互联。PC1的IP地址是192.168.1.2/24,MAC地址54-89-98-B0-52-A7; PC2的IP地址是192.168.1.3/24,MAC地址54-89-98-2D-4C-71。

PC1的地址配置为192.168.1.2/24;

PC2的地址配置为192.168.1.3/24;

通过UDP发包工具在将PC1作为源向PC2发送UDP报文,源和目的端口为518;

如图所示,在PC1和PC2的互联接口上进行抓包,获取发送的数据报文如下;

打开一个详细的报文,我们看下UDP的报文格式。可以看到:UDP源端口号为518,目的端口号为518,UDP包长度为36字节,8字节UDP报文头+28字节数据。

总结

本章主要介绍了传输层的另一个协议:UDP,UDP其实可以看成是对TCP协议的补充,是一种无连接的不可靠的协议,具体延迟小,效率高等特点。

原文链接:[https://blog.csdn.net/sinat_38673660/article/details/107094567](https://blog.csdn.net/sinat_38673660/article/details/107094567)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值