一、實驗題目
利用ping命令來檢驗主機間能否進行正常的雙向通信。在"ping"的過程中,源主機向目標主機發送ICMP的Echo Request報文,目標主機收到后,向源主機發回ICMP的Echo Reply報文,從而可以驗證源與目標主機能否進行正確的雙向通信。
實驗的拓撲結構:如圖(1)所示。

A與B為實驗用的PC機,使用Windows操作系統。
二、實驗步驟
步驟1:設置主機的IP地址與子網掩碼:
A(1號機): 202.192.31.機號 255.255.248.0,
B(2號機): 202.192.30.機號 255.255.248.0,
兩台主機均不設置缺省網關。
用 arp -d 命令清除兩台主機上的ARP表,然后在A與B上分別用ping命令與對方通信,記錄實驗顯示結果。
用 arp -a 命令可以在兩台PC上分別看到對方的MAC地址,記錄A、B的MAC地址。
步驟2:將A的子網掩碼改為:255.255.255.0,其他設置保持不變。
操作1:
- 用 arp -d 命令清除兩台主機上的ARP表,然后在A上"ping"B,記錄顯示結果。
- 用 arp -a 命令能否看到對方的MAC地址。
操作2:
- 接着在B上"ping"A,記錄B上顯示的結果,此時用 arp -a 命令能否看到對方的MAC地址。
步驟3:在前面實驗的基礎上,把A的缺省網關設為:202.192.31.235。
在A與B上分別用ping命令與對方通信,記錄各自的顯示結果
在A與B上分別用tracert命令追蹤數據的傳輸路徑,記錄結果
三、分析各步驟的ping流程
1、步驟一不進行分析
2、步驟二
操作一:
- PCA ping PCB
1. PCA准備ICMP請求報文(目標地址為PCB);
2. PCA判斷PCB不在同一個網段上;
3. PCA沒有設置默認網關;
4. PCA刪除ICMP請求報文,打印超時。
操作二:
- PCB ping PCA
1. PCB准備ICMP請求報文(目標地址為PCA);
2. PCB判斷PCA在同一個網段上;
3. PCB查ARP表發現沒有PCA的MAC地址信息;
4. PCB准備ARP請求報文(目標地址為PCA),緩存ICMP請求報文,發送ARP請求報文;
5. 交換機進行廣播;
6. PCA接收到ARP請求報文;
7. PCA判斷PCB不在同一網段上,刪除該ARP請求報文;
8. PCB等待ARP響應報文超時,刪除ICMP請求報文,打印超時。
所以兩PC的ARP表中都沒有對方的MAC地址。
3、步驟三
**注意在前面實驗的基礎
- PCA ping PCB
1. PCA准備ICMP請求報文(目標地址為PCB);
2. PCA判斷PCB不在同一個網段上;
3. PCA設置了默認網關;
4. PCA查ARP表發現沒有網關的MAC地址信息;
5. PCA准備ARP請求報文(目標地址為網關),緩存ICMP請求報文,發送ARP請求報文;
6. 交換機進行廣播ARP請求報文;
7. 網關接收到ARP請求報文,返回ARP響應報文;
8. 特別說一下PCB
- 假設PCB的ARP表中有PCA的MAC地址信息,PCB會讀取這一份ARP請求報文,即使這份ARP請求報文的目的地址不是PCB。PCB讀取到ARP請求報文的源地址(即PCA)也在自己的ARP表中,會用於更新PCB的ARP表;
- 但是步驟三是在前面實驗的基礎,PCB的ARP表中沒有PCA的MAC地址信息。當PCB讀取到這份ARP請求報文的目的地址不是PCB,就是丟棄該ARP請求報文。
9. 交換機進行單播ARP響應報文;
10. PCA收到ARP響應報文,將ICMP請求報文從緩存中取出,發送;
11. 交換機向網關進行單播ICMP請求報文;
12. 網關接收到ICMP請求報文;
13. 網關查ARP表發現沒有PCB的MAC地址信息;
14. 網關獲取PCB的MAC地址信息類似4~10;
15. 網關發送ICMP請求報文,
16. 交換機進行向PCB單播ICMP請求報文;
17. PCB收到ICMP請求報文,准備ICMP響應報文(目標地址為PCA);(之后同步驟二中的操作二)
18. PCB判斷PCA在同一個網段上;
19. PCB查ARP表發現沒有PCA的MAC地址信息;
20. PCB准備ARP請求報文,緩存ICMP請求報文,發送ARP請求報文;
21. 交換機進行廣播;
22. PCA接收到ARP請求報文;
23. PCA判斷PCB不在同一網段上,刪除該ARP請求報文;
24. PCB等待ARP響應報文超時,刪除ICMP響應報文,打印超時。
- PCB ping PCA
1. 同步驟二中的操作二。
四、問題
- 網上多份實驗報告都是顯示
1. 步驟二中最后PCB的ARP表中有PCA的MAC地址信息;
2. 步驟三能ping通。 - 這是我完全想不通的,我的實驗流程分析是根據實驗軟件的仿真進行的;
- 我也問過老師,老師是贊成第一點的,但是解釋的很模糊不清除,沒有解決我的問題;
- 第2點在第1點的基礎上是正確的,但是實驗結果告訴我第1點是錯誤的;
- 我結合我自己在課上所學和仿真分析還是認為我的流程和結果是對的,希望有人和我討論一下 第1點 是怎么實現的。
五、問題的最后解決
- 上網查閱相關資料,(發現有人和我有一樣的疑問)[http://bbs.pceva.com.cn/thread-124423-1-1.html],然后我發現他的軟件和我的是一樣的,是packetTracer,
- 並且我發現能成功得到第一點的結果都是(用系統自帶命令行的)[https://wenku.baidu.com/view/39fde1d9fc4ffe473268ab59.html];
- 所以我用兩台電腦按實驗要求配了ip、網關、子網掩碼,用wireShark在PCA上抓包,得出了第一點結果,下面重新進行流程分析。
六、重新分析流程
2、步驟二
操作一:
- PCA ping PCB (與原來相同)
1. PCA准備ICMP請求報文(目標地址為PCB);
2. PCA判斷PCB不在同一個網段上;
3. PCA沒有設置默認網關;
4. PCA刪除ICMP請求報文,打印PING傳輸失敗。
操作二:
- PCB ping PCA
1. PCB准備ICMP請求報文(目標地址為PCA);
2. PCB判斷PCA在同一個網段上;
3. PCB查ARP表發現沒有PCA的MAC地址信息;
4. PCB准備ARP請求報文(目標地址為PCA),緩存ICMP請求報文,發送ARP請求報文;
5. 交換機進行廣播;
6. PCA接收到ARP請求報文;(第7點開始更改)
7. PCA發送ARP響應報文;
8. 交換機進行單播;
9. PCB收到ARP響應報文,取出ICMP請求報文,發送;
10. 交換機進行單播;
11. PCA收到ICMP請求報文;
12. PCA判斷PCB不在同一網段,刪除ICMP請求報文;
13. PCB接收不到ICMP響應報文,打印超時。
3、步驟三
注意在前面實驗的基礎
- PCA ping PCB
1. PCA准備ICMP請求報文(目標地址為PCB);
2. PCA判斷PCB不在同一個網段上;
3. PCA設置了默認網關;
4. PCA查ARP表發現沒有網關的MAC地址信息;
5. PCA准備ARP請求報文(目標地址為網關),緩存ICMP請求報文,發送ARP請求報文;
6. 交換機進行廣播ARP請求報文;
7. 網關接收到ARP請求報文,返回ARP響應報文(目標地址為PCA);
8. 交換機進行單播ARP響應報文;
9. PCA收到ARP響應報文,將ICMP請求報文從緩存中取出,發送;
10. 交換機向網關進行單播ICMP請求報文;
11. 網關接收到ICMP請求報文;
12. 網關查ARP表發現沒有PCB的MAC地址信息;
13. 網關獲取PCB的MAC地址信息類似4~10;
14. 網關發送ICMP請求報文,
15. 交換機進行向PCB單播ICMP請求報文;
16. PCB收到ICMP請求報文,准備ICMP響應報文(目標地址為PCA);(之后同步驟二中的操作二)
17. PCB判斷PCA在同一個網段上;
18. PCB查ARP表發現有PCA的MAC地址信息;
19. PCB發送ICMP響應報文;
20. 交換機進行單播;
21. PCA接收到ICMP響應報文,打印數據。
- PCB ping PCA(類似步驟二中的操作二)
1. PCB准備ICMP請求報文(目標地址為PCA);
2. PCB判斷PCA在同一個網段上;
3. PCB查ARP表發現有PCA的MAC地址信息;
4. PCB發送ICMP請求報文;
5. 交換機進行單播;
6. PCA接收到ICMP請求報文,准備ICMP響應報文(目標地址為PCB);
7. PCA判斷PCB不在同一個網段上;
8. PCA設置了默認網關;
9. PCA查ARP表發現有網關的MAC地址信息;
10. PCA發送ICMP響應報文;
11. 交換機進行單播(目的地址為網關);
12. 網關接收到ICMP響應報文,判斷目的地址為同一網段且ARP表中有PCB的MAC地址信息,轉發該ICMP響應報文;
13. 交換機進行向PCB單播ICMP響應報文;
14. PCB接收到ICMP響應報文,打印數據。
關於TTL的分析


步驟三中還需要分析TTL
-
PCA ping PCB
1. PCB准備的ICMP響應報文,IP協議中TTL設置為128;
2. 途中沒有經過路由器,直接到達PCA;
2. PCA接收到ICMP響應報文,TTL為128; -
PCB ping PCA
1. PCA准備ICMP響應報文,IP協議中TTL設置為128;
2. 途中經過默認網關,即路由器,TTL-1;
3. PCB接收到ICMP響應報文,TTL為127;
總結
-
ARP協議是第二層的協議,MAC地址是在同一個網段下才使用的,如果PCA收到了ARP的廣播請求,不可能是外面的網段通過路由傳進來的,所以PCA不需要判斷源地址是不是同一個網段下,只要目的IP地址是自己,就單播ARP響應報文。
- 當接收到ARP請求,目的地址不為自己,源地址為廣播。若ARP表中有源地址,更新該項;若沒有,棄幀;
- 當接收到ARP請求,目的地址為自己,源地址為廣播。發送ARP響應;
- 一般ARP協議是廣播ARP請求,單播ARP響應。不過更新迭代這么久了,書本內容也跟不上,比如多了免費ARP,如今無論ARP請求還是ARP響應,都有單播和廣播。
-
packetTracer軟件是有問題的,按着它的流程分析也很有道理,但是實際上運行並不是這樣的
