切入正题:那是什么?是否为接口、链路或设备分配了 IP?这三样东西有什么区别?警告:这是对 iproute2 实用程序或其文档的批判性审查,以更好地理解它们(主要是ip
)。
网络书籍通常会引用这些术语
- 关联
- 设备
- 界面
route2实用程序ip
文档定义链接如下:
链路---物理或逻辑网络设备。
别处...
链接是指网络设备。
dev NAME --- 我们添加地址的设备的名称
像这样的命令将 IP 地址分配给“设备”:
ip addr add 10.0.0.1/24 brd + dev eth0
像这样的命令启动“接口”
ip link set eth0 up
将上述内容与以下来自知名来源的摘录进行比较:
主机和物理链路之间的边界称为接口。
计算机网络: Kurose & Ross 第 7 版的自上而下的方法,p。363.
还
路由器与其任何一条链路之间的边界也称为接口。
计算机网络: Kurose & Ross 第 7 版的自上而下的方法,p。363.
之后,
[...] IP 地址在技术上与接口相关联,而不是与包含该接口的主机或路由器相关联。
我的想法
这是模棱两可的。可以说设备和接口是相同的吗?或者设备是否实现了接口?如果是这样,那么这意味着像物理接口这样的词可能直接指代设备,并且真正意味着同一件事。
我将链接理解为物理线路或模拟线路(无线协议,如 802.11)。顺便说一句,我什至没有提到“链接层”这个词。
与其他成熟的工程学科不同,网络没有明确定义的术语。许多是从电气工程或计算机科学中借来的,但使用方式略有不同。大量是由制造商的营销部门创造的。这些术语意味着营销人员想要的任何含义。所以你永远不可能有每个人都同意的定义。
要添加到@Zac67 的答案,术语链接可以有很多定义,具体取决于上下文。链接可以是物理连接——两个设备之间的电缆,也可以是逻辑或抽象概念:如数据库和遥测模块之间的链接。
设备的含义也取决于上下文。从计算机操作系统的角度来看,外围设备(网络接口、存储、输入/输出)是设备。从更大的角度来看,设备是连接到网络的系统。
软件工程师使用设备的方式可能与网络工程师不同。你只需要了解上下文。
不要陷入 iproute2 文档的陷阱。链接、界面和设备对不同环境中的不同人都有不同的含义。在ip link的情况下,它指的是内核定义的网络设备(“netdev”)——它可能是物理的,如 eth0,也可能是逻辑的,如 dummy0 或 eth0.10 / vlan10@eth0。在这种情况下,链接、接口和设备都是一样的。他们只是为命令选择了链接这个词。(它必须是某种东西,并且使用dev会产生关键字使用冲突...... ip dev bond0 set dev eth0 master ;-) )
对于ip addr命令,由于历史原因,他们坚持使用dev 。(这就是它被称为 eons 的东西。去看看 80 年代 SunOS 的文档。)你可以在一个“netdev”上拥有多个地址,进一步混淆了链接/接口/设备领域——linux 取消了eth0: 1 eth0:2别名构造很久以前。
作为一名网络工程师,这三个词对我来说确实意味着不同的东西。
IP 地址分配给接口(物理或虚拟)。未编号的点对点接口可以在没有自己的 IP 地址的情况下工作(例如,简单的串行接口)。此外,只有第 3 层接口可以使用 IP 地址。
像主机或路由器这样的第 3 层设备可能有多个接口,需要多个 IP 地址。交换机或中继器等低层设备的基本功能不使用 IP 地址。请注意,“设备”也可以用于几乎任何技术组件。它也可以很好地指代 Linux 硬件管理意义上的设备。
链路是两个物理层接口之间的活动连接。在过时的 10BASE5 等总线网络上,可以“链接”两个以上的接口。
在特殊情况下,这些术语可能有其他含义,但以上是本质。
请注意,实现细节和主机配置在这里是明确的题外话。