HTTP協議知識要點

超文本傳輸協議(HTTP,HyperTextTransferProtocol)是互聯網上應用最爲廣泛的一種網絡協議。所有的WWW文件都必須遵守這個標準。設計HTTP最初的目的是爲了提供一種發佈和接收HTML頁面的方法。1960年美國人TedNelson構思了一種通過計算機處理文本信息的方法,並稱之爲超文本(hypertext),這成爲了HTTP超文本傳輸協議標準架構的發展根基。TedNelson組織協調萬維網協會(WorldWideWebConsortium)和互聯網工程工作小組(InternetEngineeringTaskForce)共同合作研究,最終發佈了一系列的RFC,其中著名的RFC2616定義了HTTP1.1。

基礎知識

  協議就是互聯網中的設備(交換機,路由器,防火牆)等,進行相互通訊的規則。規則規定了發送的數據格式,以及每格式所代表的意義。

  HyperTextTransformationProtocol超文件傳輸協議,主要用於web

  HTTP就互聯網中客戶端瀏覽器與web服務器進行相互通訊規則。

  http協議的特點:

  1、支持客戶端與服務器模式。

  2、簡單快捷,客戶端向服務器端發起請求時,只需要指定請求的方式與所請的文件即可。

  3、方便靈活,服務器向客戶端返回數據時,可以使用content-type來設置,即將傳遞數據的格式。

  4、無連接,當服務器處理完一個請求後,就會斷開連接。

  5、無狀態,服務器無法識別,當前的請求與上一次的請求是否同自同一個客戶端。所以產生了cookie會話技術,來保存客戶端的狀態。

  6、web服務器是被動的,客戶端是主動的。

  協議功能

  HTTP協議(HyperTextTransferProtocol,超文本傳輸協議)是用於從WWW服務器傳輸超文本到本地瀏覽器的傳輸協議。它可以使瀏覽器更加高效,使網絡傳輸減少。它不僅保證計算機正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪部分內容首先顯示(如文本先於圖形)等。

  HTTP是客戶端瀏覽器或其他程序與Web服務器之間的應用層通信協議。在Internet上的Web服務器上存放的都是超文本信息,客戶機需要通過HTTP協議傳輸所要訪問的超文本信息。HTTP包含命令和傳輸信息,不僅可用於Web訪問,也可以用於其他因特網/內聯網應用系統之間的通信,從而實現各類應用資源超媒體訪問的集成。

  http協議的組成

  http協議是客戶端瀏覽器與web服務器進行相互通信的規則。http協議彩的是一種請求與響應的模式。首先由客戶端發請起請求,服務器端處理完成請求後進行響應。

  所以http協議由請求與響應組成:

  HTTP之URL

  URL(UniformResourceLoacation統一資源定位)是URI(UniformResourceIdentifier統一資源標識)的子集

  URL的形式如:

  http://host【:port】/【path】

  http表示http協議,指示瀏覽器通過網絡找到相應的主機

  port表示端口號,默認是80,可以不寫

  path表示所請求的文件的路徑,如果省略,必須以'/'結束,如果不寫瀏覽會自動添加'/'

  HTTP之請求

HTTP協議知識要點_超文件傳輸協議_互聯網技術_網絡工程師_課課家教育

  請求頭:

  請求方式包含get或post

  URI請求的文件(包含路徑與文件名)

  /20151219/code/01demo_http.php

  協議及版本號http/1.1

  協議報頭

  協議頭分三種:請求報頭、響應報頭、普通報頭(即不屬於請求報頭也不屬於響應報頭)

  協議報頭的格式:不區分大小寫

  報頭名+":"+空格+值例如host:localhost

  請求報頭:

  host:表示所請求的主機localhost

  user-agent:會將瀏覽器的相關信息傳遞給服務器

  accept:接收的數據的類型,

  text/html表示,text文本數據html:超文本application表示二進制數據

  accept-language:表示所接收的語言zh-cn表示簡體中文zh表示中文

  accept-encoding:表示所接收的壓縮格式

  connection:表示保持連接(請求發出之後,在沒有得到響應時,告訴服務器不要關閉此連接)

  last-modified-since:瀏覽器會緩存之前訪問過的網站的資源文件,通過此報頭來詢問服務器此文件是否被修改過。

  referer:表示本次請求來自哪個url。

  content-length:表示請求的數據的長度,只有post請求方式纔有

  authorization:表示認證

  空行

  就表示請求的報頭結束,其後是請求的數據,只有post方式空行纔有數據

  HTTP之響應

FTTP之響應   

  狀態行

  協議及版本號http/1.1

  狀態碼及狀態信息200ok

  1xx表示接收正在處理

  2xx處理的結果

  200處理成功

  3xx需重定向或讀取緩存等

  304沒有修改,讀取自己的緩存

  4xx客戶端的錯誤

  404找不到請求的文件

  5xx服務器的錯誤

  響應報頭

  Date時間

  Server服務器環境

  Content-length返回的數據的長度

  Content-type返回的數據的類型

  Last-modified最後修改時間

  Content-language:響應的數據的語言

  Content-enconding:響應的數據的壓縮格式

  content-charset:響應的數據的字段編碼

  空行

  響應報頭結束,其後的是數據

  Telnet模擬get請求

  http協議是一種客戶端服務器模式,所以只能夠訪問web服務器的軟件都是http協議的客戶端。

  telnet的運行是cmd窗口,但是win7以上默認沒有開啓telnet軟件。

  開啓:

  控制面板==>程序==>啓用或關閉window功能

       http協議是一種客戶端服務器模式,所以只能夠訪問web服務器的軟件都是http協議的客戶端。

  第1步:連接服務器

  telnet主機名端口號

http協議是一種客戶端服務器模式,所以只能夠訪問web服務器的軟件都是http協議的客戶端。

  回車

  默認telnet沒有開啓回顯功能(顯示用戶輸入的內容)

  開啓回顯

  ctrl+]

默認telnet沒有開啓回顯功能(顯示用戶輸入的內容)

  再回車

  第2步:構造http協議

  構造http請求頭

  get/URIhttp/1.1

  示例:

默認telnet沒有開啓回顯功能(顯示用戶輸入的內容)

  構造http報頭

fsockopen(主機名,端口號,錯誤代碼,錯誤信息,超時時間);    此函數會返回一個,資源類型的,指向web服務器的連接。

  構造http空行,併發送請求頭

  回車

  示例:

fsockopen(主機名,端口號,錯誤代碼,錯誤信息,超時時間);    此函數會返回一個,資源類型的,指向web服務器的連接。

  PHP模擬get請求

  第1步:連接web服務器

  fsockopen(主機名,端口號,錯誤代碼,錯誤信息,超時時間);

  此函數會返回一個,資源類型的,指向web服務器的連接。

fsockopen(主機名,端口號,錯誤代碼,錯誤信息,超時時間);    此函數會返回一個,資源類型的,指向web服務器的連接。

  第2步:構造請求頭

fsockopen(主機名,端口號,錯誤代碼,錯誤信息,超時時間);    此函數會返回一個,資源類型的,指向web服務器的連接。

  第3步:發送請求頭

在使用Post方式提交數據時,在http協議中會以下兩請求報頭    content-type:application/x-www-form-urlencoded

  第4步:接收數據

在使用Post方式提交數據時,在http協議中會以下兩請求報頭    content-type:application/x-www-form-urlencoded

  完整示例:

在使用Post方式提交數據時,在http協議中會以下兩請求報頭    content-type:application/x-www-form-urlencoded

  PHP模擬POST請求

  在使用Post方式提交數據時,在http協議中會以下兩請求報頭

  content-type:application/x-www-form-urlencoded

  content-length:長度

  第1步:

PHP模擬HTTP協議響應   

  第2步:

  header();用於向http協議的響應頭部寫信息

  第3步:

PHP模擬HTTP協議響應    header();用於向http協議的響應頭部寫信息

  第4步:

PHP模擬HTTP協議響應    header();用於向http協議的響應頭部寫信息

  PHP模擬HTTP協議響應

  header();用於向http協議的響應頭部寫信息

  刷新並跳轉:

  header("refresh:秒數;url=網址");

  示例:

PHP模擬HTTP協議響應    header();用於向http協議的響應頭部寫信息    刷新並跳轉:

  header("location:url");

  圖片顯示:

PHP模擬HTTP協議響應    header();用於向http協議的響應頭部寫信息    刷新並跳轉:

  下載:

  //告訴瀏覽器以下的數據不需顯示

  header('content-type:application/octet-stream');

  //告訴瀏覽器以下的數據作爲附件下載

  header('content-disposition:attachment;filename=horse.jpg');

  發送數據

  echofile_get_contents('文件名');

  示例:

PHP模擬HTTP協議響應    header();用於向http協議的響應頭部寫信息    刷新並跳轉:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章