[筆記] 應用層協議(HTTP)

要編寫兩個用於網絡通信的應用軟件,程序員必須會考慮幾個問題:

  1. 傳輸的信息的語法和語義
  2. 客戶端或者服務器端是否可以開始通信
  3. 當通信出錯時怎麼辦
  4. 什麼時候結束通信

爲了規範這些細節,程序員編寫了應用層協議。應用層協議根據用途劃分主要分爲兩大類:

  1. Private communication.
  2. Standardized  services.

這個很好理解,對於互聯網服務來說,如果你是私人用途的話,這個通信過程是直接的,無需爲這個寫一個正式地通用的協議(作者接觸的實例較少,無法舉個很恰當的例子);而如果這個互聯網服務希望廣大的程序員爲它編寫服務器軟件(用來提供服務)或客戶端軟件(用來獲取服務),這種情形下,應用層協議必須獨立於任何實例,並且這個協議的規定必須準確清晰,保證互操作性。例如Web服務。

應用層協議主要有兩方面的規範:描述(Representation)和傳輸(Transfer)。

World Wide Web 是被應用得最廣的互聯網服務。由於Web很複雜,產生了針對不同部分和細節的協議標準。

URL(Uniform Resouece Location)的基本格式:

protocol:// computer_name:port/ document_name%parameters

HTTP(HyperText Transfer Protocol)的主要表徵:

  1. 使用文本控制消息
  2. 傳輸二進制文件
  3. 上載或下載數據
  4. 合併緩存

在應用層傳輸的是HTTP數據包。

A Get request:

GET /item version CRLF

 使用HTTP時,瀏覽器發送版本信息給服務器,然後選擇兩邊都能理解的最高HTTP版本。即HTTP協商。

A basic response header:

HTTP/1.0 status_code status_string CRLF
Server: server_identification CRLF
Last-Modified: date_document_was_changed CRLF
Content-Length: datasize CRLF
Content-Type: document_type CRLF
CRLF

status_code狀態碼 status_string狀態描述

server_identification服務器描述,可能包含服務器域名

content-length the size of the data item單位是byte

content-type 文件類型/文件格式 eg. text/html  image/jpeg

 Header+blank line+contents

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章