一、實驗場景。
實驗准備,Linux主機4台。分別是主機A,路由主機R1,路由主機R2,主機 C,主機A的ip是192.168.56.66/24,且只有一塊網卡eth0;路由主機R1有兩塊網卡eth0和主機A在同一網段其ip地址是192.168.56.100/24,eth1的ip地址是172.16.56.223/16;主機R2有兩塊網卡eth0和主機C在同一網段其地址為10.0.0.25/8,eth1同R1在同一網段其地址為,172.16.56.200/16,主機C只有一塊網卡eth0其地址為10.0.0.18/8
實驗目的,實現主機A和主機C互相通信。模擬Linux主機通信原理,深入了解通信過程。
以上就是本次實驗的拓撲圖(圖畫的有點丑,看得懂就行,哈哈哈)
接下來開始試驗。
1,從上面的拓撲圖我們可以看出有3個網絡,為了不讓其他網絡影響本次實驗,我們在vmware里面增加3條虛擬網絡
添加好虛擬網絡后,現在准備4台主機,並配置好其相應的ip
說明:配置ip這里都是centos的系統,編輯其相應的文件/etc/sysconfig/network-scripts/ifcfg-eth0 或者eth1 ,然后重啟網絡服務就可以了。
2.開啟r1,r2的轉發,以及配置器路由
說明:因為A主機和R1在同一個網段,我們這里就不需要再配置到A主機的路由,只需要配置主機R1到C的路由,並指向R2為網關,也就是說要訪問主機C 就必須通過R1的路由告訴報文要去找R2。開啟R1的轉發是因為,當報文到達R1的時候,它會檢查數據報文是否是自己的,如果不是它默認會丟棄的,開啟轉發就表示不是本機的數據報文,它將轉發到其他主機。這樣配置后從A的報文理論上可以到達R2,如果打開R2的轉發,報文將會到達C,但是從C回來的報文走到R2的時候,因為R2里面沒有配置到A的路由,所以回來的報文還不能夠到達A,接下來配置R2的路由。
說明:配置R2的路由的作用是當訪問C主機的時候,C主機回應回來的報文,在經過R2是會查看R2的路由,這樣從C回來的報文才能夠順利到達A
3,驗證從ApingC
從CpingA
4,擴展
1.查看到達目標網絡所經過的路由
說明:可以得之到達10.0.0.18 從本機經過了2個路由才到達。
2,刪除同網段的路由是否能夠通訊?
說明:這里要把默認路由也要刪除,因為刪除同網段的路由后,它默認會走默認路由,這樣就可以看出刪除了同網段的路由后,本機上不能和本網段的其他主機通信。
3,在r1上配置一個不是同網段的地址,主機A是否能夠與之通訊?
說明:是可以通訊的,因為在Linux里ip是屬於主機,不是屬於某塊網卡,只要主機A有到達主機R1的路由,就可以和R1上的所有ip通訊。這里主機A是走的默認路由
4,將R1的轉發關了,數據報文還能到達C嗎?
說明:是不可以的,因為當主機R1收到來自A主機的報文時,它會檢查是不是它的,如果不是,它將會丟棄,不予回應,這里我們可以在R1上抓包就明白了
說明:可以看出在R1上是收到了A主機的發往C的報文,但是R1並沒有給出回應。
說明:當我們打開R1的轉發時,就可以看到從C回應A的數據報文,當然A主機上也會收到相應的回應報文。
5,在C上抓包看源ip和目標ip,源MAC和目標MAC的變化
說明:源ip是主機A的地址,目標ip是主機C的地址
主機A的MAC
主機C的MAC
主機R2的MAC
說明:通過上面的抓包,我們可以知道源ip和目標ip在以太網幀結構中是不會變化的,因為ip是在以太網上層internel協議的內容,但是源mac會變的。這是因為mac地址是Ethernet協議的內容,也可以得出在數據鏈路層通訊以太網協議是通過ARP mac地址通信的,在到達C主機的報文源MAC都是R2的MAC地址,也就是說在通訊的時候,以太網幀的結構中,源ip和目標ip是不會變化的,源mac會記錄上一個發送數據報文的設備的MAC。
從上面的實驗我們可以看出從A到C我們經過了兩個路由;一個主機想要和另一個主機通訊,在通訊前主機會先查看自己的路由表,如果本機沒有到達目標主機的路由時,本機的數據報文是不能發送到目標主機的;要讓一個主機轉發另一個主機的報文時,我們必須開啟轉發才行,否則不予轉發;路由配置所指定的網關必須是本機能夠到達的地址(也就是本機路由表有到達網關的路由),否則配置的路由無意義。同一網段的主機通訊,也必須配置路由,當然這個路由一般我們不用管,因為配置了其ip后,路由表就會默認生成相應的路由信息。如果沒有路由,同一網段的主機也是無法通信的;在Linux里ip地址是屬於主機不屬於某一個網卡,所以只要有能夠到達主機的地址,我們也可以將報文送到主機的另外一個地址。