目錄
(1)同一網段兩臺計算機通信過程
(2)不同網段的兩臺計算機通信過程
(3)目的主機收到數據包后的解包過程
(1)同一網段兩臺計算機通信過程
如果兩臺計算機在同一個局域網中的同一網段中,它們之間的通信鏈路大致如下:
1.源主機:
- 應用層生成數據。
- 傳輸層將數據封裝成段(TCP)或數據報(UDP)。
- 網絡層將段或數據報封裝成IP數據包,并設置目標IP地址(即目標主機的IP地址)。
- 數據鏈路層將IP數據包封裝成幀,并添加MAC地址信息(源MAC地址和目標MAC地址)。
2.本地網絡:
- 源主機將幀發送到本地網絡。圖中以太網驅動程序在鏈路層,以太網驅動程序是軟件,它使操作系統能夠與網卡進行通信和控制。網卡是硬件,它提供了與網絡連接的物理接口。當操作系統需要發送數據時,它會將數據發送給以太網驅動程序,驅動程序再將數據封裝成幀傳遞給網卡進行傳輸。同樣地,當網卡接收到數據時,它會將數據傳遞給驅動程序,驅動程序再將數據傳遞給操作系統進行處理。以太網驅動程序與網卡之間通過特定的接口和協議進行通信,以確保數據的正確傳輸和接收。
- 如果有交換機的話(一般路由器會兼有交換機的功能),網卡將幀發送到交換機中后,交換機會根據幀中的目標MAC地址查找對應的端口,并將幀轉發到該端口。如果交換機不知道目標MAC地址在哪個端口,它可能會發送ARP請求來查詢目標MAC地址。
- 在沒有交換機的情況下,如果局域網是一個簡單的點對點或總線型網絡(這在現代網絡中很少見,但在某些老舊的網絡架構或特定應用中可能仍然存在):
- 點對點連接:如果局域網中只有兩個主機,并且它們之間是通過點對點連接(如直接連接的兩根網線或一個點對點設備)進行通信的,那么源主機發送的幀將直接到達目的主機,無需經過任何中間設備。
- 在總線型網絡中,所有的主機都連接在同一條通信電纜(稱為總線)上。源主機將幀發送到本地網絡后,這個幀就會在整個本地網絡上進行傳播。總線上的所有主機都會接收到這個幀,但是只有目標MAC地址與幀中指定的目標MAC地址相匹配的主機才會處理這個幀。其他主機則會忽略這個幀。
3.目標主機:
- 當幀到達目標主機時,數據鏈路層會解封裝幀,提取IP數據包,并將其傳遞給網絡層。
- 網絡層解封裝IP數據包,提取傳輸層的數據段或數據報,并將其傳遞給傳輸層。
- 傳輸層解封裝數據段或數據報,提取應用層的數據,并將其傳遞給應用層。
在同一網段時,兩臺主機通信不需要經過路由器,直接網卡到網卡。因為當兩臺主機在同一網段時,它們之間的通信是直接的,它們之間的通信通常不會經過路由器(Router)。路由器主要用于連接不同的網絡,如局域網與廣域網(WAN)或兩個不同的局域網,并基于IP地址中的網絡部分(網絡號或子網號)來決定數據包的轉發路徑。
(2)不同網段的兩臺計算機通信過程
如果兩臺計算機在不同的網段中,那么數據從一臺計算機到另一臺計算機傳輸過程中要經過一個或多個路由器,如下圖所示:
- 鏈路層有以太網、令牌環網等標準,鏈路層負責網卡設備的驅動、幀同步(即從網線上檢測到什么信號算作新幀的開始)、沖突檢測(如果檢測到沖突就自動重發)、數據差錯校驗等工作。交換機是工作在鏈路層的網絡設備,可以在不同的鏈路層網絡之間轉發數據幀(比如十兆以太網和百兆以太網之間、以太網和令牌環網之間),由于不同鏈路層的幀格式不同,交換機要將進來的數據包拆掉鏈路層首部重新封裝之后再轉發。
- 網絡層的IP協議是構成Internet的基礎。Internet上的主機通過IP地址來標識,Internet上有大量路由器負責根據IP地址選擇合適的路徑轉發數據包,數據包從Internet上的源主機到目的主機往往要經過十多個路由器。路由器是工作在第三層(網絡層)的網絡設備,同時兼有交換機的功能,可以在不同的鏈路層接口之間轉發數據包,因此路由器需要將進來的數據包拆掉鏈路層和網絡層兩層首部并重新封裝。IP協議不保證傳輸的可靠性,數據包在傳輸過程中可能丟失,可靠性可以在上層協議或應用程序中提供支持。
- 數據包通常是通過網卡先發送到交換機,再從交換機發送路由器(通常路由器一般具備交換機的功能,所以很多也是直接發送到路由器),然后路由器根據路由表決定下一個發送的路由。
- 網絡層負責點到點(ptop,point-to-point)的傳輸(這里的“點”指路由器,不過在同一網段時兩臺主機不需要經過路由器,直接網卡到網卡),而傳輸層負責端到端(etoe,end-to-end)的傳輸(這里的“端”通常指的是源主機上的應用進程和目的主機上的應用進程),傳輸層可選擇TCP或UDP協議。
(3)目的主機收到數據包后的解包過程
目的主機收到數據包后,如何經過各層協議棧最后到達應用程序呢?其過程如下:
- 以太網驅動程序首先根據以太網首部中的“上層協議”字段確定該數據幀的有效載荷(payload,指除去協議首部之外實際傳輸的數據)是IP、ARP還是RARP協議的數據報,然后交給相應的協議處理。
- 假如是IP數據報,IP協議再根據IP首部中的“上層協議”字段確定該數據報的有效載荷是TCP、UDP、ICMP還是IGMP,然后交給相應的協議處理。
- 假如是TCP段或UDP段,TCP或UDP協議再根據TCP首部或UDP首部的“端口號”字段確定應該將應用層數據交給哪個用戶進程。IP地址是標識網絡中不同主機的地址,而端口號就是同一臺主機上標識不同進程的地址,IP地址和端口號合起來標識網絡中唯一的進程。
雖然IP、ARP和RARP數據報都需要以太網驅動程序來封裝成幀,但是從功能上劃分,ARP和RARP屬于鏈路層,IP屬于網絡層。雖然ICMP、IGMP、TCP、UDP的數據都需要IP協議來封裝成數據報,但是從功能上劃分,ICMP、IGMP與IP同屬于網絡層,TCP和UDP屬于傳輸層。
end