网络中数据包的流动

网络中数据包的流动

我无法在脑海中想象网络流量的流动情况。例如,如果局域网中有 15 台电脑

  • 当数据包从路由器传输到本地 LAN 时,它会经过所有计算机吗?
  • 它是否会到达每台计算机的以太网卡,并且这些计算机根据其物理地址接受数据包?
  • 数据包首先会发往哪台电脑?发往离路由器最近的那台电脑?如果第一台电脑捕获了该数据包(尽管不是发往它的)会发生什么?
  • 当一台电脑广播消息时会发生什么?它是否必须为所有电脑生成 14 个数据包,还是只有一个数据包到达所有电脑?如果它是一个数据包并被第一台电脑捕获,其他电脑如何获得它?

我无法想象这种流量究竟是如何流动的?也许我的类比完全错误。有人能解释一下吗?

答案1

具体过程取决于网络类型、拓扑和设备。我将尝试针对大多数以太网网络描述该过程。

条款

  • MAC地址:就像社会安全号码一样。它不会随着你的搬家而改变
  • IP地址:就像地址一样,当你移动(长距离)时,它会改变。
  • TCP 数据包:带有 TCP 端口信息的数据(有时称为 TCP 段)
  • IP数据报:包含 IP 信息的数据
  • 以太网帧:带有 MAC 信息的数据

IP 地址分为两部分:网络和节点。您在计算机或路由器上配置的子网决定了 IP 地址位于哪个网络上。您需要配置一个具有 IP 地址(和子网)的接口以路由到它。

根据您的路由器,当它接收到数据包时可能会发生几件事:

家庭路由器 (NAT閣門 (Gateway)

  1. 数据包进入路由器
  2. 路由器从 IP 数据报中提取 IP 地址
  3. 路由器检查目的地,3.如果地址不是当前路由器,它通常会丢弃数据包(如果它超过 NAT 网关,请阅读下文)
  4. 路由器从数据包中提取端口号 5 路由器检查转发表以查看该端口是否与内部 IP 地址相关联
  5. 如果是:交付(见下文)
  6. 否则:丢弃

真实路由器

  1. 数据包进入路由器
  2. 路由器从 IP 数据报中提取 IP 地址
  3. 路由器检查它是否是目标 IP 网络的一部分
  4. 如果是:交付(见下文)
  5. 否则,检查生存时间(也来自 IP 数据报)查看是否应将其丢弃或发出无法送达的信号。
  6. 如果仍然可以传送,则检查网络目的地的路由表,如果已知则将其转发到下一个路由器。
  7. 否则,将其转发到默认网关,丢弃数据包,或向其发送ICMP回应称,无法送达. (取决于配置)

传输(以太网)

  1. 路由器检查 IP 地址是否在其 ARP 表(IP 地址到 MAC 地址)中。
  2. 如果没有,则发送 ARP 请求来定位 MAC 地址。
  3. 一旦收到 ARP 响应,就将数据包发送到该 MAC 地址。

地址解析协议请求是广播帧,因此每台计算机都会看到该请求。如果没有响应,则可能会默默丢弃或响应。路由器只发送一个帧进行广播(如果它也是桥接器,则可能会在桥接器所在的每个接口上发送该帧)。要发送广播帧,有一个称为广播地址在以太网上,地址为 FF:FF:FF:FF:FF:FF(二进制全为 1)。

网桥(包括交换机)将发往 FF:FF:FF:FF:FF:FF 的帧识别为广播,并在每个端口上传输它。一些网桥(如托管交换机)会自行跟踪 ARP 请求,因此它们无需广播,只需回复 ARP 缓存中的内容即可。可以配置防火墙来阻止这些广播,但这可能会对 IP 网络产生负面影响(如果没有路由器,防火墙两侧将无法再相互通信)。

从路由器到节点取决于硬件(通常是网桥、交换机或集线器)

网桥从一个端口接收输入,并将其发送到一个(或多个)端口。从技术上讲,交换机是网桥,但防火墙或无线接入点也是网桥。

转变

交换机会记住哪个端口有哪个 MAC 地址。(通常,它会从 ARP 响应中获知该地址)。交换机会将帧(包含数据包)发送到目标端口。在极少数情况下,交换机不知道 MAC 地址,它会像集线器一样工作,并将信息发送到每个地址。

中心

集线器不会记住哪个端口有 MAC 地址。集线器始终会将帧发送到每个端口。集线器存在许多问题(例如冲突)。

再次交付

最后,此时的帧将继续传输,直到到达集线器和交换机,或被丢弃。例如生成树协议 (STP)存在是为了防止它被永远转发。

答案2

我建议你阅读维基百科上关于以太网

答案3

为一个非常虽然简单,但很好地概述了互联网中的数据包是如何工作的,有一部老动画电影很好地描述了它。这部短片制作精良,对非技术人员来说是一个很好的介绍。转到网络勇士并寻找电影链接。

答案4

答案是“视情况而定”。然而,如今最常见的答案要精确一些。在大多数当前系统中,路由器连接到交换机。路由器 LAN 上的任何 PC 也连接到该交换机,可能通过中间交换机。交换机知道连接到它的 MAC 地址,并且可以询问(通过 ARP 请求)谁拥有数据包目的地的 IP 地址。一旦知道了这一点,它就知道将数据包发送到哪里。广播数据包将发送到交换机的所有端口。

在共享媒体情况下(旧式集线器),情况略有不同,因为连接到集线器的所有系统都会看到每个数据包,但网络堆栈设置为(通常)忽略未广播或发送到系统 IP 地址的数据包。不过,这种情况现在不太常见了,因为大多数网络使用交换机而不是集线器。

相关内容