3.浏览器输入www.baidu.com到显示主页的全过程
1、客戶端瀏覽器通過DNS解析到www.baidu.com的IP地址202.108.22.5,通過這個IP地址找到客戶端到服務(wù)器的路徑。客戶端瀏覽器發(fā)起一個HTTP會話到202.108.22.5,然后通過TCP進行封裝數(shù)據(jù)包,輸入到網(wǎng)絡(luò)層。?
2、在客戶端的傳輸層,把HTTP會話請求分成報文段,添加源和目的端口,如服務(wù)器使用80端口監(jiān)聽客戶端的請求,客戶端由系統(tǒng)隨機選擇一個端口如5000,與服務(wù)器進行交換,服務(wù)器把相應(yīng)的請求返回給客戶端的5000端口。然后使用IP層的IP地址查找目的端。?(建立tcp連接)
3、客戶端的網(wǎng)絡(luò)層不用關(guān)心應(yīng)用層或者傳輸層的東西,主要做的是通過查找路由表確定如何到達服務(wù)器,期間可能經(jīng)過多個路由器,這些都是由路由器來完成的工作,我不作過多的描述,無非就是通過查找路由表決定通過那個路徑到達服務(wù)器。?(IP的重要功能是尋址和路由)
4、客戶端的鏈路層,包通過鏈路層發(fā)送到路由器,通過鄰居協(xié)議查找給定目的IP地址的MAC地址,然后發(fā)送ARP請求查找目的地址,如果得到回應(yīng)后就可以使用ARP的請求應(yīng)答交換的IP數(shù)據(jù)包現(xiàn)在就可以傳輸了,然后發(fā)送IP數(shù)據(jù)包到達服務(wù)器的地址。(IP地址轉(zhuǎn)為MAC)
事件順序
(1) 瀏覽器獲取輸入的域名www.baidu.com?
(2) 瀏覽器向DNS請求解析www.baidu.com的IP地址?
(3) 域名系統(tǒng)DNS解析出百度服務(wù)器的IP地址?
(4) 瀏覽器發(fā)出HTTP請求,請求百度首頁?
(5) 瀏覽器與該服務(wù)器建立TCP連接(默認端口號80)?
(6)IP的重要功能是尋址和路由
(7)定義了通過物理網(wǎng)絡(luò)輸出數(shù)據(jù)所需的協(xié)議與硬件要求
服務(wù)器通過HTTP響應(yīng)把首頁文件發(fā)送給瀏覽器?
(7) TCP連接釋放?
(8) 瀏覽器將首頁文件進行解析,并將Web頁顯示給用戶。
涉及到的協(xié)議
(1) 應(yīng)用層:HTTP(WWW訪問協(xié)議),DNS(域名解析服務(wù))?
DNS解析域名為目的IP,通過IP找到服務(wù)器路徑,客戶端向服務(wù)器發(fā)起HTTP會話,然后通過運輸層TCP協(xié)議封裝數(shù)據(jù)包,在TCP協(xié)議基礎(chǔ)上進行傳輸
(2) 傳輸層:TCP(為HTTP提供可靠的數(shù)據(jù)傳輸),UDP(DNS使用UDP傳輸)?
HTTP會話會被分成報文段,添加源、目的端口;TCP協(xié)議進行主要工作
(3)網(wǎng)絡(luò)層:IP(IP數(shù)據(jù)數(shù)據(jù)包傳輸和路由選擇),ICMP(提供網(wǎng)絡(luò)傳輸過程中的差錯檢測),ARP(將本機的默認網(wǎng)關(guān)IP地址映射成物理MAC地址)?
為數(shù)據(jù)包選擇路由,IP協(xié)議進行主要工作,相鄰結(jié)點的可靠傳輸,ARP協(xié)議將IP地址轉(zhuǎn)成MAC地址。
?
>>>點擊網(wǎng)址后,應(yīng)用層的DNS協(xié)議會將網(wǎng)址解析為IP地址;
DNS查找過程:(緩存->hosts文件->DNS服務(wù)器)
1.????????瀏覽器會檢查緩存中有沒有這個域名對應(yīng)的解析過的IP地址,如果緩存中有,這個解析過程就將結(jié)束。
2.????????如果用戶的瀏覽器緩存中沒有,瀏覽器會查找操作系統(tǒng)緩存(hosts文件)中是否有這個域名對應(yīng)的DNS解析結(jié)果。
3.????????若還沒有,此時會發(fā)送一個數(shù)據(jù)包給DNS服務(wù)器,DNS服務(wù)器找到后將解析所得IP地址返回給用戶。
?
>>>在應(yīng)用層,瀏覽器會給web服務(wù)器發(fā)送一個HTTP請求;
請求頭為:GET http://www.baidu.com/HTTP/1.1
>>>在傳輸層,(上層的傳輸數(shù)據(jù)流分段)HTTP數(shù)據(jù)包會嵌入在TCP報文段中;
TCP報文段需要設(shè)置端口,接收方(百度)的HTTP端口默認是80,本機的端口是一個1024-65535之間的隨機整數(shù),這里假設(shè)為1025,這樣TCP報文段由TCP首部(包含發(fā)送方和接收方的端口信息)+ HTTP數(shù)據(jù)包組成。
?
>>>在網(wǎng)絡(luò)層中,TCP報文段再嵌入IP數(shù)據(jù)包中;
IP數(shù)據(jù)包需要知道雙方的IP地址,本機IP地址假定為192.168.1.5,接受方IP地址為220.181.111.147(百度),這樣IP數(shù)據(jù)包由IP頭部(IP地址信息)+TCP報文段組成。
?
>>>?在網(wǎng)絡(luò)接口層,IP數(shù)據(jù)包嵌入到數(shù)據(jù)幀(以太網(wǎng)數(shù)據(jù)包)中在網(wǎng)絡(luò)上傳送;
數(shù)據(jù)幀中包含源MAC地址和目的MAC地址(通過ARP地址解析協(xié)議得到的)。這樣數(shù)據(jù)幀由頭部(MAC地址)+IP數(shù)據(jù)包組成。
?
>>>數(shù)據(jù)包經(jīng)過多個網(wǎng)關(guān)的轉(zhuǎn)發(fā)到達百度服務(wù)器,請求對應(yīng)端口的服務(wù);
服務(wù)接收到發(fā)送過來的以太網(wǎng)數(shù)據(jù)包開始解析請求信息,從以太網(wǎng)數(shù)據(jù)包中提取IP數(shù)據(jù)包—>TCP報文段—>HTTP數(shù)據(jù)包,并組裝為有效數(shù)據(jù)交與對應(yīng)線程池中分配的線程進行處理,在這個過程中,生成相應(yīng)request、response對象。
?
>>>請求處理完成之后,服務(wù)器發(fā)回一個HTTP響應(yīng);
請求處理程序會閱讀請求及它的參數(shù)和cookies。它會讀取也可能更新一些數(shù)據(jù),并將數(shù)據(jù)存儲在服務(wù)器上。處理完畢后,數(shù)據(jù)通過response對象給客戶輸出信息,輸出信息也需要拼接HTTP協(xié)議頭部分,關(guān)閉后斷開連接。斷開后,服務(wù)器端自動注銷request、response對象,并將釋放對應(yīng)線程的使用標(biāo)識(一般一個請求單獨由一個線程處理,部分特殊情況有一個線程處理多個請求的情況)。
響應(yīng)頭為:HTTP/1.1? 200 OK
?
>>>瀏覽器以同樣的過程讀取到HTTP響應(yīng)的內(nèi)容(HTTP響應(yīng)數(shù)據(jù)包),然后瀏覽器對接收到的HTML頁面進行解析,把網(wǎng)頁顯示出來呈現(xiàn)給用戶。
客戶端接收到返回數(shù)據(jù),去掉對應(yīng)頭信息,形成也可以被瀏覽器認識的頁面HTML字符串信息,交與瀏覽器翻譯為對應(yīng)頁面規(guī)則信息展示為頁面內(nèi)容。
?
1.?由域名→IP 地址
尋找 IP 地址的過程依次經(jīng)過了瀏覽器緩存、系統(tǒng)緩存、hosts文件、路由器緩存、 遞歸搜索根域名服務(wù)器。
2.?建立 TCP/IP 連接(三次握手具體過程)(找到IP之后,立即進行三路握手建立TCP連接)
3.?由瀏覽器發(fā)送一個 HTTP 請求
4.?經(jīng)過路由器的轉(zhuǎn)發(fā),通過服務(wù)器的防火墻,該 HTTP 請求到達了服務(wù)器
5.?服務(wù)器處理該 HTTP 請求,返回一個 HTML 文件
6.?瀏覽器解析該 HTML 文件,并且顯示在瀏覽器端
?這里需要注意:
o? HTTP 協(xié)議是一種基于 TCP/IP 的應(yīng)用層協(xié)議,進行 HTTP 數(shù)據(jù)請求必須先建立 TCP/IP 連接。
o? 可以這樣理解:HTTP 是轎車,提供了封裝或者顯示數(shù)據(jù)的具體形式;Socket 是發(fā)動機,提供了網(wǎng)絡(luò)通信的能力。
o? 兩個計算機之間的交流無非是兩個端口之間的數(shù)據(jù)通信 , 具體的數(shù)據(jù)會以什么樣的形式展現(xiàn)是以不同的應(yīng)用層協(xié)議來定義的。
總結(jié)
以上是生活随笔為你收集整理的3.浏览器输入www.baidu.com到显示主页的全过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络:.cookie和session原理
- 下一篇: 图的遍历:BFS和DFS