在華中科技大學(xué)校園網(wǎng)下,在IE輸入www.taobao.com之后的過程詳解
1.本地過程
- 若DNS緩存中沒有相關(guān)數(shù)據(jù),則IE瀏覽器先向DNS服務(wù)器發(fā)出DNS請求;
DNS:域名系統(tǒng),有DNS的地方就有緩存,作為域名和IP地址相互隱射的一個(gè)分布式數(shù)據(jù)庫,能使用戶方便訪問互聯(lián)網(wǎng)而不用直接讀取IP數(shù)串
這一過程的目的是獲取www.taobao.com這個(gè)域名所對應(yīng)IP地址;
瀏覽器向本機(jī)DNS模塊發(fā)出DNS請求,DNS模塊生成相關(guān)的DNS報(bào)文
DNS模塊將生成的DNS報(bào)告?zhèn)鬟f給傳輸層中的UDP協(xié)議單元
user datagram protocol是開放式系統(tǒng)互聯(lián)模型中一種無連接的傳輸層協(xié)議,全稱是用戶數(shù)據(jù)報(bào)協(xié)議,同熟知的TCP傳輸控制協(xié)議一樣,UDP協(xié)議直接位于網(wǎng)際協(xié)議IP協(xié)議的頂層,提供向失誤的簡單不可靠信息傳送服務(wù)
- UDP協(xié)議單元將該數(shù)據(jù)封裝成IP數(shù)據(jù)包,傳遞給網(wǎng)絡(luò)層的IP協(xié)議單元
IP協(xié)議定義在網(wǎng)絡(luò)層,是為了計(jì)算機(jī)網(wǎng)絡(luò)相互鏈接進(jìn)行通信而設(shè)計(jì)的協(xié)議,規(guī)定了在網(wǎng)絡(luò)上進(jìn)行通信時(shí)遵守的規(guī)則,例如IP數(shù)據(jù)包組成,路由器如何將IP數(shù)據(jù)包發(fā)送到目的主機(jī)等
IP協(xié)議單元將該數(shù)據(jù)封裝成IP數(shù)據(jù)包,其中的IP地址為DNS服務(wù)器的IP地址
封裝好的IP數(shù)據(jù)包將傳遞給數(shù)據(jù)鏈路層的協(xié)議單元進(jìn)行發(fā)送
發(fā)送時(shí)如果ARP緩存中沒有相關(guān)數(shù)據(jù),則發(fā)送ARP廣播請求,等待ARP回復(fù)
ARP緩存表每臺主機(jī)中都有著一張ARP表,記錄著主機(jī)的IP地址和MAC地址的對應(yīng)關(guān)系,ARP協(xié)議是工作在網(wǎng)絡(luò)層的協(xié)議,它負(fù)責(zé)將IP地址解析為MAC地址
- 得到ARP回復(fù)以后,將IP地址和路由下一條MAC地址對應(yīng)的信息寫入APR緩存表
MAC地址表:交換機(jī)根據(jù)MAC地址表轉(zhuǎn)發(fā)數(shù)據(jù)幀,在交換級中有一張記錄著局域網(wǎng)主機(jī)MAC地址與交換機(jī)接口對應(yīng)關(guān)系的表,交換機(jī)根據(jù)這張表負(fù)責(zé)將數(shù)據(jù)幀傳輸?shù)街付ǖ闹鳈C(jī)上
寫入緩存以后,以路由下一跳地址填充目的MAC地址,并以數(shù)據(jù)幀形式轉(zhuǎn)發(fā)
這個(gè)轉(zhuǎn)發(fā)過程可能會進(jìn)行多次,這取決于DNS服務(wù)器在校園網(wǎng)中的位置
DNS請求被發(fā)送到DNS服務(wù)器的數(shù)據(jù)鏈路層協(xié)議單元
數(shù)據(jù)庫鏈路層介于物理層和網(wǎng)絡(luò)層中間,將源于網(wǎng)絡(luò)層的數(shù)據(jù)可靠的傳輸?shù)较噜徆?jié)點(diǎn)的目標(biāo)機(jī)網(wǎng)絡(luò)層
DNS服務(wù)器的數(shù)據(jù)庫鏈路層協(xié)議單元解析收到的數(shù)據(jù)幀,將其內(nèi)部所含有 的IP數(shù)據(jù)包傳遞給網(wǎng)絡(luò)層IP協(xié)議單元
DNS服務(wù)器的IP協(xié)議單元解析收到的數(shù)據(jù)包,將其內(nèi)部所含有的UDP數(shù)據(jù)傳遞給傳輸層中的UDP協(xié)議單元
DNS服務(wù)器中的UDP協(xié)議單元解析收到的UDP數(shù)據(jù)包,將其內(nèi)部的DNS報(bào)文傳遞給該服務(wù)器上的DNS服務(wù)單元
DNS服務(wù)單元收到DNS請求,將域名解析為對應(yīng)的IP地址,產(chǎn)生DNS回應(yīng)報(bào)文
所有應(yīng)用層報(bào)文必須通過傳輸層/網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層.因此在以下的敘述中,我將簡化這一過程的敘述,簡化形式如下
單箭頭表示為本機(jī)內(nèi)部傳遞,雙箭頭為網(wǎng)絡(luò)上的發(fā)送DNS回應(yīng)報(bào)文→UDP→IP→MAC→→請求域名解析的主機(jī);
請求域名解析的主機(jī)手打數(shù)據(jù)幀,該數(shù)據(jù)幀→IP→UDP→DNS→IE瀏覽器
將域名解析的結(jié)果以域名和IP地址對應(yīng)的形式寫入DNS緩存表
2.IE瀏覽器與www.taobao.com建立TCP連接:TCP建立連接的三次握手
IE瀏覽器向www.taobao.com發(fā)出TCP連接請求報(bào)文
該請求TCP報(bào)文中的SYN標(biāo)志位被設(shè)置為1,表示連接請求;該TCP請求報(bào)文→IP(DNS)→MAC(ARP)→→校園網(wǎng)關(guān)→→www.taobao.com主機(jī);
該TCP請求報(bào)文經(jīng)過IP層時(shí),填入的目的IP地址就是上面DNS過程獲得的IP地址;
經(jīng)過數(shù)據(jù)鏈路層時(shí),若MAC地址不明,還要進(jìn)行上面所敘述的ARP過程;
www.taobao.com收到的數(shù)據(jù)幀→IP→TCP,TCP協(xié)議單元會回應(yīng)請求應(yīng)答報(bào)文;
該請求應(yīng)答TCP報(bào)文中的SYN和ACK標(biāo)志位均被設(shè)置為1,表示連接請求應(yīng)答;
該TCP請求應(yīng)答報(bào)文→IP→MAC(ARP)→→校園網(wǎng)關(guān)→→請求主機(jī);
請求主機(jī)收到數(shù)據(jù)幀→IP→TCP,TCP協(xié)議單元會回應(yīng)請求確認(rèn)報(bào)文;
該請求應(yīng)答TCP報(bào)文中的ACK標(biāo)志位被設(shè)置為1,表示連接請求確認(rèn);
該TCP請求確認(rèn)報(bào)文→IP→MAC(ARP)→→校園網(wǎng)關(guān)→→www.taobao.com主機(jī);
www.taobao.com收到的數(shù)據(jù)幀→IP→TCP,連接建立完成;
在這個(gè)過程中,任何一個(gè)報(bào)文出錯(cuò)或超時(shí),都要進(jìn)行重傳;
這個(gè)過程被稱為TCP建立連接的三次握手。
3.IE瀏覽器開始HTTP訪問過程
IE瀏覽器向www.taobao.com發(fā)出HTTP-GET方法報(bào)文;
該HTTP-GET方法報(bào)文→TCP→IP→MAC→→校園網(wǎng)關(guān)→→www.taobao.com主機(jī);
www.taobao.com收到的數(shù)據(jù)幀→IP→TCP→HTTP,HTTP協(xié)議單元會回應(yīng)HTTP協(xié)議格式封裝好的HTML超文本形式數(shù)據(jù);
HTTP-HTML數(shù)據(jù)→TCP→IP→MAC(ARP)→→校園網(wǎng)關(guān)→→請求主機(jī);
請求主機(jī)收到的數(shù)據(jù)幀→IP→TCP→HTTP→IE瀏覽器,瀏覽器會以網(wǎng)頁形式顯示HTML超文本,就是我們所看到的網(wǎng)頁。
4.斷開TCP連接:TCP斷開連接的四次握手
- IE瀏覽器向www.taobao.com發(fā)出TCP連接結(jié)束請求報(bào)文;
- 該請求TCP報(bào)文中的FIN標(biāo)志位被設(shè)置為1,表示結(jié)束請求;
- 該TCP結(jié)束請求報(bào)文→IP→MAC(ARP)→→校園網(wǎng)關(guān)→→www.taobao.com主機(jī);
- www.taobao.com收到的數(shù)據(jù)幀→IP→TCP,+ + TCP協(xié)議單元會回應(yīng)結(jié)束應(yīng)答報(bào)文;
- 該結(jié)束應(yīng)答TCP報(bào)文中的FIN和ACK標(biāo)志位均被設(shè)置為1,表示結(jié)束應(yīng)答;
- 該TCP結(jié)束應(yīng)答報(bào)文→IP→MAC(ARP)→→校園網(wǎng)關(guān)→→請求主機(jī);
- 這個(gè)過程需要雙向進(jìn)行,因此www.taobao.com主機(jī)也會按上述流程再做一次,整個(gè)過程被稱為斷開連接的四次握手