网络接口
IfConfig 命令是 Interface Config 的缩写,Interface 指的是 Network Interface 网络接口。这是 Linux 中的一个概念,它的本质是对于网卡设备的抽象。一个以太网卡或者无线网卡可以是一个网络接口,一个回环设备或者虚拟网卡同样可以是一个网络接口。
网络接口的属性包括以下内容:
- 接口名称:这是用来标识网络接口的名称,如 eth0, wlan0, ens33 等。
- IP 地址:这是网络接口的 IP 地址,可以是 IPv4 或者 IPv6 地址,通常由网络管理员分配。
- 子网掩码:它用来确定 IP 地址的哪一部分属于网络地址,哪一部分属于主机地址。
- 广播地址:这个地址用来发送广播数据包。一个网络设备发送的广播数据包将会送到同一网络的所有设备。
- MAC 地址:也称为物理地址,它是每个网络接口唯一的硬件标识。
- MTU:最大传输单位。它决定了该网络接口一次能够发送的最大数据包大小。
- 是否启用:表示网络接口是否启用。
- 路由:决定网络接口如何将数据包路由到其他网络。
这里需要区分一下网络接口(Interface)和端口(Port)的区别:端口是 TCP/IP 网络中用于区分不同应用程序或进程的通信通道。一个 IP 地址和端口号的组合就构成了套接字(socket),每个套接字都对应一个特定的网络连接。
在 OSI 网络模型中,网络接口处于较低的物理层和数据链路层,而端口则处于更高的传输层。同一个网络接口上可以有多个活跃的端口,一般每个 TCP 或 UDP 连接都会有一个唯一的端口。
IfConfig
IfConfig 就是一个用于配置和显示网络接口的命令行工具,我们用如下命令来展示网络接口属性
# 显示启用的接口
ifconfig
# 显示全部接口
ifconfig -a
用如下命令配置接口
# 启用或者关闭接口
ifconfig <interface_name> up/down
# 配置接口 IP
ifconfig <interface_name> <ip_address>
IP
似乎 ifconfig 命令已经逐渐被淘汰了,它的继任者是 ip 命令,我并不是很熟悉。据说因为它使用的是 Netlink
套接字,而不是 ioctl
系统调用,所以更先进。
如果希望展示网络接口,可以用:
ip addr show
如果希望启用或者关闭接口
ip link set interface up|down