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概述

UDP只在IP的数据报服务上增加了两个最基本的服务:复用和分用以及差错检验。UDP相对于TCP有以下优点:

  1. UDP不需要建立连接。也就是说UDP不会有建立连接的时延。DNS如果运行在TCP上而不是UDP上,会慢很多,而HTTP之所以会运行在TCP上是因为对于基于文本数据的Web而言,数据链路的可靠性是很重要的。

  2. 无连接状态。TCP需要在端系统中维护连接状态,这个连接状态包括收发:缓存、拥塞控制参数、序号参数、确认号参数等数据。而UDP不用维护这些状态,也不用跟踪这些参数,所以使用UDP协议的服务器往往能支持更多的活动客户机

  3. 分组首部开销小。TCP有20B的首部开销,而UDP只有8B的首部开销。

  4. 应用层能够更好地控制要发送的数据和数据的发送时间。UDP没有拥塞控制,网络中的拥塞不会影响主机的发送速率。有些应用需要以稳定的速度发送数据报,能够容许部分数据丢失,但不允许有较大的时延,正好UDP能满足需求

  5. UDP支持一对一,一对多,多对一,多对多的通信

UDP通常用于一次性传输较少数据的网络应用。UDP不保证可靠交付,维护可靠性的工作可以由用户在应用层完成。UDP是面向报文的,也就是说不论应用层传给UDP多大的数据报,UDP都只是加个首部就往下传;对于从IP层传过来的数据报也是,只是把首部除去就往上传。

UDP数据报

UDP数据报包含两部分:UDP首部和用户数据。UDP首部长度为8B,由4个字段组成,每个字段占2B

?

?

各个字段意义如下:

  1. 源端口:源端口号。在需要对方回信时选用,不需要的时候可以全为0

  2. 目的端口:目的端口号。在终点交付报文的时候必须使用到

  3. 长度:UDP数据报的长度(包括首部和数据部分),其最小值时8(只用到首部)

  4. 校验和:检验UDP数据报在传输中是否有出错。有错就丢弃。该字段为可选字段,当源主机不想计算校验和的时候,就直接令该字段为全0

当传输层从IP层收到UDP数据报的时候,就根据首部中的目的端口,把UDP数据报通过相应的端口上交给应用程序。

如果接收方UDP发现收到的报文中的目的端口号不正确(也就是说不存在对应于端口号的应用进程),那么就丢弃这个报文,并由ICMP发送"端口不可达报文"给发送方

UDP校验

这里说的校验指的是UDP数据报首部的校验和字段的计算方式。

在我们计算校验和的时候,需要在UDP数据报之前增加一个12B的伪首部,伪首部不是UDP真正的首部,只是在计算校验和的时候临时增加的一个用于计算的字段。伪首部既不向下传送又不向上递交,只是在传输层用于计算。

?

如图所示,伪首部由5个字段组成:

  1. 源IP地址占4B,从IP层的首部获得

  2. 目的IP地址占4B,从IP层的首部获得

  3. 全0字段占1B

  4. 协议字段占1B,写17意味着该处的协议是IP协议,也就是说这个伪首部伪的是IP数据报

  5. UDP长度占2B,指的是整个UDP数据报的长度

UDP校验和的计算方法和IP数据报首部校验和的计算方法相似,但是IP数据报的校验和只校验IP数据报的首部,而UDP的校验和会校验首部和数据部分。

发送方首先把全0放入校验和字段并添加伪首部,然后把UDP数据报视为许多个16位的自负穿接起来。如果UDP数据报的数据部分不是偶数个字节,那么就在数据部分末尾填入全0字节(这个字节不发送)。然后按照二进制反码计算出这16位字的和,将此和的二进制的反码写入校验和字段,然后发送出去。

接收方接收到这个UDP数据报后,将UDP数据报加上伪首部(如果不是偶数个字节,那么还需要补上全0字节)后,按照二进制反码进行求和,。当无差错时其结果应全为1,否则就表明出错了,接收方应该丢弃这个UDP数据报。

????????????????????????????????发送方的计算过程如图所示

?

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:53:48  更:2022-10-22 21:56:10 
 
开发: 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年5日历 -2024/5/19 12:20:48-

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