gns3中两个路由器分别连接主机然后分析ip数据转发报文arp协议_ARP协议在同网段及跨网段下的工作原理...
前言:ARP協(xié)議是在鏈路層通訊中,已知目標IP地址,但是,僅有IP 地址是不夠的,因為IP數(shù)據(jù)報必須封裝成幀才能通過數(shù)據(jù)鏈路進行發(fā)送,而數(shù)據(jù)幀必須要有目的MAC地址,每一個網(wǎng)絡設備在數(shù)據(jù)封裝前都需要獲取下一跳的MAC地址。IP地址由網(wǎng)絡層提供,MAC地址通過ARP協(xié)議來獲取。ARP協(xié)議是TCP/IP協(xié)議簇的重要組成部分,它能夠通過目的IP地址獲取目標設置的MAC地址,從而實現(xiàn)數(shù)據(jù)鏈路層的可達性。
一、ARP在同個網(wǎng)段下的工作原理
首先,每臺主機都會在自己的ARP緩沖區(qū)中建立一個 ARP列表,以表示IP地址和MAC地址的對應關(guān)系。當源主機需要將一個數(shù)據(jù)包要發(fā)送到目的主機時,會首先檢查自己 ARP列表中是否存在該 IP地址對應的MAC地址,如果有,就直接將數(shù)據(jù)包發(fā)送到這個MAC地址;如果沒有,就向本地網(wǎng)段發(fā)起一個ARP請求的廣播包,查詢此目的主機對應的MAC地址。此ARP請求數(shù)據(jù)包里包括源主機的IP地址、硬件地址、以及目的主機的IP地址。網(wǎng)絡中所有的主機收到這個ARP請求后,會檢查數(shù)據(jù)包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此數(shù)據(jù)包;如果相同,該主機首先將發(fā)送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已經(jīng)存在該IP的信息,則將其覆蓋,然后給源主機發(fā)送一個 ARP響應數(shù)據(jù)包,告訴對方自己是它需要查找的MAC地址;源主機收到這個ARP響應數(shù)據(jù)包后,將得到的目的主機的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息開始數(shù)據(jù)的傳輸。如果源主機一直沒有收到ARP響應數(shù)據(jù)包,表示ARP查詢失敗。
例如:
A的地址為:IP:192.168.10.1 MAC: AA-AA-AA-AA-AA-AA
B的地址為:IP:192.168.10.2 MAC: BB-BB-BB-BB-BB-BB
根據(jù)上面的所講的原理,我們簡單說明這個過程:A要和B通訊,A就需要知道B的以太網(wǎng)地址,于是A發(fā)送一個ARP請求廣播(誰是192.168.10.2 ,請告訴192.168.10.1),當B收到該廣播,就檢查自己,結(jié)果發(fā)現(xiàn)和自己的一致,然后就向A發(fā)送一個ARP單播應答(192.168.10.2 在BB-BB-BB-BB-BB-BB)。
二、局域網(wǎng)中跨網(wǎng)段主機間通訊
不同網(wǎng)段的主機通信時,主機會封裝網(wǎng)關(guān)(通常是路由器)的mac地址,然后主機將數(shù)據(jù)發(fā)送給路由器,后續(xù)路由進行路由轉(zhuǎn)發(fā),通過arp解析目標地址的mac地址,然后將數(shù)據(jù)包送達目的地。具體過程分析如下:
如上圖,主機A、B通過路由器連接,屬于兩個不同的網(wǎng)段子網(wǎng)掩碼24(255.255.255.0)
1、主機A有數(shù)據(jù)發(fā)往主機B,數(shù)據(jù)封裝IP之后發(fā)現(xiàn)沒有主機B的mac地址;然后查詢ARP,ARP回應:“我在192.168.3.0/24網(wǎng)段,目標地址在192.168.4.0/24,不屬于同一網(wǎng)段,需要使用默認網(wǎng)關(guān)”;ARP發(fā)現(xiàn)默認網(wǎng)關(guān)是192.168.3.2,但是沒有網(wǎng)關(guān)mac地址,需要先進行查詢;
2、主機將數(shù)據(jù)包先放到緩存中,然后發(fā)送ARP查詢報文:封裝自己的mac地址為源mac,目標mac地址寫全F的廣播地址,請求網(wǎng)關(guān)192.168.3.2的mac地址。然后以廣播方式發(fā)送出去;
3、路由器收到廣播數(shù)據(jù)包,首先將原192.168.3.1添加到自己的mac地址表中,對應mac地址為0800.0222.2222。路由發(fā)現(xiàn)是請求自己的mac地址,然后路由回復一個ARP應答:封裝自己的IP地址為源IP自己的mac地址為源mac,主機A的IP為目的IP主機A的mac為目的mac,發(fā)送一個單播應答“我是192.168.3.2.我的mac地址為0800.0333.2222”;
4、主機收到應答后,將網(wǎng)關(guān)mac地址對應192.168.4.2(跨網(wǎng)關(guān)通信,其他網(wǎng)段IP地址的mac地址均為網(wǎng)關(guān)mac),然后將緩存中的數(shù)據(jù)包,封裝網(wǎng)關(guān)mac地址進行發(fā)送;
5、路由收到數(shù)據(jù)包,檢查目的IP地址,發(fā)現(xiàn)不是給自己的,決定要進行路由,然后查詢路由表,需要發(fā)往192.168.4.0網(wǎng)段中的192.168.4.2地址。路由準備從相應接口上發(fā)出去,然后查詢mac地址表,發(fā)現(xiàn)沒有主機B的映射。路由器發(fā)送arp請求查詢主機B的mac地址(原理同2、3步,主機B收到請求后首先會添加網(wǎng)關(guān)的mac地址,然后單播回復arp請求);
6、路由器收到主機B的mac地址后,將其添加到路由mac地址表中,然后將緩存中的數(shù)據(jù)2層幀頭去掉,封裝自己的mac地址為源mac,主機B的mac地址為目的mac(源和目的IP地址不變),加上二層幀頭及校驗,發(fā)送給主機B;
7、主機B收到數(shù)據(jù)之后,進行處理,發(fā)送過程結(jié)束;
8、如果主機B收到數(shù)據(jù)后進行回復,主機B會進行地址判斷,不在同一網(wǎng)段,然后決定將數(shù)據(jù)發(fā)送給網(wǎng)關(guān),主機B查詢mac地址表獲得網(wǎng)關(guān)mac地址,將數(shù)據(jù)封裝后發(fā)送(arp地址解析的過程不再需要了,mac地址表條目有一定的有效時間),網(wǎng)關(guān)收到數(shù)據(jù)后直接查詢mac表,將二層幀mac地址更改為A的mac發(fā)送出去。如此,主機A收到主機B的回復;
綜上在跨網(wǎng)段通信過程中有以下過程:
1、判斷地址是否同一網(wǎng)段
2、查詢目的IP地址的mac(發(fā)送arp請求)
此外需注意點:
1、ARP請求以廣播發(fā)送、以單播回應
2、路由器隔離廣播。每一個網(wǎng)段都是獨立的廣播域
3、跨越網(wǎng)段通信需要使用網(wǎng)關(guān)的mac地址
ps:如想深入分析,建議模擬環(huán)境,進行抓包操作,可以看到具體經(jīng)歷了哪些過程,有助于深入了解。
原文鏈接——————
ARP協(xié)議在同網(wǎng)段及跨網(wǎng)段下的工作原理_L.-CSDN博客?blog.csdn.net總結(jié)
以上是生活随笔為你收集整理的gns3中两个路由器分别连接主机然后分析ip数据转发报文arp协议_ARP协议在同网段及跨网段下的工作原理...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python post form dat
- 下一篇: java联合主键_hibernate联合