格式:html
http://host[:port][abs_path]瀏覽器
其中http表示要經過HTTP協議來定位網絡資源。服務器
host表示合法的Internet主機域名或IP地址(以點分十進制格式表示);網絡
port用於指定一個端口號,擁有被請求資源的服務器主機監聽該端口的TCP鏈接。jsp
若是port是空,則使用缺省的端口80。當服務器的端口不是80的時候,須要顯式指定端口號。工具
abs_path指定請求資源的URI(Uniform Resource Identifier,統一資源定位符),若是URL中沒有給出abs_path,那麼當它做爲請求URI時,必須以「/」的形式給出。一般這個工做瀏覽器就幫咱們完成了。post
瀏覽器與服務器鏈接的通常過程:測試
(以sohu網站爲例):網站
URI純粹是一個符號結構,用於指定構成Web資源的字符串的各個不一樣部分。spa
URL是一種特殊類型的URI,它包含了用於查找某個資源的足夠的信息。
其餘的URI,例如:mailto:zhanglong217@yahoo.com.cn,則不屬於URL,由於它裏面不存在根據該標識符來查找的任何數據。這種URI稱爲URN(通用資源名)。
客戶端經過發送HTTP請求向服務器請求對資源的訪問。
HTTP請求由三部分組成,分別是:請求行,消息報頭,請求正文。
請求行以一個方法符號開頭,後面跟着請求URI和協議的版本,以CRLF做爲結尾。
請求行以空格分隔。除了做爲結尾的CRLF外,不容許出現單獨的CR或LF字符,格式以下:
Method Request-URI HTTP-Version CRLF
Method表示請求的方法,Request-URI是一個統一資源標識符,標識了要請求的資源,HTTP-Version表示請求的HTTP協議版本,CRLF表示回車換行。
例如:
GET /test.html HTTP/1.1 (CRLF)
GET方法
GET方法用於獲取由Request-URI所標識的資源的信息,常見形式是:
GET Request-URI HTTP/1.1
當咱們經過在瀏覽器的地址欄中直接輸入網址的方式去訪問網頁的時候,瀏覽器採用的就是GET方法向服務器獲取資源。
POST方法
POST方法用於想服務器發送請求,這點和GET方法沒有區別。可是POST方法要求服務器接收附在請求後面的數據。
POST方法在表單提交的時候用的最多。
採用POST方法提交表單的例子
POST /login.jsp HTTP/1.1 (CRLF)
Accept: image/gif (CRLF) (…)
Host: www.sample.com (CRLF) (…)
…
Cache-Control: no-cache (CRLF)
(CRLF)
username=hello&password=123456
當咱們在HTML中提交表單時,瀏覽器會根據你的提交方法是get仍是post,採用相應的在HTTP協議中的GET或POST方法,向服務器發出請求。
注意,在HTML文檔中,書寫get和post,不區分大小寫,但HTTP協議中的GET和POST只能是大寫形式。
HEAD方法
HEAD方法與GET方法幾乎是同樣的,它們的區別在於HEAD方法只是請求消息報頭,而不是完整的內容。
對於HEAD請求的迴應部分來講,它的HTTP頭部中包含的信息與經過GET請求所獲得的信息是相同的。
利用這個方法,沒必要傳輸整個資源的內容,就能夠獲得Request-URI所標識的資源的信息。
這個方法一般用於測試超連接的有效性,是否能夠訪問,以及最近是否更新等。
在接收和解釋請求消息後,服務器會返回一個HTTP響應消息。
與HTTP請求相似,HTTP響應也是由三個部分組成,分別是:狀態行,消息報頭,相應正文。
狀態行由協議版本,數字形式的狀態代碼,相應的狀態描述組成,各元素之間以空格分隔,除告終尾的CRLF(回車換行)序列外,不容許出現CR或LF字符。格式以下:
HTTP-Version Status-Code Reason-Phrase CRLF
HTTP-Version表示服務器HTTP協議的版本,Status-Code表示服務器發回的響應代碼,Reason-Phrase表示狀態代碼的文本描述,CRLF表示回車換行。
例如:
HTTP/1.1 200 OK (CRLF)
狀態代碼由三位數字組成,表示請求是否被理解或被知足,狀態描述給出了關於狀態代碼的簡短文本描述。
狀態代碼的第一個數字定義了響應的類別,後面兩個數字沒有具體的分類。
第一個數字有五種可能的取值:
1xx:指示信息——表示請求已接收,繼續處理
2xx:成功——表示請求已經被成功接收,理解,接受
3xx:重定向——要完成請求必須進行更進一步的操做
4xx:客戶端錯誤——請求有語法錯誤或請求沒法實現
5xx:服務器端錯誤——服務器未能實現合法的請求
如:
狀態行由協議版本,數字形式的狀態代碼,相應的狀態描述組成,各元素之間以空格分隔,除告終尾的CRLF(回車換行)序列外,不容許出現CR或LF字符。格式以下:
HTTP-Version Status-Code Reason-Phrase CRLF
HTTP消息由客戶端到服務器的請求和服務器到客戶端的響應組成。
請求消息和響應消息都是由開始行,消息報頭(可選),空行(只有CRLF的行),消息正文(可選)組成。
對於請求消息,開始行就是請求行,對於相應消息,開始行就是狀態行。
實驗工具:Telnet
HTTP協議與TELNET協議都是基於TCP協議。