1. 程式人生 > >從萌新的角度理解Http協議(一)之互動流程

從萌新的角度理解Http協議(一)之互動流程

HTTP協議,是構建Web世界的基石技術,HTTP協議應是軟體開發者必備的知識儲備。本文是介紹HTTP協議的入門級文章。 通過在瀏覽器輸入網址這個簡單的案例來介紹Http協議的互動流程。文字介紹互動流程包括兩個方面:

  • 客戶端和服務端的互動

    1. HTTP半雙工通訊
    2. HTTP無狀態特性
  • HTTP協議和其他協議之間的互動(DNS,TCP,IP等)

    使用者在瀏覽器輸入網址到瀏覽器顯示網址內容的這一過程中,介紹HTTP協議是如何配合其他協議完成整個通訊流程。

一丶HTTP協議中客戶端和服務端之間的互動

瀏覽器與目標伺服器之間的互動
繪製上圖的主要目的,是為了解釋HTTP協議互動中的兩個特點:

  1. 基於請求-響應形式的半雙工通訊

    半雙工通訊是指,雙方均可以相互發送資料,但是不能同時傳送資料。HTTP協議的通訊流程就是典型的半雙工通訊。比如,當我們在瀏覽器中輸入某個域名後,將想目標伺服器傳送請求報文。目標伺服器收到請求報文之後,將送回響應報文。不存在瀏覽器和伺服器同時傳送資料的情況。

  2. HTTP協議的無狀態特性

    HTTP協議的無狀態性是HTTP協議簡潔輕便的一種體現。HTTP協議的無狀態性體現在如下兩點:

    • 服務端同時接收到多個HTTP請求時,其認為每個HTTP請求都是相等的,其不能從HTTP請求中識別出不同的使用者。

    • 同一個使用者對相同伺服器傳送的HTTP請求之間並不任何關係,更不具備任何記憶功能。此時傳送的HTTP請求和前一時刻傳送的HTTP請求是相互獨立的。

二丶HTTP協議與其他協議之間的互動

HTTP協議是TCP/IP協議棧的一部分,按照TCP/IP協議分層理念,其位於應用層。一個完整的通訊流程必然是由許多協議相互配合完成。本節將介紹HTTP協議是如何配合其他協議完瀏覽器發出請求到獲取響應的通訊過程

  1. DNS域名解析過程
    DNS是域名解析系統,域名解析系統的只要目的就是完成域名地址到IP地址的轉換。此處引用一張圖來介紹DNS域名解析過程(圖片來源)。

    結合上圖,以www.baidu.com這個域名為例。在瀏覽器中輸入該域名後,會經過如下域名解析過程。

    • 從本機的host檔案中檢查域名和IP地址的對映。host檔案預設保留了
      localhost->127.0.0.1這個對映關係
    • host檔案中不存在解析關係時,檢查瀏覽器是否存在解析快取,若命中則使用解析快取,否則將解析請求轉發給local DNS(local DNS是服務區域性區域的域名解析伺服器).
    • local DNS先檢查自身是否存在該域名解析快取,若命中返回解析結果。否則將解析請求轉發給ROOT DNS(根域名伺服器)。
    • 根域名伺服器,檢查到請求解析的域名是www.baidu.com。那麼返回解析頂級域名baidu.com的gTLD域名伺服器地址。
    • localDNS接收到根域名返回的gTLD域名伺服器地址後,將解析請求再次轉發給該域名伺服器
    • gTLD域名伺服器接收到www.baidu.com的域名請求後,返回二級域名www.baidu.com對應的Name DNS伺服器地址。
    • local DNS收到來自gTLD的響應後,再次將域名解析結果傳遞給Name DNS伺服器。
    • Name DNS伺服器收到www.baidu.com的域名解析請求後,發現正屬於自身所管轄的解析範圍。所以查詢域名和IP地址對映關係,將解析結果返local DNS。
    • local DNS收到解析結構後,快取該解析結果。下次遇見相同的解析請求時。直接使用快取結果即可。
  2. 協議封包/解包過程的過程
    本文中將HTTP封包,TCP封包,IP封裝以及對應的解包的過程統稱為協議封包和解包過程。其一般過程如下:
    封包和解包的過程

相關推薦

角度理解Http協議()互動流程

HTTP協議,是構建Web世界的基石技術,HTTP協議應是軟體開發者必備的知識儲備。本文是介紹HTTP協議的入門級文章。 通過在瀏覽器輸入網址這個簡單的案例來介紹Http協議的互動流程。文字介紹互動流程包括兩個方面: 客戶端和服務端的互動 HTTP半雙工通

角度理解Mysql索引基本原理

本文是針對Mysql索引原理剖析的入門級文章,主要圍繞以下四個話題展開對索引相關原理的描述。 一丶索引基本概念 二丶(B+)-Tree索引基本實現 三丶關於Mysql索引常見術語解疑(聚族索引,非聚族索引,最左字首原則, 索引覆蓋,雜湊索引,自適應雜湊索引) 四丶索引侷限性 ####一丶索

角度理解垃圾收集器

從萌新的角度理解記憶體回收一文,詳細的描述了記憶體回收(又稱垃圾收集)涉及的相關方法論。垃圾收集器就是依據記憶體回收方法論的具體實現。本文簡單介紹JVM中主要的垃圾收集器。下面主要看一張圖。 在上圖中,列舉了七種不同的垃圾收集器,每個垃圾收集器複雜回收的記

爬蟲入門系列():快速理解HTTP協議

爬蟲入門系列目錄: 4月份給自己挖一個爬蟲系列的坑,主要涉及HTTP 協議、正則表示式、爬蟲框架 Scrapy、訊息佇列、資料庫等內容。 爬蟲的基本原理是模擬瀏覽器進行 HTTP 請求,理解 HTTP 協議是寫爬蟲的必備基礎,招聘網站的爬蟲崗位也赫然寫著熟練掌握HTTP協議規範,寫

深入理解HTTP協議)——基礎概念篇

1.介紹 HTTP是Hyper Text Transfer Protocol(超文字傳輸協議)的縮寫。它的發展是全球資訊網協會(World Wide Web Consortium)和Internet工作小組IETF(Internet Engineering Task

REST引申到對http協議中 get、post、put、delete理解

最近在寫公司程式碼時候,因為是Restful風格的微服務架構,介面上我們要寫上對應的URL和請求型別,原來只是簡單的理解為get查詢,delete刪除,post建立,put用來查詢。但昨天寫方法的時候組長在一個方法用post和put猶豫了下。我感覺肯定有問題。而且自己對Re

深入理解 web 協議()- http 包體傳輸

本文首發於 vivo網際網路技術 微信公眾號 連結:https://mp.weixin.qq.com/s/WlT8070LlrnSODFRDwZsUQ作者:吳越 開坑這個系列的原因,主要是在大前端學習的過程中遇到了不少跟web協議有關的問題,之前對這一塊的瞭解僅限於用charles抓個包,基

實踐的角度理解cookie的幾個屬性

nod mage date 客戶端 route == 同時 http請求 domain cookie的處理流程大致分為以下幾步: 1、瀏覽器初次請求服務器。 2、服務器認為有必要設置cookie,通過響應報文首部:Set-Cookie告知瀏覽器,cookie的內容。 3、

深入理解HTTP協議

不想 session 位與 裏的 ec2 只需要 空間 html文檔 動態 1. 基礎概念篇 1.1 介紹 HTTP是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫。它的發展是萬維網協會(World Wide Web Consortiu

理解HTTP協議

png 模式 bsp wid url 客戶端和服務器 技術 客戶端和服務器端 http協議 HTTP協議是一種無狀態的協議,及客戶端和服務器端不需要建立持久的鏈接。客戶端和服務器的鏈接是基於一種請求應答模式。及客戶端和服務器建立一個鏈接,客戶端提交一個請求,服務器端收到請求

不定期更新的問題(http協議當你在瀏覽器裏輸入一個url後發生了什麽?)

服務器 兩種 解釋 private 字段 互聯網 cookie值 求和 過期 HTTP協議: 超文本傳輸協議是互聯網上應用最為廣泛的一種網絡協議 https是以安全為目標的http通道,就是http的安全版。 為什麽會有這個協議呢? 為了建立客戶端與服務器

理解HTTP協議(轉載)

網站 解決 part 轉發 工作 包含 reset 多次 per   HTTP(HyperText Transfer Protocol)協議是基於TCP的應用層協議,它不關心數據傳輸的細節,主要是用來規定客戶端和服務端的數據傳輸格式,最初是用來向客戶端傳輸HTML頁面的內容

深入理解http協議的特點

HTTP 是一個屬於應用層的面向物件的協議,HTTP 協議一共有五大特點:1、支援客戶/伺服器模式;2、簡單快速;3、靈活;4、無連線;5、無狀態。   無連線 無連線的含義是限制每次連線只處理一個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連線。採用

效能、負載、壓力測試——效能測試角度理解系統開發

引言 最近,由於舊機器下線,我對過去部署的一些服務做了遷移,順帶對新部署的服務做了一個簡單的效能測試。在實施過程中,我發現自己對很多效能指標的理解很不清晰,對於併發數、壓力、吞吐量、延遲等概念,通常是以望文生義的方式使用。對於系統應該關注什麼樣的效能指標,認識也不完整。為此,我閱讀了wiki百科以及一些部落

Webserver-HTTP專案(深入理解HTTP協議)

# HTTP專案實戰- 深入理解HTTP協議- 模擬後臺服務程式基本流程和大致框架- 每一個步驟一個資料夾- 圖解http協議, 圖解tcp/ip協議# v01-驗證技術- 驗證socket-tcp技術,看能否走通流程- 使用瀏覽器傳送訊息,訪問地址# V02-解析傳入http協議- 根據http協議格

Webserver-HTTP項目(深入理解HTTP協議)

服務器 sock 換行符 嚴重 lin 以及 webapp 操作方法 重構 # HTTP項目實戰- 深入理解HTTP協議- 模擬後臺服務程序基本流程和大致框架- 每一個步驟一個文件夾- 圖解http協議, 圖解tcp/ip協議# v01-驗證技術- 驗證socket-tc

flutter到禿頭

flutter從萌新開始(記錄貼,不定期更新) 因為本人是做安卓開發的,所以僅從安卓進行討論,望輕噴 flutter環境搭建 前期準備 flutter sdk 從 https://flutter.io/sdk-archive/#windows 下載解

【OS學習筆記】九 真實模式:彙編的角度理解棧結構

上一篇文章以一種更加高效的方法編寫了主引導扇區的程式碼。主要是引入了迴圈和跳轉指令。點選連結檢視上一篇文章:編寫主引導扇區程式碼-另一種更高效的寫法 本篇文章,繼續上一篇文章的學習。同樣還是編寫彙編程式碼載入到主引導扇區讓CPU直接執行。但是我們以一個簡單程式,實現1加到100,來引

原始碼的角度理解Java設計模式的裝飾模式

一、裝飾模式介紹 修飾符模式定義:不改變原始物件的附加函式比生成子類更靈活。 適用場景:動態的給一個物件新增或者撤銷功能。 優點:它能夠在不改變原有物件的情況下動態擴充套件函式,使擴充套件函式按照期望的順序執行,達到不同的效果。 缺點:更多的類,使程式複雜 型別:結構型。 類

tcp原理角度理解Broken pipe和Connection Reset by Peer的區別

以前我們經常會碰到Broken pipe或者Connection reset by peer之類的異常,但是tcp實現裡什麼情況下會丟擲這些異常呢,以前我給對方的回答都是模稜兩可的,自己說實話都沒把握,因為自己也沒有驗證過,對它們的認識都是從網上看來的,正確與否也不知道,昨天