当前位置: 首页 > article >正文

了解传输层UDP协议

目录

一、UDP协议端格式

 二、UDP的特点

三、基于UDP的应用层协议


一、UDP协议端格式

UDP协议是一个传输层的一个重要的协议,要了解这个协议,其最主要的工作就是去理解协议报文格式。

  • 16位UDP长度,是表示整个数据报的最大长度(2^{16}-1=65535字节)(UDP首部(报头)+UDP数据); 
  •  UDP数据报包括了首部(源端口号,目的端口号,UDP长度,UDP检验和)和数据部分,其中首部8字节,剩余部分的数据部分为65527字节;
  • 校验和常用于校验检测,如果校验和出错,就会直接丢弃。        

如图UDP数据报:

 像源端口号,目的端口号以及UDP报文长度通俗易懂,很容易理解,而下面就介绍UDP校验和。

校验和:

在网络传输中,由于一些外部干扰,就可能出现数据传输出错的情况,这时就需要有办法识别出有错的数据,而校验和就是这样的一种检查手段。

校验和其实本质上也是一个字符串,体积比原始的数据更小,又是通过原始的数据生成的。

原始数据相同,得到的校验和就一定相同,反之,校验和相同,原始数据大概率相同。

基于校验和来完成数据的校验过程:

  1. 发送方把要发送的数据整理好(data1),通过一定的算法,计算出校验checksum1;
  2. 发送方把data1和checksum1一起通过网络发送出去;
  3. 接收方收到数据,把收到的数据称为data2(数据可能和data1就不一样了),收到数据checksum1;
  4. 接收方再根据data2重新计算校验和(按照相同的算法),得到checksum2;
  5. 对比checksum1和checksum2是否相同,如果不同,则认为data2和data1一定不相同;如果checksum1和checksum2相同,则认为data1和data2大概率是相同的(理论上存在不同的可能性,概率比较低,工程上忽略不计)。

对于计算校验和,有很多种算法:

CRC算法(循环冗余算法),md5算法。

md5算法的特点

  1. 定长:无论原始数据有多长,计算得到的md5都是固定长度。
  2. 分散:给定两个原始数据,哪怕绝大部分内容都一样,只要其中一个字节不同,得到的md5值差异都会很大。
  3. 不可逆:给出一个原始数据,计算md5,非常容易,但给出md5,还原出原始数据却很难。

 二、UDP的特点

UDP传输的过程类似于寄信

特点:

  • 无连接:知道对端的IP和端口号直接进行传输,不需要建立连接。
  • 不可靠:没有任何安全机制,发送端发送数据报以后,如果因为网络故障该段无法发送到对方,UDP协议层也不会给应用层返回任何错误信息。
  • 面向数据报:应用层交给UDP多长的报文,UDP原样发送,既不会拆分,也不会合并。比如用UDP传输100个字节的数据:如果发送端一次发送100个字节,那么接收端也必须一次接收100个字节;而不能循环接收10次。每次接收10个字节。
  • 缓冲区:UDP只有接收缓冲区没有发送缓冲区,UDP没有真正意义的发送缓冲区,发送的数据会直接交给内核,由内核将数据传给网络层协议进行后续的传输动作;如果缓冲区满了,再达到的UDP数据就会丢弃。
  • 全双工:通过一个socket既可以send,又可以receive。

  • 大小受限:UDP协议首部中有一个16位的最大长度。也就是说一个UDP能传输的数据最大长度是64K(包含了首部0)。

三、基于UDP的应用层协议

  • NFS:网络文件系统
  • TFTP:简单文件传输协议
  • DHCP:动态主机配置协议
  • BOOTP:启动协议(用于无盘设备启动)
  • DNS:域名解析协议


http://www.kler.cn/a/526187.html

相关文章:

  • Day29(补)-【AI思考】-精准突围策略——从“时间贫困“到“效率自由“的逆袭方案
  • 赛博算卦之周易六十四卦JAVA实现:六幺算尽天下事,梅花化解天下苦。
  • 18 大量数据的异步查询方案
  • Win11下帝国时代2无法启动解决方法
  • 安卓(android)实现注册界面【Android移动开发基础案例教程(第2版)黑马程序员】
  • JavaScript - Web APIs(下)
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.25 视觉风暴:NumPy驱动数据可视化
  • FFmpeg源码:av_base64_decode函数分析
  • Python练习(2)
  • 超级强大的压缩和解压工具,免费解压
  • Autosar-Os是怎么运行的?(时间保护)
  • C语言自定义数据类型详解(二)——结构体类型(下)
  • 基于STM32的轮式移动机器人教学
  • olloama下载deepseek-r1大模型本地部署
  • BypassWAF--基本概念
  • Cocoa和Cocoa Touch是什么语言写成的?什么是Cocoa?编程语言中什么是框架?为什么苹果公司Cocoa类库有不少NS前缀?Swift编程语言?
  • [EAI-026] DeepSeek-VL2 技术报告解读
  • 蓝桥云客 三羊献瑞
  • 4.装饰模式(Decorator)
  • Day07:缓存-数据淘汰策略