1. 程式人生 > >HTTP 簡單總結

HTTP 簡單總結

查詢 tcp/ip 網絡傳輸 優點 臨時性 modified unix系統 因特網 判斷

1. 一次完整的HTTP事務是怎樣的一個過程?

基本流程:

  a. 域名解析

  b. 發起TCP的3次握手

  c. 建立TCP連接後發起http請求

  d. 服務器端響應http請求,瀏覽器得到html代碼

  e. 瀏覽器解析html代碼,並請求html代碼中的資源

  f. 瀏覽器對頁面進行渲染呈現給用戶

2. http狀態碼有那些?分別代表是什麽意思?

  100 Continue 繼續,一般在發送post請求時,已發送了http header之後服務端將返回此信息,表示確認,之後發送具體參數信息

  200 OK 正常返回信息

  201 Created 請求成功並且服務器創建了新的資源

  202 Accepted 服務器已接受請求,但尚未處理

  301 Moved Permanently 請求的網頁已永久移動到新位置。

  302 Found 臨時性重定向。

  303 See Other 臨時性重定向,且總是使用 GET 請求新的 URI。

  304 Not Modified 自從上次請求後,請求的網頁未修改過。

  400 Bad Request 服務器無法理解請求的格式,客戶端不應當嘗試再次使用相同的內容發起請求。

  401 Unauthorized 請求未授權。

  403 Forbidden 禁止訪問。

  404 Not Found 找不到如何與 URI 相匹配的資源。

  500 Internal Server Error 最常見的服務器端錯誤。

  503 Service Unavailable 服務器端暫時無法處理請求(可能是過載或維護)

3. 協議

  技術分享

  "傳輸層"的功能,就是建立"端口到端口"的通信。相比之下,"網絡層"的功能是建立"主機到主機"的通信。只要確定主機和端口,我們就能實現程序之間的交

  流。因此,Unix系統就把主機+端口,叫做"套接字"(socket)。

UDP協議:

  現在,我們必須在數據包中加入端口信息,這就需要新的協議。最簡單的實現叫做UDP協議,它的格式幾乎就是在數據前面,加上端口號。

  "標頭"部分主要定義了發出端口和接收端口,"數據"部分就是具體的內容。然後,把整個UDP數據包放入IP數據包的"數據"部分,而前面說過,IP數據包又是放在以

  太網數據包之中的,所以整個以太網數據包現在變成了下面這樣:

  技術分享

  

TCP協議:

  UDP協議的優點是比較簡單,容易實現,但是缺點是可靠性較差,一旦數據包發出,無法知道對方是否收到。

  為了解決這個問題,提高網絡可靠性,TCP協議就誕生了。這個協議非常復雜,但可以近似認為,它就是有確認機制的UDP協議,每發出一個數據包都要求確認。

  如果有一個數據包遺失,就收不到確認,發出方就知道有必要重發這個數據包了。

  因此,TCP協議能夠確保數據不會遺失。它的缺點是過程復雜、實現困難、消耗較多的資源。

  TCP數據包和UDP數據包一樣,都是內嵌在IP數據包的"數據"部分。TCP數據包沒有長度限制,理論上可以無限長,但是為了保證網絡的效率,通常TCP數據包的

  長度不會超過IP數據包的長度,以確保單個TCP數據包不必再分割。

應用層:

"應用層"的作用,就是規定應用程序的數據格式。

  HTTP協議:

    HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是因特網上應用最為廣泛的一種網絡傳輸協議,所有的WWW文件都必須遵守這個標準。

    HTTP是一個基於TCP/IP通信協議來傳遞數據(HTML 文件, 圖片文件, 查詢結果等)。

    HTTP是在網絡上傳輸HTML的協議,用於瀏覽器和服務器的通信。

    HTTP協議工作於客戶端-服務端架構為上。瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB服務器發送所有請求。

    技術分享

  

  我們已經知道,網絡通信就是交換數據包。電腦A向電腦B發送一個數據包,後者收到了,回復一個數據包,從而實現兩臺電腦之間的通信。數據包的結構,基本

  上是下面這樣

    技術分享

  

  發送這個包,需要知道兩個地址:

    * 對方的MAC地址

    * 對方的IP地址

  數據包的目標地址,實際上分成兩種情況:

    場景 數據包地址

  同一個子網絡 對方的MAC地址,對方的IP地址

  非同一個子網絡 網關的MAC地址,對方的IP地址

  DNS協議可以幫助我們,將這個網址轉換成IP地址。

  我們要判斷,這個IP地址是不是在同一個子網絡,這就要用到子網掩碼。

HTTP 簡單總結