- 在瀏覽器中輸入url
用戶輸入url抡医,例如http://www.baidu.com。其中http為協(xié)議早敬,www.baidu.com為網(wǎng)絡(luò)地址忌傻,及指出需要的資源在那臺計算機上大脉。一般網(wǎng)絡(luò)地址可以為域名或IP地址,此處為域名水孩。使用域名是為了方便記憶镰矿,但是為了讓計算機理解這個地址還需要把它解析為IP地址。
2.應用層DNS解析域名
客戶端先檢查本地是否有對應的IP地址俘种,若找到則返回響應的IP地址秤标。若沒找到則請求上級DNS服務器,直至找到或到根節(jié)點宙刘。
3.應用層客戶端發(fā)送HTTP請求
HTTP請求包括請求報頭和請求主體兩個部分抛杨,其中請求報頭包含了至關(guān)重要的信息,包括請求的方法(GET / POST)荐类、目標url、遵循的協(xié)議(http / https / ftp…)茁帽,返回的信息是否需要緩存玉罐,以及客戶端是否發(fā)送cookie等。
4.傳輸層TCP傳輸報文
位于傳輸層的TCP協(xié)議為傳輸報文提供可靠的字節(jié)流服務潘拨。它為了方便傳輸吊输,將大塊的數(shù)據(jù)分割成以報文段為單位的數(shù)據(jù)包進行管理,并為它們編號铁追,方便服務器接收時能準確地還原報文信息季蚂。TCP協(xié)議通過“三次握手”等方法保證傳輸?shù)陌踩煽俊?/p>
“三次握手”的過程是,發(fā)送端先發(fā)送一個帶有SYN(synchronize)標志的數(shù)據(jù)包給接收端琅束,在一定的延遲時間內(nèi)等待接收的回復扭屁。接收端收到數(shù)據(jù)包后,傳回一個帶有SYN/ACK標志的數(shù)據(jù)包以示傳達確認信息涩禀。接收方收到后再發(fā)送一個帶有ACK標志的數(shù)據(jù)包給接收端以示握手成功料滥。在這個過程中,如果發(fā)送端在規(guī)定延遲時間內(nèi)沒有收到回復則默認接收方?jīng)]有收到請求艾船,而再次發(fā)送葵腹,直到收到回復為止。
5.網(wǎng)絡(luò)層IP協(xié)議查詢MAC地址
IP協(xié)議的作用是把TCP分割好的各種數(shù)據(jù)包傳送給接收方屿岂。而要保證確實能傳到接收方還需要接收方的MAC地址践宴,也就是物理地址。IP地址和MAC地址是一一對應的關(guān)系爷怀,一個網(wǎng)絡(luò)設(shè)備的IP地址可以更換阻肩,但是MAC地址一般是固定不變的。ARP協(xié)議可以將IP地址解析成對應的MAC地址霉撵。當通信的雙方不在同一個局域網(wǎng)時磺浙,需要多次中轉(zhuǎn)才能到達最終的目標洪囤,在中轉(zhuǎn)的過程中需要通過下一個中轉(zhuǎn)站的MAC地址來搜索下一個中轉(zhuǎn)目標。
6.數(shù)據(jù)到達數(shù)據(jù)鏈路層
在找到對方的MAC地址后撕氧,就將數(shù)據(jù)發(fā)送到數(shù)據(jù)鏈路層傳輸瘤缩。這時,客戶端發(fā)送請求的階段結(jié)束
7.服務器接收數(shù)據(jù)
接收端的服務器在鏈路層接收到數(shù)據(jù)包伦泥,再層層向上直到應用層剥啤。這過程中包括在運輸層通過TCP協(xié)議講分段的數(shù)據(jù)包重新組成原來的HTTP請求報文。
8.服務器響應請求
服務接收到客戶端發(fā)送的HTTP請求后不脯,查找客戶端請求的資源府怯,并返回響應報文,響應報文中包括一個重要的信息——狀態(tài)碼防楷。狀態(tài)碼由三位數(shù)字組成牺丙,其中比較常見的是200 OK表示請求成功。301表示永久重定向复局,即請求的資源已經(jīng)永久轉(zhuǎn)移到新的位置冲簿。在返回301狀態(tài)碼的同時,響應報文也會附帶重定向的url亿昏,客戶端接收到后將http請求的url做相應的改變再重新發(fā)送峦剔。404 not found 表示客戶端請求的資源找不到。
- 服務器返回相應文件
請求成功后角钩,服務器會返回相應的HTML文件吝沫。接下來就到了頁面的渲染階段了。