1. 程式人生 > >在瀏覽器位址列輸入一個URL後回車,背後會進行哪些技術步驟?

在瀏覽器位址列輸入一個URL後回車,背後會進行哪些技術步驟?

IP路由選擇是逐跳(hop-to-hop)進行的。IP並不知道從H1到H2的完整路徑。所有的IP選擇只為資料報提供下一站的IP地址。路由選擇機制的基礎是在每一臺主機和路由器裡都儲存著一張路由表。路由表的每一項包含了目的主機IP地址、下一跳路由器(或主機)的IP地址、相對應的網路介面以及其他必要的資訊。當一個數據報到達一個節點時,IP路由選擇完成以下工作:
  1. 搜尋路由表,尋找能與目的主機IP地址完全匹配的表目。如果找到,則把報文傳送給下一跳節點。
  2. 搜尋路由表,尋找能與目標網路號相匹配的表目。如果找到,則把報文傳送給下一跳節點。
  3. 搜尋路由表,尋找“預設”的表目。如果找到,則把報文傳送給下一跳節點。
如果上面這些步驟都沒有成功,那麼該資料報就不能被傳送。如果不能傳送的資料報來自本機,那麼一般會向生成資料報的應用程式返回一個“主機不可達”或“網路不可達”的錯誤。
在我們的例子中,H1通過搜尋自己的路由表將資料報轉發給R1,R1根據路由錶轉發給R2,最後到達H2。
6、關閉連線
目標主機收到了請求後,自底向上地對該請求進行處理。鏈路層把資料報傳給網路層,網路層將TCP資料段通過對應的Socket傳給應用程式。應用程式處理請求後產生一個應答的HTTP報文,又經過了一層層的封裝、一跳跳的傳輸到達了源主機。
這樣就結束了嗎?那一條TCP連線還沒有關閉呢,源主機和目標主機上都為它分配了資源呢,如果不釋放掉的話資源很快就會耗盡(DDoS攻擊就是利用這一點)。於是,當傳輸層收到了應答之後,就要關閉這條連線了。但是,又不能悄悄地自己關了,目標主機那邊還不知道你要不要關閉呢。於是乎,就有了對應建立TCP連線“三次握手”的關閉TCP連線“四次揮手”。
如下圖所示,客戶端向伺服器發出了FIN報文段,伺服器收到後,回覆一個ACK應答。然後,伺服器也向客戶端傳送一個FIN報文段,隨後關閉了伺服器端的連線,釋放了資源。當客戶端收到之後,又向伺服器回覆一個ACK應答。過了一段計時等待,客戶端也關閉了連線,釋放資源。這一段計時等待的時間是為了客戶端重傳最後的ACK防止其丟失。