在你的瀏覽器中輸入www.baidu.com以后,會在你的瀏覽器呈現(xiàn)百度首頁,這期間發(fā)生了什么?
首先我們需要知道TCP/IP的網(wǎng)絡模型,這里我就以四層模型為例子。

第一步:在瀏覽器中輸入www.baidu.com后,應用層會使用DNS解析域名,如果本地存有對應的IP,則使用;如果沒有,則會向上級DNS服務器請求幫助,直至獲得IP。域名解析詳細過程會在下文講到。
第二步:應用層將請求的信息裝載入HTTP請求報文,信息包含了請求的方法(GET / POST)、目標url、遵循的協(xié)議(http / https / ftp…)等,然后應用層將發(fā)起HTTP請求。
第三步:傳輸層接收到應用層傳遞下來的數(shù)據(jù),并分割成以報文段為單位的數(shù)據(jù)包進行管理,并為它們編號,方便服務器接收時能準確地還原報文信息。通過三次握手和目標端口建立安全通信。
第四步:網(wǎng)絡層接收傳輸層傳遞的數(shù)據(jù),根據(jù)IP通過ARP協(xié)議獲得目標計算機物理地址—MAC。當通信的雙方不在同一個局域網(wǎng)時,需要多次中轉才能到達最終的目標,在中轉的過程中需要通過下一個中轉站的MAC地址來搜索下一個中轉目標。
第五步:找到目標MAC地址以后,就將數(shù)據(jù)發(fā)送到數(shù)據(jù)鏈路層,這時開始真正的傳輸請求信息,傳輸完成以后請求結束。
第六步:服務器接收數(shù)據(jù)后,從下到上層層將數(shù)據(jù)解包,直到應用層。
第七步: 服務器接收到客戶端發(fā)送的HTTP請求后,查找客戶端請求的資源,將數(shù)據(jù)裝載入響應報文并返回,響應報文中包括一個重要的信息——狀態(tài)碼,如200,404,500。
DNS域名解析
域名解析就是將域名地址解析為IP地址,從瀏覽器輸入域名到解析為IP地址,其中具體的過程可以分為如下一些步驟!
1.瀏覽器檢查緩存中是否有此域名對應解析過的IP地址,如果有,直接返回結果,解析過程接結束。
2.瀏覽器沒有緩存對應的IP,此時瀏覽器會查找操作系統(tǒng)中是否有此域名對應的DNS解析結果,如果有,直接返回結果,解析過程接結束。在windows中可以通過C:\Windows\System32\drivers\etc\hosts來設置域名解析過程,linux下是/ect/named.conf。
3.如果在本機中無法完成域名解析過程,就會請求DNS服務器來解析了。在網(wǎng)絡設置中我們會配有DNS服務器地址:

操作系統(tǒng)會將域名發(fā)送到這里的設置的LDNS(本地區(qū)域名服務器),如果LDNS解析成功,則返回結果,解析過程結束。
4.LDNS不能成功解析域名,則會請求RootServer域名服務器請求解析。RootServer將所要解析的域名的主服務器(gTLD)地址返回給LDNS,就好像路標,告訴LDNS應該去哪里尋找結果。
5.LDNS請求gTLD,接收請求的gTLD查找并返回此域名對應的NameServer,NameServer就是此域名注冊的域名服務器。gTLD也是一個路牌,告訴你該去此域名注冊時的域名服務器那里去尋找結果。
6.NameServer接收請求,并將域名和IP的映射關系表連同一個TTL值返回給LDNS。
7.LDNS將解析結果返回給用戶,并且將域名和IP對應關系緩存。
8.本地用戶接收到解析結果,并將域名和IP對應關系緩存到本地,整個域名解析過程結束。
參考博客:https://blog.csdn.net/qq_37169817/article/details/78663598?