【面試題】在瀏覽器中輸入URL后,執行的全部過程。會用到哪些協議?(一次完整的HTTP請求過程)


整個流程如下:

  域名解析
  為了將消息從你的PC上傳到服務器上,需要用到IP協議、ARP協議和OSPF協議。
  發起TCP的三次握手
  建立TCP連接后發起HTTP請求
  服務器響應HTTP請求
  瀏覽器解析html代碼,並請求HTML代碼中的資源(如js、css、圖片等)
  斷開TCP連接
  瀏覽器對頁面進行渲染呈現給用戶

域名解析協議

比如要查詢www.baidu.com的IP地址:

  1、瀏覽器搜索自己的DNS緩存(維護一張域名與IP地址的對應表);

  2、若沒有,則搜索操作系統中的DNS緩存(維護一張域名與IP地址的對應表);

  3、若沒有,則搜索操作系統的hosts文件(Windows環境下,維護一張域名與IP地址的對應表);

  4、若沒有,則操作系統將域名發送至本地域名服務器---(遞歸查詢方式),本地域名服務器查詢自己的DNS緩存,查找成功則返回結果,否則,(以下是迭代查詢方式)

    4.1. 本地域名服務器向根域名服務器(其雖然沒有每個域名的具體信息,但存儲了負責每個域,如com、net、org等解析的頂級域名服務器的地址)發起請求,此處,根域名服務器返回com域的頂級域名服務器的地址;

    4.2. 本地域名服務器向com域的頂級域名服務器發起請求,返回baidu.com權限域名服務器(權限域名服務器,用來保存該區中的所有主機域名到IP地址的映射)地址;

    4.3. 本地域名服務器向baidu.com權限域名服務器發起請求,得到www.baidu.com的IP地址;

  5、本地域名服務器將得到的IP地址返回給操作系統,同時自己也將IP地址緩存起來;

  6、操作系統將IP地址返回給瀏覽器,同時自己也將IP地址緩存起來;

  7、至此,瀏覽器已經得到了域名對應的IP地址;

ARP(地址解析協議)

  ARP解決的是同一個局域網內,主機或路由器的IP地址和MAC地址的映射問題。如果源主機和目的主機在同一個局域網內(目標IP和本機IP分別與子網掩碼相與的結果相同,那么它們在一個子網),就可以用ARP找到目的主機的MAC地址;如果不在一個局域網內,用ARP協議找到本網絡內的一個路由器的MAC地址,剩下的工作有這個路由器來完成。

  ARP協議的具體內容:

  (1)每個主機都會有ARP高速緩存,存儲本局域網內IP地址和MAC地址之間的對應關系。

  (2)當源主機要發送數據時,首先檢查ARP高速緩存中是否有對應IP地址目的主機的MAC地址,如果有,則直接發送數據,如果沒有,就像本網段的所有主機發送ARP請求分組,該數據包包括的內容有:(源主機IP地址,源主機MAC地址,目的主機的IP地址)。

  (3)當本網絡的所有主機收到該ARP請求分組時,首先檢查數據包中的IP地址是否是自己的IP地址,如果不是,則忽略該數據包;如果是,則首先從數據包中取出源主機的IP地址和MAC地址寫入到ARP高速緩存中,如果已經存在,則覆蓋,然后將自己的MAC地址寫入ARP響應包中,告訴源主機自己是它想要找的MAC地址。

  (4)源主機收到ARP響應分組后,將目的主機的IP和MAC地址寫入ARP高速緩存中,並利用此信息發送數據。如果源主機一直沒有收到ARP響應分組,表示ARP查詢失敗。

路由選擇協議

  網絡層主要做的是通過查找路由表確定如何到達服務器,期間可能經過多個路由器,這些都是由路由器來完成的工作,通過查找路由表決定通過哪個路徑到達服務器,其中用到路由選擇協議。

有兩大類路由選擇協議

1、內部網關協議

  內部網關協議IGP(Internet Gateway Protocol)即在一個自治系統內部使用的路由選擇協議,RIP和OSRF協議和IS-IS協議,IGRP(內部網關路由協議)、EIGRP(增強型內部網關路由協議)。

(1)RIP(應用層協議,基於UDP)

   RIP是一種基於距離向量的路由選擇協議。RIP協議要求網絡中的每一個路由器都要維護從它自己到其他每一個目的網絡的距離記錄。這里的“距離”實際上指的是“最短距離”。只能包含15個路由器。RIP認為一個好的路由就是它通過的路由器的數量少,即“距離短”。RIP允許一條路徑最多只能包含15個路由器。“距離”的最大值為16是即相當於不可達。RIP選擇一個具有最少路由器的路由(即最短路由),哪怕還存在另一條高速(低時延)但路由器較多的路由。

(2)OSPF(網絡層協議)

   “最短路徑優先”是因為使用了Dijkstra提出的最短路徑算法。使用洪范法向本自治系統中所有路由器發送信息。發送的信息就是與本路由器相鄰的所有路由器的鏈路狀態(“鏈路狀態”就是說明本路由器都和哪些路由器相鄰,以及該鏈路的“度量”),但這只是路由器所知道的部分信息。只有當鏈路狀態發生變化時,路由器才用洪范法向所有路由器發送此信息。

2、外部網關協議

(1)BGP協議(應用層協議,基於TCP的)

  BGP是不同自治系統的路由器之間交換路由信息的協議。邊界網關協議BGP只能是力求尋找一條能過到達目的網絡且比較好的路由(不能兜圈子),而並非要尋找一條最佳路由。

  BGP發言人:每一個自治系統的管理員要選擇至少一個路由器作為該自治系統的“BGP發言人”/一般來說,兩個BGP發言人都是通過一個共享網絡連接在一起的,而BGP發言人往往就是BGP邊界路由器,但也可以不是BGP邊界路由器。

  BGP交換路由信息:一個BGP發言人與其他自治系統中的BGP發言人要交換信息,就要先建立TCP連接,然后在此連接上交換BGP報文以建立BGP會話(session),利用BGP會話交換路由信息。使用TCP連接能提供可靠的服務也簡化了路由選擇協議。使用TCP連接交換路由信息的兩個BGP發言人,彼此成為對方的臨站或對等站。BGP所交換的路由信息就是到達某個網絡所要經過的一系列AS。

路由分組轉發算法

  (1)首先從IP數據報首部提取目的主機的IP地址D,得出其所在的網絡N。

  (2)若N就是與此路由器直接相連的某個網絡,則進行直接交付,直接把數據報交付給目的主機。否則就執行(3)。

  (3)若路由表中有目的地址為D的特定主機路由,則把數據報傳給路由表中所指明的下一跳路由器。否則執行(4)。

  (4)若路由表中有到達網絡N的路由,則把數據報傳給路由表中所指明的下一跳路由器。否則執行(5)。

  (5)若路由表中有一個默認路由,則把數據報傳給默認路由所指明的默認路由器。否則執行(6)。

  (6)報告轉發分組出錯。

路由器與交換機的區別是什么?

  1)交換機工作在數據鏈路層;路由器工作在網絡層;

  2)交換機轉發數據幀;路由器轉發IP組;

  3)交換機隔離沖突域,不隔離廣播域;路由器隔離沖突域,隔離廣播域;

轉自:https://www.cnblogs.com/HuiH/archive/2020/04/02/12622328.html


免責聲明!

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



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