很簡單的一個東西,咱們慢慢來分析一下,首先,看一下拓撲圖:
假如主機A要通路網站:www.baidu.com時,主機A會立即封裝一個HTTP的封包,按照TCP/IP的模型,應該是是:二層封包+IP封包+TCP封包+HTTP封包,也就是:資料連結路+網絡層+傳輸層+應用層…
但是主機A在封裝的過程中,發現www.baidu.com是個域名,主機A不知道www.baidu.com的IP位址,于是他需要先生成一個DNS的解析封包,也就是:二層封包+IP封包+TCP封包+DNS封包....
可是主機A在封裝的過程中,發現如果要解釋DNS,必須得與DNS聯系,而DNS的IP是:202.96.134.133,他與DNS聯系時又不知道它的MAC位址,而且很明顯與自己不在同一網段,于是得請求網關轉發DNS,周時主機A也不知道網關的MAC位址時,就需要向外廣播一條ARP消息,并得到了路由器的MAC位址….然後請求網關轉發DNS封包給202.96.134.133….
是以正個過程也就是這樣:
先ARP 得到網關MAC , 再請求網關轉發DNS 封包,得到www.baidu.com ip 是: 121.14.89.10 再與www.baidu.com 建立TCP/IP 連接配接 最後再開始傳輸HTTP 封包用wiershark抓包是,大緻過程就是這樣(因為開了360,是以裡面有兩個360的廣告新聞DNS,忽略它):
既然咱們能抓到包,那麼我們就一個一個來分析封包的過程:
第一步:得到arp 網關的MAC 封包是這樣的:ARP的封包格式:
按封包内容填充就是這樣的:
一個請求,一個響應:
請求:
響應:
第二步:再請求網關轉發DNS ,(在這裡,實際上用了UPD的連接配接,因不是本文重點,且UPD封包格式簡單,在這裡就不詳細說了。)三條記錄在這:
第三步:再與www.baidu.com IP TCP(tcp的三次握手)第一次握手
第二次握手
第三次握手..
第四步:最後再開始傳輸HTTP這樣就完成了整個通路HTTP網頁的過程,我這裡隻是寫幾個重要的步驟,實際上,裡面還有一些東西,也是比較多的步驟,我需要再進一步了解….