AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1650809
Accepted
Truth
Truth
Asked: 2021-05-22 22:15:48 +0800 CST2021-05-22 22:15:48 +0800 CST 2021-05-22 22:15:48 +0800 CST

计算机如何知道将数据包发送到哪个交换机?

  • 772

正如我到目前为止所注意到的,局域网中经常有一个交换机,这些交换机根据 MA​​C 地址路由数据包,现在如果有两个交换机连接到本地网络中的一台电脑,因为我没有看到 MAC到目前为止为交换机设置的地址,PC如何知道将数据包发送到哪个交换机?

networking ping
  • 4 4 个回答
  • 3300 Views

4 个回答

  • Voted
  1. Best Answer
    Mokubai
    2021-05-22T23:59:26+08:002021-05-22T23:59:26+08:00

    它根本不会将其发送到交换机。它从具有正确 IP 地址和子网的任何接口发送它,或者,如果两者都有效,它认为哪个更快或到主机的跃点最少。

    如果网络接口具有不同的 IP 地址并按子网分隔,那么这将有效地选择数据包在哪个接口上发送出去。

    每个接口也可以分配一个“指标”,基本上说明“这个接口应该更快”,并且对于更快的接口将是一个较小的数字。您可以让操作系统建立指标,从而建立首选接口,也可以在网络接口属性中自行设置。

    您的操作系统中的网络系统也可能使用 TCP/IP 数据包中的 TTL(生存时间)信息来确定哪个链接更短,但这并不是速度的可靠指示。

    更智能的系统可以使用负载平衡和链路上最近延迟的知识来动态调整或覆盖接口度量。

    • 27
  2. ilkkachu
    2021-05-23T12:42:12+08:002021-05-23T12:42:12+08:00

    这取决于你有什么样的设置。

    您可以在计算机上有两个网络接口,连接到两个完全不同的网络。在这种情况下,数据包将离开由 IP 路由确定的接口,系统可能会或可能不会在两个网络之间路由流量。

    例如,这里的任何东西都会192.168.0.x通过eth0开关#1 出来。如果您还通过 eg 有一个默认路由,那么其他所有不会出现的192.168.0.1东西也会离开路由器。10.1.2.xeth0

    +----------+ eth0              
    |          | 192.168.0.10/24   +------------+     { other computers   }
    | computer |-------------------| switch #1  |---- { in 192.168.0.0/24 }
    |          |                   +------------+     {       ...         }
    |          | eth1              
    |          | 10.1.2.3/24       +------------+
    |          |-------------------| switch #2  |---- ...
    +----------+                   +------------+
    

    以上与您在评论中的拓扑相同。在两个交换机之间没有连接的情况下,只有当系统充当两个网络之间的桥梁时,两个接口中具有相同的IP 子网才有意义,允许一侧的所有主机连接到另一侧。单个主机的查找方式与交换机查找它们的方式相同:通过跟踪 MAC 地址的出现位置,如果目标 MAC 的位置未知,则将流量泛洪到所有端口。

    如果没有桥接,如果应用程序想要连接到两个地方都存在的地址,就没有直接的方法可以知道使用哪个网络。这不仅仅是查找具有该地址的主机所在的位置,而是可能有两个主机。


    另一方面,如果两台交换机是外部连接的(与上面不同),则可以将两个网络接口连接到两台交换机,都在相同的第 2 层网络和 IP 子网上,无需桥接。这将用于冗余/容错或增加带宽。

    如果操作系统处理接口之间的故障转移,则可以使用一个 IP 地址来完成。例如,如果一个接口出现故障,Linux 绑定驱动程序可以透明地在两个接口之间进行故障转移。然后将沿着当前活动的链接发送流量。

    如果两台交换机是独立的,负载均衡通常是不可能的。但如果它们是支持它的单个逻辑平台的一部分,您可以在两条链路上运行LACP,透明地平衡两条链路上的流量。使用 LACP,流量根据源地址和目标地址的散列进行拆分。

    bond0: eth0 + eth1, 192.168.0.10/24 
    +----------+               
    |          | eth0 (bonded)     +------------+     { other computers   }
    | computer |-------------------| switch #1  |---- { in 192.168.0.0/24 }
    |          |                   +------------+     {       ...         }
    |          |                         |               |
    |          | eth1 (bonded)     +------------+        |
    |          |-------------------| switch #2  |--------+
    +----------+                   +------------+
    

    也可以使用两个 IP 地址来完成,应用程序处理流量分配。这类似于在网络上只有两个独立的主机。(可能需要基于策略的路由以使源 IP 地址影响所使用的传出接口。)

    +----------+ eth0              
    |          | 192.168.0.10/24   +------------+     { other computers   }
    | computer |-------------------| switch #1  |---- { in 192.168.0.0/24 }
    |          |                   +------------+     {       ...         }
    |          | eth1                    |               |
    |          | 192.168.0.11/24   +------------+        |
    |          |-------------------| switch #2  |--------+
    +----------+                   +------------+
    

    请注意,虽然交换机具有 MAC 地址,但它们仅用于控制功能,与数据流量无关。交换机确实保留了他们在每个端口中看到的主机 MAC 地址表,并使用该表将数据帧转发到正确的位置。并且主机只有路由条目说“到网络 N 的流量从接口 I 出去”,或者“到网络 M 的流量通过接口 J 发送到路由器 R”,或者路由条目也考虑了源地址。主机必须使用 ARP 或类似方法来确定目标 MAC 地址,但这是目标主机的 MAC 地址,而不是交换机。

    此外,“路由”是网络/IP/第 3 层功能,而不是交换机所做的。切换“转发”帧,或者只是“切换”它们。(我很乐意使用后者,尽管也许有些人可能不同意。)

    这两个网络接口是否在单个(PCI / PCIe)卡上、在两个卡上、集成在主板上或通过 USB 或其他方式连接在这里都没有关系。只是它们是完全独立的接口,而不仅仅是相同实际接口的替代物理连接器。例如,许多交换机的端口同时具有铜连接器和 SFP 插座,但一次只能工作一个。在过去,10 Mb/s 网卡通常具有用于双绞线、同轴薄以太网和D-15 AUI 的连接器作为替代品。

    • 11
  3. ciamej
    2021-05-24T04:08:30+08:002021-05-24T04:08:30+08:00

    在这个答案中,我考虑了评论中给出的其他细节:

    1. 拓扑:(路由器-------------交换机----------PC-----------交换机------- - -路由器)

    2. 两台 PC 的接口都配置在同一个子网中

    这是错误的。

    这个错误的配置(在 Linux 中)会发生什么?

    路由表对同一子网有两个条目,每个接口和源 IP 地址一个。例如:

    # ip route show
    10.0.0.0/24 dev eth0  proto kernel  scope link  src 10.0.0.1
    10.0.0.0/24 dev eth1  proto kernel  scope link  src 10.0.0.2
    

    当您尝试 ping 该子网中的某个地址时,仅使用第一个接口。因此,您无法到达第二个路由器。

    • 2
  4. sleepyhead
    2021-05-24T01:53:47+08:002021-05-24T01:53:47+08:00

    PC 通过广播 ARP 消息来获知 IP 地址对应的 MAC 地址。目标应该响应我有 IP,我的 MAC 地址就是这个。然后,PC 将保留一个 ARP 表,其中包含映射 IP、MAC 和设备响应接口的条目。

    只要某些设备将数据包切换到您的目的地,PC 就不会担心消息如何到达终点。

    大多数交换机都有 MAC 地址并保留 ARP 表。他们会将 ARP 请求转发给所有连接的设备,并且还会记住响应的来源。哑集线器通常没有记忆,只会继续向各个方向广播消息。

    • 0

相关问题

  • 三台电脑,没有路由器/交换机怎么组网?

  • 用户使用 FileZilla 连接到 SFTP 服务器拒绝连接

  • NAT 后面的 NAT 如何工作(路由器的 NAT 和 ISP 的 NAT)?

  • Win10 1803:如何让移动热点成为专用网络?

  • nc如何识别服务名称

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve