TCP IP學習筆記(四)

2021-04-06 17:40:02 字數 3197 閱讀 9190

tcp/ip學習筆記(四)

一、udp協議

udp 是乙個簡單的面向資料報的運輸層協議,程序的每個輸出操作都產生乙個udp資料報,並組裝成乙份待傳送的ip資料報。udp不提供可靠性。

udp封裝格式:

ip首部(20)

udp首部(8)

udp資料

1、udp首部:

16位源埠號

16位目的埠號

16位udp長度

16位udp檢驗和

資料(如果有)

埠號表示傳送和接收的程序。

udp長度欄位指的是udp首部和udp資料的位元組長度,該字段的最小值是8,表示沒有資料。該長度不包括ip首部長度。

udp檢驗和包括udp首部和udp資料的檢驗和。由於udp資料報的長度可以為奇數位元組數,因此計算時在最後增加填充位元組0,這只是為了檢驗和的計算。

2、 udp檢驗和

udp和tcp首部都包含乙個12位元組的偽首部,包含了ip首部和自身的一些字段,主要是為了計算檢驗和而設定的。偽首部是不佔實際空間的。偽首部包含ip首部的一些字段,目的是讓udp兩次檢查資料是否已經到達目的地,以及ip層是否正確地傳輸了資料。

udp偽首部格式如下:

32位源ip位址

32位目的ip位址

08位協議(17)

16位udp長度

16位源埠

16位目的埠

16位udp長度

16位udp檢驗和

資料(如果有)

前12個位元組就是udp偽首部。

注意:udp資料報的長度在檢驗和計算過程中出現兩次。如果檢驗和的計算結果為0,則存入的值為全1(65535),如果傳送的檢驗和是0,則說明傳送端沒有計算檢驗和。如果有錯誤,該報就被丟棄,不產生任何差錯報文。

3、 ip分片

任何ip層接收到乙份要傳送的ip資料報時,它要判斷向本地哪個介面傳送資料,並查詢該介面的mtu。ip把mtu與資料報的長度進行比較,如果需要則進行分片。分片可以發生在原始傳送端主機上,也可以傳送在中間路由器上。ip資料報分片後,只有到達目的主機後才進行重灌。

ip首部與分片有關的字段:

ip報即使丟失一片資料報也要重傳整個資料報。為什麼呢?因為ip層沒有超時重傳的機制,必須由更高層負責超時重傳。

4、icmp不可達差錯(需要分片)

當路由器收到乙份需要分片的資料報,而在ip首部又設定了不分片(df)的標誌位。如果需要判斷到達目的端的路途中最小mtu是多少,就可以通過這個差錯實現。

報文格式如下:

型別3**4

檢驗和保留,必須為0

下一站的mtu

ip首部+原始ip資料報中資料前8位

可以用traceroute確定路徑mtu。要做的是傳送分組,並設定「不分片」標誌位。傳送的第乙個分組的長度正好與出口mtu相等,每次收到icmp「不能分片」差錯時,就減少分組的長度。如果路由器傳送的icmp差錯報文是上面格式,包含出口的mtu,那麼就用該mtu值來傳送,否則就用下乙個最小的mtu值來傳送。mtu值的個數是有限的,因此可以取得路徑的mtu。

5、 udp伺服器的設計:

(2)目的ip位址

(3)udp輸入佇列:通常程式所使用的每個udp埠都與乙個有限大小的輸入佇列相聯絡。也就是來自不同客戶的差不多同時到達的請求將由udp自動排隊,接收到的udp資料報以其接收順序交給應用程式。

二、廣播

三、多播11

10

28位多播組id

224.0.0.1-該子網內地所有系統組

224.0.0.2-該子網內地所有路由器組

224.0.1.1-網路時間協議ntp

224.0.0.9-rip2

224.0.1.2-sgi公司的dogfight應用

2、多播位址到乙太網位址的轉換:

iana擁有乙個乙太網位址塊,即高位24位為00-00-5e,這意味這該位址塊所擁有的位址範圍從00-00-5e-00-00-00到00-00-5e-ff-ff-ff。iana將其中的一般分配為多播位址。為了指明乙個多播位址,任何乙太網位址的首位元組必須為01,這意味者與ip多播相對應的乙太網位址範圍從01-00-5e-00-00-00到01-00-5e-7f-ff-ff。

這種位址分配將使乙太網多播位址的23位與ip多播組號相對應起來,通過將多播組號中的低23位對映到乙太網位址中的低23位事項。

由於多播組號中的最高5位在對映過程中被忽略,因此每個乙太網多播位址對應的多播組是不唯一的,32個不同的多播組號被對映位乙個乙太網位址。例如,多播位址224.128.64.32(16進製為e0-80-40-20)和224.0.64.32(16進製為e0-00-40-20)都對映為同一乙太網位址01-00-5e-00-40-20。

既然位址對映不是唯一的,那麼裝置驅動層或ip層就必須對資料報進行過濾,因為網絡卡可能收到主機不想接收的多播資料幀。

四、igmp:internet組管理協議

igmp 讓乙個物理網路上的所有系統知道主機當前所在的廣播組。多播路由器需要這些資訊以便知道多播資料報應該向哪些介面**。igmp也被當作ip層的一部分,igmp報文通過ip資料報進行傳輸,其報文格式如下: 

4位版本1

4位型別(1-2)

未用檢驗和

32位組位址(d類ip位址)

igmp型別位1說明是由多播路由器發出的查詢報文,為2說明是主機發出的報告報文。

檢驗和的計算和icmp協議一樣。

組位址為d類ip位址,在查詢報文中組位址設定為0,在報告報文中組位址為要參加的組位址。

1、加入乙個多播組

程序以某種方式在給定的介面上加入某個多播組,程序也能離開先前加入的多播組。乙個程序可以在多個介面上加入同一多播組。主機通過組位址和介面來標識乙個多播組。主機必須保留乙個表,該表中包含所有至少含有乙個程序的多播組及多播組中的程序數量。

2、igmp報告和查詢

多播路由器通過igmp報文來記錄與該路由器相連網路中組成員的變化情況,規則如下:

3、實現細節

4、生存時間字段

igmp報告和查詢的生存時間(ttl)均設定為1,這將使多播資料報僅限於同一子網內傳送。更大的ttl值能被多播路由器**。224.0.0.0-224.0.0.255的特殊位址使打算用於多播範圍不超過1跳的應用,不管ttl是多少,多播路由器均不**目的位址為這些位址中的任何乙個位址的資料報。

5、所有主機組

224.0.0.1位址稱為所有主機組位址,它涉及在乙個物理網路中所有具備多播能力的主機和路由器。當介面初始化後,所有具備多播能力介面上的主機均自動加入這個多播組。這個組的成員無需傳送igmp報告。

TCP IP學習筆記(四)

tcp ip學習筆記 四 一 udp協議 udp 是乙個簡單的面向資料報的運輸層協議,程序的每個輸出操作都產生乙個udp資料報,並組裝成乙份待傳送的ip資料報。udp不提供可靠性。udp封裝格式 ip首部 20 udp首部 8 udp資料 1 udp首部 16位源埠號 16位目的埠號 16位udp長...

TCP IP學習筆記(四)

一 udp協議 udp 是乙個簡單的面向資料報的運輸層協議,程序的每個輸出操作都產生乙個udp資料報,並組裝成乙份待傳送的ip資料報。udp不提供可靠性。udp封裝格式 ip首部 20 udp首部 8 udp資料 1 udp首部 16位源埠號 16位目的埠號 16位udp長度 16位udp檢驗和 資...

TCP IP 協議筆記四

一 tcp首部 t c p提供了一種可靠的面向連線的位元組流運輸層服務。t c p將使用者資料打包構成報文段 它傳送資料後啟動乙個定時器 另一端對收到的資料進行確認,對失序的資料重新排序,丟棄重複資料 t c p提供端到端的流量控制,並計算和驗證乙個強制性的端到端檢驗和。每個t c p段都包含源端和...