- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一台笔记本电脑,它使用一个或多个网络适配器连接到我所在组织的网络。我正在尝试编写一个工具来持续监控每个网络的连接状态和连接质量。然而,我的网络知识有限,术语让我感到困惑。
专门查找所有网络适配器。有人建议我使用命令 ifconfig
,它给了我所谓的“接口(interface)标识符”。
例如:
['lo0', 'gif0', 'stf0', 'en0', 'en1', 'en2', 'bridge0', 'p2p0']
我不太确定这如何帮助我解决我的问题,因为我不知道什么是接口(interface)标识符,也不确定如何利用这些信息。我的假设是它们代表网络中的计算机或路由器。
如果有人可以解决这个问题或用通俗易懂的方式向我解释,那将非常有帮助。
最佳答案
首先,您需要了解计算机中可能存在物理网卡(OR/AND 逻辑网络适配器)来识别连接/管理连接。
Next, you have an incorrect notion about interface identifier. What you talked about(eth,virbr,lo) are interfaces. In IPv4 addressing scheme, we don't have interface ID. We have interface ID's in IPv6 addresses.
如 The Payoff of IPv6’s Very Large Address Size 中所述
在 IPv4 中,IP 地址与用于基础数据链路层网络技术的地址没有关系。使用以太网网络接口(interface)卡 (NIC) 连接到 TCP/IP 网络的主机具有以太网 MAC 地址和 IP 地址,但这两个数字完全不同且毫无关联。
随着 IPv6 中寻址的彻底改革,创造更好的映射 IP 单播地址和物理网络地址的方法的机会出现了。实现这种卓越的映射技术是 IPv6 地址变得如此之大的原因之一。总共 128 位,即使为网络前缀保留了完整的 48 位,为站点子网保留了 16 位,我们仍然有 64 位用于接口(interface)标识符,这类似于 IPv4 下的主机 ID。
拥有如此多的数据位给了我们极大的灵 active 。我们可以将接口(interface) ID 基于底层数据链路层硬件地址,而不是使用任意“虚构”的主机标识符,只要该地址的长度不超过 64 位即可。由于几乎所有设备都使用 64 位或更少的第二层地址,因此使用这些地址作为 IP 地址中的接口(interface)标识符没有问题。这提供了直接的好处:它使网络更易于管理,因为我们不必为每个主机记录两个任意数字。 IP 地址可以从 MAC 地址和网络标识符中导出。这也意味着我们将来可以根据 MAC 地址区分 IP 地址,反之亦然。
访问this link以便更清楚地了解接口(interface) ID。
现在,回来澄清你的困惑,
所有连接(接口(interface)),例如 Ethernet-0、Ethernet-1、WiFi-1 等。有自己的接口(interface)标识符
。您可以将它们视为一种特殊的标识号,用于标识当时可用的接口(interface)类型!
当您在 Linux 中键入 ifconfig
时,它会显示当前事件接口(interface)的状态。
现在,进入示例部分,假设您的系统上有两个以太网连接,例如,eth0
和 eth1
(这些是接口(interface)名称)---所以 ifconfig 将打印这两个作为输出的结果!
So,to identify these two separate interfaces,there must be an
interface identifier
.The interface identifier(generally 64-bit) is either automatically generated from the interface's MAC address using the modified EUI-64 format, obtained from a DHCPv6 server, automatically established randomly, or assigned manually.
此外,您提到的接口(interface)是一些最常用的接口(interface):-
'lo0', 'gif0', 'stf0', 'en0', 'en1', 'en2', 'bridge0', 'p2p0'
lo0
---本地网络连接(0为第一个局域网连接)en0
---以太网连接(0,1,2 表示以太网上的第一个、第二个和第三个连接)bridge0
---到这台机器的桥接p2p0
---点对点连接不知道gif
,stf
。请注意这里有逻辑连接/虚拟连接,而不是物理连接的限制(使用网卡)!
关于linux - 什么是接口(interface)标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24962329/
C++ Primer 说: The identifier we define in our programs may not contain 2 consecutive underscores, no
标识符术语在文档 alongside constants 中定义。 , 使用几乎相同的用例,尽管术语在运行时计算它们的值,而常量在编译时得到它。潜在地,这可能会使术语使用全局变量,但这是一个遥远而丑陋
我想知道,.Net 标识符中接受哪些字符? 不是 C# 或 VB.Net,而是 CLR。 我问这个的原因是我正在查看 yield return 语句是如何实现的 (C# In Depth),并看到
在PowerShell中,当我专门使用Active Directory时,通常会编译一个包含一组人群列表的对象,通常使用$x = get-adgroup -filter {name -like "*"
使用 hibernate 时: 我必须为每个实体指定一个 ID 或复合 ID,如果我想使用没有任何主键且没有复合键的表怎么办... 提前致谢 最佳答案 没有键的表不是一个好的关系模型。我不会推荐它。
所以我有一些代码正在尝试编译,但我不断收到此错误: 3SATSolver.java:3: expected 这是代码。我只是没有看到什么吗? import java.util.ArrayList;
我正在寻找有关 C 标准(C99 和/或 C11)部分内容的一些说明,主要是关于标识符的使用。 上下文是一个完整的C99标准库的实现,我希望它完全符合标准。 基本问题是:C 标准允许我在多大程度上声明
我有这个 Shader.h 文件,我正在用这段代码制作它: #include #include #include #include in vec2 TexCoords; out vec4 co
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
这是我的代码: #include "stdafx.h" #include #include #include #include using namespace std; int _tmain(
pthread_create() 的第一个参数是一个thread 对象,用于标识新创建的线程。但是,我不确定我是否完全理解其中的含义。 例如,我正在编写一个简单的聊天服务器并且我计划使用线程。线程会随
我想从我的标识符中获得匹配项。 我在 {/describe:foo} 中有一个这样的字符串,我正在尝试匹配 {/describe:} 以返回 foo,但我没有得到正确的正则表达式,会有人介意指出我做错
我遇到了一个奇怪的问题,我似乎找不到答案,但我想我不妨问问。 我有一个执行碰撞检查的抽象类,它有一个“更新”函数,以及“updateX”和“updateY”函数。 class MapCollidabl
我正在尝试创建一个程序来将所有文件从一个目录复制到另一个目录。但我遇到了一个基本问题。它说当我尝试在第 52 行编译时需要标识符。 public bool RecursiveCopy() {
1>cb.c(51): error C2061: syntax error : identifier 'SaveConfiguration' 1>cb.c(51): error C2059: synt
我刚刚发现命名变量 arguments 是个坏主意。 var arguments = 5; (function () { console.log(arguments); })(); Outpu
我们对我们的网站进行了安全测试,并发现了一个漏洞。 问题 If the session identifier were known by an attacker who had access to t
为了估计程序在一次内核启动中可以处理多少数据,我尝试使用 cudaMemGetInfo() 获取一些内存信息。但是,编译器告诉我: 错误:标识符“cudaMemGetInfo”未定义 cudaGetD
我发现我需要使用 xpath 查询来定位几乎是 regexp 类型的字符串,但无法看到如何管理它。我正在使用的当前查询是: $result = $xpath->query('//ul/li[sta
我正在创建我的学生计划表的虚拟版本,它基本上可以让你记下你有哪些科目的作业。 这是界面: 用户从组合框中选择主题,并在相邻的备忘录中输入一些注释。完成后,他们将单击“保存”按钮,将其保存到 .ini
我是一名优秀的程序员,十分优秀!