標籤:bsp title urlencode hang 格式 img 串連 pos alt
在http協議使用情境上我們最熟悉的可能就是瀏覽器了,作為本系列第一篇,就講一個問題 ”瀏覽器怎麼串連上伺服器並擷取網頁內容的“ ;
首先 瀏覽器怎麼串連上伺服器的?
如果對OSI七層模型或者TCP/IP四層模型不熟悉可能會對接下來的內容有點懵,不著急,看這裡:
http://www.cnblogs.com/codeAB/p/6269419.html
假設你已經看過我寫的那篇文章了,接下來就聽我徐徐道來;
瀏覽器(以下稱 B)要擷取伺服器(以下稱 S)的內容(網頁),兩者必須通過互連網建立起串連,建立串連的必要要知道雙方的 ip地址;
B是怎麼擷取到 S的ip地址的呢? 就是使用者輸入的網域名稱,瀏覽器通過網域名稱解析到ip地址;
至於兩者怎麼建立串連的,看過我那篇文章也就知道了,這就不說了;
建立串連後,S會把B的請求交給本地綁定80連接埠(也可能是其他連接埠)的程式(比如這裡就是Apache)來處理這個請求;
既然你B要擷取S上的一個頁面,你在發送請求的時候就應該告訴S,然後S返回給你資料的時候也應該附帶一些資訊,比如頁面有多大,瀏覽器才知道接下來怎麼處理;
那麼想一下,B方想帶什麼資料就帶什麼資料,S方返回的資料也是按心情的,就會出現你發送的資料對方不認識,所以雙方就需要一個約定一個協議,http協議就誕生了;
現在無論是B方還是S方發送資料都必須遵守一個格式,這樣雙方就可以愉快的溝通了;
在瀏覽器中開啟部落格園,抓一下請求資訊來看一下有些啥;
先別興奮,這個地方看到的都是要求標頭資訊,並不是一個完整的HTTP請求,看看一個完整的請求長什麼樣;
1 POST /path/page.php HTTP/1.12 Host: www.xxxxx.com3 Content-Type:application/x-www/form-urlencoded4 Content-length:175 6 username=zhangsan
要求標頭包含三個部分,請求行。要求標頭資訊。請求主題資訊;
看上面代碼,第一行就是請求行,每一行以 /r/n結尾;
請求行包含三個部分, 請求方式(GET,POST,PUT,DELETE...) ,請求路徑 , 採用的協議/版本(http)
2~4為要求標頭,可以包含很多,第6行是請求主體資訊,要求標頭和請求主體要空一行
HTTP協議(一)