UDP用户数据报
UDP
用户数据报协议UDP只在IP的数据报服务之上增加了很少的一个功能,就是复用,分用,差错检测功能。UDP的主要特点是:
UDP是无连接的,即在发送数据报之前不需要建立连接(当然发送数据结束的时候也不会有连接释放),因此减少了开销和发送数据之前的时延。
UDP是尽自己最大努力交付,且并不提供可靠服务,因此主机并不需要维持复杂的链接状态表。
UDP是面向报文的,发送方的UDP对应用程序交下来的报文,在添加首部之后就可以交付给IP层。UDP对于应用层交付下来的报文,既不拆分,也不合并,只是只是保留这些报文的边界。意思就是,不管上层传给UDP多长的报文,UDP照样发送,至于是否进行切片处理等等,那是IP层的事情。

UDP没有拥塞控制,因此网络上出现拥塞不会使得源主机的发送速率降低。这种就特别的适合实时场景的使用。例如视频通话,语音通话等等。
UDP支持一对一,一对多,多对一,多对多的交互通信。
UDP的首部开销小,相比TCP的20字节,只有8字节。
UDP首部的格式:

- 源端口(两个字节):源端口号。不需要的时候用全0
- 目的端口(两个字节):目的端口号。
- 长度(两个字节):UDP用户数据报的长度,其最小值为8(仅含首部)。
- 检验和(2字节):检测UDP用户数据包在传输中是否出错。有错就丢弃。
当运输层从IP层接收到UDP数据报的时候,就根据首部中的目的端口,把UDP数据报通过响应的端口,最终交付给相应的用用进程处理。如图

如果接收方UDP接收到的目的端口号不明确(即不存在相应的目的端口号),就丢弃这个UDP报文,并由网际控制协议(ICMP)发送端口不可达差错报文给发送方。
请注意,虽然在UDP之间的通信需要使用到端口号,但由于UDP通信是无连接的,因此并不需要使用socket(TCP之间就要必须使用socket建立连接)。
UDP用户数据报首部中校验和的计算方法有些特殊。在计算校验和的时候,要在UDP用户数据报之前加上12字节的伪首部(伪首部的第三个字段全是0,第四个字段是IP首部中的协议字段,以前讲过,对于UDP,就是17;第五个字段是UDP用户数据包的长度。因此检验和,既检查了UDP用户数据报的源端口号和目的端口号以及检查了UDP用户数据包的数据部分,又检查了IP数据报的源IP地址和目的IP地址)。所谓的伪长度是因为者追踪伪长度并不是UDP用户数据真正的首部。只是在校验和的时候,临时加到UDP数据报的前面,得到一个临时的UDP用户数据报,检验和就是根据这个UDP临时数据报来计算的,伪长度既不向下传送也不向上递交,而仅仅是为了计算校验和。,至于怎么校验呢?其实UDP计算校验和的方法和计算IP数据报的首部校验和的方法类似。但不同的是:IP数据报的检验和只校验IP数据报的首部,但是UDP检验和是把首部和数据部分一起校验。在发送方,首先把全0放到校验和字段中。再把伪首部UDP用户数据报看成是由许多16位的字符拼接起来的。若UDP用户数据报的数据部分不是偶数字节,则要填入一个全零字节(但此字节不发送),然后按照二进制反码计算出这些16位字的和,将此和的二进制反码写入校验和字段后,就发送这样的UDP用户数据报。在接收方,把收到的UDP用户数据报连同伪首部一起,按二进制反码求出16位字的和,当无差错时,其结果为1,否则就是出现差错,接收方就应该丢弃这个UDP报文,并把错误信息通过ICMP(网际控制协议)差错报告给上层。
这种简单的差错检测方法能力并不强,但它的好处是简单,处理起来比较快。
UDP用户数据报的更多相关文章
- 【RL-TCPnet网络教程】第16章 UDP用户数据报协议基础知识
第16章 UDP用户数据报协议基础知识 本章节为大家讲解UDP(User Datagram Protocol,用户数据报协议),需要大家对UDP有个基础的认识,方便后面章节UDP实战操作. ...
- udp用户数据报协议
UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层 ...
- 【TCP/IP详解 卷一:协议】第十一章 UDP 用户数据报协议
11.1 引言 UDP 是一个简单的 面向数据报 的运输层协议:进程的每个 输出操作 都正好产生一个 UDP数据报,并且组装成一份待发送的IP数据报. 这与 TCP 不一样,它是 面向流字符 的协议, ...
- TCP/IP详解学习笔记(8)-- UDP:用户数据报协议
1.UDP概述 UDP是一种无连接的, 即发送数据前不需要建立连接,因此减小的开销和发送数据的延迟. UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表. UDP是面向报文 ...
- 运输层2——用户数据报协议UDP
目录 1. UDP概述 2. UDP首部格式 3. UDP首部检验和计算方法 写在前面:本文章是针对<计算机网络第七版>的学习笔记 运输层1--运输层协议概述 运输层2--用户数据报协议U ...
- 《TCP/IP详解卷1:协议》第11章 UDP:用户数据报协议-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- 《TCP/IP具体解释卷2:实现》笔记--UDP:用户数据报协议
用户数据报协议.即UDP,是一个面向数据报的简单运输层协议:进程的每次输出操作仅仅产生一个UDP数据报,从而发送 一个IP数据报. 进程通过创建一个Internet域内的SOCK_DGRAM类型的插口 ...
- UDP:用户数据报协议
UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报.这与面向流字符的协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数 ...
- TCP/IP详解 卷一(第十一章 UDP:用户数据报协议)
UDP是一个简单的面向数据报的运输层协议. UDP不提供可靠性:它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地. UDP首部的个字段如下图所示
随机推荐
- 解析一个body片断
问题 假如你有一个HTML片断 (比如. 一个 div 包含一对 p 标签; 一个不完整的HTML文档) 想对它进行解析.这个HTML片断可以是用户提交的一条评论或在一个CMS页面中编辑body部分. ...
- 华为音频编辑服务(Audio Editor Kit),快速构建应用音频编辑能力
音频编辑服务(Audio Editor Kit)是华为为开发者开放的各类场景音频处理能力的集合,汇聚了华为在音乐.语音等相关音频领域的先进技术.音频编辑服务提供基础编辑.伴奏提取.空间渲染.变声降噪等 ...
- linux下查看磁盘使用内存及清除日志内存
1.查看磁盘内存 df -h 2.清理日志内存 echo "">catalina.out
- Linux中MySQL的安装以及卸载
一.MySQL MySQL是一种开放源代码的关系型数据库管理系统,开发者为瑞典MySQL AB公司.在2008年1月16号被Sun公司收购.而2009年,SUN又被Oracle收购.目前 MySQL被 ...
- C++模板使用
C++模板 模板是一种对类型进行参数化的工具: 通常有两种形式:函数模板和类模板: 函数模板针对仅参数类型不同的函数: 例如:Max函数 :求两个数的最大值,我们需要对各种数据类型进行重载,如下 in ...
- Windows内核-7-IRP和派遣函数
Windows内核-7-IRP和派遣函数 IRP以及派遣函数是Windows中非常重要的概念.IRP 是I/O Request Pocket的简称,意思是I/O操作的请求包,Windows中所有Use ...
- dotnet C# 给结构体字段赋值非线程安全
在 dotnet 运行时中,给引用对象进行赋值替换的时候,是线程安全的.给结构体对象赋值,如果此结构体是某个类的成员字段,那么此赋值不一定是线程安全的.是否线程安全,取决于结构体的大小,取决于此结构体 ...
- mybaits源码分析--事务管理(八)
一.事务管理 写到这也快进入收尾阶段了了,在介绍MyBatis中的事务管理时不可避免的要接触到DataSource的内容,所以接下来会分别来介绍DataSource和Transaction两块内容. ...
- Python - pip 批量更新
pip 常用命令 https://www.cnblogs.com/poloyy/p/15170968.html pip list 结合 Linux 命令 pip list 命令可以查询已安装的库,结合 ...
- 2021.9.12周六PAT甲级考试复盘与总结
周六PAT甲级考试复盘与总结 先说结论:仍未步入"高手"行列:现在的学习节奏与方法是对的,有十万分的必要坚持下去. 题目 知识点 分数 T1 前缀和.二分 11 / 20 T2 排 ...