网络协议 UDP协议

news/2024/5/18 14:41:43 标签: udp, 网络协议, 网络

网络协议>网络协议 UDP协议

在之前的文章中有对UDP协议套接字的使用进行讲解,本文主要对UDP协议进行一些理论补充。

文章目录

  • 网络协议>网络协议 UDP协议
    • 1. 概念
    • 2. UDP协议格式
      • 2.1 数据报长度
      • 2.2 校验和/检验和
        • 2.2.1 CRC校验
        • 2.2.2 MD5算法

1. 概念

UDP,即User Datagram Protocol(用户数据报协议),为传输层协议

特点:

  • 无连接:知道对端的IP和端口号就直接进行传输,不需要建立连接;
  • 不可靠传输:没有确认机制,没有重传机制;如果因为网络故障该段无法发送给对方,UDP协议层也不会给应用层返回任何错误信息;
  • 面向数据报:不能够灵活的控制读写数据的次数和数量;

2. UDP协议格式

在这里插入图片描述

对于UDP数据报来说,遵循 UDP数据报 = 报头 + 载荷(应用层数据包)

在这里插入图片描述

2.1 数据报长度

由上述两图可以看出,UDP报头中一共有4个字段,每个字段2个字节(16个bit位),一共8个字节。

其中UDP协议首部中有一个16位的最大长度,也就是说UDP数据报最大长度是64KB(包含UDP首部)

2.2 校验和/检验和

网络传输的过程中,数据可能会收到外界环境的干扰(如光信号/电信号)而出现问题,常见的有比特翻转

网络中的校验和并非是简单的按照长度/数量作为校验的标准,一定要让数据的内容能够参与进去,对此,在UDP中校验和一般是使用以下两种方式:

2.2.1 CRC校验

循环冗余校验(Cyclic Redundancy Check, 简称CRC)。

它的操作概述如下:

UDP数据报发送方在发送之前,先计算一遍CRC,把算好的CRC值放到UDP数据报中(设这个CRC值为value1)。接下来这个数据报通过网络传输到达接收端,接收端收到这个数据之后,也会按照同样的算法再算一遍CRC的值,得到的结果是value2,比较自己算的value2和收到的value1是否一致,如果一致,就说明数据是正确的,如果不一致,则传输过程中发生了比特翻转.

上述CRC算法中,如果只有一个bit位发生翻转,此时100%能够发现问题,但如果有两个/多个bit位发送翻转,有可能恰好校验和与之前一样!(这样的情况概率比较低,可以忽略不计)

2.2.2 MD5算法

MD5算法一般用于确保信息传输完整一致,它有以下特点:

  • 定长:任意长度的数据,算出的MD5值长度都是固定的
  • 分散:计算md5过程中,原始数据只要变化一点点,算出来的md5值就会有很大差异
  • 不可逆:提供一个源字符串计算md5值过程非常简单,但提供一个算好的md5值,,将它还原回原始的字符串,理论上是无法完成的

在进行校验和的适合可以使用MD5算法这种高精度的校验和算法!


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

相关文章

【大模型】基于大模型聊天websocket断掉重连的问题

业务场景: 基于大模型聊天场景下,页面一般与服务端是通过websocket建立的连接,服务端再与大模型建立连接。 由于网络不稳定的情况下,页面与服务端的websocket会容易发生请求中断,有时候服务端在往页面推送消息的时候,…

浅谈 Unix Timestamp 时间戳

Linux 时间戳通常指的是 Unix 时间戳,即自 1970 年 1 月 1 日 00:00:00 UTC 起经过的秒数。这个时间戳在许多 Unix 系统和类 Unix 系统(包括 Linux)中广泛使用。我们日常工作学习中也是很常用的。 但是很多刚学习的小伙伴对这一串数字不知道…

【C++杂货铺】详解类和对象 [下]

个人博客:代码菌-CSDN博客 专栏:C杂货铺_代码菌的博客-CSDN博客 目录 🌈前言🌈 📁 初始化列表(灰常重要) 📂 引入 📂 概念 📂 特性 📁 拓展构…

JVM垃圾收集器简介

1.Serial收集器(-XX:UseSerialGC -XX:UseSerialOldGC) Serial(串行)收集器是最基本、历史最悠久的垃圾收集器了。 新生代采用复制算法,老年代使用标记-整理算法。 一种用途是在JDK1.5以及以前的版本中与Parallel Scavenge收集器搭配使用,另一种用途是…

17- OpenCV:图像矩(Image Moments)和点多边形测试

目录 一、图像矩 1、矩的概念介绍 2、相关的API 3、代码演示 二、点多边形测试 1、概念介绍-点多边形测试 2、cv::pointPolygonTest 3、代码演示 一、图像矩 引言 在数字图像处理、计算机视觉与相关领域中,图像矩(Image moments)是指图像的某些特定像素灰…

【目标检测】对DETR的简单理解

【目标检测】对DETR的简单理解 文章目录 【目标检测】对DETR的简单理解1. Abs2. Intro3. Method3.1 模型结构3.2 Loss 4. Exp5. Discussion5.1 二分匹配5.2 注意力机制5.3 方法存在的问题 6. Conclusion参考 1. Abs 两句话概括: 第一个真正意义上的端到端检测器最…

react和antd学习笔记

概论 react是前端框架,antd是组件库。前端框架和组件库的区别与联系 nodejs 脚本语言需要一个解析器才能运行,JavaScript是脚本语言,在不同的位置有不一样的解析器,如写入html的js语言,浏览器是它的解析器角色。而对…

Qt第一个项目(元对象系统)

效果是这样的&#xff0c;点击boy长大一岁或者girl长大一岁 qt的文件构造都是两个头文件三个源文件&#xff0c;源文件中有个cpp文件&#xff0c;它是程序的入口&#xff0c;一个项目中只能有一个main函数 #include "widget.h"#include <QApplication>int mai…