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

 

 

 

 

 

 

 

 

 

 

 

 

 

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