UDP介紹

昨日更新補充瞭ICMP介紹,更新~ (保證一周更新三次+)


A5:TCP/IP學習(四)

1.基本概念

(1)UDPUDP_百度百科是一個簡單的面向數據報的運輸層協議:進程的每個輸出操作都正好產生一個UDP數據報,並組裝成一份待發送的IP數據包.

(2)與面向流字符的協議不同,如TCP,應用程序產生的全體數據與真正發送的單個IP數據報可能沒有什麼聯系.

(3)UDP不提供可靠性:它把應用程序傳給IP層的數據發送出去,但是並不保證它們能到達目的地.

(4)應用程序必須關心IP數據報的長度.如果它超過網絡的MTU,那麼就要對IP數據報進行分片.

(5)UDP和TCP有什麼區別_百度知道

2.UDP三大典型運用

(1)查詢類,如DNS,沒有TCP三次握手三次握手_百度百科過程,快;多個DNS同時查詢.

(2)數據傳輸,TFTP,停止等待協議,慢(需運用層確認數據);適合於無盤工作站無盤工作站_百度百科

(3)語音視頻流,支持廣播和組播(TCP單播,不支持廣播和多播);支持丟包,保障效率.

3.UDP檢驗和

(1)UDP檢驗和覆蓋UDP首部和UDP數據.

(2)IP首部的檢驗和,隻覆蓋IP的首部.

(3)UDP的檢驗和是可選的,而TCP的檢驗和是必需的.

(4)IP計算檢驗和和UDP計算檢驗和之間存在不同的地方.首先,UDP數據報的長度可以為奇數字節,但是檢驗和算法是把若幹個16bit字相加.解決辦法是必要時在最後增加填充字節0,這隻是為瞭檢驗和的計算(意識是可能增加的填充字節不被傳送)

(5)UDP數據報和TCP段都包含一個12字節長的偽首部,它是為瞭計算檢驗和而設置的.偽首部包含IP首部一些字段,其目的是讓UDP兩次檢查數據是否已經正確到達目的地(例如,IP沒有接受地址不是本主機的數據報,以及IP沒有把應傳給另一高層的數據報傳給UDP).

4.IP分片

IP分片技術_百度百科

(1)IP把MTU與數據報長度進行比較.

(2)如果需要則進行分片.分片可以發生在原始發送端主機上,也可以發送在中間路由器上.

(3)把一份IP數據報分片以後,隻有到達目的地才重新組裝.(FR fragment)

(4)重新組裝由目的端的IP層來完成,其目的是使分片和重新組裝過程對運輸層(TCP和UDP)是透明的.

(5)已經分片過的數據報有可能會再次進行分片(可能不止一次).

(6)當IP數據報被分片後,每一片都成為一個分組,具有自己的IP首部,並在選擇路由時與其他分組獨立.這樣,當數據報的這些片到達目的端時有可能失序,但在IP首部中有足夠的信息讓接收端能正確組裝這些數據報片.

(7)盡管IP分片過程看起來是透明的,但有一點讓人不想使用它:即使隻丟失一片數據也要重傳整個數據報.

(8)IP層本身沒有超時重傳重傳超時_百度百科的機制–由更高層來負責超時和重傳(TCP有超時和重傳機制,但UDP沒有.一些UDP應用程序本身也執行超時和重傳).當來自TCP報文段的某一片丟失後,TCP在超時後會重發整個TCP報文段,該報文段對應於一份IP數據報.沒有辦法隻重傳數據中的一個數據報片.

(9)如果對數據報分片的是中間路由器,而不是起始端系統,那麼起始端系統就無法知道數據報是如何被分片的.因此經常要避免分片.

5.IP分片註意事項

(1)在分片時,除最後一片外,其他每一片中的數據部分(除IP首部外的其餘部分)必須是8字節的整數倍.

(2)IP首部被復制到各個片中.但是,端口號在UDP首部,隻能在第一片中被發現.

(3)解釋幾個術語

IP數據報是指IP層端到端的傳輸單元(在分片之前和重新組裝之後);

分組是指在IP層和鏈路層之間傳送的數據單元.一個分組可以是一個完整的IP數據報,也可以是IP數據報的一個分片.

6.分片舉例

ping 10.11.12.13 size 1000 repeat 1

IP+ICMP+Data=1000字節

IP Payload (ICMP+Data)=980字節

第一片:IP(20)+ICMP(8)+Data(472)=500(8(ICMP首部)+472=480能被8整除)

剩餘數據:980-8-472=500

第二片:IP(20)+Data(480)=500

剩餘數據:500-480=20

第三片:IP(20)+Data(20)+墊片(6)=46

數據部分字節范圍46~1500,不夠46則墊片補齊46.


20171026更.


7.ICMP不可達差錯(需要分片)

發生ICMP不可達差錯的另一種情況是,當路由器收到一份需要分片的數據報,而在IP首部又設置瞭不分片(DF)的標志比特.如果某個程序需要判斷到達目的端的路途中最小MTU是多少(路徑MTU發現機制),那麼這個差錯就可以被該程序使用;如果路由器沒有提供這種新的ICMP差錯報文格式,那麼下一站的MTU就設為0.

8.最大UDP數據報長度

(1)IP數據報最大長度是65535字節,這是由IP首部16比特總長度字段所限制的.

(2)這裡將遇到兩個限制因素.第一,應用程序可能會受到其程序接口的限制.socket API提供瞭一個可供應用程序調用的函數,以設置接收和發送緩存的長度.對於UDP socket,這個長度與應用程序可以讀寫的最大UDP數據報的長度直接相關.現在的大部分系統都默認提供瞭可讀寫大於8192字節的UDP數據報(使用這個默認值是因為8192是NFS讀寫用戶數據數的默認值);第二個限制來自於TCP/IP的內核實現.可能存在一些實現特性(或差錯),使IP數據報長度小於65535字節.

(3)在許多UDP應用程序的設計中,其應用程序數據被限制成512字節或者更小,因此比這個限制值小.

9.廣播與多播

單播_百度百科

單播、多播(組播)和廣播的區別 – Roger Luo – 博客園

(1)三種IP地址:單播地址/廣播地址和多播地址

(2)TCP必須是單播,廣播和多播僅應用於UDP,UDP還可單播,廣播和多播對需將報文同時傳往多個接收者的應用非常重要.

(3)TCP是一個面向連接的協議,它意味著分別運行於兩主機(由IP地址確定)內的兩進程(由端口號確定)間存在一條連接.

(4)有時一個主機要向網上的所有其他主機發送幀,這就是廣播.通過ARP和RARP可以看到這一過程.

(5)多播處於單播和廣播之間,幀僅傳送給屬於多播組的多個主機.

(6)廣播

a.受限的廣播:255.255.255.255

b.指向網絡的廣播:10.255.255.255 192.168.1.255

c.指向子網的廣播:10.1.1.255 10.1.255.255

d.指向所有子網的廣播10.255.255.255

e.主機處理的地址:192.168.255.255(cisco路由器支持)

f.路由器支持255.255.255.255,主機不支持(當主機處理)

發現收藏數遠比收到的贊數多~~收藏的同時請點一下贊謝謝~

赞(0)