文章出處

HTTP數據傳輸協議

  當訪問一個網頁時,瀏覽器會向服務器發起一條HTTP請求,接著服務器會去尋找相應的資源,如果請求成功,就會把這個對象,對象類型,對象長度以及其他的信息放在HTTP響應中,發送給客戶端。

  因為資源種類太多,所以WEB服務器在返回響應時會為HTTP對象附加一條MIME類型(數據類型),當瀏覽器接收到數據時,會去查看這個MIME類型,然后會根據這個類型去渲染它(前提這個瀏覽器支持這種類型,否則瀏覽器會通過其他方式,這個沒有一個固定的形式)。

 

MIME類型由兩部分組成:

  主要類型 / 具體類型

Image/jpeg

如:

  人  /  男或女

 

HTTP 協議入門:http://www.ruanyifeng.com/blog/2016/08/http.html

 

MIME type還可以在尾部使用分號,添加參數。

Content-Type: text/html; charset=utf-8

客戶端請求的時候,可以使用Accept字段聲明自己可以接受哪些數據格式。

Accept: */*

上面代碼中,客戶端聲明自己可以接受任何格式的數據。

 

Content-Encoding 字段

  由于發送的數據可以是任何格式,因此可以把數據壓縮后再發送。Content-Encoding字段說明數據的壓縮方法。

Content-Encoding: gzip

  客戶端在請求時,用Accept-Encoding字段說明自己可以接受哪些壓縮方法。

Accept-Encoding: gzip, deflate

 

Referer

  表示這個請求是從哪個URL過來的。

  用途1:獲取用戶是從哪個網站跳轉到你主頁的。

  用途2:推薦注冊應該也是通過這個實現的。(我猜的)

 

Cache-Control

  對緩存進行控制,如一個請求希望響應返回的內容在客戶端要被緩存一年,或不希望被緩存就可以通過這個報文頭達到目的。

 

由HTTP引發的性能問題

  服務器只有處理完上一個回應,才會進行下一個回應。要是前面的回應特別慢,后面就會有許多請求排隊等著。
  為了避免這個問題,只有兩種方法:一是減少請求數,二是同時多開持久連接。這導致了很多的網頁優化技巧,比如合并腳本和樣式表、將圖片嵌入CSS代碼、域名分片(domain sharding)等等。

 

統一資源標識符URI

  資源標識符分為兩種類型分別是:URL和URN,也就是說URL和URN都是URI的子集。

 

URL(統一資源定位符)

  URL詳細的說明了某個資源的位置以及如何去訪問它。
  URL是URI的一種,不僅標識了Web 資源,還指定了操作或者獲取方式,同時指出了主要訪問機制和網絡位置。

  URL包括3部分:
    1.訪問資源所使用的協議類型 如: http:// 或 https://
    2.服務器地址
    3.服務器上具體的文件路徑

 

URN(統一資源名)

  用來標識一個實體名字,它并不關心這個資源的具體位置。
  URN是URI的一種,用特定命名空間的名字標識資源。使用URN可以在不知道其網絡位置及訪問方式的情況下討論資源。

  百度云離線下載就是使用的URN:以及這個http://www.xuexila.com/fangfa/1115853.html

  URN可以用來實現磁力鏈接 http://www.tuicool.com/articles/Z36nauv
  

URL,URN,URI它們之間的區別:http://web.jobbole.com/83452/


HTTP請求方法

  方法是用來告訴服務器做什么事情的,狀態碼則用來告訴客戶端,發生了什么事情。

 

常見HTTP方法
  GET:從服務器獲取資源
  POST:把發送數據到服務器
  PUT:將客戶端數據存儲到服務器中
  DELETE:從服務器中刪除數據
  HEAD:將資源發送到HTTP首部

 

狀態碼

  每條HTTP響應報文返回時都會攜帶一個狀態碼,這個狀態碼由3位數字組成,他告訴客戶端請求是否成功,或是否需要采取其他動作,另外它還會附帶一條解釋性的短語用來描述這個響應結果。

 

  100 - 199 信息提示
  200 - 299 成功
  300 - 399 重定向
  400 - 499 客戶端錯誤
  500 - 599 服務器錯誤

 

報文

  從客戶端發往服務器端的HTTP報文稱為請求報文,從服務器端發往客戶端的報文稱為響應報文。

 

HTTP報文包括以下3部分

  起始行:
    在請求報文中說明要干什么,在響應報文中說明出現了什么情況。

  首部字段:
    首部字段可以包含0個或多個,每個字段包含一個名字以及相應的值它們用 :來分割,每個字段為一行。

  主體:
    請求主體包括了要發送給服務器的數據,響應主體裝載了要返回給客戶端的數據,主體可以是普通的文本也可以是二進制數據,另外請求主體是可選的。

 

傳輸協議TCP/IP
  TCP提供了:無差錯的數據傳輸,數據按發送的順序到達,可以任意時刻把數據發送出去。

  在HTTP客戶端向服務器發送報文之前,需要用網際協議地址和端口號在客戶端和服務器之間建立一條TCP/IP連接。

  IP地址和端口號通過URL上獲取,如果URL上使用的是主機名形式,那么瀏覽器會通過DNS來將對應的域名解析成IP地址,如果URL上沒有提供端口號,那么默認為80端,數據庫默認端口為3306。

 

步驟如下:
  1.瀏覽器從URL中解析出服務器的主機名
  2.將主機名轉換成IP地址
  3.將URL中的端口號解析出來,沒有的話默認80
  4.建立TCP連接
  5.瀏覽器向服務器發送一條HTTP請求
  6.服務器響應客戶端報文
  7.關閉連接,瀏覽器解析響應內容。

 

HTTP協議是一個無狀態的協議,同一個客戶端的這次請求和上次請求是沒有對應關系。

  Cookie和Session它們都是為了解決HTTP無狀態的問題而所做的努力。

 

HTTP報文詳解:http://www.iteye.com/topic/1124408

HTTP協議:http://www.cnblogs.com/xiguain/category/600996.html


文章列表


不含病毒。www.avast.com
文章標籤
全站熱搜
創作者介紹
創作者 AutoPoster 的頭像
AutoPoster

互聯網 - 大數據

AutoPoster 發表在 痞客邦 留言(0) 人氣(3)