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