《TCP/IP详解 卷1:协议》 读书笔记 第11章 UDP:用户数据报协议
来源:互联网 发布:夏俊峰案网络舆论 编辑:程序博客网 时间:2024/05/29 18:22
UDP:用户数据报协议
- UDP用户数据报协议
- 引言
- UDP首部
- UDP检验和
- IP分片
- ICMP不可达差错需要分片
- UDP和ARP之间的交互作用
- 最大UDP数据报长度
- ICMP源站抑制差错
引言
UDP是一个简单的面向数据包的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。
UDP首部为8字节,IP首部为20字节。
UDP是不可靠的。
UDP首部
在分用到UDP(TCP)这一层后,由端口号来继续往上分用,决定是哪个应用服务。
UDP长度指的是UDP首部+UDP数据的字节长度(有些首部长度的单位是32bit,4个byte,这里是1个byte)。
UDP检验和
UDP检验和覆盖UDP首部和UDP数据。(IP的检验和只覆盖IP的首部,不覆盖数据)
UDP和TCP在首部中都有覆盖它们首部和数据的检验和。UDP的检验和是可选的,TCP的检验和是必须的。
UDP和IP检验和的不同:
- UDP数据报的长度可以为奇数字节,为了符合16bit反码相加的特性,会在数据最后填充字节0(这些0可能不被传送)。
UDP数据报和TCP段都包含一个12字节长的伪首部,为了计算检验和而设置(包含IP首部的一些字段)。目的是让UDP两次检查数据是否已经正确到达目的地。
- UDP数据报的长度在检验和计算过程中出现两次。
- 如果检验和的计算结果为0,则存入的值为全1(65535),如果检验和为0,说明发送端没有计算检验和。
- 如果发送端没有计算检验和而接收端检测到检验和有错,那么UDP数据报就要被悄悄丢弃,不产生任何差错报文。
- UDP检验和虽然是可选的,但是默认都是打开的。
- UDP检验和是简单的16bit反码相加,检测不出交换2个16bit的差错。
TCP发生检验和差错的比例比UDP高得多,因为TCP经常是“远程”连接,而UDP一般是本地通信。
IP分片
- 物理网络层一般要限制每次发送数据帧的最大长度。
- 分片可以发生在发送端主机上,也可以发生在中间路由器上(因为MTU可能发生变化)。- - 已经分片过的可能再次进行分片。
- 只有到达目的地才进行重新组装(其他网络协议在下一站就重新组装),由IP层完成。
- IP首部的标识字段都包含一个唯一的值,该值分片时赋值到每个片中。
- 标志字段用一个bit来标识“更多的片”,最后一片置为0,其余置为1.
- 片偏移字段是该片偏移原始数据报开始出的位置。
- 分片后,每个片的总长度要改为该片的长度值。
- 标识字段有一个bit称作“不分片”位,置1的时候不能分片,要分片的时候会产生一个ICMP差错报文。
- 如果丢失了一片数据,就要重传整份数据,IP没有重传机制,这是根据TCP重传机制决定的。
- 使用UDP很容易导致IP分片,TCP会试图避免分片。
在一个以太网上,数据帧最大的长度是1500.
数据帧=IP首部(20字节)+UDP首部(8字节)+数据(最多1472字节)
- 在分片时,除最后一片外,其他每一片的数据部分(UDP首部+数据)必须是8字节的整数倍。
- 端口号在UDP首部,而UDP首部在第一片,所以端口号只能在第一片。
IP数据报:IP层端到端的传输单元
分组:IP层和链路层之间传送的数据单元,一个分组可以使一个完整的IP数据报,也可以是一个分片。
ICMP不可达差错(需要分片)
如果数据需要分片,但是IP首部设置了不可分片(DF)的bit为1,那么就会发送ICMP不可达差错。
可以利用这个差错来判断路径的MTU。
UDP和ARP之间的交互作用
如ARP缓存是清空的,那么在发送第一个数据报片前必须交换ARP请求和应答。
如果有多个数据报,在等待一个ARP应答时,只将最后一个报文发送给特定目的主机。
最大UDP数据报长度
IP数据报的最大长度是65535字节,这是16bit的总长度字段所限制的。
那么UDP数据报最长长度为65535-20-8=65507.
限制因素:
- 程序接口限制。
- TCP/IP的内核实现限制。
主机必须能够接收最短为576的IP数据报,所以在许多UDP应用程序的设计中,其应用程序数据被限制成512字节或更小(确保能接收)。
ICMP源站抑制差错
当一个系统接收数据报的速度比其处理速度快时,可能产生这个差错。(注意是可能,不一定会发送这个差错报文。)
采用UDP时,源站抑制报文可能会被忽略。
TCP也支持源站抑制报文。
- 《TCP/IP详解卷1:协议》第11章 UDP:用户数据报协议-读书笔记
- 《TCP/IP详解 卷1:协议》 读书笔记 第11章 UDP:用户数据报协议
- 《TCP/IP详解 卷1:协议》 读书笔记 第十一章 UDP:用户数据报协议
- 《TCP/IP详解 卷1:协议》 读书笔记 第十一章 UDP:用户数据报协议
- TCP/IP详解 卷1 笔记 第11章 UDP:用户数据报协议
- tcp/ip详解卷1:协议 读书笔记 UDP:用户数据报
- TCP/IP详解读书笔记(第11章 UDP:用户数据报协议)
- TCP/IP详解卷1:协议(七)【动态选路协议 , UDP:用户数据报协议】
- TCP-IP详解卷1-11:UDP(User Datagram Protocol):用户数据报协议
- TCP/IP详解卷1:第十一章 UDP用户数据报协议
- TCP/IP 第11章 UDP用户数据报协议
- 【TCP/IP详解】第11章 UDP:用户数据报协议
- 读《TCP/IP详解》第11章:UDP:用户数据报协议
- TCP/IP详解 (11) UDP:用户数据报协议
- 《TCP/IP详解卷2:实现》笔记--UDP:用户数据报协议
- TCP/IP 详解卷一学习笔记(三): UDP 用户数据报协议
- 《TCP/IP详解 卷1:协议》 读书笔记 第17章 TCP:传输控制协议
- TCP/IP详解(六)---UDP:用户数据报协议
- __toString()方法
- C#初学者json解析
- 数据结构实验之二叉树六:哈夫曼编码
- Android 内存优化 (防Memory Leak)
- android开发步步为营之110:android反编译apk
- 《TCP/IP详解 卷1:协议》 读书笔记 第11章 UDP:用户数据报协议
- 数据结构——18 二叉树(非递归)
- Java函数的基础介绍
- 排序算法
- 华为机试第一题[2016年8月18日上午]计算重复字符
- EventBus详解
- iOS中集成ijkplayer视频直播框架
- busybox login: root Login incorrect
- xctool的使用