從瀏覽器訪問http://www.sina.com.cn的全過程?
時間:2023-02-25 21:33:01 | 來源:建站知識
時間:2023-02-25 21:33:01 來源:建站知識
從瀏覽器訪問http://www.sina.com.cn的全過程?:從瀏覽器訪問
http://www.sina.com.cn的全過程
1.
DNS域名解析。①瀏覽器先在本地host文件中查找,如果查找到了該www.sina.com.cn主機到相應(yīng)IP地址的映射條目,則域名解析成功。
②如果沒有找到對應(yīng)的映射,則請求本地所配置的DNS服務(wù)器,如果本地的DNS服務(wù)器緩存了
http://www.sina.com.cn主機對應(yīng)的IP地址的信息,則本地DNS服務(wù)器返回相關(guān)數(shù)據(jù),域名解析成功。
③如果沒有找到對應(yīng)的IP地址的信息,瀏覽器遞歸查找DNS服務(wù)器,服務(wù)器進行迭代查找,直到找到
http://www.sina.com.cn主機對應(yīng)的IP地址的信息,然后返回結(jié)果到瀏覽器,沒有找到的話域名解析失敗。
遞歸查找的過程:
瀏覽器先向DNS服務(wù)器發(fā)出DNS請求,目的是獲取www.sina.com這個域名所對應(yīng)的IP地址;
瀏覽器向本機DNS模塊發(fā)出DNS請求,DNS模塊生成相關(guān)的DNS報文;接著,DNS模塊將生成的DNS報文傳遞給傳輸層的UDP協(xié)議單元;UDP協(xié)議單元將該數(shù)據(jù)封裝成UDP數(shù)據(jù)報,傳遞給網(wǎng)絡(luò)層的IP協(xié)議單元;IP協(xié)議單元將該數(shù)據(jù)封裝成IP數(shù)據(jù)包,其中目的IP地址為DNS服務(wù)器的IP地址;封裝好的IP數(shù)據(jù)包將傳遞給數(shù)據(jù)鏈路層的協(xié)議單元進行發(fā)送;發(fā)送時如果ARP緩存中沒有相關(guān)數(shù)據(jù),則發(fā)送ARP廣播請求,等待ARP回應(yīng);
數(shù)據(jù)鏈路層的作用范圍是局域網(wǎng),那么其MAC地址肯定是局域網(wǎng)內(nèi)某臺機器的MAC地址。并且ARP協(xié)議的作用范圍也是局域網(wǎng)。但是IP數(shù)據(jù)包的目的地址未必都是局域網(wǎng)內(nèi)的,如果不是,在局域網(wǎng)內(nèi)進行ARP廣播查詢該IP地址對應(yīng)的MAC地址,肯定沒有人回應(yīng),因為大家誰都沒有這個IP地址。
使用子網(wǎng)掩碼就可以確定IP地址是不是同一個局域網(wǎng)里的。如果是同一個局域網(wǎng),那么就可以進行ARP。如果不是,這就要靠網(wǎng)絡(luò)層了。路由表不是只在路由器上才有的,本機上也有,而且也有路由過程。
默認路由路徑(因為任何一個IP地址 AND 0.0.0.0 后肯定都是 0.0.0.0 的)意思就是:如果其他路由項都不符合,則發(fā)送到默認網(wǎng)關(guān)。默認情況下,windows機器不會充當路由器的功能,它不會轉(zhuǎn)發(fā)(forward)自己接受到的但是目的地址不是自己的包。但是這是可以設(shè)置的,通過開啟路由轉(zhuǎn)發(fā)功能,就能充當一個路由器了。這樣,局域網(wǎng)中另一臺機器就可以把默認網(wǎng)關(guān)設(shè)置為你的IP,然后他的所有到外網(wǎng)的包都先交給你,然后你再路由轉(zhuǎn)發(fā)出去。
IP地址轉(zhuǎn)換到MAC地址的過程如下:
①首先得到IP包需要送達的目的地址 IP-des ;
②查路由表,根據(jù)匹配 IP-des 的路由表項得到下一跳(next hop)的中間目的地址 IP-next (可以保證 IP-next 是局域網(wǎng)中的地址);
③在ARP緩存中查找 IP-next 對應(yīng)的MAC地址,如果緩存中沒有,再到局域網(wǎng)中使用ARP協(xié)議進行詢問;得到了MAC地址后,將MAC地址放到幀頭,發(fā)送數(shù)據(jù)。
當?shù)玫紸RP回應(yīng)后,將IP地址與路由下一跳MAC地址對應(yīng)的信息寫入ARP緩存表;寫入緩存后,以路由下一跳地址填充目的MAC地址,并以數(shù)據(jù)幀形式轉(zhuǎn)發(fā);因為DNS服務(wù)器在網(wǎng)絡(luò)中的位置不同,所以這個轉(zhuǎn)發(fā)過程可能會進行多次;
DNS請求被發(fā)送到DNS服務(wù)器的數(shù)據(jù)鏈路層協(xié)議單元;DNS服務(wù)器的數(shù)據(jù)鏈路層協(xié)議單元解析收到的數(shù)據(jù)幀,將其內(nèi)部所含有的IP數(shù)據(jù)包傳遞給網(wǎng)絡(luò)層IP協(xié)議單元;DNS服務(wù)器的IP協(xié)議單元解析收到的IP數(shù)據(jù)包,將其內(nèi)部所含有的UDP數(shù)據(jù)報傳遞給傳輸層的UDP協(xié)議單元;DNS服務(wù)器的UDP協(xié)議單元解析收到的UDP數(shù)據(jù)包,將其內(nèi)部所含有的DNS報文傳遞給該服務(wù)器上的DNS服務(wù)單元;DNS服務(wù)單元收到DNS請求,將域名解析為對應(yīng)的IP地址,產(chǎn)生DNS回應(yīng)報文;
(所有應(yīng)用層報文必須通過傳輸層、網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層,其中 網(wǎng)絡(luò)層主要任務(wù)是路由,而數(shù)據(jù)鏈路層是提供相鄰兩個網(wǎng)絡(luò)實體間端到端的數(shù)據(jù)傳輸,可以理解成為局域網(wǎng)內(nèi)兩臺機器間的數(shù)據(jù)傳輸。下面的過程就不再像之前那樣贅述,盡量簡寫了。)
DNS回應(yīng)報文→UDP→IP→MAC→→請求域名解析的主機;
請求域名解析的主機收到數(shù)據(jù)幀,該數(shù)據(jù)幀→IP→UDP→DNS→瀏覽器;
將域名解析的結(jié)果以域名和IP地址對應(yīng)的形式寫入本地DNS緩存表。
2.
瀏覽器與www.sina.com.cn建立TCP連接瀏覽器根據(jù)地址類型(IPv4,IPv6),套接字類型(SOCK_STREAM、SOCK_PACKET),協(xié)議類型(UDP,TCP)創(chuàng)建套接字(socket(int domain, int type,
int protocol)),并綁定一個地址(IP+端口號),然后監(jiān)聽該端口(listen()),現(xiàn)在服務(wù)器端處于監(jiān)聽狀態(tài)??蛻舳擞梅?wù)器IP地址和應(yīng)用端口號創(chuàng)建一個套接字作為請求的套接字,調(diào)用connection函數(shù)(這里會為客戶端創(chuàng)建一個套接字,客戶端IP地址+任意分配的端口號)試圖請求連接(整個連接過程就是三次握手的過程)。
瀏覽器向www.sina.com.cn發(fā)出TCP連接請求報文;
該請求TCP報文中的SYN標志位被設(shè)置為1,表示連接請求;
該TCP請求報文→IP(DNS)→MAC(ARP)→→網(wǎng)關(guān)→→
http://www.sina.com.cn主機;
該TCP請求報文經(jīng)過IP層時,填入的目的IP地址就是上面DNS過程獲得的IP地址;
經(jīng)過數(shù)據(jù)鏈路層時,若MAC地址不明,還要進行上面所敘述的ARP過程;
www.sina.com.cn收到的數(shù)據(jù)幀→IP→TCP,TCP協(xié)議單元會回應(yīng)請求應(yīng)答報文;
該請求應(yīng)答TCP報文中的SYN和ACK標志位均被設(shè)置為1,表示連接請求應(yīng)答;
該TCP請求應(yīng)答報文→IP→MAC(ARP)→→網(wǎng)關(guān)→→請求主機;
請求主機收到數(shù)據(jù)幀→IP→TCP,TCP協(xié)議單元會回應(yīng)請求確認報文;
該請求應(yīng)答TCP報文中的ACK標志位被設(shè)置為1,表示連接請求確認;
該TCP請求確認報文→IP→MAC(ARP)→→網(wǎng)關(guān)→→
http://www.sina.com.cn主機;
www.sina.com.cn收到的數(shù)據(jù)幀→IP→TCP,連接建立完成;
在這個過程中,任何一個報文出錯或超時,都要進行重傳;
這個過程被稱為TCP建立連接的三次握手
3.瀏覽器開始HTTP訪問過程IE瀏覽器向www.sina.com.cn發(fā)出HTTP-GET方法報文;
該HTTP-GET方法報文→TCP→IP→MAC→→網(wǎng)關(guān)→→
http://www.sina.com.cn主機;
www.sina.com.cn收到的數(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)→→請求主機;
請求主機收到的數(shù)據(jù)幀→IP→TCP→HTTP→瀏覽器,瀏覽器會以網(wǎng)頁形式顯示HTML超文本,就是我們所看到的網(wǎng)頁。
4.斷開TCP連接瀏覽器向www.sina.com.cn發(fā)出TCP連接結(jié)束請求報文;
該請求TCP報文中的FIN標志位被設(shè)置為1,表示結(jié)束請求;
該TCP結(jié)束請求報文→IP→MAC(ARP)→→網(wǎng)關(guān)→→
http://www.sina.com.cn主機;
www.sina.com.cn收到的數(shù)據(jù)幀→IP→TCP,TCP協(xié)議單元會回應(yīng)結(jié)束應(yīng)答報文;
該結(jié)束應(yīng)答TCP報文中的FIN和ACK標志位均被設(shè)置為1,表示結(jié)束應(yīng)答;
該TCP結(jié)束應(yīng)答報文→IP→MAC(ARP)→→網(wǎng)關(guān)→→請求主機;
這個過程需要雙向進行,因此www.sina.com.cn主機也會按上述流程再做一次;
整個過程被稱為TCP斷開連接的四次握手。