一、進行域名解析(獲取IP地址)
域名解析過程:
1、瀏覽器搜索自己的DNS緩存,緩存中維護了一張域名和IP地址的對應表
2、若沒有則搜索操作系統的DNS緩存
3、若沒有則操作系統將域名發送到本地域名服務器,本地域名服務器在自己的DNS緩存查找(遞歸查詢)
4、若沒有則通過以下方式查找(遞歸查詢/迭代查詢)
本地域名服務器向根域名服務器發送請求,根域名服務器返回com域頂級服務器域名地址
本地域名服務器向com域頂級域名發送請求,com域頂級域名服務器返回權限域名服務器地址
本地域名服務器向權限域名服務器發送請求,得到IP地址
5、本地域名將得到的IP地址返回操作系統,同時自己也將IP地址緩存起來
6、操作系統得到IP地址返回給瀏覽器,同時自己也將IP地址緩存起來
7、瀏覽器得到IP地址
二、應用層-瀏覽器發送HTTP請求
作為發送端的客戶端在應用層(HTTP協議)發送了一個想要做某件事的HTTP請求(比如請求某個接口)
三、傳輸層-TCP或者UDP封裝數據(HTTP請求報文)
為了傳輸方便,傳輸層選擇協議(TCP協議或者UDP協議)對從應用層收到的數據(HTTP請求報文)進行封裝(對收到的數據進行分割,並在各個報文上打上標記序號及端口號)后轉發給網絡層
四、網絡層-IP協議封裝IP地址,獲取目的MAC(media access control address)地址
通過IP協議將IP地址封裝為IP數據報,此時會使用ARP協議(ARP是一種用以解析地址的協議,根據通信方的IP就可以反查對應的MAC地址)主機發送信息時會將包含目標IP地址信息ARP請求廣播到網絡上所有的主機,並接受返回消息,以此確定目標的物理地址,找到目的的MAC地址
五、鏈路層-(又名數據鏈路層、網絡接口層)建立TCP連接
把網絡層交下來的IP數據添加首部和尾部,封裝為MAC幀,根據目的MAC地址建立TCP連接(三次握手)
不同的協議層對數據包有不同的稱謂,在傳輸層叫做段(segment),在網絡層叫做數據報(datagram),在鏈路層叫做幀(frame)。數據封裝成幀后發到傳輸介質上,到達目的主機后每層協議再剝掉相應的首部,最后將應用層數據交給應用程序處理。