因為http是基於tcp/ip的協議,所以還是要說說這個面試老題,3次握手4次揮手的問題了。
三次握手:
第一次握手:客戶端傳送了乙個帶有syn(建立連線)的tcp報文到伺服器,這個三次握手中的開始。表示客戶端想要和服務端建立連線。
第二次握手:服務端接收到客戶端的請求,返回客戶端報文,這個報文帶有syn(建立連線)和ack(確認)標誌,詢問客戶端是否準備好。
第三次握手:.客戶端再次響應服務端乙個ack(確認),表示我已經準備好。
為什麼要3次握手那麼麻煩?
當然這個其實作為乙個前端不需要關注,因為其實基本沒你什麼事情,但是了解到這一些基本知識,對於日後排除頁面效能的時候,某些指標就是需要了解整個http鏈結過程了。言歸正傳,為什麼需要三次握手呢?
因為第一次握手的時候,客戶端傳送了乙個請求,之後因為網路原因或者任何原因,客戶端斷網了或者沒有收到伺服器回傳的ack確認碼,在這種情況下,如果伺服器不去接收客戶端回傳ack碼確認,就開啟鏈結,在這個時候就浪費了伺服器的資源了,所以第三次握手就為這樣的一種情況設計的,伺服器必須確認客戶端接收到了ack碼才開啟連線。
四次揮手:
第一次握手:客戶端傳送乙個fin(結束),用來關閉客戶到服務端的連線。
第二次握手:服務端收到這個fin,他發回乙個ack(確認),確認收到序號為收到序號+1,和syn一樣,乙個fin將占用乙個序號。
第三次握手:服務端傳送乙個fin(結束)到客戶端,服務端關閉客戶端的連線。
第四次握手:客戶端傳送ack(確認)報文確認,並將確認的序號+1,這樣關閉完成。
那麼為什麼關閉乙個http請求需要走4次握手呢?
因為伺服器收到了客戶端的fin報文請求關閉連線的時候,伺服器端很可能並不會立即關閉連線,而是需要等待所有資料都傳輸完畢後才進行關閉,所以會先回覆乙個ack報文告訴客戶端收到了fin報文,當資料都傳輸完畢了,才使用fin報文告訴客戶端現在可以進行關閉了,客戶端回覆ack報文進行確認,彼此才真正關閉連線。因此需要4次握手。
HTTP基本與原理
1 http的請求過程 uri uniform resource identifier,統一資源標誌符 對url urn的標誌 url uniform resource locator,統一資源定位符 urn,之命名資源而不指定如何定位資源 urn uniform resource name,統一資...
HTTP流程的基本原理
http流程的基本原理 http協議是一種請求 應答協議。與主機建立連線後,客戶以請求方法,uri和協議版本的形式向伺服器傳送請求,其中包括請求修改 客戶資訊和可能的正文內容。伺服器用包括訊息協議版本和成功或錯誤 的狀態進行應答,包括伺服器資訊,實體維護資訊和可能的實體內容的類mime訊息。大部分的...
HTTP協議基本原理
http 超文字傳輸協議 hypertext transfer protocol,http 是一種用於分布式 協作式和超 資訊系統的應用層協議。http是全球資訊網的資料通訊的基礎。www是以internet作為傳輸媒介的乙個應用系統,www網上最基本的傳輸單位是web網頁。www的工作基於客戶機 ...