ping某域名的整個流程


實驗環境:
主機A,B(可不再同一網段),主機B有域名假設為www.baidu.com
首先:1. 本地主機A在命令行下執行"ipconfig/flushdns"命令來清空本地DNS高速緩存;
      2. 本地主機A在命令行下執行"arp -d"命令來清空arp緩存

然后,主機A執行ping www.baidu.com(即主機B的域名)

在此過程中都發生了那些報文交互?
我個人理解:
思路:1.要執行ping命令主機A必須將域名轉化為IP地址,故而一定會有DNS解析過程;
      2.在DNS解析之前,主機A一定要知道自己默認網關的MAC地址,這就要涉及到ARP解析的問題;
      3.ping命令本身是ICMP回顯請求,故而肯定要有ICMP協議的回顯請求交互。
以下是全過程:
(此處可參照“跨網段的ping過程”來看,此處假設DNS服務器和主機A不在同一網段,若二者在同一網段那么我想只需進行簡單arp就可得到DNS服務器的mac不需經過網關)
1.主機A發送ARP請求報文目的mac為FFFFFF-FFFFFF,目的IP為網關的IP,要求獲得網關的MAC地址;
2.路由器(主機A的默認網關)發送目的mac為A的mac,目的IP為A的IP的ARP回答報文,以告知A網關的mac地址;
3.A獲得網關的mac地址后,就向網關發送一個DNS查詢報文,其目的mac地址為網關的mac地址,目的IP為DNS服務器的IP地址;
4.網關收到DNS查詢報文后,拆包檢查發現是DNS查詢於是將相應(查詢)信息封裝,向DNS服務器發送該報文,其目的IP地址為DNS服務器的IP,目的mac為下一跳的mac,解析域名IP地址此時就交給了DNS服務器;
5.經過DNS解析,主機A知道了所要ping的域名的ip地址;
6.剩下的ping過程就和ping一個特定的ip地址相同了,首先判斷ping命令的目的B的IP地址是否和A在同一網段,若在同一網段則相當於同網段內ping,若不在同一網段,就是不同網段的ping只不過此時主機不需要再解析網關的mac地址了。

 

- 首先本機發送域名請求數據到PC設置的DNS ip

- PC通過子網掩碼判斷DNS ip是本網段還是跨網段(這里只考慮跨網段)

- 由於是跨網段,PC發送DNS域名解析數據包到PC設置的網關ip上。(此時先要進行二層的mac轉發,PC查看本機arp緩存表,如果表中有網關的mac地址,直接轉發,如果沒有,使用arp解析協議解析到網關的mac地址。之后封裝成數據幀發送到三層網絡層)此時PC發送三層數據到網關,源地址為PC內網地址,目的地址為DNS ip地址。而在二層源mac地址為PC mac地址,目的mac地址為網關mac地址。

- 路由內網網關收到數據包,根據數據包的目的地址,查看路由表。根據路由表發送數據到下一跳上。(發送前,數據到達路由外網端口,會根據nat地址轉換配置。形成一條內網ip+port與外網ip+port的一一對應關系。)

- 發送到下一跳和內網通信都是一樣的,查看路由arp緩存表,如果有下一跳mac地址,就直接發送,沒有的話需要arp協議解析一下。

- 對端路由收到數據包,再接着根據路由表判斷下一跳。這樣一跳一跳地,最后到達DNS服務器。服務器將查詢結果返回。

- 返回的數據包在ISP的網絡里最后尋址到你的路由器上,你的路由器收到數據包后,會查詢路由nat連接表,尋找ip+port關系對應的內網ip。拆分數據包,封裝成幀,最后PC收到域名對應的ip地址。

【到這里,域名解析過程完成,接下來ping對方ip,過程與上面幾乎一樣】

- 再發起一次PC到目的域名ip地址的一次ping請求信息

- PC通過子網掩碼判斷對方ip是本網段還是跨網段(這里只考慮跨網段)

- 由於是跨網段,PC發送數據包到網關ip上。

- 路由內網網關收到數據包,根據數據包的目的地址,查看路由表。根據路由表發送數據到下一跳上。(發送前,數據到達路由外網端口,會根據nat地址轉換配置。形成一條內網IP+port與外網ip+port的一一對應關系。)

- 發送到下一跳和內網通信都是一樣的,查看路由arp緩存表,如果有下一跳mac地址,就直接發送,沒有的話就是要arp協議解析一下。

- 服務器收到數據包后,會重新構建一個ICMP應答包,然后返回。

- 返回的數據包在ISP的網絡里最后尋址到你的路由器上,你的路由器收到數據包后,會查詢路由nat連接表,尋找ip+port關系對應的內網ip。拆分數據包,封裝成幀,最后PC收到ICMP應答數據包。

整個過程到此結束。在整個這個過程中,源ip地址和目的ip地址是不變的(內網到路由器段不算在內)而mac地址是變的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM