目錄
IP協(xié)議首部格式
地址解析協(xié)議 ARP
逆向地址解析協(xié)議 RARP
網(wǎng)際控制報(bào)文協(xié)議 ICMP
網(wǎng)際組管理協(xié)議IGMP
IP 數(shù)據(jù)報(bào)首部
IP數(shù)據(jù)報(bào)首部格式:
最高位在左邊,記為0 bit;最低位在右邊,記為31 bit
版本:
占 4 位,指 IP 協(xié)議的版本目前的 IP 協(xié)議版本號(hào)為 4 (即 IPv4)
首部長(zhǎng)度:
占4位,可表示的最大數(shù)值是15個(gè)單位(一個(gè)單位為 4 字節(jié))因此IP 的首部長(zhǎng)度的最大值是 60 字節(jié)
區(qū)分服務(wù):
占8位,用來獲得更好的服務(wù),在舊標(biāo)準(zhǔn)中叫做服務(wù)類型,但實(shí)際上一直未被使用過.1998 年這個(gè)字段改名為區(qū)分服務(wù).只有在使用區(qū)分服務(wù)(DiffServ)時(shí),這個(gè)字段才起作用.一般的情況下都不使用這個(gè)字段
總長(zhǎng)度:
占16位,指首部和數(shù)據(jù)之和的長(zhǎng)度,單位為字節(jié),因此數(shù)據(jù)報(bào)的最大長(zhǎng)度為 65535 字節(jié).總長(zhǎng)度必須不超過最大傳送單元 MTU
標(biāo)識(shí):
占16位,它是一個(gè)計(jì)數(shù)器,用來產(chǎn)生數(shù)據(jù)報(bào)的標(biāo)識(shí)
標(biāo)志(flag):
占3位,目前只有前兩位有意義
MF
- 標(biāo)志字段的最低位是 MF (More Fragment)
- MF=1 表示后面“還有分片”。MF=0 表示最后一個(gè)分片
DF
- 標(biāo)志字段中間的一位是 DF (Don't Fragment)
- 只有當(dāng) DF=0 時(shí)才允許分片
片偏移:
占12位,指較長(zhǎng)的分組在分片后某片在原分組中的相對(duì)位置.片偏移以 8 個(gè)字節(jié)為偏移單位
生存時(shí)間:
占8位,記為TTL (Time To Live) 數(shù)據(jù)報(bào)在網(wǎng)絡(luò)中可通過的路由器數(shù)的最大值,TTL 字段是由發(fā)送端初始設(shè)置一個(gè) 8 bit字段.推薦的初始值由分配數(shù)字 RFC 指定,當(dāng)前值為 64.發(fā)送 ICMP 回顯應(yīng)答時(shí)經(jīng)常把 TTL 設(shè)為最大值 255
協(xié)議:
占8位,指出此數(shù)據(jù)報(bào)攜帶的數(shù)據(jù)使用何種協(xié)議以便目的主機(jī)的IP層將數(shù)據(jù)部分上交給哪個(gè)處理過程, 1表示為 ICMP 協(xié)議, 2表示為 IGMP 協(xié)議, 6表示為 TCP 協(xié)議, 17表示為 UDP 協(xié)議
首部檢驗(yàn)和:
占16位,只檢驗(yàn)數(shù)據(jù)報(bào)的首部不檢驗(yàn)數(shù)據(jù)部分.這里不采用 CRC 檢驗(yàn)碼而采用簡(jiǎn)單的計(jì)算方法
源地址和目的地址:
都各占 4 字節(jié),分別記錄源地址和目的地址
地址解析協(xié)議 ARP
說明:
ARP 每一個(gè)主機(jī)都設(shè)有一個(gè)ARP高速緩存(ARP cache),里面有所在的局域網(wǎng)上的各主機(jī)和路由器的IP地址到硬件地址的映射表
作用:
通過IP地址得知其物理地址
步驟:
注意:
- 網(wǎng)絡(luò)上其他主機(jī)并不響應(yīng) ARP 詢問,只有接收端主機(jī)接收到這個(gè)幀時(shí),才向發(fā)送端主機(jī)做出這樣的回應(yīng)
- ARP 是解決同一個(gè)局域網(wǎng)上的主機(jī)或路由器的IP地址和硬件地址的映射問題.若所要找的主機(jī)和源主機(jī)不在同一個(gè)局域網(wǎng)上,那么就要通過ARP找到一個(gè)位于本局域網(wǎng)上的某個(gè)路由器的硬件地址,然后把分組發(fā)送給這個(gè)路由器,讓這個(gè)路由器把分組轉(zhuǎn)發(fā)給下一個(gè)網(wǎng)絡(luò).剩下的工作就由下一個(gè)網(wǎng)絡(luò)來做
- 從IP地址到硬件地址的解析是自動(dòng)進(jìn)行的,主機(jī)的用戶對(duì)這種地址解析過程是不知道的.
- 主機(jī)或路由器要和本網(wǎng)絡(luò)上另一個(gè)已知 IP 地址的主機(jī)或路由器進(jìn)行通信,ARP 協(xié)議會(huì)自動(dòng)地將該IP地址解析為鏈路層所需要的硬件地址
四種典型情況:
- 發(fā)送方是主機(jī),要把 IP 數(shù)據(jù)報(bào)發(fā)送到本網(wǎng)絡(luò)上的另一個(gè)主機(jī).這時(shí)用 ARP 找到目的主機(jī)的硬件地址
- 發(fā)送方是主機(jī)要 IP 數(shù)據(jù)報(bào)發(fā)送到其他網(wǎng)絡(luò)的主機(jī).這時(shí) ARP 找到本網(wǎng)絡(luò)上某個(gè)路由器硬件地址.剩下工作由這個(gè)路由器完成
- 發(fā)送方是路由器,要把 IP 數(shù)據(jù)報(bào)轉(zhuǎn)發(fā)到本網(wǎng)絡(luò)上的一個(gè)主機(jī).這時(shí)用 ARP 找到目的主機(jī)的硬件地址
- 發(fā)送方是路由器,要把 IP 數(shù)據(jù)報(bào)轉(zhuǎn)發(fā)到另一個(gè)網(wǎng)絡(luò)上的一個(gè)主機(jī).這時(shí)用 ARP 找到本網(wǎng)絡(luò)上的一個(gè)路由器的硬件地址.剩下的工作由這個(gè)路由器來完成
報(bào)頭格式:
說明:
- 硬件類型字段表示硬件地址的類型.它的值為1即表示以太網(wǎng)地址
- 協(xié)議類型字段表示要映射的協(xié)議地址類型.它的值為 0x0800 即表示 IP 地址
- 硬件地址長(zhǎng)度和協(xié)議地址長(zhǎng)度分別指出硬件地址和協(xié)議地址的長(zhǎng)度,以字節(jié)為單位.對(duì)于以太網(wǎng)上 IP 地址的 ARP 請(qǐng)求或應(yīng)答來說,它們的值分別為 6 和 4
- 操作字段指出四種操作類型,它們是 ARP 請(qǐng)求(值為1)、ARP 應(yīng)答(值為 2 )、RARP 請(qǐng)求(值為 3 )和 RARP 應(yīng)答(值為 4 )
- 接下來的四個(gè)字段是發(fā)送端的硬件地址(在本例中是以太網(wǎng)地址)、發(fā)送端的協(xié)議地址( IP 地址)、目的端的硬件地址和目的端的協(xié)議地址.
參考鏈接:
http://blog.csdn.net/tigerjb/article/details/7351992
逆地址解析協(xié)議 RARP
定義:
逆地址解析協(xié)議 RARP 使只知道自己硬件地址的主機(jī)能夠知道其IP地址
用途:
這種主機(jī)往往是無盤工作站.因此 RARP 協(xié)議目前已很少使用
RARP 與 RAP:
網(wǎng)際控制報(bào)文協(xié)議 ICMP
目的:
為了提高 IP 數(shù)據(jù)報(bào)交付成功的機(jī)會(huì)
注意:
- 允許主機(jī)和路由器報(bào)告差錯(cuò)情況和提供有關(guān)異常情況的報(bào)告
- ICMP不是高層協(xié)議,而是IP層的協(xié)議
- ICMP報(bào)文作為IP層數(shù)據(jù)報(bào)的數(shù)據(jù),加上數(shù)據(jù)報(bào)的首部,組成 IP 數(shù)據(jù)報(bào)發(fā)送出去
- ICMP報(bào)文的前4個(gè)字節(jié)是統(tǒng)一的格式,共有三個(gè)字段:即類型,代碼和檢驗(yàn)和.接著的4個(gè)字節(jié)的內(nèi)容與ICMP的類型有關(guān)
種類:
- ICMP 差錯(cuò)報(bào)告報(bào)文:
- 終點(diǎn)不可達(dá)
- 源點(diǎn)抑制(Source quench)
- 時(shí)間超過
- 參數(shù)問題
- 改變路由(重定向)(Redirect)
- ICMP 詢問報(bào)文:
- 回送請(qǐng)求和回答報(bào)文
- 時(shí)間戳請(qǐng)求和回答報(bào)文
報(bào)文格式:
ICMP地址掩碼請(qǐng)求和應(yīng)答報(bào)文
ICMP時(shí)間戳請(qǐng)求和應(yīng)答報(bào)文
ICMP不可達(dá)報(bào)文
ICMP回顯請(qǐng)求和回顯應(yīng)答報(bào)文格式
ICMP超時(shí)報(bào)文
ICMP重定向報(bào)文
ICMP路由器請(qǐng)求報(bào)文格式
ICMP路由器通告報(bào)文格式
ICMP 源站抑制差錯(cuò)報(bào)文格式
ICMP 類型:
不應(yīng)發(fā)送ICMP差錯(cuò)報(bào)告報(bào)文的情況:
- 對(duì)第一個(gè)分片的數(shù)據(jù)報(bào)片的所有后續(xù)數(shù)據(jù)報(bào)片都不發(fā)送ICMP 差錯(cuò)報(bào)告報(bào)文
- 多播地址的數(shù)據(jù)報(bào)都不發(fā)送ICMP差錯(cuò)報(bào)告報(bào)文
- 特殊地址(如127.0.0.0 或 0.0.0.0)的數(shù)據(jù)報(bào)不發(fā)送 ICMP差錯(cuò)報(bào)告報(bào)文
網(wǎng)際組管理協(xié)議IGMP
報(bào)文格式:
作用:
它是TCP/IP 協(xié)議族中負(fù)責(zé)IP 組播成員管理的協(xié)議,用來在IP 主機(jī)和與其直接相鄰的組播路由器之間建立、維護(hù)組播組成員關(guān)系
功能:
當(dāng)一臺(tái)主機(jī)加入到一個(gè)新的組時(shí),它發(fā)送一個(gè)IGMP消息到組地址以宣告它的成員身份,多播路由器和交換機(jī)就可以從中學(xué)習(xí)到組的成員.利用從IGMP中獲取到的信息,路由器和交換機(jī)在每個(gè)接口上維護(hù)一個(gè)多播組成員的列表
兩個(gè)階段:
- 加入:
- 當(dāng)主機(jī)加入新的多播組時(shí),向多播組的多播地址發(fā)送IGMP 報(bào)文,聲明自己要成為該組的成員.本地的多播路由器收到 IGMP 報(bào)文后,將組成員關(guān)系轉(zhuǎn)發(fā)給因特網(wǎng)上的其他多播路由器
- 詢問:
- 周期性地探詢本地局域網(wǎng)上的主機(jī),以便知道這些主機(jī)是否還繼續(xù)是組的成員
- 注意:
- 因?yàn)榻M成員關(guān)系是動(dòng)態(tài)的,因此本地多播路由器要只要對(duì)某個(gè)組有一個(gè)主機(jī)響應(yīng),那么多播路由器就認(rèn)為這個(gè)組是活躍的
- 但一個(gè)組在經(jīng)過幾次的探詢后仍然沒有一個(gè)主機(jī)響應(yīng),則不再將該組的成員關(guān)系轉(zhuǎn)發(fā)給其他的多播路由器
數(shù)據(jù)包:
IGMP 使用 IP 數(shù)據(jù)報(bào)傳遞其報(bào)文(即 IGMP 報(bào)文加上 IP 首部構(gòu)成 IP 數(shù)據(jù)報(bào)),但它也向 IP 提供服務(wù)
具體措施:
- 在主機(jī)和多播路由器之間的所有通信都是使用 IP 多播
- 多播路由器在探詢組成員關(guān)系時(shí),只需要對(duì)所有的組發(fā)送一個(gè)請(qǐng)求信息的詢問報(bào)文,而不需要對(duì)每一個(gè)組發(fā)送一個(gè)詢問報(bào)文。默認(rèn)的詢問速率是每 125 秒發(fā)送一次
- 當(dāng)同一個(gè)網(wǎng)絡(luò)上連接有幾個(gè)多播路由器時(shí),它們能夠迅速和有效地選擇其中的一個(gè)來探詢主機(jī)的成員關(guān)系
- 在 IGMP 的詢問報(bào)文中有一個(gè)數(shù)值 N,它指明一個(gè)最長(zhǎng)響應(yīng)時(shí)間(默認(rèn)值為 10秒)。當(dāng)收到詢問時(shí),主機(jī)在 0 到 N 之間隨機(jī)選擇發(fā)送響應(yīng)所需經(jīng)過的時(shí)延。對(duì)應(yīng)于最小時(shí)延的響應(yīng)最先發(fā)送
- 同一個(gè)組內(nèi)的每一個(gè)主機(jī)都要監(jiān)聽響應(yīng),只要有本組的其他主機(jī)先發(fā)送了響應(yīng),自己就可以不再發(fā)送響應(yīng)了