Networking

網路中的數據包流

  • January 14, 2011

我無法想像網路流量。例如。如果區域網路中有 15 台電腦

  • 當數據包從路由器到本地區域網路時,它會通過所有電腦嗎?
  • 它是否進入每台電腦的乙太網卡並且這些電腦根據其物理地址接受數據包?
  • 數據包將首先到達哪台電腦?到最近的路由器?如果第一台 pc 擷取該數據包會發生什麼(儘管它不是為了它)?
  • 當電腦廣播消息時會發生什麼?它必須為所有 pc 生成 14 個數據包還是只有一個數據包到達所有 pc?如果它是一個數據包並被第一台電腦擷取,那麼其他電腦如何獲得呢?

我無法想像這種流量究竟是如何流動的?可能我的比喻是完全錯誤的。有人可以解釋一下嗎?

確切的程序取決於網路類型、拓撲結構和設備。我將嘗試描述與大多數乙太網有關的過程。

條款

  • MAC 地址:類似於社會安全號碼。它不會隨著你的移動而改變
  • IP 地址:就像地址一樣,當您移動(遠距離)時,它會發生變化。
  • TCP 數據包:帶有 TCP 埠資訊的數據(有時稱為 TCP 段)
  • IP數據報:帶有IP資訊的數據
  • 乙太網幀:帶有 MAC 資訊的數據

IP地址分為網路和節點兩部分。您在電腦或路由器上配置的子網決定了 IP 地址所在的網路。您需要使用 IP 地址(和子網)配置介面以路由到它。

根據您的路由器,當它接收到數據包時可能會發生幾件事:

家庭路由器(NAT網關)

  1. 數據包進入路由器
  2. 路由器從 IP 數據報中提取 IP 地址
  3. 路由器檢查目的地,3。如果地址不是目前路由器,它通常會丟棄數據包(如果它不僅僅是一個 NAT 網關,請閱讀下文)
  4. 路由器從數據包中提取埠號 5 路由器檢查轉發表以查看該埠是否與內部 IP 地址相關聯
  5. 如果是:傳遞(見下文)
  6. 否則:丟棄

真正的路由器

  1. 數據包進入路由器
  2. 路由器從 IP 數據報中提取 IP 地址
  3. 路由器檢查它是否是目標 IP 網路的一部分
  4. 如果是:傳遞它(見下文)
  5. 否則,檢查TTL(也來自 IP 數據報)以查看它是否應該被丟棄或發出無法傳遞的信號。
  6. 如果仍然可以傳遞,請檢查路由表的網路目的地,如果知道,將其轉發到下一個路由器。
  7. 否則,將其轉發到預設網關,丟棄數據包,或向其發送無法投遞的ICMP響應。(取決於配置)

傳送(乙太網)

  1. 路由器檢查 IP 地址是否在其 ARP 表中(IP 地址到 MAC 地址)。
  2. 如果沒有,請發送 ARP 請求來定位 MAC 地址。
  3. 收到 ARP 響應後,將數據包發送到該 MAC 地址。

ARP請求是一個廣播幀,因此每台電腦都能看到該請求。如果沒有響應,它可能會被默默地丟棄或響應。路由器只為廣播發送一個幀(如果它也是網橋,它可以在網橋所在的每個介面上發送它)。要發送廣播幀,有一個稱為廣播地址的特殊地址。在乙太網上,地址為 FF:FF:FF:FF:FF:FF(二進制全為 1)。

網橋(包括交換機)將指向 FF:FF:FF:FF:FF:FF 的幀辨識為廣播,並在每個埠上傳輸它。一些網橋(如管理型交換機)自己跟踪 ARP 請求,因此它們不需要廣播並簡單地回復其 ARP 記憶體中的內容。防火牆可以配置為阻止這些廣播,但它可能會對 IP 網路產生遞減的影響(如果沒有路由器,防火牆的兩側就不能再相互通信)。

從路由器到節點取決於硬體(通常是網橋、交換機或集線器)

網橋從一個埠獲取輸入,並將其發送到一個(或多個)埠。從技術上講,交換機是網橋,但防火牆或無線接入點也是網橋。

轉變

交換機會記住哪個埠具有哪個 MAC 地址。(通常,它會從 ARP 響應中學習)。交換機會將幀(包含數據包)發送到目標埠。在交換機不知道 MAC 地址的極少數情況下,它的行為類似於集線器,並將資訊發送到每個地址。

中心

集線器不會記住哪個埠有 MAC 地址。集線器將始終將幀發送到每個埠。有很多與集線器相關的問題(如衝突)。

傳遞(再次)

最後,此時的幀將持續到集線器和交換機上,直到它到達目的地或被丟棄。存在諸如STP之類的東西是為了防止它永遠被轉發。

引用自:https://serverfault.com/questions/222043