《TCP/IP详解 卷1:协议》 读书笔记 第11章 UDP:用户数据报协议
2016-08-19 17:41
911 查看
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:协议》 读书笔记 第十一章 UDP:用户数据报协议
- 《TCP/IP详解 卷1:协议》 读书笔记 第十一章 UDP:用户数据报协议
- 《TCP/IP详解卷1:协议》第11章 UDP:用户数据报协议-读书笔记
- TCP/IP详解 卷1 笔记 第11章 UDP:用户数据报协议
- 《TCP/IP详解 卷1:协议》 第十一章 UDP:用户数据报协议
- 读《TCP/IP详解》第11章:UDP:用户数据报协议
- 【TCP/IP详解】第11章 UDP:用户数据报协议
- 【TCP/IP详解 卷一:协议】第十一章 UDP 用户数据报协议
- 《TCP/IP详解卷1:协议》第11章 UDP:用户数据报协议-读书笔记
- 第11章 UDP:用户数据报协议
- TCP/IP详解读书笔记(第11章 UDP:用户数据报协议)
- UNIX网络高级编程第2章传输层UDP TCP和SCTP 2.2总图2.3用户数据报协议2.4传输控制协议2.5SCTP
- tcp/ip详解卷1:协议 读书笔记 UDP:用户数据报
- TCP/IP详解 卷I:协议 のUDP 用户数据包协议
- [TCP/IP详解:协议]第11章UDP学习记录
- 网络协议:用户数据报协议(UDP)
- TCP/IP 第11章 UDP用户数据报协议
- 《TCP/IP详解 卷1:协议》 读书笔记 第十七章 TCP:传输控制协议
- UDP:用户数据报协议(User Datagram Protocol)
- tcp/ip primer plus 第九章用户数据报协议(UDP)& 伪首部