Logo
Section 1 / 13

获取我们的连接信息

学习如何获取我们的连接信息。

导入

获取我们的连接信息

学习如何获取我们的连接信息。

每台连接到互联网或TCP/IP网络的计算机都有一个IP地址。我们可以通过多种命令行方法来确定自己的IP地址。

ifconfig 命令

ifconfig 是一个传统的命令,用于显示网络设备的信息。尽管现在已有更新的工具可用,但我们仍从这个命令开始学习,因为它在Mac和Linux系统上普遍可用。在Ubuntu 18.04上,我们需要安装 net-tools 包才能使用它:

1sudo apt install net-tools

安装完成后,运行 ifconfig:

1ifconfig
Terminal

屏幕上会显示大量输出,开头部分如下所示:

...
本地终端中 'ifconfig' 命令的输出

网络信息

ifconfig 命令会显示计算机上每个网络适配器的信息及其连接详情。每个适配器都有一个名称,例如 en0、eth0,或者本例中的 enp0s3。

该命令还会显示每个适配器的IPv4地址(由 inet 字段表示)、子网掩码(netmask)以及广播地址。同时也会显示与每个适配器关联的IPv6地址(由 inet6 字段表示)。

ether 字段显示的是网络硬件的MAC地址。这串十六进制字符唯一标识了一个网络设备。

不同计算机上的适配器名称和数量可能不同,但总会有一个本地回环设备的条目,其IPv4地址为 127.0.0.1:

...
本地终端中 'ifconfig' 命令提供的网络信息

这是一个虚拟网络设备,用于机器与自身通信。当Wi-Fi断开、网线拔掉或身处飞机上时,这个设备让本地服务之间仍能相互通信。当我们运行开发服务器并访问 localhost 时,实际上就是使用了这个回环设备。

如果我们配置了其他网络适配器,比如之前在配置网络中设置的VirtualBox主机仅适配器,也会看到类似的内容:

...
虚拟网络适配器中 'ifconfig' 命令的输出

ifconfig 命令会列出系统中所有适配器。我们也可以通过提供适配器名称作为参数,来只查看特定适配器的信息。例如,要查看 enp0s8 适配器,只需运行命令 ifconfig enp0s8。

学会阅读 ifconfig 的输出非常重要,因为虽然其他工具能提供更清晰的信息,但它们可能并未安装或不适用于我们的平台。

IP地址

再次查看 ifconfig 命令输出的前几行:

...
虚拟网络适配器中 'ifconfig' 命令的输出片段

在此例中,enp0s3 适配器对应的IPv4地址是 10.0.2.15。这不是一个可公开访问的IP地址。仅从IP地址本身就能判断出这台计算机位于某个路由器之后。如何判断?IP地址被划分为不同的范围,其中一些范围专门保留用于特定用途。

  • 地址范围 127.0.0.0 到 127.255.255.255 专用于本地回环设备。
  • 地址范围 10.0.0.0 到 10.255.255.255、172.16.0.0 到 172.31.255.255,以及 192.168.0.0 到 192.168.255.255 均保留用于私有网络内部通信。
  • 地址范围 169.254.0.0 到 169.254.255.255 用于在无法自动分配IP地址时,主机之间的通信。这表明计算机未能从网络获取有效的IP地址。

大多数路由器会为计算机分配以 192.168 或 10 开头的IPv4地址。路由器使用网络地址转换(NAT)技术,将一个外部IPv4地址共享给多台计算机。由于IPv4地址资源有限,通过NAT让多台设备共用一个公网IP,是满足需求的一种方式。

但这使得我们在尝试让外部网络用户连接到自己时,难以找到真实的公网IP地址。要获取公网IP地址,需要借助外部服务。

正如我们在使用别名和函数创建快捷方式中所见,可以使用以下命令从命令行获取公网IPv4地址:

1curl icanhazip.com
Terminal

该命令使用 curl 向 http://icanhazip.com 发起请求,返回当前的IP地址。我们将在后续课程中深入学习 curl 命令。

ifconfig 命令在技术上已被弃用,多年未更新。许多Linux系统提供了功能更强、输出格式不同的 ip 命令:

1ip addr show
Terminal

该命令显示的信息与 ifconfig 类似,但格式略有不同。例如,它使用CIDR表示法显示IPv4地址。CIDR(无类别域间路由)是一种分配IPv4地址的方法,能减少浪费。在CIDR出现之前,IP地址按类别分配,决定了每个网络可容纳的主机数量。组织必须购买整个类别的地址块,这种分类方式导致大量已分配却从未使用的IP地址。CIDR解决了这一问题。

在此例中,ip 命令显示的IPv4地址为 10.0.2.15/24。其中 10.0.2.15 是IP地址本身,/24 表示子网掩码由24位组成,即 255.255.255.0,这与我们之前使用 ifconfig 查看的结果一致。由此可知,所有以 10.0.2. 开头的IP地址都属于同一网络。

虽然 ifconfig 命令通用,但已被弃用,且不支持CIDR格式。然而,由于 ip 命令并非在所有系统上都可用,因此熟练掌握 ip 和 ifconfig 两种工具是非常有用的。

运行和管理程序

查找域名相关信息