菜鳥面試必知的 Http 知識

JohannaSLNE 8年前發布 | 22K 次閱讀 HTTP 網絡技術

超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最為廣泛的一種網絡協議。HTTP 也屬于 TCP/IP 協議族的子集,想要學習 HTTP ,先需要了解 TCP/IP。

1 - TCP/IP 的分層管理

TCP/IP 協議族里重要的一點就是分層,按層次分為以下4層:應用層、傳輸層、網絡層和數據鏈路層。層次化的好處是,各層之間的協議改變可以互不影響,只需要按照接口規劃好。

  • 應用層
    應用層決定了向用戶提供應用服務時通信的活動。TCP/IP 協議族內預存了各類通用的應用服務。包括 HTTPFTP(File Transfer Protocol,文件傳輸協議),DNS(Domain Name System,域名系統)服務。

  • 傳輸層
    傳輸層提供處于網絡連接中的兩臺計算機之間的數據傳輸。有兩個性質不同的協議:TCP(Transmission Control Protocol,傳輸控制協議)和UDP(User Data Protocol,用戶數據報協議)

  • 網絡層
    網絡層用來處理在網絡上流動的數據包,數據包是網絡傳輸的最小數據單位。該層規定了通過怎樣的路徑到達對方計算機,并把數據包傳送給對方。與對方計算機之間通過多臺計算機或網絡設備進行傳輸時,網絡層所起的作用就是在眾多的選項內選擇一條傳輸路線。

  • 鏈路層
    用來處理連接網絡的硬件部分。硬件上的范疇均在鏈路層的作用范圍之內。

2 - TCP/IP 通信傳輸流

如圖1所示,發送端在層與層之間傳輸數據時,每經過一層時必定會被打上一個該層所屬的首部信息。反之,接收端在層與層傳輸數據時,每經過一層時會把對應的首部消去。
這種把數據信息包裝起來的做法成為封裝。

菜鳥面試必知的 Http 知識

圖1 - HTTP通信傳輸過程

3 - 與 HTTP 關系密切的協議:IP、TCP 和 DNS

  • 3.1 負責傳輸的 IP 協議
    IP(Internet Protocol)網際協議位于網絡層。其作用是把各種數據包傳送給對方,需要滿足各類條件,最重要的兩個條件便是 IP 地址MAC 地址。IP 地址可以和 MAC 地址進行配對,IP 地址可變換,但 MAC 地址基本不會更改。
    在網絡上,通信的雙方在同一局域網(LAN)內的情況是很少的,通常是經過多臺計算機和網絡設備中轉才能連接到對方。而在進行中轉時,會利用下一站中轉設備的 MAC 地址來搜索下一個中轉目標。這時,會采用 ARP (Address Resolution Protocol)協議。 ARP 是一種用以解析地址的協議,根據通信方的 IP 地址就可以反查出對應的 MAC 地址。

  • 3.2 確保可靠性的 TCP 協議
    TCP 位于傳輸層,提供可靠的字節流服務字節流服務是指將大塊數據分割成報文段(segment)為單位的數據包進行管理
    為了保證準確性,TCP 協議采用了三次握手(three-way handshaking)策略。握手過程中使用了 TCP 的標志(flag)—— SYN(synchronize)、ACK(acknowledgement)和 FIN(finish)。

TCP建立連接—三次握手:發送端首先發送一個帶SYN標志的數據包給對方。接收端收到后,回傳一個帶有 SYN/ACK 標志的數據包以示傳達確認信息。最后,發送端再回傳一個帶 ACK 標志的數據包,代表“握手”結束,過程見圖2。

菜鳥面試必知的 Http 知識

圖2 - TCP建立連接—三次握手

TCP釋放連接—四次握手:發送端首先發送一個帶 FIN 標志的數據包給對方,然后進入 FIN-WAIT-1 狀態。接收端收到后不能立即斷開連接(防止數據丟失),先發送帶 ACK 標志的數據包,此時發送端進入 FIN-WAIT-2 狀態。然后接收端將沒有傳輸完的數據繼續傳完,傳完之后發送一個帶 ACK 和 FIN 標志的數據包,通知發送端。發送端發送 ACK 標志的數據包給接收端,并進入 TIME-WAIT 狀態,等待 2MSL 后斷開連接。

菜鳥面試必知的 Http 知識

圖3 - TCP釋放連接—四次握手

  • 3.3 負責域名解析的 DNS 服務
    DNS (Domain Name System)服務是和 HTTP 協議一樣位于應用層的協議。它提供域名到 IP 地址之間的解析服務。用戶通常通過主機名或域名來訪問對方的計算機,計算機則通過 IP 地址查詢服務器。所以 DNS 就提供了域名查找 IP 地址和從 IP 地址反查域名的服務。

上述三種協議在 HTTP 通信過程中的作用可以用一張圖來表示:

菜鳥面試必知的 Http 知識


 

閱讀原文

 

 本文由用戶 JohannaSLNE 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!