网络协议系列之四:IGMP、ICMP和ARP
前言
IGMP協(xié)議是一個(gè)組管理協(xié)議,它幫助多播路由器創(chuàng)建以及更新與每一個(gè)路由接口相連的忠實(shí)成員列表(就是與該路由接口連接頻率較高)。ICMP協(xié)議實(shí)際上就是差錯(cuò)控制協(xié)議,彌補(bǔ)了IP協(xié)議沒有差錯(cuò)糾正機(jī)制以及差錯(cuò)報(bào)告的缺憾。ARP是一個(gè)地址映射協(xié)議,可以把一個(gè)IP地址映射為MAC地址。
IGMP協(xié)議
1、IGMP是管理組成員關(guān)系的協(xié)議
2、IGMP報(bào)文分為成員關(guān)系報(bào)告報(bào)文和成員關(guān)系查詢報(bào)文。成員關(guān)系查詢報(bào)文是為了查找網(wǎng)絡(luò)中活躍的組成員而發(fā)送的報(bào)文,而成員關(guān)系報(bào)告報(bào)文是為了記錄響應(yīng)者在網(wǎng)絡(luò)中的成員關(guān)系而發(fā)送的報(bào)文
3、IGMP在路由器上的應(yīng)用:當(dāng)路由器收到一個(gè)成員關(guān)系的查詢報(bào)文后,路由器會(huì)等待接收一個(gè)多個(gè)報(bào)告,報(bào)告到達(dá)后路由器根據(jù)當(dāng)前以及到達(dá)報(bào)告中的記錄更新路由器的狀態(tài)
4、IGMP能夠?yàn)槟硞€(gè)源點(diǎn)并且以某個(gè)多播組作為終點(diǎn)的分組做出是否轉(zhuǎn)發(fā)的決定。根據(jù)IGMP協(xié)議,有三種情況IGMP協(xié)議會(huì)做出轉(zhuǎn)發(fā):
1)如果該網(wǎng)絡(luò)中至少有一臺(tái)主機(jī)希望接收這種類型的數(shù)據(jù),會(huì)做出轉(zhuǎn)發(fā)
2)如果源地址在不在過濾列表中,意味著IGMP認(rèn)為網(wǎng)絡(luò)中有主機(jī)希望接收這種類型的數(shù)據(jù)分組,所以也會(huì)轉(zhuǎn)發(fā)
3)如果源地址在過濾列表中,但是源點(diǎn)計(jì)時(shí)器還沒有超時(shí),所以IGMP仍然會(huì)進(jìn)行轉(zhuǎn)發(fā)
ICMP協(xié)議
1、ICMP報(bào)文是一種差錯(cuò)控制協(xié)議。ICMP報(bào)文分為差錯(cuò)報(bào)告報(bào)文和查詢報(bào)文。差錯(cuò)報(bào)告報(bào)文報(bào)告了路由器或者主機(jī)在處理IP數(shù)據(jù)報(bào)過程可能遇到的問題,查詢報(bào)文總是成對(duì)成雙出現(xiàn)的,主要幫助主機(jī)或者網(wǎng)絡(luò)管理人員獲取特定的信息
2、ICMP報(bào)文的首部為8字節(jié),ICMP數(shù)據(jù)報(bào)要被封裝成IP數(shù)據(jù)報(bào)才能傳到下一層進(jìn)行傳輸。所以任何一個(gè)ICMP報(bào)文都包括IP首部和數(shù)據(jù)報(bào)的前8個(gè)字節(jié)(為什么是8字節(jié)?書上說是包括了端口號(hào)和序號(hào)信息,但不知道在TCP是怎么處理的。還是繼續(xù)往后看吧)
3、ICMP總是把出錯(cuò)信息發(fā)送給最初的數(shù)據(jù)源(可以發(fā)送其他數(shù)據(jù)源嗎?答案是不能。因?yàn)樵跀?shù)據(jù)報(bào)中唯一可用的地址信息就是發(fā)送地址以及目的地址)
4、差錯(cuò)報(bào)告報(bào)文進(jìn)行差錯(cuò)報(bào)告,差錯(cuò)高高報(bào)文會(huì)處理5種類型的信息:終點(diǎn)不可達(dá)、源點(diǎn)抑制、超時(shí)、參數(shù)問題和改變路由。
終點(diǎn)不可達(dá):當(dāng)路由器無(wú)法為一個(gè)數(shù)據(jù)找到路由或者主機(jī)無(wú)法交付一個(gè)數(shù)據(jù)的時(shí)候,會(huì)報(bào)告一個(gè)終點(diǎn)不可達(dá)報(bào)文
源點(diǎn)抑制:源點(diǎn)抑制報(bào)文通知源點(diǎn),由于路由器或者目的主機(jī)的擁塞,數(shù)據(jù)報(bào)已被丟棄,源點(diǎn)必須放慢發(fā)送速度,知道擁塞緩解為止
超時(shí):當(dāng)路由器將數(shù)據(jù)報(bào)的生存時(shí)間減為0就丟棄這個(gè)數(shù)據(jù)報(bào),并向源點(diǎn)發(fā)送一個(gè)超時(shí)報(bào)文;當(dāng)最后的終點(diǎn)沒有在規(guī)定的時(shí)間收到全部的分片的時(shí)候,就丟棄已收到的分片,并給源點(diǎn)發(fā)送一個(gè)超時(shí)報(bào)文
參數(shù)問題:當(dāng)數(shù)據(jù)報(bào)的首部出現(xiàn)二義性的時(shí)候會(huì)給源點(diǎn)發(fā)送一個(gè)參數(shù)問題報(bào)文
改變路由:發(fā)送改變路由報(bào)文可以更新主機(jī)的路由表
5、查詢報(bào)文主要用來進(jìn)行網(wǎng)絡(luò)診斷有回送請(qǐng)求與回答和時(shí)間戳請(qǐng)求與回答。回送請(qǐng)求與回答報(bào)文可以用來測(cè)試兩臺(tái)機(jī)器能否彼此通信。一般會(huì)使用ping命令測(cè)試兩臺(tái)主機(jī)的可達(dá)性。時(shí)間戳請(qǐng)求與回答可以確定報(bào)文的往返時(shí)間,在計(jì)算的時(shí)候可以使用下面公式計(jì)算單向時(shí)間以及往返時(shí)間:
發(fā)送時(shí)間 = 接收時(shí)間戳 - 原始時(shí)間戳
接收時(shí)間 = 分組返回時(shí)間戳 - 發(fā)送時(shí)間戳
往返時(shí)間 = 發(fā)送時(shí)間 + 接收時(shí)間
6、在以下集中情況不會(huì)產(chǎn)生ICMP差錯(cuò)報(bào)文:
1)已經(jīng)能夠攜帶ICMP報(bào)文的數(shù)據(jù)報(bào)
2)對(duì)于分片的數(shù)據(jù)報(bào),如果不是第一個(gè)分片那么就不產(chǎn)生ICMP差錯(cuò)數(shù)據(jù)報(bào)
3)對(duì)于具有多播地址的數(shù)據(jù)報(bào)不產(chǎn)生ICMP報(bào)文
4)具有特殊地址的數(shù)據(jù)報(bào)不產(chǎn)生ICMP報(bào)文
ARP協(xié)議
1、ARP把目的主機(jī)的IP地址映射為MAC地址,這樣把IP數(shù)據(jù)報(bào)封裝成幀(以太網(wǎng)上對(duì)01串的分組定義)后才能通過物理網(wǎng)絡(luò),這時(shí)就需要目的主機(jī)的MAC地址,而ARP協(xié)議正是這樣的作用
2、為了找到接收主機(jī)的MAC地址,發(fā)送方會(huì)給同一個(gè)網(wǎng)絡(luò)的所有主機(jī)發(fā)送一個(gè)ARP查詢分組,網(wǎng)絡(luò)上的主機(jī)收到該ARP分組后,只有期待接收的主機(jī)才會(huì)返回一個(gè)ARP響應(yīng)分組。這個(gè)分組包括發(fā)送方的物理地址以及接收方的物理地址(當(dāng)然還有IP地址),這個(gè)ARP響應(yīng)分組是單獨(dú)發(fā)給源主機(jī)的。
3、如果接收主機(jī)與源主機(jī)不是一個(gè)網(wǎng)絡(luò),源主機(jī)需要查找它的路由表,找到下一個(gè)路由器的IP地址。如果源主機(jī)中沒有路由表,則會(huì)交給默認(rèn)路由器處理ARP查詢分組,這個(gè)路由器的IP地址必須是被映射為MAC地址的邏輯地址
4、如果源主機(jī)是路由器,該路由器收到要發(fā)送不同網(wǎng)絡(luò)的數(shù)據(jù)報(bào)后,會(huì)先檢查自己的路由表,找到下一個(gè)路由器的IP地址。下一個(gè)路由器的IP就是必須被映射為MAC地址的邏輯地址
————————————————
版權(quán)聲明:本文為CSDN博主「rhwayfunn」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u011116672/article/details/50997806
總結(jié)
以上是生活随笔為你收集整理的网络协议系列之四:IGMP、ICMP和ARP的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TCP:SEQ号与ACK号
- 下一篇: wifi四次握手过程