1. 我們輸入一個域名:www.baidu.com
2. 瀏覽器查找瀏覽器緩存,如果有域名的IP地址則返回,如果沒有繼續查找;
3. 系統查找系統緩存,如果有域名的IP地址則返回,如果沒有繼續查找;
4. 路由器查找路由器緩存,如果有域名的IP地址則返回,如果沒有繼續查找;
5. 本地域名服務器採用迭代查詢,它先向一個根域名服務器查詢;
6. 根域名服務器告訴本地域名服務器,下一次應查詢的頂級域名服務器dns.com的IP地址;
7. 本地域名服務器向頂級域名服務器dns.com進行查詢;
8. 頂級域名服務器dns.com告訴本地域名服務器,下一次應查詢的權限域名服務器dns.baidu.com的IP地址;
9. 本地域名服務器向權限域名服務器dns.baidu.com進行查詢;
10. 權限域名服務器dns.baidu.com告訴本地域名服務器,所查詢的主機www.baidu.com的IP地址;
11. 本地域名服務器最後把查詢結果告訴主機;
12. 主機瀏覽器獲取到Web服務器的IP地址後,與服務器建立TCP連接;
13. 瀏覽器所在的客戶機向服務器發出連接請求報文;
14. 服務器接收報文後,同意建立連接,向客戶機發出確認報文;
15. 客戶機接收到確認報文後,再次向服務器發出報文,確認已接收到確認報文;
16. 此處客戶機與服務器之間的TCP連接建立完成,開始通信;
17. 瀏覽器發出取文件命令:GET;
18. 服務器給出響應,將指定文件發送給瀏覽器;
19. 瀏覽器釋放TCP連接;
20. 瀏覽器所在主機向服務器發出連接釋放報文,然後停止發送數據;
21. 服務器接收到釋放報文後發出確認報文,然後將服務器上未傳送完的數據發送完;
22. 服務器數據傳輸完畢後,向客戶機發送連接釋放報文;
23. 客戶機接收到報文後,發出確認,然後等待一段時間後,釋放TCP連接;
24. 瀏覽器顯示頁面中所有文本。
1、客戶端瀏覽器通過DNS解析到www.baidu.com的IP地址220.181.27.48,通過這個IP地址找到客戶端到服務器的路徑。客戶端瀏覽器發起一個HTTP會話到220.161.27.48,然後通過TCP進行封裝數據包,輸入到網絡層。
2、在客戶端的傳輸層,把HTTP會話請求分成報文段,添加源和目的端口,如服務器使用80端口監聽客戶端的請求,客戶端由系統隨機選擇一個端口如5000,與服務器進行交換,服務器把相應的請求返回給客戶端的5000端口。然後使用IP層的IP地址查找目的端。
3、客戶端的網絡層不用關係應用層或者傳輸層的東西,主要做的是通過查找路由表確定如何到達服務器,期間可能經過多個路由器,這些都是由路由器來完成的工作,我不作過多的描述,無非就是通過查找路由表決定通過那個路徑到達服務器。
4、客戶端的鏈路層,包通過鏈路層發送到路由器,通過鄰居協議查找給定IP地址的MAC地址,然後發送ARP請求查找目的地址,如果得到迴應後就可以使用ARP的請求應答交換的IP數據包現在就可以傳輸了,然後發送IP數據包到達服務器的地址。