輸入網址到顯示,期間經曆哪些過程?
浏覽器第一步工作就是要對輸入的URL進行解析,從而确定發送給Web服務器的請求信息。
關于HTTP,可以看以下文章(由于無法給鍊接,關于以下文章可以私信我獲取具體地址):
在進行完URL解析以後,需要通過DNS域名解析獲取服務器的IP。
關于DNS,可以看以下文章:
操作系統協議棧
通過DNS獲取到IP以後,就可以将傳輸工作交給操作系統協議棧。
應用程序(浏覽器)通過調用Socket庫來委托操作系統協議棧工作。協議棧大體分為兩部分:
IP協議中還包含ICMP協議(告知網絡傳輸過程中産生的錯誤和控制信息)和ARP協議(獲取MAC地址)。
IP下面的網卡驅動程序負責控制網卡硬件,網卡負責實際的收發操作(對網線中的信号執行收發)。
可靠傳輸TCP由于HTTP的傳輸層協議是TCP,因此我們還需要借助TCP的幫助,通信的雙方需要建立TCP連接。
關于TCP,可以看以下文章(由于無法給鍊接,關于以下文章可以私信我獲取具體地址):
TCP在執行數據傳輸的時候會委托IP模塊将數據封裝成網絡包發送給通信對象。
通過上圖可以看出,IP協議裡面需要有源IP地址和目的IP地址,由于HTTP是TCP傳輸,所以在IP首部中的協議後為0x06(表示TCP)。
客戶端有多個網卡,源IP地址如何選擇?
如果客戶端有多個網卡(多個源IP地址),此時需要根據路由表規則來進行網卡(源IP地址)的選擇。
# linux中查看路由表
route -n
具體的選擇步驟如下:
在IP頭部生成以後,需要在IP頭部的前面加上MAC頭部。
MAC包頭裡需要發送方的MAC地址和接收方的MAC地址,在TCP/IP通信中,協議類型隻有兩種:
關于ARP如何獲取接收方MAC地址,可以看以下文章:
如何查看MAC地址緩存
arp -a
ARP緩存大體有三部分組成:
網絡包隻是内存中的一串二進制信息,無法直接發送給對方。需要網卡将數字信息轉化為電路信号才能在網線上進行傳輸。
控制網卡需要借助網卡驅動程序,網卡驅動程序從IP層獲取到包以後,會将其複制到網卡内的緩沖區,接着會在其開頭加上報頭和起始幀分界符,在末尾加上用于檢測錯誤的幀校驗序列。
數據包封裝好以後,網卡會将包轉換成電信号通過網線發出去。
交換機交換機是二層網絡設備,目的是用來将數據包原樣的轉發至目的地。
交換機的端口沒有MAC地址。
交換機中有MAC地址表,MAC地址表主要包含兩個信息:
交換機的包接收操作
MAC地址表中沒有如何處理?
MAC地址表中如果沒有對應的MAC地址,交換機就無法判斷将數據包轉發至端口,此時交換機會将數據包發送至除源端口以外的所有端口上。端口上的設備收到數據包以後,如果自己的MAC地址與數據包中的相符,就會接收該數據包,并作出響應,隻要返回了響應,交換機就可以将它寫入MAC地址表,下次就不需要将包發送至所有端口了。
如果接收方是一個廣播地址,交換機還是會把包發送至除源端口以外的所有端口。
路由器數據包在經曆過交換機以後,順利抵達了路由器,在路由器上會被轉發到下一個路由器或目标設備。
路由器是三層網絡設備的各個端口都有MAC地址和IP地址。
路由器的收發流程
确定完目标IP地址以後,又會通過ARP确定MAC地址,最終将封裝數據包(IP層的目标IP不會發生變化)發送出去。在整個數據包轉發過程中可以看出源IP和目标IP始終不會變化,但MAC地址一直是在變化的。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!