1. 程式人生 > >HTTP(超文字傳輸協議)

HTTP(超文字傳輸協議)

1.http是一個基於TCP的無狀態協議(對事務處理沒有記憶能力)

2.http協議是一個無連結的協議,每次連結只處理一個請求。

3.http 1.1的keep alive機制:http1.1 預設持久連結

    Keep-Alive: timeout=5, max=100
    timeout:過期時間5秒(對應httpd.conf裡的引數是:KeepAliveTimeout),max是最多一百次請求,強制斷掉連線

    就是在timeout時間內又有新的連線過來,同時max會自動減1,直到為0,強制斷掉。

4.http keep alive和tcp keep alive

tcp keep alive:

    用途:socket連線的保活。在新建socket的時候,可以設定SO_KEEPALIVE 進行開啟。
 keepalive主要有三個引數:
     tcp_keepalive_time

: 一個連線需要TCP開始傳送keepalive探測資料包之前的空閒時間。以秒為單位
     tcp_keepalive_probes: 傳送TCP keepalive探測資料包的最大數量,預設是9.如果傳送9個keepalive探測包後對端仍然 沒有響應,便傳送RST關閉掉連線。

     tcp_keepalive_intvl: 傳送兩個TCP keepalive探測資料包的間隔時間,預設是75秒

http keep alive:

用途:http的長連線,在http 1.0中使用的為短連線:每一次請求均需要新建tcp連線,http協議資料的傳送接收,關閉tcp連線。 該種機制效能很 低,在http 1.1協議中引入了keepalive機制來保持tcp連線。

在http1.0中,全部是短連線,如果想建立長連線,需要在header裡面加上keepalive,這樣web伺服器看到這個欄位,不會立馬關閉連線。而是將tcp連線維持一段時間。如果需要關閉,則在header中寫 keepalive close,來告訴 客戶端需要關閉該連線。

在http1.1中,預設會實現keepalive,如果使用的是http1.1協議,header是不需要加上keepalive的。

5.http get和post的區別:

GET請求
GET /books/?sex=man&name=Professional HTTP/1.1
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Connection: Keep-Alive

注意最後一行是空行

POST請求
POST / HTTP/1.1
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 40
Connection: Keep-Alive

name=Professional%20Ajax&publisher=Wiley

1、GET提交,請求的資料會附在URL之後(就是把資料放置在HTTP協議頭中),以?分割URL和傳輸資料,多個引數用&連線;例 如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0 %E5%A5%BD。如果資料是英文字母/數字,原樣傳送,如果是空格,轉換為+,如果是中文/其他字元,則直接把字串用BASE64加密,得出如: %E4%BD%A0%E5%A5%BD,其中%XX中的XX為該符號以16進製表示的ASCII。

POST提交:把提交的資料放置在是HTTP包的包體中。上文示例中紅色字型標明的就是實際的傳輸資料

因此,GET提交的資料會在位址列中顯示出來,而POST提交,位址列不會改變

2、傳輸資料的大小:首先宣告:HTTP協議沒有對傳輸的資料大小進行限制,HTTP協議規範也沒有對URL長度進行限制。

而在實際開發中存在的限制主要有:

GET:特定瀏覽器和伺服器對URL長度有限制,例如 IE對URL長度的限制是2083位元組(2K+35)。對於其他瀏覽器,如Netscape、FireFox等,理論上沒有長度限制,其限制取決於操作系 統的支援。

因此對於GET提交時,傳輸資料就會受到URL長度的 限制。

POST:由於不是通過URL傳值,理論上資料不受 限。但實際各個WEB伺服器會規定對post提交資料大小進行限制,Apache、IIS6都有各自的配置。

3、安全性

POST的安全性要比GET的安全性高。比如:通過GET提交資料,使用者名稱和密碼將明文出現在URL上,因為(1)登入頁面有可能被瀏覽器快取;(2)其他人檢視瀏覽器的歷史紀錄,那麼別人就可以拿到你的賬號和密碼了,除此之外,使用GET提交資料還可能會造成Cross-site request forgery攻擊

4、Http get,post,soap協議都是在http上執行的

(1)get:請求引數是作為一個key/value對的序列(查詢字串)附加到URL上的
查詢字串的長度受到web瀏覽器和web伺服器的限制(如IE最多支援2048個字元),不適合傳輸大型資料集同時,它很不安全

(2)post:請求引數是在http標題的一個不同部分(名為entity body)傳輸的,這一部分用來傳輸表單資訊,因此必須將Content-type設定為:application/x-www-form- urlencoded。post設計用來支援web窗體上的使用者欄位,其引數也是作為key/value對傳輸。
但是:它不支援複雜資料型別,因為post沒有定義傳輸資料結構的語義和規則。

(3)soap:是http post的一個專用版本,遵循一種特殊的xml訊息格式
Content-type設定為: text/xml 任何資料都可以xml化。

Http協議定義了很多與伺服器互動的方法,最基本的有4種,分別是GET,POST,PUT,DELETE. 一個URL地址用於描述一個網路上的資源,而HTTP中的GET, POST, PUT, DELETE就對應著對這個資源的查,改,增,刪4個操作。 我們最常見的就是GET和POST了。GET一般用於獲取/查詢資源資訊,而POST一般用於更新資源資訊.

我們看看GET和POST的區別

    1. GET提交的資料會放在URL之後,以?分割URL和傳輸資料,引數之間以&相連,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的資料放在HTTP包的Body中.

    2. GET提交的資料大小有限制(因為瀏覽器對URL的長度有限制),而POST方法提交的資料沒有限制.

    3. GET方式需要使用Request.QueryString來取得變數的值,而POST方式通過Request.Form來獲取變數的值。

    4. GET方式提交資料,會帶來安全問題,比如一個登入頁面,通過GET方式提交資料時,使用者名稱和密碼將出現在URL上,如果頁面可以被快取或者其他人可以訪問這臺機器,就可以從歷史記錄獲得該使用者的賬號和密碼.



相關推薦

HTTP超文字傳輸協議-HyperText Transfer Protocol

     HTTP(超文字傳輸協議):一個基於請求與響應模式的、無效的、應用層的協議。常基於TCP的連線方式,絕大數的Web開發都是建立在HTTP 協議之上的Web應用。簡單明瞭就是一個基於應用層的通訊規範。   概念:    

HTTP超文字傳輸協議

1.http是一個基於TCP的無狀態協議(對事務處理沒有記憶能力)2.http協議是一個無連結的協議,每次連結只處理一個請求。3.http 1.1的keep alive機制:http1.1 預設持久連結    Keep-Alive: timeout=5, max=100   

HTTP協議超文字傳送協議

一、概念 HTTP–Hyper Text Transfer Protocol,超文字傳輸協議,是一種建立在TCP上的無狀態連線,整個基本的工作流程是客戶端傳送一個HTTP請求,說明客戶端想要訪問的資源和請求的動作,服務端收到請求之後,服務端開始處理請求,並根據

HTTP協議超文字傳送協議詳解

HTTP協議簡介   超文字傳送協議 (HTTP) 是一種通訊協議,它允許將超文字標記語言(HTML) 文件從 Web 伺服器傳送到 Web 瀏覽器。HTML 是一種用於建立文件的標記語言,這些文件包含到相關資訊的連結。您可以單擊一個連結來訪問其它文件、影象或多媒體物件,並獲得關於連結項的附加資訊。

HTTP協議超文字傳送協議詳解--超經典

HTTP協議簡介   超文字傳送協議 (HTTP) 是一種通訊協議,它允許將超文字標記語言(HTML) 文件從 Web 伺服器傳送到 Web 瀏覽器。HTML 是一種用於建立文件的標記語言,這些文件包含到相關資訊的連結。您可以單擊一個連結來訪問其它文件、影象或多媒體物件,並獲得關於連結項的附加資訊。

教你寫一個ftp協議檔案傳輸協議

一、FTP協議簡介 FTP 是File Transfer Protocol(檔案傳輸協議)的英文簡稱,而中文簡稱為“文傳協議”。用於Internet上的控制檔案的雙向傳輸。同時,它也是一個應用程式(Application)。基於不同的作業系統有不同的FTP應用

第9章 應用層4_超文字傳輸協議HTTP

5. 超文字傳輸協議HTTP 5.1 統一資源定位符URL (1)URL的一般形式:<協議>://<主機>:<埠>/<路徑>   ①協議後面必須寫上“://”,不能省略;   ②主機是指該主機在因特網上的域名或IP地址;   ③埠和

HTTP協議HyperText Transfer Protocol,超文本傳輸協議

plt 原始的 perl ica 建立連接 transfer https 內容類型 事務處理 HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是因特網上應用最為廣泛的一種網絡傳輸協議,所有的WWW文件都必須遵守這個標準。HTTP是一個基

git的傳輸協議及各自優缺點本地傳輸協議,ssh,http,git

協議 Git 可以使用四種主要的協議來傳輸資料:本地傳輸,SSH 協議,Git 協議和 HTTP 協議。下面分別介紹一下哪些情形應該使用(或避免使用)這些協議。 值得注意的是,除了 HTTP 協議外,其他所有協議都要求在伺服器端安裝並執行 Git。 本地協議 最基本的就是_

計算機網絡自頂向下方法——可靠數據傳輸原理1構造可靠數據傳輸協議

需要 足夠 方向 信息 不發送 可靠的 更多 定時器 基於 TCP向調用它的因特網應用提供所提供的服務模型 數據可以通過一條可靠的信道進行傳輸。借助於可靠的信道,傳輸比特就不會受到損壞或丟失,而且所有數據都是按其發送順序進行交付。 可靠傳輸協議 實現服務模型就需要可靠

解析HTTP(超文字傳輸協議)

HTTP 超文字傳輸協議為客戶端與伺服器端請求與應答的標準,是客戶端瀏覽器或其他程式與web伺服器之間的應用層通訊協議。 基於HTTP協議的資訊交換主要分為四個步驟:請求資訊、建立連線、傳送響應資訊、斷開連線。 HTTP為無狀態連線,可以通過cookies來解決無狀態問題,co

超文字傳輸協議http詳解

HTTP是一個屬於應用層的面向物件的協議,由於其簡捷、快速的方式,適用於分散式超媒體資訊系統。它於1990年提出,經過幾年的使用與發展,得到不斷地完善和擴充套件。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的規範化工作正在進行之中,而且HTTP-NG(Next Generation of

【轉載】超文字傳輸協議HTTP/1.1解釋

說明    本文件規定了網際網路社群的標準組協議,並需要討論和建議以便更加完善。請參考 “網際網路官方協議標準”(STD 1)來了解本協議的標準化狀態。本協議不限流傳發布。    Copyright (C) The Internet Society (1999).   All Rights Re

基於TCP的TFTPTrivial File Transfer Protocol,簡單檔案傳輸協議 的c程式設計實現

我們或許都聽到過,TFTP(Trivial File Transfer Protocol,簡單檔案傳輸協議)是TCP/IP協議族中的一個用來在客戶機與伺服器之間進行簡單檔案傳輸的協議,提供不復雜、開銷不大的檔案傳輸服務。 本文就簡單的敘述下tftp的小檔案傳輸功能以及客戶端

Apache超文字傳輸協議(http)

Apache的基本配置 首先使用yum命令安裝httpd服務 yum install httpd -y 然後關閉防火牆,開啟httpd服務 systemctl stop firewalld.service systemctl start h

RFC2616------超文字傳輸協議HTTP/1.1

說明 本文件規定了網際網路社群的標準組協議,並需要討論和建議以便更加完善。請參考 “網際網路官方協議標準”(STD 1)來了解本協議的標準化狀態。本協議不限流傳發布。 版權宣告 Copyright (C) The Internet Society (1999).

超文字傳輸協議-----HTTP

  超文字傳輸協議-HTTP(HTTP,HyperText Transfer Protocol)是因特網上應用最為廣泛的一種網路協議。所有的WWW檔案都必須遵守這個標準。設計HTTP最初的目的是為了提供一種釋出和接收HTML頁面的方法。  HTTP概述   HTTP的發

基於Unix Socket的可靠Node.js HTTP代理實現支援WebSocket協議

實現代理服務,最常見的便是代理伺服器代理相應的協議體請求源站,並將響應從源站轉發給客戶端。而在本文的場景中,代理服務及源服務採用相同技術棧(Node.js),源服務是由代理服務fork出的業務服務(如下圖),代理服務不僅負責請求反向代理及轉發規則設定,同時也負責業務服務伸縮擴容、日誌輸出與相關資源監控報警。下

Java遠端下載檔案到本地http協議和ssh2協議

  Java中java.io包為我們提供了輸入流和輸出流,對檔案的讀寫基本上都依賴於這些封裝好的關於流的類中來實現。前段時間遇到了以下兩種需求:   1、與某系統對接,每天獲取最新的圖片並顯示在前端頁面。該系統提供的是一個http協議的圖片URL,本來獲取到該系統的圖片地址以後在HTML中顯示就可以了,但是該

ServerSocketTCP/IP協議__Java

accep sock 成功 服務器 命令 dos ioe println inpu 服務器端   1 public static void main(String[] args) throws IOException { 2 System.o