TCP/IP详解 第十章用户数据报协议 UDP

1、简介

简单的面向数据报的传输层的协议,不提供差错纠正,队列管理,重复消除,流量控制,拥塞控制功能。提供差错检测。使用它的应用程序需要做许多数据报如何发送和处理的控制工作。

2、UDP头部

端口号16位,当不需要返回时,源端口号可以为0
端口号在不同的传输协议之间是独立的,即不同的服务器

     可以使用相同的ip地址与端口号,但传输协议不同

 

长度字段是udp头部和数据的总和,最小值8,排除ipv6 超长数据报情况
校验和,端到端的传输层校验和,覆盖udp头部,数据,一个伪头部,发送端计算的来,目的端验证,途中不变,除非遇到natipv4可选不强制使用,推荐使用。Ipv6强制.

      数据部分需要是偶数,奇数需补0

 

3、ipv4伪头部

4、Ipv6 伪头部

5、udp测试

sock -v -u -i  192.168.21.26 discard
tcpdump -n -p -s 1500 -vvv host 192.168.21.26 and \(udp or icmp \)

6、Teredo 隧道技术

7、Udp Lite

8、Ip 分片

Ipv4 在源主机或者路由器上分片

Ipv6 只能在源主机分片

到达最终目的地完成重组。

为什么不在路途中间重组?

1,路由器负担问题

2,分片路由路径问题

 

标识字段唯一确定一个ip数据报
偏移字段以8字节为单位,并且相对于原始数据报计值
MF 字段指示是否还有下一个分片
任何一个分片丢了,整个数据报就丢了
标识字段唯一确定一个ip数据报
偏移字段以8字节为单位,并且相对于原始数据报计值
MF 字段指示是否还有下一个分片
任何一个分片丢了,整个数据报就丢了
 

9、重组超时

当数据报的任何一个分片到达时,ip层启动一个定时器,时长30s60s
再收到数据分片时,定时器不会重置。
 

10、采用udp的路径mtu发现

路径mtu发现机制(PMTUD),可以用它来确定mtu的大小,避免分片
IP层会基于每个目的地址缓存一个PMTUD信息,当没有更新时就超时

11、最大udp数据报长度

Ipv4  65535=20(不带ip选项)+8+65507
Ipv6  65535=8+65527   非超长数据报
实现限制:

    协议实现提供api可设置缓存大小,一般默认8192或者65535 ,但也有些协议实现不支持大数据量的传送与接收。如dnsdhcp都对发送的数据报大小做了限制。

。数据报截断:

     发送方发送一定大小的数据报,接收方不一定能完全接收,所以可能会出现截断,截断后或者丢弃或者后移,看不同的实现了

12、Udp服务器设计

1,限制本地ip地址

2,使用多地址

3,限制远端IP地址

4,每端口多服务器的使用

 

13、流量和拥塞控制缺失

服务端Udp端口接收数据,存入缓存队列
Udp 无连接
缓存队列可能满,服务端无法控制客户端,数据出现丢失

 

 

感谢zhangj

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章