1.乙個http請求的詳細過程
我們來看下當我們在瀏覽中輸入
,背後發生的一切。
首先http是乙個應用層的協議,因為雙方要通訊,所以事先約定乙個規範。
當我們輸入這樣的乙個請求,首先要建立socket連線,因為socket是通過ip位址和埠建立的,所以之前還有乙個dns解析過程。把 www.mycompany.com
變成ip,如果url裡不包含埠號,就是要該協議預設的埠號(80)。
dns的過程:
首先本地的機器上在配置網路時都會填寫dns,這樣本機就會把這個url發給這個配置的dns伺服器,如果能知道相應的url則返回ip,否則dns就繼續向該解析請求傳送給上級dns,整個dns可以看成是樹狀結構,該請求一直傳送到根直到得到結果。現在已經擁有ip和埠號,就可以開啟socket連線了。
連線建立成功後,開始向web伺服器傳送請求,這個請求一般是get或是post。get的格式是:get 路徑/檔名 http/1.0
檔名指出所訪問的檔案,http/1.0指出web瀏覽器使用的http版本。現在可以傳送get命令了:get /mydir/index.hrml http/1.0,
web伺服器收到這個請求,進行處理,從它的文件空間中搜尋子目錄mydir的檔案index.html。如果找到檔案,web伺服器就把該內容傳送給相應的web瀏覽器
為了告知瀏覽器,web伺服器首先會傳送一些http頭資訊,然後會傳送具體的內容(http體資訊),http頭資訊和http體資訊之間用乙個空行分開(\r\n)
常用的http頭資訊:
http 1.0 200 ok 這是web伺服器答應的第一行,列出伺服器的版本號和狀態碼
mime_version:1.0 它指示mime型別的版本
content_type:型別 這個頭資訊非常重要,它指示http體資訊的mime型別,如:
content_type:text/html指示傳送的資料是html文件
content_length:長度值 它指示http體資訊的長度(位元組)
當應答結束後,web瀏覽器與web伺服器必須斷開,以保證其他web瀏覽器能夠與web伺服器建立連線。
2.現在看資料報在網路中的序列過程
根據當前的需求和動作,結合應用層的協議,有我們確定傳送的資料內容,把這些資料放到乙個緩衝區內,然後形成了應用層的報文data
這些資料通過傳輸層傳送,比如tcp協議。所以它們會被送到傳輸層處理,在這裡報文打上了傳輸層的包頭,主要包含埠號以及tcp的各種制資訊。這樣就組成了報文段,簡稱段(segment)。tcp是端到端的協議,當傳送乙個資料段時,會開啟乙個計時器,若沒有及時收到乙個確認,那麼將重發這個報文段(超時重傳),若接收端接收到的段有錯誤,那麼則丟棄,希望發端重新傳送。
當資料段送到網路層,在網路層加上網路層的包頭,包頭內部含有源及目的端的ip位址,該層的資料傳送單位是資料報。網路層負責將這樣的資料報在網路上傳輸,如何穿過路由器,最終到達目的地。在這裡,是根據目的ip位址,就需要查詢下一跳路由的位址,首先是本機,要查詢本機的路由表,在windows上執行route print就可以看到當前路由表的內容。
整個查詢過程是這樣的:
鏈路層將mac位址及鏈路層控制資訊加到資料報裡,形成
frame,frame在鏈路層協議下,完成了相鄰的節點間的資料傳輸,完成連線建立,控制傳輸速度,資料完整。
下乙個目的地接受到資料後,從物理層得到資料然後經過逐層的解包 到 鏈路層 到 網路層,然後開始上述的處理,在經網路層 鏈路層 物理層將資料封裝好繼續傳往下乙個位址。
乙個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請求的詳細過程
我們來看當我們在瀏覽器輸入幕後所發生的一切。首先http是乙個應用層的協議,在這個層的協議,只是一種通訊規範,也就是因為雙方要進行通訊,大家要事先約定乙個規範。1.連線 當我們輸入這樣乙個請求時,首先要建立乙個socket連線,因為socket是通過ip和埠建立的,所以之前還有乙個dns解析過程,把...
請求乙個網頁的詳細過程
1 瀏覽器 瀏覽器輸入一段 例如 1 瀏覽器解析主機名,字串的擷取 www.sohu.com 解析過程是瀏覽器自己完成的 2 首先在本地查詢檔案hosts,3 注意 木馬攻擊,網域名稱重定向,修改hosts檔案,讓你訪問不到真正的網頁,有的瀏覽器會有提示 2 伺服器 伺服器接收到請求,進行解析 1 ...