概念
http協議(hypertext transfer protocol,超文字傳輸協議)是用於從www伺服器傳輸超文字到本地瀏覽器的傳輸協議。它可以使瀏覽器更加高效,使網路傳輸減少。它不僅保證計算機正確快速地傳輸超文字文件,還確定傳輸文件中的哪一部分,以及哪部分內容首先顯示(如文字先於圖形)等。
http是客戶端瀏覽器或其他程式與web伺服器之間的應用層通訊協議。 在internet上的web伺服器上存放的都是超文字資訊,客戶機需要通過http協議傳輸所要訪問的超文字資訊。http包含命令和傳輸資訊,不僅可用於web訪問,也可以用於其他網際網路/內聯網應用系統之間的通訊,從而實現各類應用資源超**訪問的整合。
我們在瀏覽器的位址列裡輸入的**位址叫做url (uniform resource locator,統一資源定位符)。就像每家每戶都有乙個門牌位址一樣,每個網頁也都有乙個internet位址。當你在瀏覽器的位址框中輸入乙個url或是單擊乙個超級鏈結時,url就確定了要瀏覽的位址。瀏覽器通過超文字傳輸協議(http),將web伺服器上站點的網頁**提取出來,並翻譯成漂亮的網頁。
http 協議基礎
● 永遠都是客戶端發起請求,伺服器回送響應 應用 http 協議時,必定是一端擔任客戶端角色,另一端擔任伺服器端角色。僅從一條通訊線路來說,伺服器端和客服端的角色是確定的。http 協議規定,請求從客戶端發出,最後伺服器端響應該請求並返回。換句話說,肯定是先從客戶端開始建立通訊的,伺服器端在沒有接收到請求之前不會傳送響應。
● 無狀態的協議 http 是一種無狀態協議。協議自身不對請求和響應之間的通訊狀態進行儲存。 也就是說在 http 這個級別,協議對於傳送過的請求或響應都不做持久化處理。這是為了更快地處理大量事務,確保協議的可伸縮性,而特意把 http 協議設計成如此簡單的。可是隨著 web 的不斷發展,我們的很多業務都需要對通訊狀態進行儲存。於是我們引入了 cookie 技術。有了 cookie 再用 http 協議通訊,就可以管理狀態了。
● cookie 管理狀態 cookie 技術通過在請求和響應報文中寫入 cookie 資訊來控制客戶端的狀態。 cookie 會根據從伺服器端傳送的響應報文內的乙個叫做 set-cookie 的首部字段資訊,通知客戶端儲存cookie。當下次客戶端再往該伺服器傳送請求時,客戶端會自動在請求報文中加入 cookie 值後傳送出去。伺服器端發現客戶端傳送過來的 cookie 後,會去檢查究竟是從哪乙個客戶端發來的連線請求,然後對比伺服器上的記錄,最後得到之前的狀態資訊。
● uri 定位資源 http 協議使用 uri 定位網際網路上的資源。正是因為 uri 的特定功能,在網際網路上任意位置的資源都能訪問到。
● 持久連線 http 協議的初始版本中,每進行乙個 http 通訊都要斷開一次 tcp 連線。比如使用瀏覽器瀏覽乙個包含多張的 html 頁面時,在傳送請求訪問 html 頁面資源的同時,也會請求該 html 頁面裡包含的其他資源。因此,每次的請求都會造成無畏的 tcp 連線建立和斷開,增加通訊量的開銷。 為了解決上述 tcp 連線的問題,http/1.1 和部分 http/1.0 想出了持久連線的方法。其特點是,只要任意一端沒有明確提出斷開連線,則保持 tcp 連線狀態。旨在建立一次 tcp 連線後進行多次請求和響應的互動。在 http/1.1 中,所有的連線預設都是持久連線。
● 管線化 持久連線使得多數請求以管線化方式傳送成為可能。以前傳送請求後需等待並接收到響應,才能傳送下乙個請求。管線化技術出現後,不用等待亦可傳送下乙個請求。這樣就能做到同時並行傳送多個請求,而不需要乙個接乙個地等待響應了。 比如,當請求乙個包含多張的 html 頁面時,與挨個連線相比,用持久連線可以讓請求更快結束。而管線化技術要比持久連線速度更快。請求數越多,時間差就越明顯。
http工作過程
localhost.com:
8080
/index.htm
協議名:http
主機名:localhost.com
埠:8080
物件路徑:/index.htm
複製**
複製**
在這一步,需要網域名稱系統dns解析網域名稱,得主機的ip位址。
● 2,封裝http請求資料報
把以上部分結合本機自己的資訊,封裝成乙個http請求資料報
● 3,封裝成tcp包,建立tcp連線(tcp的三次握手)
在http工作開始之前,客戶機(web瀏覽器)首先要通過網路與伺服器建立連線,該連線是通過tcp來完成的,該協議與ip協議共同構建internet,即著名的tcp/ip協議族,因此internet又被稱作是tcp/ip網路。http是比tcp更高層次的應用層協議,根據規則,只有低層協議建立之後才能,才能進行更層協議的連線,因此,首先要建立tcp連線,一般tcp連線的埠號是80。這裡是8080埠。
● 4,客戶端向伺服器傳送請求命令
建立tcp連線後,客戶機傳送乙個請求給伺服器,請求方式的格式為:統一資源識別符號(url)、協議版本號,後邊是mime資訊包括請求修飾符、客戶機資訊和可內容。
● 5,伺服器響應
伺服器接到請求後,給予相應的響應資訊,其格式為乙個狀態行,包括資訊的協議版本號、乙個成功或錯誤的**,後邊是mime資訊包括伺服器資訊、實體資訊和可能的內容。
實體訊息是伺服器向瀏覽器傳送頭資訊後,它會傳送乙個空白行來表示頭資訊的傳送到此為結束,接著,它就以content-type應答頭資訊所描述的格式傳送使用者所請求的實際資料.
● 6,伺服器關閉tcp連線
一般情況下,一旦伺服器向客戶端返回了請求資料,它就要關閉 tcp 連線,然後如果客戶端或者伺服器在其頭資訊加入了這行** connection:keep-alive ,tcp 連線在傳送後將仍然保持開啟狀態,於是,客戶端可以繼續通過相同的連線傳送請求。保持連線節省了為每個請求建立新連線所需的時間,還節約了網路頻寬。
http的請求方法
get
: 獲取url指定的資源;
post:傳輸實體資訊
put:上傳檔案
delete:刪除檔案
head:獲取報文首部,與get相比,不返回報文主體部分
options:詢問支援的方法
trace:追蹤請求的路徑;
connect:要求在與**伺服器通訊時建立隧道,使用隧道進行tcp通訊。主要使用ssl和tls將資料加密後通過網路隧道進行傳輸。
http狀態碼
菜鳥教程裡有完整的說明.
http缺點
● 通訊使用明文,容易被竊聽
● 不驗證通訊方的身份,可能遭遇偽裝
● 無法證明報文的完整性,有可能遭遇篡改
HTTP協議講解
一 http協議簡介 客戶端連上web伺服器後,弱項獲得web伺服器中的某個資源,需遵循一定的通訊格式,http協議用於定義客戶端與web端伺服器通訊的的格式。使用telnet程式連線web伺服器,並使用http協議獲取某個頁面,快速了解http協議的作用。安裝ie瀏覽器外掛程式httpwatch,...
HTTP協議講解
http超文字傳輸協議,是一種建立在tcp上的無狀態鏈結,整個基本的工作流程就是客戶端 瀏覽器 傳送乙個http請求給伺服器,說明客戶端想要訪問的資源和請求的動作,伺服器接收到請求以後,確認並根據請求作出相應的動作訪問伺服器資源,最後通過傳送http相應把結果返回給客戶端。其中乙個請求的開始到乙個響...
HTTP協議實體的基本講解
http協議運作方式 http協議是基於請求 響應正規化的。乙個客戶機與伺服器建立連線後,傳送乙個請求給伺服器,請求方式的格式為,統一資源識別符號 協議版本號,後邊是mime資訊包括請求修飾符 客戶機資訊和可能的內容。伺服器接到請求後,給予相應的響應資訊,其格式為乙個狀態行包括資訊的協議版本號 乙個...