UDP协议结构及其注意事项

news/2024/5/18 16:37:20 标签: udp, 网络协议, 网络

UDP报文结构

UDP报文结构主要是由两个部分组成的:UDP头部和数据部分。

UDP头部

  • 源端口号:16位字段,指示数据发送方的端口号。
  • 目的端口号:16位字段,指示数据接收方端口号。
  • UDP报文长度:16位字段,指示整个UDP报文长度(包括头部和载荷数据)。
  • 校验和:16位字段,用于检测数据是否在传输过程中出现错误。

关于校验和工作原理:

  1. 发送端计算校验和:在数据包发送之前,发送端将UDP头部和数据部分的所有比特位进行二进制求和运算。
  2. 接收端验证校验和:在接收端,UUDP数据报到达之后,接收端将执行类似的校验和计算,然后和发送端计算的值进行比较。

 数据部分

数据部分包含传输的实际数据,其长度可以根据应用程序的需求而变化。

UDP的注意事项

无连接性:UDP是一种无连接的协议,不需要在数据的传输前建立联系,而是直接根据端口号和IP直接连接,这意味着它的开销比较低,但是也意味着不提供连接建立的维护机制。

不可靠性:UDP不提供数据的可靠性保证,因此无法保证数据包的创数顺序是否被成功接收。换句话说,如果数据包在传输过程中丢失或者损坏,UDP不会自动进行重传。

面向数据报: 应用层交给UDP的报文,UDP原样照发,不会拆分,也不会合并。

例如:应用层交给UDP100字节的数据报的时候,发送端一次发送100字节长度,而接收端也必须要一次接受100字节长度,所以接收端就需要提前创建好空间。

缓冲区:UDP只有接受缓冲区,没有发送缓冲区:

UDP没有真正意义上的发送缓冲区,发送的数据会直接交给内核,由内核将数据传给网络层协议进行后续的传输动作。

UDP具有接受缓冲区,但是这个接收缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序一致;如果缓冲区满了,在到达的UDP数据报就会被丢弃,这个时候就会发生丢包

大小受限:UDP协议头部中有一个16位最大长度,也就是说一个UDP能传输的数据最大长度就是64k。


http://www.niftyadmin.cn/n/5005043.html

相关文章

js创建一个按钮添加到body中,设置宽度100px,高度30px,按钮文字一键登录,并为其添加点击事件

要为按钮添加点击事件,你可以使用 JavaScript 的 addEventListener 方法。以下是一个示例代码: // 创建按钮元素 var button document.createElement("button");// 设置按钮的宽度和高度 button.style.width "100px"; button.sty…

前端(十七)——gitee上开源一个移动端礼盒商城项目(前端+后台)

🤗博主:小猫娃来啦 🤗文章核心:gitee上开源一个移动端礼盒商城项目 文章目录 前言开源地址项目运行命令项目基本展示前端效果细节展示视频前端代码细节展示视频后台效果展示后台代码展示经典优势思维导图实现思路 前言 项目样式老…

手写RPC框架--3.搭建服务注册与发现目录结构

RPC框架-Gitee代码(麻烦点个Starred, 支持一下吧) RPC框架-GitHub代码(麻烦点个Starred, 支持一下吧) 搭建服务注册与发现目录结构 搭建服务注册与发现目录结构a.基于ZooKeeper的服务发现b.搭建基础工程c.基础代码d.编写架子工程e.创建zookeeper基础目录结构 搭建服务注册与发现…

【计算机视觉 | 目标检测】目标检测常用数据集及其介绍(六)

文章目录 一、UFDD (Unconstrained Face Detection Dataset)二、PreSIL (Precise Synthetic Image and LiDAR)三、RPC (Retail Product Checkout)四、Dense Fog (DENSE)五、MinneApple六、SeaDronesSee (SeaDronesSee: A Maritime Benchmark for Detecting Humans in Open Wate…

VIRTIO-BLK代码分析(2)VIRTIO驱动分析

QEMU模拟的VIRTIO设备同时也是PCIE设备,Guest中VIRTIO PCIE驱动与之匹配,根据设备驱动模型,最终触发probe函数virtio_pci_probe()。该probe函数使能PCIE设备,并注册VIRTIO设备,并与VIRTIO-BLK匹配,触发VIRT…

OData基础

概念 OData是开放数据协议,描述如何创建和访问Restful服务的OASIS标准 操作 GET 客户端从服务器获取数据 POST、PUT 从客户端推送数据到服务器 DELETE 删除数据 实体: Entity、表、对象 实例对象: 同一个实体的集合 属性: 实体…

lv3 嵌入式开发-8 linux shell脚本函数

目录 1 函数的定义 2 函数的调用 3 变量的作用域 4 练习 1 函数的定义 基本语法: function name() {statements[return value] }function是 Shell 中的关键字,专门用来定义函数; name是函数名; statements是函数要执行…

C++ 统计程序运行时间

C 统计程序运行时间 在C中&#xff0c;可以使用头文件中的high_resolution_clock和time_point类来测量程序运行时间。 以下是一个简单的示例程序&#xff0c;它使用头文件来计算程序运行时间&#xff1a; #include <iostream> #include <chrono> using namespac…