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段都包含源端和...