网络操作
ping
ping
命令用于测试网络连接的连通性和响应时间。它通过向目标主机发送 ICMP 回显请求(echo request)数据包,并等待回显应答(echo reply),来确定目标主机是否可达以及网络的延迟情况。ping
命令在网络故障排除和诊断中非常有用。
ping [选项] 目标主机
常用选项
- -c count:指定发送的数据包数量。
- -i interval:指定发送每个数据包的间隔时间(秒)。
- -w deadline:设置超时时间,指定
ping
命令在发送完成后等待的秒数。 - -s packetsize:指定每个数据包的大小(字节)。
- -t ttl:设置 IP 数据包的存活时间(TTL)。
- -q:安静输出,仅显示开始和统计信息。
- -p pattern:设置填充数据包的十六进制数。
- -D:在输出中显示时间戳。
- -4:使用 IPv4。
- -6:使用 IPv6。
使用示例
代码语言:javascript复制ping google.com
PING google.com (172.217.17.142) 56(84) bytes of data.
64 bytes from sfo03s17-in-f14.1e100.net (172.217.17.142): icmp_seq=1 ttl=54 time=14.8 ms
64 bytes from sfo03s17-in-f14.1e100.net (172.217.17.142): icmp_seq=2 ttl=54 time=14.7 ms
64 bytes from sfo03s17-in-f14.1e100.net (172.217.17.142): icmp_seq=3 ttl=54 time=14.7 ms
--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 14.707/14.767/14.814/0.156 ms
解释
-
- PING google.com (172.217.17.142) 56(84) bytes of data.
- PING:表示
ping
命令正在测试到google.com
的连接。 - google.com (172.217.17.142):目标主机
google.com
的 IP 地址是172.217.17.142
。 - 56(84) bytes of data:每个 ICMP 数据包包含 56 字节的数据,外加 28 字节的 ICMP 标头,总共 84 字节。
- PING:表示
- PING google.com (172.217.17.142) 56(84) bytes of data.
- 64 bytes from sfo03s17-in-f14.1e100.net (172.217.17.142): icmp_seq=1 ttl=54 time=14.8 ms
- 64 bytes:从目标主机接收到的回显应答数据包的大小为 64 字节。
- from sfo03s17-in-f14.1e100.net (172.217.17.142):数据包来自主机
sfo03s17-in-f14.1e100.net
,IP 地址为172.217.17.142
。 - icmp_seq=1:这是第一个 ICMP 回显请求的序列号。
- ttl=54:数据包的存活时间(TTL,Time to Live)为 54,表示数据包在网络中最多可以经过 54 个路由器。
- time=14.8 ms:从发送请求到接收到应答的往返时间为 14.8 毫秒。
- 其余几行
- 类似于上面的解释,分别显示了第 2、3、4 个 ICMP 回显请求的应答情况,包括数据包大小、来源、序列号、TTL 和往返时间。
- — google.com ping statistics —
- 表示
ping
测试的统计信息部分。
- 4 packets transmitted, 4 received, 0% packet loss, time 3002ms
- 4 packets transmitted:共发送了 4 个 ICMP 回显请求数据包。
- 4 received:共接收到 4 个 ICMP 回显应答数据包。
- 0% packet loss:没有数据包丢失,丢包率为 0%。
- time 3002ms:整个测试过程持续了 3002 毫秒。
- rtt min/avg/max/mdev = 14.707/14.767/14.814/0.156 ms
rtt:往返时间(Round-Trip Time)。 min:最短往返时间为 14.707 毫秒。 avg:平均往返时间为 14.767 毫秒。 max:最长往返时间为 14.814 毫秒。 mdev:往返时间的均方根偏差(mean deviation)为 0.156 毫秒,表示往返时间的波动范围。
ifconfig
ifconfig
命令用于配置和显示网络接口的参数。它可以用于查看网络接口的当前配置、启用或禁用网络接口、配置 IP 地址、子网掩码等。虽然 ifconfig
仍然在很多系统中使用,但在一些现代 Linux 发行版中,它已被 ip
命令取代。
ifconfig [接口] [选项]
常用选项
- [接口]:指定网络接口的名称(如
eth0
、wlan0
)。 - up:启用指定的网络接口。
- down:禁用指定的网络接口。
- inet addr:设置 IP 地址。
- netmask:设置子网掩码。
- broadcast:设置广播地址。
- mtu:设置最大传输单元(MTU)。
- promisc:启用混杂模式。
- -a:显示所有网络接口的详细信息,包括未启用的接口。
示例
代码语言:javascript复制ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:68:8C:9D
inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe68:8c9d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:251482 errors:0 dropped:0 overruns:0 frame:0
TX packets:187514 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:295234209 (295.2 MB) TX bytes:25118490 (25.1 MB)
Interrupt:19 Base address:0x2024
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:2200 errors:0 dropped:0 overruns:0 frame:0
TX packets:2200 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:188800 (188.8 KB) TX bytes:188800 (188.8 KB)
解释
eth0
接口
- eth0:网络接口的名称。
- Link encap:链路封装类型为以太网。
- HWaddr 00:0C:29:68:8C:9D:MAC 地址为
00:0C:29:68:8C:9D
。 - inet addr:192.168.1.10:IPv4 地址为
192.168.1.10
。 - Bcast:192.168.1.255:广播地址为
192.168.1.255
。 - Mask:255.255.255.0:子网掩码为
255.255.255.0
。 - inet6 addr: fe80::20c:29ff:fe68:8c9d/64 Scope IPv6 地址为 :fe80::20c:29ff:fe68:8c9d ,前缀长度为 64,作用域为链路本地(Link)。
- UP BROADCAST RUNNING MULTICAST:接口状态标志:
- UP:接口已启用。 BROADCAST:接口支持广播。 RUNNING:接口正在运行。 MULTICAST:接口支持多播。
- MTU:1500:最大传输单元(MTU)为
1500
字节。 - Metric:1:路由度量值为
1
。 - RX packets:251482:接收到的总数据包数为
251482
。- errors:0:接收时发生的错误数为
0
。 - dropped:0:丢弃的数据包数为
0
。 - overruns:0:接收时发生的超限数为
0
。 - frame:0:帧错误数为
0
。
- errors:0:接收时发生的错误数为
- TX packets:187514:发送的总数据包数为
187514
。- errors:0:发送时发生的错误数为
0
。 - dropped:0:丢弃的数据包数为
0
。 - overruns:0:发送时发生的超限数为
0
。 - carrier:0:载波错误数为
0
。
- errors:0:发送时发生的错误数为
- collisions:0:碰撞次数为
0
。 - txqueuelen:1000:发送队列长度为
1000
。 - RX bytes:295234209 (295.2 MB):接收到的总字节数为
295234209
字节(约295.2 MB
)。 - TX bytes:25118490 (25.1 MB):发送的总字节数为
25118490
字节(约25.1 MB
)。 - Interrupt:19:中断号为
19
。 - Base address:0x2024:基地址为
0x2024
。
lo
接口(本地回环接口)
- lo:网络接口的名称(本地回环接口)。
- Link encap:Loopback:链路封装类型为本地回环。
- inet addr:127.0.0.1:IPv4 地址为
127.0.0.1
(回环地址)。 - Mask:255.0.0.0:子网掩码为
255.0.0.0
。 - inet6 addr: ::1/128 Scope:IPv6 地址为 ::1,前缀长度为 128,作用域为主机(Host)。
- UP LOOPBACK RUNNING:接口状态标志:
- UP:接口已启用。
- LOOPBACK:接口为本地回环。
- RUNNING:接口正在运行。
- MTU:65536:最大传输单元(MTU)为
65536
字节。 - Metric:1:路由度量值为
1
。 - RX packets:2200:接收到的总数据包数为
2200
。- errors:0:接收时发生的错误数为
0
。 - dropped:0:丢弃的数据包数为
0
。 - overruns:0:接收时发生的超限数为
0
。 - frame:0:帧错误数为
0
。
- errors:0:接收时发生的错误数为
- TX packets:2200:发送的总数据包数为
2200
。- errors:0:发送时发生的错误数为
0
。 - dropped:0:丢弃的数据包数为
0
。 - overruns:0:发送时发生的超限数为
0
。 - carrier:0:载波错误数为
0
。
- errors:0:发送时发生的错误数为
- collisions:0:碰撞次数为
0
。 - txqueuelen:1:发送队列长度为
1
。 - RX bytes:188800 (188.8 KB):接收到的总字节数为
188800
字节(约188.8 KB
)。 - TX bytes:188800 (188.8 KB):发送的总字节数为
188800
字节(约188.8 KB
)。
总结
- eth0 接口表示实际的以太网网络接口,显示了它的 IP 地址、MAC 地址、接收和发送的数据包数、数据量等详细信息。
- lo 接口表示本地回环接口,通常用于主机内部通信,显示了它的 IP 地址、接收和发送的数据包数、数据量等信息。
ip
ip
命令是 ifconfig
命令的现代替代品,用于显示和操作 Linux 网络接口。它提供了比 ifconfig
更强大的功能,并且在很多现代 Linux 发行版中推荐使用。ip
命令是 iproute2
软件包的一部分。
ip [选项] 对象 命令
- 对象:指定要操作的网络对象,如
link
、addr
、route
等。 - 命令:指定要执行的操作,如
show
、add
、del
等。
常用选项和命令
代码语言:javascript复制ip link show//查看网络接口
//输出
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:68:8c:9d brd ff:ff:ff:ff:ff:ff
1: lo:这是本地回环接口(lo)。
<LOOPBACK,UP,LOWER_UP>:接口的状态标志,表示它是一个回环接口并且已启用。
mtu 65536:最大传输单元(MTU)为 65536 字节。
link/loopback:表示这是一个回环链路,MAC 地址为 00:00:00:00:00:00。
2: eth0:这是以太网接口(eth0)。
<BROADCAST,MULTICAST,UP,LOWER_UP>:接口的状态标志,表示它支持广播、多播并且已启用。
mtu 1500:最大传输单元(MTU)为 1500 字节。
link/ether:表示这是一个以太网链路,MAC 地址为 00:0c:29:68:8c:9d。
//启用/禁用网络接口
ip link set dev eth0 up
ip link set dev eth0 down
//查看和配置 IP 地址
ip addr show
ip addr add 192.168.1.10/24 dev eth0
ip addr del 192.168.1.10/24 dev eth0
//查看和配置路由
ip route show
ip route add default via 192.168.1.1
ip route del default via 192.168.1.1
//查看和配置邻居表(ARP 表)
ip neigh show
ip neigh add 192.168.1.20 lladdr 00:11:22:33:44:55 dev eth0
ip neigh del 192.168.1.20 dev eth0
netstat
netstat
命令用于显示与网络相关的各种信息,如网络连接、路由表、接口统计、伪装连接(masquerade connections)等。它是一个强大的网络诊断和调试工具。
netstat [选项]
常用选项
- -a:显示所有连接和监听端口。
- -t:显示 TCP 连接。
- -u:显示 UDP 连接。
- -n:以数字形式显示地址和端口号。
- -l:显示监听状态的套接字。
- -p:显示使用套接字的进程及其 PID。
- -r:显示路由表。
- -i:显示网络接口。
- -s:显示网络统计信息。
示例输出解释
代码语言:javascript复制//显示所有连接和监听端口
netstat -a
//输出
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/apache2
tcp 0 0 192.168.1.10:22 192.168.1.100:50234 ESTABLISHED 5678/sshd
udp 0 0 0.0.0.0:68 0.0.0.0:* -
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node PID/Program name Path
unix 2 [ ACC ] STREAM LISTENING 12345 6789/systemd /run/systemd/private
//解释
Active Internet connections (servers and established):显示活动的互联网连接(包括服务器和已建立的连接)。
Proto:协议类型(如 TCP 或 UDP)。
Recv-Q:接收队列长度。
Send-Q:发送队列长度。
Local Address:本地地址和端口号。
Foreign Address:远程地址和端口号。
State:连接状态(如 LISTEN、ESTABLISHED)。
PID/Program name:使用该连接的进程 ID 和程序名称(如果使用了 -p 选项)。
Active UNIX domain sockets (servers and established):显示活动的 UNIX 域套接字(包括服务器和已建立的连接)。
Proto:协议类型(如 UNIX)。
RefCnt:引用计数。
Flags:标志(如 ACC 表示套接字正在接受连接)。
Type:套接字类型(如 STREAM)。
State:连接状态(如 LISTENING)。
I-Node:I-Node 编号。
PID/Program name:使用该连接的进程 ID 和程序名称。
Path:套接字路径。
curl
curl
是一个命令行工具,用于从或向服务器传输数据。它支持多种协议,包括 HTTP、HTTPS、FTP、SFTP 等。curl
是网络开发和调试的一个强大工具,适用于下载文件、测试 API 等多种任务。
curl [选项] [URL]
常用选项
- -o [文件名]:将输出保存到指定的文件。
- -O:将输出保存到文件,使用 URL 中的文件名。
- -L:跟随重定向。
- -I:获取 HTTP 头信息。
- -X [请求方法]:指定 HTTP 请求方法(例如 GET、POST、PUT、DELETE 等)。
- -d [数据]:发送指定的数据,常用于 POST 请求。
- -H [头信息]:设置请求头信息。
- -u [用户信息]:设置用户名和密码进行服务器认证。
- -k:允许不安全的 SSL 连接和跳过 SSL 证书验证。
示例输出及解释
代码语言:javascript复制//获取网页内容
curl http://example.com
//输出
<!doctype html>
<html>
<head>
<title>Example Domain</title>
<meta charset="utf-8" />
...
</head>
<body>
<div>
<h1>Example Domain</h1>
...
</div>
</body>
</html>
//解释 此命令将 URL http://example.com 的 HTML 内容打印到终端。
//发送 POST 请求
curl -X POST -d "param1=value1¶m2=value2" http://example.com/resource
//输出
{
"status": "success",
"param1": "value1",
"param2": "value2"
}
//解释
此命令向指定 URL 发送一个 POST 请求,包含参数 param1 和 param2,并打印服务器响应的 JSON 数据。
wget
wget
是一个用于从 Web 下载文件的命令行工具。它支持 HTTP、HTTPS 和 FTP 协议,并且可以在网络中断时继续下载。wget
是一个功能强大且灵活的下载工具,适用于脚本化和批量下载任务。
wget [选项] [URL]
常用选项
- -O [文件名]:将下载的文件保存为指定的文件名。
- -c:继续未完成的下载任务。
- -b:后台下载模式。
- -q:静默模式(不输出信息)。
- -P [目录]:将下载的文件保存到指定目录。
- -r:递归下载。
- -l [层级]:设置递归下载的层级深度。
- -k:将下载后的 HTML 文件中的链接转换为本地链接。
- -A [扩展名列表]:下载具有指定扩展名的文件。
- -R [扩展名列表]:排除具有指定扩展名的文件。
- –limit-rate=[速度]:限制下载速度。
示例输出解释
代码语言:javascript复制//下载文件
wget http://example.com/file.zip
//输出示例:
--2024-05-30 08:30:00-- http://example.com/file.zip
Resolving example.com (example.com)... 93.184.216.34
Connecting to example.com (example.com)|93.184.216.34|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1234567 (1.2M) [application/zip]
Saving to: ‘file.zip’
file.zip 100%[===================>] 1.18M 1.02MB/s in 1.2s
2024-05-30 08:30:02 (1.02 MB/s) - ‘file.zip’ saved [1234567/1234567]
//解释
Resolving example.com:解析域名 example.com。
Connecting to example.com:连接到 example.com 的 IP 地址。
HTTP request sent, awaiting response... 200 OK:发送 HTTP 请求并收到 200 OK 响应。
Length:文件长度和类型。
Saving to:将文件保存为 file.zip。
Progress:下载进度。
Speed:下载速度。
Time:下载所用时间。