IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> udp协议 -> 正文阅读

[网络协议]udp协议

udp协议(user datagram protocol)

1. UDP协议简介

UDP(User Datagram Protocol),是基于IP协议的一种位于传输层面向无连接非可靠传输协议。udp协议虽然不可靠(unreliable)但是传输速度快,因此,通常被用于流媒体应用(因为对差错率要求低,但对传输速度要求高),udp还用于DNS和SNMP。

1.1 为什么需要udp协议? -----速度快

  • 通信延迟低(无需建立连接)
  • 实现简单,无需维护连接状态
  • 头部开销少(8个字节)
  • 没有拥塞控制,应用可以更好地控制发送时间和速率

1.2 udp的应用场景

  • 包总量较小的通信(DNS、SNMP等)
  • 对差错容忍度比较高的即时通信,如视频,音频等多媒体通信
  • 限定于LAN等特定网络的应用通信
  • 广播通信(广播,多播)

1.3 udp报文格式

在这里插入图片描述

1.2.1 udp报文长度(length)

length字段记录了udp报文首部+数据的字节长度。该字段最小值为8字节,即数据部分为空。

1.2.2 udp校验和(checksum)

udp校验和(checksum)都校验了哪些内容?

校验的内容包括伪首部,首部,数据三部分,校验和在发送端和接收端分别需要计算一次。

校验和(checksum)的校验方式及计算方法

  • 发送端
  1. 把伪首部添加到udp数据报上,构成一个包含完整端点信息的数据报
  2. 将首部校验和字段的16个bit全部置为0
  3. 将整个数据报以16-bit按二进制反码算数求和。如果总的字节数不是偶数,则添加一个全0字节作为填充来辅助求和。
  • 接收端
    1.

如果接收端对数据报校验失败,udp协议会怎么处理该数据报?

? 有两种情况会导致数据报被丢弃,一是发送端没有对数据报计算校验和,也就是checksum字段为全0,而接收端又对该字段值做了验证。二是接收端校验失败,数据报在传输过程中存在差错。

校验和(checksum)字段对udp协议来说是必须的吗?

? udp的校验和(checksum)字段是可选的。在局域网中,由于数据报不需要通过路由器,产生差错的概率较小,此时不使用这个字段是可以接受的,因为可以大大提高传输速率(比较适用于流媒体文件的传输)。但如果数据报通过路由器时,数据产生差错的概率会大大增加,这个时候为了保证数据报的可用性,checksum字段就变得比较重要了。

校验和(checksum)校验通过就说明数据报一定不存在传输差错吗?

不一定,校验和校验通过只能说明,接收端有很高的自信度认为该数据报不存在差错,但并不是百分之百的,思考这样一种情景:数据报中多个位置产生差错,但是这些个位置的差错结合起来又恰巧使得接收端计算的校验和等于发送端,这个时候,这种差错检测机制就失效了,也就说明,校验机制并不能百分百保证数据一致性。

1.2.3 填充字节(Padding bytes)
  • 填充字节只是为了辅助计算校验和,计算完毕后即丢弃,并不会随数据发送给接收端。

3. 关于udp协议的一些常见问题

使用udp协议,发送端是如何确定数据报有没有被接收端接收的?

? 不能确定,发送端只负责发送,至于接收端有没有成功接收到,发送端是不负责的。反之,当接收端成功接收到消息时,也不会反馈给发送端。

议,发送端是如何确定数据报有没有被接收端接收的?

? 不能确定,发送端只负责发送,至于接收端有没有成功接收到,发送端是不负责的。反之,当接收端成功接收到消息时,也不会反馈给发送端。

既然udp提供的服务是非可靠的,那采用udp协议的应用要如何实现可靠数据传输?

  • 在应用层增加可靠性机制
  • 应用特定错误恢复机制
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-04-15 00:40:35  更:2022-04-15 00:42:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/30 3:54:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码