在瀏覽器地址欄輸入www.baidu.com到打開百度首頁這期間到底發生了什么?


剛才無意間看到這么一個面試題,覺得有點意思,我想從五層網絡模型的角度說說我的看法。

1.首先通過DNS域名系統向域名服務器發送域名解析請求來得到百度的IP地址39.156.69.79;
2.系統通過ARP地址解析協議獲得百度IP地址映射的MAC地址;
3.系統通過TCP三次握手向百度服務器發送請求連接的報文段並建立連接;
4.應用層形成請求百度首頁的HTTP請求報文后下放到傳輸層;
5.傳輸層在請求報文前面加上包含源端口和目的端口等字段的TCP首部形成TCP報文段后下放到網絡層;
6.網絡層在TCP報文段的前面加上包含本機IP地址和百度IP地址的首部形成IP數據報后下放到數據鏈路層;
7.數據鏈路層對IP數據報加上含有目的MAC地址和源MAC地址的首部和含有幀檢驗序列FCS的尾部封裝成MAC幀后下放到物理層;
8.在物理層將幀轉換為比特流然后在銅線電纜光纖等物理媒介上以電信號的形式傳輸至北京的百度服務器;
9.百度服務器收到數據后剝洋蔥似的一層層反向解包並將HTTP請求報文上傳到應用層然后向客戶端發送HTTP響應報文;
9.客戶端收到HTTP響應報文后由瀏覽器解析百度首頁的HTML代碼並渲染出整個頁面;
10.系統通過TCP四次揮手釋放TCP連接。

END

 

補充:

在同一局域網內,如果主機A要想通過B的IP地址確定其MAC地址並和B進行數據交互,需要按照ARP協議的”廣播請求和單播應答”來確定主機B的MAC地址:

  1) A先查看自己的ARP高速緩存表中是否有B主機的MAC地址記錄。

  2) 如果A的ARP高速緩存表中有B的MAC地址記錄,則直接通過這個MAC地址進行數據的傳輸。

  3) 如果A主機的ARP高速緩存中沒有B主機的記錄,則會向局域網的所有主機廣播一個ARP請求,尋找B主機的MAC地址。

  4) 當B主機收到A主機廣播的ARP請求后,就會直接給A主機回復一個ARP數據包。

  5) 當A主機收到B主機發送過來的請求后,將B的MAC地址寫入高速緩存中,然后通過該MAC地址,A主機向B主機進行數據的傳輸

 跨網段:

A與B不在一個網段,A查詢自己的路由表,知道如果想和B通信則必須通過gateway 來中轉,所以會在與gateway 直連的接口(假定 Ethernet接口)上請求gateway 的MAC地址。 A主機先通過廣播一個ARP請求,找到本網絡中的一個路由器的MAC地址,然后將數據包直接給路由器。當路由收到數據包后,如果B主機在同網絡中的話,這時通過ARP找到B主機,然后把數據包給B主機。如果B主機不和A主機發送數據的路由器在同一網絡內的話,則路由器會通過ARP協議找到下一跳的路由器,然后把數據包發送到該路由上,以此類推。

 

 http協議及報文詳解:https://blog.csdn.net/yutiab69/article/details/82869239


免責聲明!

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



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