我有一些关于网络的非常简单的基本问题,但是我发现有关这方面的信息各不相同,所以我只是想解决这个问题。
据我了解,网络交换机以“智能地”方式处理流量,它只将数据包传播到它知道接收器所在的端口(与集线器相反,集线器会强行将所有数据发送到所有端口)。
- 正确的?
因此,交换机需要记住与其连接的所有主机的地址。如果找不到主机,数据包将发送到默认路由(通常是上行链路到更广阔的网络)
- 正确的?
现在我的主要问题是:
- 交换机是否会记住 IP 地址或 MAC 地址来计算其决策?
答案1
嗯,这取决于您使用什么类型的开关。
最基本的类型在链路层运行,并且不了解 IP 地址。它们使用 MAC 地址进行操作。这些交换机通常是非托管的。
但是,还有更智能的交换机,它们提供 IP 层的功能,例如访问控制列表,并且这些交换机能够识别 IP 地址。通常,这些交换机是可管理的,即它们具有 Web 界面或控制台界面(或两者兼有),以允许用户配置各种选项。但是,附加功能是在基本交换机功能的基础上运行的。
交换机通过监听流量来“学习”连接到其端口的设备的 MAC 地址,并使用它们来决定将传入的数据报发送到何处。交换机通常不执行路由。这通常由路由器完成,路由器发送的数据报使用链路层地址(以太网网络中的 MAC 地址)将数据包发送到下一跳。
答案2
据我了解,网络交换机以“智能地”方式处理流量,它只将数据包传播到它知道接收器所在的端口(与集线器相反,集线器会强行将所有数据发送到所有端口)。
对,那是正确的。
因此,交换机需要记住与其连接的所有主机的地址。如果找不到主机,数据包将发送到默认路由(通常是上行链路到更广阔的网络)
嗯,不完全是。交换机确实会记住哪些主机连接到哪个端口(通常通过观察到达端口的数据包的 MAC 地址)。但是,交换机通常不知道“默认路由”,因为这是来自更高网络层的概念。交换机在 OSI 模型的第 2 层(数据链路层)上工作。“默认路由”是用于路由的概念,发生在第 3 层(网络层)。
因此,交换机没有“默认路由”。如果它不知道目标 MAC 地址,它只会将数据包发送到所有端口(至少在开始时,它只能这样做 - 这称为“泛洪”)。无论如何,在以太网中,每个数据包必须必须寻址到本地 MAC 地址,否则它永远不会到达。发送到“互联网”的数据包仍然会获得本地 MAC 地址目的地,即网络默认网关的地址。交换机只是将此数据包传递给默认网关,然后网关(在第 3 层运行)从数据包中嵌入的 IP 地址读取“真实”目的地并将其发送出去。
交换机是否会记住 IP 地址或 MAC 地址来计算其决策?
如上所述,交换机与 IP 无关,因为它在较低的抽象级别上工作。因此,只有 MAC 地址。
一个复杂的问题:正如 wolfgangsz 的回答所解释的那样,是交换机也在第 3 层运行(所谓的多层交换机)。这些稍微复杂一些,它们可以处理 IP 地址等。
答案3
只是想稍微补充一下@wolfgangsz 和 @sleske 的答案,需要强调的是,标准交换机正如已经指出的那样,纯粹是第 2 层设备,因此它只理解 MAC 地址。
尽管“数据包”通常用作通用术语,但第 2 层的协议数据单元 (PDU) 是“帧”,而第 3 层的 PDU 是数据包。
“多层交换机”可以被认为是包含路由器的交换机,与传统路由器不同,它将数据包从 VLAN 路由到 VLAN,而不是从一个物理接口路由到另一个物理接口。
如果交换机支持 VLAN(这并不一定会使其成为多层交换机),则具有未知目标 MAC 地址的帧将从所有成员端口发出(称为泛洪)。同一 VLAN因为 VLAN 是广播域,并且帧不会超出广播域的边界,所以数据包是在 VLAN 上接收的。
编辑:为了完整起见,我还应该提到,支持 VLAN 的交换机也将支持中继端口,这些交换机使用扩展帧,允许来自多个 VLAN 的流量在单个物理链路上传输。
答案4
“层”大致是指交换机运行的 OSI 层。