(1)http是應用層的協議,傳送請求之前要先通過socket建立tcp連線,socket是通過ip和埠號建立的,所以在建立連線前要通過dns協議把url轉換成對應的ip,客戶端先把這個
url發給本機配置的
dns伺服器,如果能夠找到相應的
url就返回
ip,否則
dns將繼續把解析請求傳送給上級
dns伺服器,請求會一直傳送到根
dns伺服器直到得到結果解析的ip。
(2)dns解析url得到ip位址後,通過tcp的三次握手,建立tcp連線,之後就可以傳送資料了。http請求包括請求行、請求頭、乙個空行、請求正文。請求行包括請求方式,url、http協議版本,請求方式分7種,get、post、head、put、delete、trace、options,常用的是get和post。url指定了要訪問的伺服器上的資源,http協議版本通常是1.1。
請求頭附加了瀏覽器的一些環境資訊,常見的有accept表明瀏覽器可以接受的資料型別、accept-language瀏覽器可以顯示的語言,user-agent瀏覽器使用的作業系統和瀏覽器的名稱和版本,connection: keep-alive一次請求完成後,再次訪問伺服器上的網頁,會繼續使用這條已經建立的tcp連線 ,host表示伺服器的網域名稱,還有cookie(將cookie傳送到伺服器)、content-length(請求正文的長度)、range請求的位元組範圍等。空行用於分隔請求頭和請求正文。請求正文中放入向伺服器傳送的資料,一般get方式的請求正文為空,post方式把資料放入請求正文裡。
(3)http報文加上頭資訊後傳到tcp傳輸層,tcp報文加上頭資訊後傳入ip層,通過ip位址可以找到目標主機,之後報文傳到網路介面層,網路介面層通過apr協議(位址解析協議),將ip位址轉換成硬體位址(mac位址、網絡卡位址),客戶機先會檢視自己的arp快取記憶體中是否有目標主機的mac位址記錄,如果客戶機的快取記憶體中有目標主機的記錄,就通過這個mac位址進行資料傳輸,否則會向區域網所有主機廣播乙個arp請求,尋找目標主機的mac位址。
(4)目標主機的網路介面層收到報文段後,通過rarp(逆位址解析協議)將硬體位址轉為ip位址,之後報文段從ip層經過tcp層再到應用層,會依次解封裝,從下到上傳遞,請求報文段最終到達目標主機應用層。目標主機處理完成後,會把
響應作為報文傳送到客戶機,過程和上述類似。http響應包括狀態行、響應頭、乙個空行、響應正文。狀態行包括http協議版本、響應狀態碼,狀態碼告訴瀏覽器,伺服器在收到請求後的執**況,是不是返回了預期的資源,常用的狀態碼有200 ok,表示請求被成功地完成,所請求的資源成功返回,
302 found
表示重定向,新的
url會在
response
中的location
中返回,瀏覽器將會使用新的
url發出新的請求,
304 not modified
表示請求的檔案原來已經快取,並且沒有改變,可以繼續使用原來的檔案,
404 not found
表示請求的資源不存在(
url輸錯了)。響應正文。響應頭中包括了伺服器的一些配置環境資訊以及返回資源的一些屬性資訊,
date
表示生成訊息的具體時間和日期,
server
表示伺服器的版本和型號,
expires
表示檔案什麼時候過期,過期之後重新從伺服器獲取,更新快取,
last-modified
表示資源的最後修改日期,
location
用於重定向乙個新的位置,包含新的
url位址。響應正文就是伺服器返回的
html
文件,瀏覽器解析後,可以顯示出來。
(5) 伺服器返回資料後,分情況是否關閉tcp連線,如果瀏覽器或伺服器頭資訊包括了connection:keep-alive,伺服器返回資料後,tcp仍然保持連線,瀏覽器可以繼續傳送請求,節省建立連線的時間。
乙個HTTP請求詳細過程
http協議版本 請求頭部 空行 請求資料 完整的乙個請求報文 post index.php http 1.1 請求行 host localhost user agent mozilla 5.0 windows nt 5.1 rv 10.0.2 gecko 20100101 firefox 10.0...
乙個HTTP請求的詳細過程
1.乙個http請求的詳細過程 我們來看下當我們在瀏覽中輸入 背後發生的一切。首先http是乙個應用層的協議,因為雙方要通訊,所以事先約定乙個規範。當我們輸入這樣的乙個請求,首先要建立socket連線,因為socket是通過ip位址和埠建立的,所以之前還有乙個dns解析過程。把 www.mycomp...
乙個http請求的詳細過程
我們來看當我們在瀏覽器輸入幕後所發生的一切。首先http是乙個應用層的協議,在這個層的協議,只是一種通訊規範,也就是因為雙方要進行通訊,大家要事先約定乙個規範。1.連線 當我們輸入這樣乙個請求時,首先要建立乙個socket連線,因為socket是通過ip和埠建立的,所以之前還有乙個dns解析過程,把...