當你在Web瀏覽器中輸入一個URL,發生了什麼?

當你在Web瀏覽器中輸入一個URL,發生了什麼?

分爲8步來回答:
1、瀏覽器(客戶端)進行地址解析。

2、將解析出的域名進行dns解析。

3、通過ip尋址和arp,找到目標(服務器)地址。

4、進行tcp三次握手,建立tcp連接。

5、瀏覽器發送數據,等待服務器響應。

6、服務器處理請求,並對請求做出響應。

7、瀏覽器收到服務器響應,得到html代碼。

8、渲染頁面。

應用層

DNS協議
•同一臺主機上運行着DNS應用的客戶端
•瀏覽器從URL中抽取出主機名,將主機名傳遞給DNS應用的客戶端
•DNS客戶向DNS服務器發送一個包含主機名的請求
•DNS客戶最終收到一份回答報文,其中含有主機名的ip地址
•收到ip地址後向位於該IP地址80端口的HTTP服務器進程發起一個TCP連接

HTTP協議
HTTP協議由兩個程序實現:一個是客戶端程序和一是服務端程序,運行在不同的端系統中,通過HTTP報文進行會話。HTTP定義了Web客戶向Web服務器請求Web頁面的方式,Web頁面是存放在Web服務器中的,Web頁面包含有一個HTML基本文件以及幾個引用對象,流行的Web服務器有Apache。HTTP使用TCP作爲它的支撐運輸協議。

傳輸層
TCP協議

在因特網協議族(Internet protocol suite)四層協議中,TCP層是位於IP層之上,應用層之下的傳輸層。不同主機的應用層之間經常需要可靠的、像管道一樣的連接,但是IP層不提供這樣的流機制,而是提供不可靠的包交換。

應用層向TCP層發送用於網間傳輸的、用8位字節表示的數據流,然後TCP把數據流分割成適當長度的報文段(通常受該計算機連接的網絡的數據鏈路層的最大傳送單元(MTU)的限制)。之後TCP把結果包傳給IP層,由它來通過網絡將包傳送給接收端實體的TCP層。TCP爲了保證不發生丟包,就給每個字節一個序號,同時序號也保證了傳送到接收端實體的包的按序接收。然後接收端實體對已成功收到的字節發回一個相應的確認(ACK);如果發送端實體在合理的往返時延(RTT)內未收到確認,那麼對應的數據(假設丟失了)將會被重傳。TCP用一個校驗和函數來檢驗數據是否有錯誤;在發送和接收時都要計算和校驗。

首先,TCP建立連接之後,通信雙方都同時可以進行數據的傳輸,其次,它是全雙工的;在保證可靠性上,採用超時重傳和捎帶確認機制。

在流量控制上,採用滑動窗口協議,協議中規定,對於窗口內未經確認的分組需要重傳。

在擁塞控制上,採用廣受好評的TCP擁塞控制算法(也稱AIMD算法),該算法主要包括三個主要部分:1,加性增、乘性減;2,慢啓動;3,對超時事件做出反應。

TCP協議通過三個報文段完成連接的建立,這個過程稱爲三次握手(three-wayhandshake),過程如下圖所示。
三次握手

連接終止
建立一個連接需要三次握手,而終止一個連接要經過四次握手,這是由TCP的半關閉(half-close)造成的。具體過程如下圖所示。

四次放手

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