5.7.1 UDP概述

5.7.1 UDP概述

用户数据报UDP协议是在IP数据报服务之上增加了两个内容

  1. 端口的复用和分用
  2. 差错控制

一、UDP特点

UDP特点TCP特点
无连接面向连接
不可靠的服务可靠的服务
点到点和多点通信点到点的通信
首部8字节首部固定部分20字节
面向报文面向字节流
  1. UDP是无连接的服务,也就是说UDP在数据传送前不需要与对方建立连接,UDP的主机不需要像TCP一样维持复杂的有限状态期机制
  2. UDP提供的是不可靠的服务,这其中我们应该知道在UDP中数据可能不按发送顺序到达对方,数据也有可能出现重复,甚至出现丢失的情况。
  3. UDP同时支持点到点和多点之间的通信,尤其是对网络的实时应用,比如IP电话,视频会议等,这是UDP非常重要的特性,如果网络中出现拥塞,UDP不会使得源主机发送速率有所降低。
  4. UDP的首部只有8个字节的开销,报文首部信息比较少,因此开销较小。
  5. UDP是面向报文的,发送方的UDP协议对应用进程交付的报文是直接封装成UDP的用户数据报,之后就向下交付给网络层进行处理。而接收方的UDP协议对网络层交付的UDP用户数据报去除首部信息后根据端口递交给相应的应用进程。这里需要说明的是UDP适合于传输比较短的数据报文。

在前面我们学习IP数据报格式(5.2.3 IP数据报(一)IP数据报的格式)时我们知道源端有可能会产生分片(5.2.5 IP数据报(三)IP数据报的分片与重组),这个分片指的就是UDP协议的情况,对于UDP用户数据报而言由于UDP数据不会对其进行分段,因此应用进程交付下来的报文如果比较大,大于了网络层的最大传输单元MTU,此时就有可能在源端的网络层进行IP的分片,需要注意的是IP数据报如果携带的是UDP的数据,当IP数据报进行分片时只有第一个分片中带有UDP的首部或其他的信息,其余的分片就只有IP的首部,到达另外一个终端之后根据IP首部信息,再把传输层的内容进行重组。

二、UDP用户数据报在Wireshark中的样子

如图是UDP用户数据报在Wireshark中的样子。

UDP用户数据报

  • 其实在网络中传输的都是二进制的比特流,也就是我们所说的电信号或者光信号表示的二进制的比特流。

  • 为了表示方便在Wireshark的detail面板中使用的十六进制数进行描述,这样看起来要简洁一些,就是图中的分组字节流显示的内容

  • 但是我们依旧看不出来有什么含义,所以在Wireshark中将十六进制数根据网络实际传输的报文,拆解成有意义的字段内容,显示在Wireshark中的分组详情面板,比如我们把UDP的16进制数据分成UDP的首部和UDP的数据。在UDP的首部中我们进一步的将其拆解成源端口,图中所示53699,目的端口32761,长度图中为76,校验和为16进制数的0afd,数据部分为68字节内容。

  • 为了便于理解这里我们使用二维图形显示UDP首部内容。每一行四个字节,所以首部一共占两行8个字节。UDP数据68字节。

    源端口53699目的端口32761
    长度76校验和0afd
    数据68字节

通过上面的过程整个UDP就相对形象很多。

三、UDP协议格式首部

UDP用户数据报由两个部分组成,第一个部分是UDP的首部,第二个部分是UDP的数据,这里我们先来学习UDP首部格式。UDP首部主要由4个字段组成,每个字段各占2个字节16个比特位。

  1. 源端口字段:标识了是从哪一个应用进程的端口交付的数据。
  2. 目的端口字段:标识到达目的主机应用进程的端口号。
这里的端口只有本地意义,它还需要与IP地址结合在一起才能显示出其具体的含义。
  1. 长度字段:UDP数据报的长度,它是以字节为单位的
这里需要注意的是长度字段的值是包括了UDP首部的8个字节在内的。
  1. 校验和字段:用于接收方校验收到的UDP用户数据报的正确性,后面我们学习其计算过程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/3837.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TypeScript - 函数(上)

目录 1、介绍 2、函数类型表达式 3、呼叫签名 4、构造签名 5、泛型函数 6、推论 7、约束 8、使用约束值 9、指定类型参数 1、介绍 函数是JavaScript应用程序的基础。 它帮助你实现抽象层,模拟类,信息隐藏和模块。 在TypeScript里&#xff0c…

css基础知识十二:CSS3常见动画有哪些?实现方式?

一、是什么 CSS动画(CSS Animations)是为层叠样式表建议的允许可扩展标记语言(XML)元素使用CSS的动画的模块 即指元素从一种样式逐渐过渡为另一种样式的过程 常见的动画效果有很多,如平移、旋转、缩放等等&#xff…

io.netty学习(十四)Netty 编码器

目录 前言 MessageToByteEncoder 抽象类 MessageToMessageEncoder 抽象类 总结 前言 上一篇我们讲解了解码器的相关知识,其中也提到了编码器的定义。 编码器就是用来把出站(针对本身来讲,发送都是出站,接收都是入站&#xf…

开源 sysgrok — 用于分析、理解和优化系统的人工智能助手

作者:Sean Heelan 在这篇文章中,我将介绍 sysgrok,这是一个研究原型,我们正在研究大型语言模型 (LLM)(例如 OpenAI 的 GPT 模型)如何应用于性能优化、根本原因分析和系统工程领域的问题。 你可以在 GitHub …

「一本通 3.2 例 3」架设电话线

题目大意 在加权无向图上求出一条从 号结点到 号结点的路径,使路径上第 大的边权尽量小。 思路 由于是一次性的,且这题数据极小,考虑 正常情况下是来更新数组的,不过这次是更新 表示第个节点,(可以…

ansible实训-Day2(ansible基本问题及部署安装)

一、前言 该篇是对ansible实训第二天内容的归纳总结,主要包括ansible的一些基本问题以及ansible的部署安装。 二、理论部分 Q1:什么是ansible Ansible是一种自动化IT工具,它可以帮助管理和自动化IT基础架构。使用Ansible,管理员…

并发List:CopyOnWriteArrayList

CopyOnWriteArrayList 适合写多读少 介绍 JUC包中的并发List只有CopyOnWriteArrayList。CopyOnWriteArrayList是一个线程安全的ArrayList,使用了写时复制策略,对其进行的修改操作都是在底层的一个复制的数组上进行的。 CopyOnWriteList 实现的接口和 Ar…

PACS医学影像系统(完整版)

一、PACS影像存取与传输系统以实现医学影像数字化存储、诊断为核心任务,从医学影像设备(如CT、CR、DR、MR、DSA、RF等)获取影像,集中存储、综合管理医学影像及病人相关信息,建立数字化工作流程。 二、系统可实现检查预…

python进行windows系统UI自动化之【pyautoit】

python进行windows系统UI自动化之【pyautoit】 一、AutoIT中文手册1.1、安装AutoIt1.2、使用Auto Window Info 二、python引用2.1、安装2.2、引用2.3、使用2.3.1、窗口操作2.3.2、控件操作2.3.3、进程操作2.3.4、鼠标操作2.3.5、键盘操作2.3.5.1、Send 是非常有用的一个函数/命…

C++ 程序设计入门

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…

交换网络基础

交换网络基础 一、交换机的基础原理1.1、交换机1.2、小型交换网络1.3、交换机的转发行为1.4、交换机转发原理1.4.1、交换机初始状态1.4.2、学习MAC地址1.4.3、转发数据帧1.4.4、目标主机回复 1.5、基本配置1.6、总结 二、STP原理2.1、二层交换网络2.2、广播风暴&重复帧2.3、…

使用R绘制气泡图、带有显著性标记的热力图、渐变曲线图

大家好,我是带我去滑雪! 一幅精美的科研绘图会有诸多益处,精美的图像可以更好地传达研究结果和数据分析的重要信息。通过使用清晰、直观和易于理解的图像,可以更好地向读者展示研究的发现,有助于读者理解和解释数据。还…