运输层---UDP协议

简介: 运输层---UDP协议

一. 无连接运输:UDP

1.1 定义

  • UDP(User Datagram Protocol)用户数据报协议:由 [RFC 768] 定义的协议。只做运输层协议能做的最少的工作,除了复用/分解功能以及少量差错检测外,几乎没有对IP协议增加别的东西。

运输层协议最低限度必须提供一种复用/分解服务。

  • 构成:从应用进程得到数据,附加上源端口号字段和目的端口号字段,以及两个其他的小字段(长度字段,检验和字段checksum)形成报文段交付给网络层。
    (网络层将UDP提供的报文段封装到IP数据报中,然后尽力而为地交付给目标主机。)

1.2 特点

UDP不提供不必要报文段交付之外的额外功能

  1. 尽力而为的交付不可靠数据传输服务):不保证可靠交付,主机不需要维护复杂的连接状态。

QUIC协议(Quick UDP Internet Connections):快速UDP因特网连接,是一种基于 UDP 的传输层协议将UDP作为支撑运输协议并在UDP之上的应用层协议中实现可靠性保证了数据的完整性和有序性。

  1. 无连接的:通信时不需要创建连接(发送报文段之前,发送方域接收方运输层实体之间没有握手),减小了开销和发送数据前的时延。
  2. 无阻塞控制:不会影响发送端的发送频率。(与TCP相比发送时延少,交付时间短
  3. 无连接状态 :由于不提供可靠数据传输服务,也没有拥塞控制机制,UDP不维护连接状态,也不跟踪参数(接收/发送缓存,拥塞控制参数以及序号与确认号的参数)。
  4. 面向报文:只在应用层交下来的报文前增加了首部后就向下交付IP层
  5. 首部开销小:只有8个字节,相对于TCP的20个字节的首部要短
  6. 支持一对一、一对多、多对一、多对多的交互通信。

1.3 应用

  • DNS:
  • 使用UDP的优势:无需建立连接,运行速度快
  • 网络层将封装好的IP数据报发送给一个名字服务器,查询主机中的DNS应用程序等待响应。如果(由于底层网络丢失了查询或者响应或其他原因)未收到响应,要么向另一个名字服务器发送查询,要么通知调用它的应用程序无法获得响应。
  • 流媒体

一种网上即时传输影音以供观赏的一种技术与过程。

流媒体技术将一连串的媒体数据压缩后,经过网上分段发送数据,在网上即时传输影音以供观赏。此技术使得数据包得以像流水一样发送。如果不使用此技术,就必须在使用前下载整个媒体文件。

  • SNMP

SNMP(Simple Network Management Protocol)是一种用于网络管理的应用层协议,它为网络管理员提供了一种通过运行网络管理软件的中心计算机(即网络管理工作站)来管理设备的方法。

二. UDP报文段结构

UDP报文段包含数据报头(首部)和数据区两部分:

  • 数据报头:由4个字段(每个字段有2字节)组成,分别是:源端口、目的端口、报文长度和校验和。
  • 数据区:包含UDP数据,长度在8字节~65535字节之间,在终点交付报文时需要用到。

数据报头具体释义如下:

  • 源端口:可选字段,通常包含发送数据报的应用程序所使用的UDP端口。需要对方回信时选用,如果不需要对方回信,可置0。
  • 目的端口:接收端计算机上UDP软件使用的端口,占据16位。
  • 报文长度:该字段占据16位,表示UDP数据报长度,包含UDP报文头和UDP数据长度。因为UDP报文头长度是8个字节,所以这个值最小为8。
  • 校验和:检测UDP数据在传输中是否出错,有错则丢弃。该字段可选,当源主机不想计算校验和,则置0。

实际上计算检验和时UDP包含了伪首部,其中包括了源IP地址、目的IP地址、协议号、以及UDP数据的长度,这些信息也要包含在计算校验和的过程中,以确保数据的完整性和正确性。

三. UDP检验和

3.1 定义

  • 目的: 提供差错检测功能,检测在被传输报文段中的差错 (如比特反转)
  • 实现:
  • 发送方: UDP数据报分成若干个16位的比特字(如果数据报的长度不是16位的整数倍,则在末尾填充0),对所有比特字进行求和运算,求和时遇到的任何溢出都被回卷,取累加和的反码作为校验和,放在 UDP报文段中的检验和字段。

进位回卷: 如果累加和超过16位,则将高位的进位加到低位上

ps:这里的取反码是指将16比特01数据中的0与1反转互换,即1变为0,0变为1。

  • 接收方:接收到UDP数据报后会重新计算校验和,然后将计算得到的校验和与接收到的校验和进行比较。如果两者相同,则说明数据在传输过程中可能没有发生错误;如果不同,则说明数据被修改或损坏。

校验范围+校验和=1111111111111111 则通过校验, 否则没有通过校验

3.2 检验和计算实例

回卷:取出超过16位比特的进位(也就是数字1),与最后一位相加(如果出现多次溢出,则重复回卷过程直到无溢出),得到最后的和,再进一步得到检验和。

3.3 UDP检验和的局限

  1. UDP虽然提供差错检测,但是对差错恢复无能为力
  2. 某种实现:丢弃受损报文段
  3. 其他实现:将受损报文段交给应用程序并给出警告


目录
相关文章
|
1月前
|
监控 API 数据处理
局域网监控软件中基于UDP协议的数据传输代码实现
本文介绍了在局域网监控系统中,使用UDP协议进行数据传输的实现。示例代码展示了如何用Python创建UDP套接字,接收并处理监控数据。处理后的数据可通过网站API自动提交到网站,例如利用requests库发送HTTP POST请求。这种方法便于实现监控数据的自动化提交和展示,提升效率与安全性。
141 7
|
1月前
|
负载均衡 算法 网络协议
slb监听协议UDP
SLB的UDP监听器适用于实时性高、数据完整性要求低的场景,如视频流和在线游戏。它无连接、不可靠,不保证数据顺序和重传,适合延迟敏感应用。SLB进行UDP会话保持依赖应用层协议或数据包标识符,使用定制健康检查检测后端服务器状态,并支持多种负载均衡算法。配置时注意网络环境对UDP的支持,确保流量畅通。
47 4
|
29天前
|
域名解析 缓存 网络协议
|
14天前
|
缓存 网络协议 算法
TCP传输协议与UDP传输协议的特点与分析
网络协议如同人与人之间相互交流是需要遵循一定的规则(如语言)一样,计算机之间能够进行相互通信是因为它们都共同遵守一定的规则,即网络协议。 OSI参考模型和TCP/IP模型在不同的层次中有许多不同的网络协议,如图所示: 我们今天主要讨论的是传输层的协议,即考虑应用程序之间的逻辑通信。简单来说就是数据该如何发送给其他机器;
|
26天前
|
网络协议 应用服务中间件 网络性能优化
解析TCP /UDP协议的 socket 调用的过程
【6月更文挑战第2天】该文介绍了传输层的两种主要协议TCP和UDP的区别。TCP是面向连接、可靠的,提供顺序无错的数据传输,而UDP则是无连接、不可靠的,不保证数据顺序或不丢失。
|
28天前
|
域名解析 存储 网络协议
基于 Wireshark 分析 UDP 协议
基于 Wireshark 分析 UDP 协议
|
7天前
用UDP协议实现发送接收的网络聊天室
用UDP协议实现发送接收的网络聊天室
9 0
|
7天前
|
网络协议 Java API
TCP/IP协议以及UDP(超详细,看这一篇就够了)
TCP/IP协议以及UDP(超详细,看这一篇就够了)
12 0
|
1月前
|
存储 网络协议
传输层协议 UDP
传输层协议 UDP
|
1月前
|
网络协议 网络性能优化
运输层中的UDP和TCP协议
总结来说,UDP适用于那些要求速度和实时性高于可靠性的应用,而TCP适用于要求数据可靠性和完整性的应用。选择使用哪种协议取决于您的应用需求。
41 1