运输层---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. 其他实现:将受损报文段交给应用程序并给出警告


目录
相关文章
|
2月前
|
存储 网络协议 算法
UDP 协议和 TCP 协议
本文介绍了UDP和TCP协议的基本结构与特性。UDP协议具有简单的报文结构,包括报头和载荷,报头由源端口、目的端口、报文长度和校验和组成。UDP使用CRC校验和来检测传输错误。相比之下,TCP协议提供更可靠的传输服务,其结构复杂,包含序列号、确认序号和标志位等字段。TCP通过确认应答和超时重传来保证数据传输的可靠性,并采用三次握手建立连接,四次挥手断开连接,确保通信的稳定性和完整性。
88 1
UDP 协议和 TCP 协议
|
8天前
|
网络协议 SEO
TCP连接管理与UDP协议IP协议与ethernet协议
TCP、UDP、IP和Ethernet协议是网络通信的基石,各自负责不同的功能和层次。TCP通过三次握手和四次挥手实现可靠的连接管理,适用于需要数据完整性的场景;UDP提供不可靠的传输服务,适用于低延迟要求的实时通信;IP协议负责数据包的寻址和路由,是网络层的重要协议;Ethernet协议定义了局域网的数据帧传输方式,广泛应用于局域网设备之间的通信。理解这些协议的工作原理和应用场景,有助于设计和维护高效可靠的网络系统。
19 4
|
4月前
|
存储 网络协议 Ubuntu
【Linux开发实战指南】基于UDP协议的即时聊天室:快速构建登陆、聊天与退出功能
UDP 是一种无连接的、不可靠的传输层协议,位于IP协议之上。它提供了最基本的数据传输服务,不保证数据包的顺序、可靠到达或无重复。与TCP(传输控制协议)相比,UDP具有较低的传输延迟,因为省去了建立连接和确认接收等过程,适用于对实时性要求较高、但能容忍一定数据丢失的场景,如在线视频、语音通话、DNS查询等。 链表 链表是一种动态数据结构,用于存储一系列元素(节点),每个节点包含数据字段和指向下一个节点的引用(指针)。链表分为单向链表、双向链表和循环链表等类型。与数组相比,链表在插入和删除操作上更为高效,因为它不需要移动元素,只需修改节点间的指针即可。但访问链表中的元素不如数组直接,通常需要从
265 2
|
2月前
|
网络协议
UDP 协议
UDP 协议
119 58
|
1月前
|
网络协议 网络性能优化 C#
C# 一分钟浅谈:UDP 与 TCP 协议区别
【10月更文挑战第8天】在网络编程中,传输层协议的选择对应用程序的性能和可靠性至关重要。本文介绍了 TCP 和 UDP 两种常用协议的基础概念、区别及应用场景,并通过 C# 代码示例详细说明了如何处理常见的问题和易错点。TCP 适用于需要可靠传输和顺序保证的场景,而 UDP 适用于对延迟敏感且可以容忍一定数据丢失的实时应用。
28 1
|
1月前
|
网络协议 算法 数据格式
【TCP/IP】UDP协议数据格式和报文格式
【TCP/IP】UDP协议数据格式和报文格式
119 3
|
1月前
|
存储 网络协议 算法
更深层次理解传输层两协议【UDP | TCP】【UDP 缓冲区 | TCP 8种策略 | 三次握手四次挥手】
UDP和TCP各有所长,UDP以其低延迟、轻量级的特点适用于对实时性要求极高的应用,而TCP凭借其强大的错误检测、流量控制和拥塞控制机制,确保了数据的可靠传输,适用于文件传输、网页浏览等场景。理解它们的工作原理,特别是UDP的缓冲区管理和TCP的8种策略,对于优化网络应用的性能、确保数据的高效和可靠传输至关重要。开发者在选择传输层协议时,应根据实际需求权衡利弊,合理利用这两项关键技术。
63 5
|
1月前
|
JavaScript 安全 Java
谈谈UDP、HTTP、SSL、TLS协议在java中的实际应用
下面我将详细介绍UDP、HTTP、SSL、TLS协议及其工作原理,并提供Java代码示例(由于Deno是一个基于Node.js的运行时,Java代码无法直接在Deno中运行,但可以通过理解Java示例来类比Deno中的实现)。
68 1
|
2月前
|
监控 网络协议 网络性能优化
如何办理支持UDP协议的网络
在当今网络环境中,UDP(用户数据报协议)因传输速度快、延迟低而广泛应用于在线游戏、视频流媒体、VoIP等实时服务。本文详细介绍了办理支持UDP协议网络的方法,包括了解UDP应用场景、选择合适的ISP及网络套餐、购买支持UDP的设备并进行优化设置,以及解决常见问题的策略,帮助用户确保网络稳定性和速度满足实际需求。
|
2月前
|
网络协议
UDP协议在网络通信中的独特应用与优势
UDP(用户数据报协议)作为关键的传输层协议,在网络通信中展现出独特优势。本文探讨UDP的无连接性及低开销特性,使其在实时性要求高的场景如视频流、在线游戏中表现优异;其不保证可靠交付的特性赋予应用程序自定义传输策略的灵活性;面向报文的高效处理能力及短小的包头设计进一步提升了数据传输效率。总之,UDP适用于高速、实时性强且对可靠性要求不高的应用场景,为网络通信提供了多样化的选择。