3.网络之UDP

UDP协议

文章目录

  • UDP协议
  • [1. UDP概述](#1. UDP概述)
  • [2. UDP报文格式](#2. UDP报文格式)
  • [3. UDP传输限制](#3. UDP传输限制)
  • [4. UDP校验和](#4. UDP校验和)
    • [4.1 CRC 循环冗余校验算法](#4.1 CRC 循环冗余校验算法)
    • [4.2 md5 校验算法](#4.2 md5 校验算法)

1. UDP概述

UDP(UserDatagramProtocol)是一个简单的面向消息的传输层协议,尽管UDP提供标头和有效负载的完整性验证(通过校验和),但它不保证向上层协议提供消息传递,并且UDP层在发送后不会保留UDP消息的状态。因此,UDP有时被称为不可靠的数据报协议。如果需要传输可靠性,则必须在用户应用程序中实现。

UDP使用具有最小协议机制的简单无连接通信模型。UDP提供数据完整性的校验和,以及用于在数据报的源和目标寻址不同函数的端口号。

  • UDP的优点:简单,轻量化,传输速度快、效率高。

  • UDP的缺点:不可靠传输

特点:

  • 无连接
  • 面向数据报
  • 不可靠传输
  • 全双工

2. UDP报文格式

UDP首部有8个字节,由4个字段构成,每个字段都是两个字节,

  • 源端口: 源端口号,需要对方回信时选用,不需要时全部置0.
  • 目的端口:目的端口号,在终点交付报文的时候需要用到。
  • 报文长度:UDP的数据报的长度(包括首部和数据)其最小值为8(只有首部)
  • 校验和:检测UDP数据报在传输中是否有错,有错则(差错检测)丢弃。
  • 载荷:存储的是应用层数据报

3. UDP传输限制

由于UDP的16位报文长度(包含首部)所以UDP报文一次最大可以传输64kb左右的数据。

64KB在实际应用中是一个非常小的数据量,在现在这个时代,随便一张照片可能就好几兆,那么如果一个数据的大小超过64KB,此时一个如何处理呢?

  • 可以将数据分成多个UDP数据报,分多次传输

  • 不适用UDP,使用TCP数据报传输(TCP没有这样的限制)

4. UDP校验和

校验和是为了校验数据在传输过程中有没有损耗,从而检查数据的正确性。网络传输归根到底是将光电信号数字化,如果出现一些特殊情况,如:电场/磁场/高能射线等影响,就看会影响数据的传输。

在数据报中加入校验和,只需要接收方接收到数据之后计算一个校验和,和数据报中的校验和对比,如果一致,那么数据大概率是正确的。

4.1 CRC 循环冗余校验算法

循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的原理来作错误侦测的。这也是UDP中使用的校验算法。

4.2 md5 校验算法

md5相比于CRC,它不是简单的进行相加,而是通过一系列的公式,进行更复杂的数学运算而得到。

md5算法的特点:

  • 定长:不管你的数据是 几KB 还是几MB 甚至是几GB,得到的结果长度都是固定的(有4字节版本,8字节版本...)

  • 分散:原始数据即使改变了1位,得到的MD5值都会相差很大,会让结构更加分散

  • 不可逆:通过原始数据计算出MD5值,很容易,但是通过MD5值去计算出原始数据,很难,几乎是不可能的

相关推荐
沧浪之水!9 分钟前
【Linux网络】:套接字之UDP
linux·网络·udp
上海云盾-高防顾问14 分钟前
高防IP+CDN组合:电商大促的“双保险”防护方案
网络·网络协议·tcp/ip
迷路的小绅士18 分钟前
常见网络安全攻击类型深度剖析(三):DDoS攻击——分类、攻击机制及企业级防御策略
网络·web安全·ddos
诡异森林。1 小时前
Docker--Docker网络原理
网络·docker·容器
ALex_zry1 小时前
Docker Macvlan网络配置实战:解决“network already exists“错误
网络·docker·php
半路_出家ren1 小时前
流量抓取工具(wireshark)
网络·网络协议·测试工具·网络安全·wireshark·流量抓取工具
HH牛码2 小时前
通讯的基础概念:涵盖串行通信、并行通信、TCP、UDP、Socket 等关键概念和技术
tcp/ip·udp
Gazer_S3 小时前
【HTTP/2:信息高速公路的革命】
网络·网络协议·http
lLinkl3 小时前
项目笔记2:post请求是什么,还有什么请求
服务器·网络协议·http
李匠20243 小时前
C++ RPC以及cmake
网络·c++·网络协议·rpc