http協議(三)幾種數據傳輸方式


 

說說http協議的一些特點:

1)無狀態

http協議是一種自身不對請求和響應之間的通信狀態進行保存的協議,即無狀態協議。

這種設置的好處是:更快的處理更多的請求事務,確保協議的可伸縮性

不過隨着web的不斷發展,有時候,需要將這種狀態進行保持,隨即,就引入了cookie技術,cookie技術通過在請求和響應報文中寫入cookie信息來控制客戶端的狀態。

有關cookie的內容后面我們再說。。。

2)持久性

正常在發送http時,都需要建立TCP的連接,再發送報文。

 

如果每次想要發送http報文都需要經過這個過程,那么時間大部分都會消耗在建立和斷開連接的過程中。

因此http中使用了connection屬性,用於指定連接的方式。

當設置成keep-alive,http就會建立一條持久化的連接,不需要每次都建立連接,再中斷。

這樣做的好處是:減輕了服務器端的負載,減少開銷的那部分時間,使http請求和響應都能更快的結束,相應的,web頁面顯示速度也就相對提升了。

3)管線化

如果一個http請求,請求了大量的圖片等大文件,那么其他的http請求怎么辦呢?

現在,管線化技術的出現,使得http請求比持久性連接更要快;特點在於:請求數越多,時間差越明顯。

4)內容編碼

由於某些報文的內容過大,因此在傳輸時,為了減少傳輸的時間,會采取一些壓縮的措施。

例如上面的報文信息中,Accept-Encoding就定義了內容編碼的格式:gzip

有下面幾種方式:

gzip:GNU壓縮格式

compress:UNIX系統的標准壓縮格式

deflate:是一種同時使用了LZ77和哈弗曼編碼的無損壓縮格式

identity:不進行壓縮

5)多部分對象集合

有的時候傳輸的內容,不僅僅是一些字符串,還有可能是一些圖片,字符,音樂二進制等混雜的內容。

這就需要使用多部分對象集合,multipart,例如在使用java編寫web上傳文件的代碼時,需要在form中指定form的編碼格式。

設置form的enctype屬性的值為multipart/form-data。

這是因為默認的情況下form使用的編碼格式是:applicatin/x-www-form-urlencoded,這種編碼格式會把所有的內容進行編碼,不適合上傳文件這種情況。

這兩種編碼格式的區別主要是:

multipart/form-data 會以控件為基准,編碼form中的內容。

application/x-www-form-urlencoded 會把form中的內容編碼成鍵值對的形式。

6)范圍請求

有些場景下,http報文請求一些很大的圖片,但是加載過程很慢。

比如我們登錄一些大圖片的網址,會發現有時候圖片是一塊一塊加載的。

這就是因為設置了http請求的長度,這樣就可以分塊的加載資源文件。

在請求報文中使用Range屬性,在響應報文中使用Content-Type屬性都可以指定一定字節范圍的http請求。

 

接下來,說說幾種http協議的數據傳輸方式

http協議的傳輸方式有很多種,處於安全考慮,常用的一般都是GET和POST兩種,先來介紹下這兩種

1)GET:獲取資源

GET方法用來請求訪問已被URL識別的資源

2)POST:傳輸實體主體

POST方法用來請求服務器傳輸信息實體的主體

GET和POST的區別:

首先,使用目標不同:GET方法只是用來查詢,不會對瀏覽器上的信息產生影響,每次GET的方法都是相同的

其次,大小不同:GET是放在URL首部,因此大小隨着瀏覽器而定,而POST則是在報文中,只要沒有具體限制,文件的大小是沒限制的

然后,安全性不同:GET采用的是明文傳輸,而POST是放在報文內部,無法看到

從使用場景的角度來說,一般像用戶注冊登錄這種信息都是私密的,采用POST,而針對查詢等,為了快速,大多采用GET傳輸。

(關於關於GET和POST的區別,最近重新看了很多別人寫的博客啊資料什么的,發現上面的解釋比較模糊,我就在下面的評論區里面將區別清晰的描述一下,當然,后面的博客也會詳細的解釋)

 

接下來介紹其他幾種數據傳輸方式:

3)PUT:傳輸文件

PUT要求在請求報文的主體中包含文件內容,然后保存到請求URL指定的位置

處於安全考慮,一般web網站不使用此方法,若配合web的安全驗證機制,或者架構采用REST標准的網站,就可能開放使用此方法

4)HEAD:獲得報文首部

HEAD和GET方法一樣,只不過不返回報文主體部分,用於確認URI的有效性及資源更新的日期時間等

5)DELETE:刪除文件

DELETE是與PUT相反的方法,是按請求URI刪除指定的資源

處於安全考慮,一般web網站不使用此方法,若配合web的安全驗證機制,或者架構采用REST標准的網站,就可能開放使用此方法

6)OPTIONS:詢問支持的方法

用來查詢針對請求URI指定的資源支持的方法

7)TRACE:追蹤路徑

是讓web服務器端將之前的請求通信還回給客戶端的方法

發送請求時,在Max-Frowards首部字段中填入數值,每經過一個服務器端就-1,當數值為0時,停止傳輸,最后收到服務器返回狀態碼200 OK的響應

但是,這種方法基本很少使用,而且很容易引起XST(跨站追蹤)攻擊,就更不會用到了。

8)CONNECT:要求采用隧道協議連接代理

該方法要求在於代理服務器通信時建立隧道,實現用隧道協議進行TCP通信,主要使用SSL(安全套接層)和TLS(傳輸層安全)協議把通信內容加密后經過網絡傳輸。

 

最后,附上一張http1.1和http1.0版本各自支持的方法,另外,注意用大寫。。。。。。

其中,LINK和UNLINK已被HTTP1.1廢棄,不再支持!

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM