2013-04-20 24 views
18

我熟悉基本的OSI模型,但我總是感到困惑,數據包如何通過Internet從一臺計算機傳輸到另一臺計算機,以及什麼OSI層做照片?例如,對於以下拓撲:數據包如何通過基於OSI模型的Internet從一臺計算機傳輸到另一臺計算機

機器A < ----->切換< ---->路由器< ---->路由器< ---->路由器< ---->切換< ---->機器B

其中多個路由器被顯示爲代表互聯網,當機器A發送一個數據包(比如通過FTP的簡單的「ls」命令)到機器時OSI層級發生了什麼B.

以上只是一個建議的例子,但如果任何人可以解釋任何其他網絡拓撲,那也沒關係。我正在尋找關於數據包如何轉換爲每個節點(機器,交換機,路由器等)上的不同OSI層的非常基本的解釋。

+1

這不是一個編程問題(這是一個網絡問題),在這裏是脫離主題。 [faq]有關於適合在此處詢問的問題類型的更多信息。投票結束爲主題。祝你好運。 :-) – 2013-04-20 23:10:05

+0

好吧,那麼如何找到適合此主題的論壇? – modest 2013-04-20 23:55:45

+0

http://meta.stackexchange.com/q/90225/172661 – 2013-04-21 00:11:45

回答

30

路由器使用IP層(層3),交換機使用數據鏈路層(層2)。第一層是通過線路傳輸的物理1和0,第二層是數據鏈路層,它是像以太網和點對點協議(PPP)這樣的協議,它在相鄰節點之間傳送關於MAC地址和並允許錯誤檢測和重傳。第3層是IP層,它承載關於數據包來自和來自整個網絡的信息,而不僅僅是當前的躍點。

傳輸會是這樣的:

機A想發送一個數據包到機器B.機A知道計算機B的IP地址,所以它把在第三層數據包。但是,計算機A需要將下一跳的MAC地址放在第2層數據包中。如果它不知道,那麼它會向目標IP發送一個名爲ARP請求(地址解析協議,這裏讀取:http://www.tildefrugal.net/tech/arp.php)到網絡。其中幾件事情將發生在這裏:

  1. IP是本地的。具有該IP的機器將使用其MAC地址回覆給發件人。
  2. IP是非本地的。網關路由器將檢測到併發送其MAC地址。
  3. 該IP是非本地的,並且設置了機器A的默認網關和子網掩碼。使用此信息,計算機A可以確定IP地址的非本地性,並將其發送到路由器的MAC地址(如果尚未知道,則爲ARPing)。

(如果機器A較早發現此信息,它將位於ARP緩存中,並且機器A將僅使用該信息)。現在MAC地址已發送,數據包可被傳輸(物理層1正在執行線上數據的實際傳輸)。下一站將是開關。交換機知道哪個出站端口列出了作爲第2層目的地的MAC地址,因爲它跟蹤了每個MAC地址的數據包來自哪個端口和哪個端口 - 如果它不知道,那麼它會每隔一段時間單一端口,保證它會到達。

因此,數據包到達路由器。關於IP模型的一件很酷的事情是,它將網絡/世界中的每個IP地址劃分爲一個層次結構 - 根據定義,子網部分不能與子網重疊,它們要麼完全包含它們,要麼完全包含它們。因此,只要子網遵循這種層次結構,路由器就可以明確地確定IP地址在網絡中的哪些子網將落入網絡中的40億個IP地址中的每一個IP地址在哪裏。數據包然後被髮送出該端口。當數據包通過互聯的ISP的路由器,骨幹網基礎設施等傳送到機器B的路由器時,發生相反的過程 - 路由器B發現它的目的地是機器B並將其發送到內部。 (同樣,如果不知道,路由器B將不得不使用像ARP這樣的過程來查找機器B的MAC地址。)其餘應該從這裏變得微不足道。

很好的參考:

https://web.archive.org/web/20120129120350/http://www.tildefrugal.net/tech/arp.php

http://en.wikipedia.org/wiki/Data_link_layer

http://en.wikipedia.org/wiki/Network_switch

http://en.wikipedia.org/wiki/Network_layer

http://en.wikipedia.org/wiki/Routing

http://en.wikipedia.org/wiki/Router_(computing)

http://en.wikipedia.org/wiki/Address_Resolution_Protocol

+2

看來您的鏈接http://www.tildefrugal.net/tech/arp.php已損壞。 – Wobblester 2015-03-13 17:56:33

+0

除了路由器如何找到最終目標路由器部分外,這一切都很清晰。這是我最困惑的部分。 – Zen 2015-10-29 07:56:43

+1

當數據包到達機器B的路由器時,即使知道B的Mac地址,路由器如何發送數據包以便只有B接收?還是像路由器發送到所有端口(即到其子網上的所有終端系統)並且在端系統側,如果鏈路層中的MAC與它們自己的MAC地址相匹配,它們只接受該分組? – AV94 2016-07-23 17:25:46

0

,可以在旅行銅線的唯一的事情是電脈衝。 二進制數1表示爲電脈衝或無電脈衝。 請記住,任何類型的實際數據都不能通過銅線,光纖或通過空氣傳送......只有一個先前已被轉換爲1或0的數據的表示,然後在接收端被再轉回。

相關問題