1. 程式人生 > >Http網路請求原理

Http網路請求原理

一、簡介
HTTP 是一種應用層協議,它通過TCP實現了可靠的資料傳輸,能夠保證資料的完整性,正確性,而TCP對於資料控制的優點也能夠體現在HTTP上,使得HTTP的資料傳輸吞吐量,效率得到保證。
詳細的互動流程:
1、客戶端執行網路請求,從URL中解析出伺服器的主機名
2、將伺服器的主機名轉換成伺服器的IP地址
3、將埠號從URL中解析出來
4、建立一條客戶端與Web伺服器的TCP連線
5、客戶端通過輸出流向服務端傳送一條HTTP請求
6、伺服器從客戶端回送一條HTTP響應報文
7、客戶端從輸入流獲取報文
8、客戶端解析報文、關閉連線
9、客戶端將結果顯示在UI上

二、HTTP的請求方法
HTTP協議提供了幾種請求方式,每種請求方式都有不同的作用,被大家熟知的方式有:
GET、POST、PUT、DELETE、HEAD、TRACE、OPTIONS

1、GET請求
GET請求時最常用的請求方法,它的作用是獲取伺服器的某個資源。
它的傳參方式為: 引數名=引數值,並通過&連線,第一個引數前加 ? 號,
例如 www.baidu.com/api?username=myname&password=1243
2、POST請求
POST請求方法起初用來想伺服器傳遞資料的,實際上POST請求通常用來提交HTML的表單。表單中填好的資料會被傳輸給伺服器,然後由伺服器對這些資料進行處理。,它的引數在請求體中
例如:

POST login.php HTTP/1.1
HOST: www.baidu.com
Content-Type: text/plain
Content-Length:30
username=xxxx&pwd=123456

3、PUT請求
與GET從伺服器讀取資源相反,PUT方法會向伺服器寫入資源。有些釋出系統允許使用者建立Web頁面,並用PUT直接將其輸出到Web伺服器。
例如:
請求:

請求報文
PUT new-art.txt HTTP/1.1
Host www.baidu.com
Content-Type: text/html
Content-Lengh:128

This is file content

響應報文:
HTTP/1.1 200 Ok
Content-Type:text/html
Content-Length:1024
location:
http://www.baidu.com/new-art.txt http://www.baidu.com/new-art.txt

該請求會在 www.baidu.com的網站目錄下穿阿金一個new-art.txt,檔案內容 “This is file content”。當然這裡 www.baidu.com 是我隨意寫的

4、DELETE請求
DELTE方法所做的事情就是請伺服器刪除請求URL所指定的資源,但是客戶端應用程式無法保證刪除操作一定會被執行,因為HTTP規範允許伺服器在不通過客戶端的情況下撤銷請求,DELETE方法和GET請求一樣,引數都需要放在請求的URL中

示例:

請求報文:
DELTE /test/xxx.html HTTP/1.1
Host:www.baidu.com

返回報文
HTTP1.1 200/OK
Content-Type:text/plain
Content-Length:20

Success

刪除 xxx.html檔案

5、HEAD請求
HEAD方法與GET方法的行為很類似,但伺服器在響應中返回首部,不會返回實體的主體部分。這就允許客戶端子為獲取實際資源的情況下,對資源進行減產,使用HEAD可以在不獲取資源的情況瞭解資源情況(比如瞭解資源是否存在)
例如:

請求報文
HEAD /text/xxx.html HTTP/1.1
Host: www.baodu.com

響應報文
HTTP/1.1 200 OK
Content-Type: text/html
ContentLength:1024

6、TRACE請求
客戶端傳送一個請求時,這個請求可能要穿過防火牆,代理、閘道器或其他一些應用程式。每個中間節點都可能會修改原始的HTTP請求,TRACE方法允許客戶端在最終將請求發給伺服器是,看看那它變成什麼樣子。
TRACE請求會子啊目的伺服器端發起一個”環回“診斷,形成最後一站的伺服器會彈回一條TRACE響應,並在響應主體中攜帶它收到的原始請求報文,這樣客戶端就可以檢視在所有中間HTTP應用程式組成的請求/響應鏈,原始報文是否以及如何被毀壞或修改過
示例:

客戶端傳送請求報文:
TRACE /index.html HTTP/1.1
Host:www.baidu.com
Accept:"

經過代理:
TRACE /index.html HTTP/1.1
Host:www.baidu.com
Accept:"
Via1.1 proxy.vpn.com

伺服器返回給代理:
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Lengty:21

TRACE /index.html HTTP/1.1
Host:www.baidu.com
Accept:"
Via 1.1 proxy.vpn.com

代理返回給客戶端

HTTP/1.1 200 OK
Content-Type: /text/plain
Content-Lengty:21
via: 1.1 proxy.vpn.com

TRACE /index.html HTTP/1.1
Host:www.baidu.com
Accept:"
Via 1.1 proxy.vpn.com

7、OPTIONS請求
OPTIONS方法請求Web伺服器告知其支援各種功能。可以詢問伺服器通常支援哪些方法,或者對那些特殊資源支援哪些方法(有些伺服器可能只支援一些特殊型別的物件使用特定的操作)這為客戶端提供了一種手段,使其不用實體訪問那些資源就能判定訪問各種資源的最優方式。
示例:

請求報文:
OPTIONS /text HTTP 1.1
Host:www.baidu.com

響應報文:
HTTP/1.1 200 OK
Allow: GET、POST、PUT、
ContentLength: 0