【Linux网络】网络命令

文章目录

  • [1. Ping 命令 - 测试网络连通性](#1. Ping 命令 - 测试网络连通性)
  • [2. traceroute / tracepath - 追踪数据包路径](#2. traceroute / tracepath - 追踪数据包路径)
  • [3. netstat / ss - 查看网络连接、路由表、接口统计](#3. netstat / ss - 查看网络连接、路由表、接口统计)
  • [4. ip - 强大的网络接口配置工具](#4. ip - 强大的网络接口配置工具)
  • [5. dig / nslookup - DNS 查询](#5. dig / nslookup - DNS 查询)
  • [6. curl - 数据传输工具](#6. curl - 数据传输工具)
  • [7. wget - 非交互式网络下载器](#7. wget - 非交互式网络下载器)
  • [8. nc (netcat) - 瑞士军刀](#8. nc (netcat) - 瑞士军刀)
  • [9. telnet - 检查远程端口连通性](#9. telnet - 检查远程端口连通性)
  • [10. arp - 查看 ARP 缓存](#10. arp - 查看 ARP 缓存)
  • [11. pidof](#11. pidof)

1. Ping 命令 - 测试网络连通性

  • 工作层级: 网络层

  • 功能: 向目标主机发送 ICMP Echo Request 数据包,并等待回复。用于检查网络是否通畅、延迟和丢包率。

  • 原理: 利用 ICMP 协议。

示例:

bash 复制代码
ltx@iv-ye1i2elts0wh2yp1ahah:~$ ping www.baidu.com
PING www.a.shifen.com (182.61.200.110) 56(84) bytes of data.
64 bytes from 182.61.200.110 (182.61.200.110): icmp_seq=1 ttl=51 time=6.83 ms
64 bytes from 182.61.200.110 (182.61.200.110): icmp_seq=2 ttl=51 time=6.85 ms
64 bytes from 182.61.200.110 (182.61.200.110): icmp_seq=3 ttl=51 time=6.81 ms
64 bytes from 182.61.200.110 (182.61.200.110): icmp_seq=4 ttl=51 time=6.81 ms
64 bytes from 182.61.200.110 (182.61.200.110): icmp_seq=5 ttl=51 time=6.82 ms
^C
--- www.a.shifen.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 6.812/6.822/6.848/0.013 ms

输出解读

  • 64 bytes from ...: 收到回复包的大小和来源。

  • icmp_seq=1: 数据包的序列号,用于检测丢包。

  • ttl=51: 数据包的生存时间,每经过一个路由器减1,用于防止环路和粗略判断经过的路由器数量。

  • time=6.83 ms: 往返延迟。

这里我们直接ping的话会不断输出,但如果加个参数就可以指定输出次数

bash 复制代码
# 指定发送次数(Linux下默认会一直ping,用 -c 指定次数)
ping -c 4 www.baidu.com

# 指定时间间隔(秒)
ping -i 2 www.baidu.com

# 强制使用 IPv4 或 IPv6
ping -4 www.baidu.com
ping -6 www.baidu.com

# 快速 Ping(发送一个包)
ping -c 1 www.baidu.com

2. traceroute / tracepath - 追踪数据包路径

  • 工作层级: 网络层

  • 功能: 显示数据包从本机到目标主机所经过的所有路由节点。用于诊断网络在何处出现故障或延迟。

  • 原理: 利用 IP 数据包的 TTL 字段。它先发送一个 TTL=1 的包,第一个路由器将其 TTL 减为0并丢弃,同时发回一个 ICMP "超时"消息。这样就知道了第一个路由器的地址。然后依次增加 TTL,直到到达目标主机。

基本用法

bash 复制代码
ltx@iv-ye1i2elts0wh2yp1ahah:~$ traceroute www.baidu.com
traceroute to www.baidu.com (103.235.46.102), 30 hops max, 60 byte packets
 1  * * *
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  * * *
 7  * * *
 8  180.213.248.189 (180.213.248.189)  4.428 ms 180.213.248.249 (180.213.248.249)  3.788 ms 180.213.248.189 (180.213.248.189)  4.423 ms
 9  42.81.34.77 (42.81.34.77)  6.480 ms 219.150.38.73 (219.150.38.73)  3.768 ms 42.81.34.73 (42.81.34.73)  6.519 ms
10  * * 202.97.98.13 (202.97.98.13)  6.864 ms
11  202.97.61.214 (202.97.61.214)  7.937 ms 202.97.61.166 (202.97.61.166)  7.734 ms 202.97.61.222 (202.97.61.222)  7.412 ms
12  202.97.53.66 (202.97.53.66)  8.271 ms 202.97.97.169 (202.97.97.169)  7.989 ms 202.97.54.14 (202.97.54.14)  8.028 ms
13  * xe-1-5-0-1.a03.tokyjp05.jp.bb.gin.ntt.net (129.250.9.186)  99.439 ms  99.101 ms
14  * * *
15  ae-13.r28.tkokhk01.hk.bb.gin.ntt.net (129.250.2.51)  90.909 ms  94.022 ms *
16  ae-18.a00.chwahk03.hk.bb.gin.ntt.net (129.250.2.149)  93.514 ms ae-4.r29.tkokhk01.hk.bb.gin.ntt.net (129.250.2.43)  95.158 ms ae-23.a01.chwahk03.hk.bb.gin.ntt.net (129.250.2.189)  95.216 ms
17  203.131.246.190 (203.131.246.190)  221.899 ms 203.131.243.198 (203.131.243.198)  219.334 ms 203.131.246.190 (203.131.246.190)  222.949 ms
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *

输出解读: 每一行代表一个网络跃点。中间的 * * * 表示该节点没有响应(可能被防火墙过滤)。

其他用法

bash 复制代码
# 禁用IP地址反向域名解析(-n),加快显示速度
traceroute -n www.baidu.com

# 指定使用 UDP 协议(默认)或 ICMP(-I)
traceroute -I www.baidu.com

# tracepath 是 traceroute 的简单版,通常无需root权限
tracepath www.baidu.com

3. netstat / ss - 查看网络连接、路由表、接口统计

ss 是现代 Linux 系统推荐使用的工具,比 netstat 更快、更高效。

netstat (传统,但功能全面)

bash 复制代码
# 显示所有监听和非监听的 TCP 连接
netstat -tulnp

# 参数解释:
# -t : TCP 连接
# -u : UDP 连接
# -l : 仅显示监听状态的套接字
# -n : 以数字形式显示地址和端口(不进行DNS解析)
# -p : 显示使用该套接字的进程/程序名

# 显示路由表
netstat -rn

# 显示网络接口统计信息
netstat -i

ss (推荐,速度更快)

bash 复制代码
# 功能与 netstat -tulnp 类似
ss -tulnp

# 显示所有已建立的 TCP 连接
ss -t state established

# 显示所有处于 LISTEN 状态的连接
ss -l

# 显示所有连接到特定端口的连接(例如查看谁连接了22端口)
ss -t sport = :22

4. ip - 强大的网络接口配置工具

ip 命令已经取代了老旧的 ifconfig、route 等命令,功能非常强大。

bash 复制代码
# 显示所有网络接口的详细信息(类似 ifconfig)
ip addr show
# 简写
ip a

# 显示特定接口(如 eth0)的信息
ip addr show dev eth0

# 启用/禁用网络接口
ip link set eth0 up
ip link set eth0 down

# 为接口分配IP地址
ip addr add 192.168.1.100/24 dev eth0

# 删除接口的IP地址
ip addr del 192.168.1.100/24 dev eth0

# 显示路由表(类似 route -n)
ip route show
# 简写
ip r

# 添加静态路由
ip route add 192.168.2.0/24 via 192.168.1.1

# 删除静态路由
ip route del 192.168.2.0/24

# 显示邻居表(ARP表)
ip neighbor show

5. dig / nslookup - DNS 查询

dig 功能更强大,输出更详细,是 DNS 故障诊断的首选。

bash 复制代码
# 查询域名的 A 记录
dig google.com

# 查询指定记录类型(如 MX, NS)
dig google.com MX
dig google.com NS

# 指定使用特定的 DNS 服务器进行查询(如 8.8.8.8)
dig @8.8.8.8 google.com

# 只显示简短的答案
dig +short google.com

# 反向 DNS 查询(通过IP查域名)
dig -x 8.8.8.8

nslookup (交互式)

bash 复制代码
# 交互式模式
nslookup
> google.com
> set type=MX
> google.com
> exit

# 非交互式模式
nslookup google.com

6. curl - 数据传输工具

功能: 一个利用 URL 语法在命令行下工作的文件传输工具,支持非常多的协议(HTTP, HTTPS, FTP, SCP 等)。常用于测试 API、下载文件等。

bash 复制代码
# 获取网页内容并输出到终端
curl http://example.com

# 将输出保存到文件(-O 使用服务器上的文件名, -o 自定义文件名)
curl -O http://example.com/file.zip
curl -o myfile.zip http://example.com/file.zip

# 发送 HTTP 头信息(-I 或 --head)
curl -I http://example.com

# 发送 POST 请求(-X POST), 附带数据(-d)
curl -X POST http://api.example.com/users -d 'name=John&email=john@example.com'

# 设置 HTTP 头(-H)
curl -H 'Content-Type: application/json' -H 'Authorization: Bearer token' http://api.example.com

# 跟随重定向(-L)
curl -L http://example.com

7. wget - 非交互式网络下载器

功能: 主要用于从 web 上下载文件,支持递归下载(整个网站镜像)。

bash 复制代码
# 下载文件
wget http://example.com/file.iso

# 断点续传(-c)
wget -c http://example.com/big-file.iso

# 后台下载(-b)
wget -b http://example.com/big-file.iso

# 递归下载整个网站(谨慎使用!)
wget -r -l 10 -p -k http://example.com/
# -r: 递归
# -l 10: 递归深度为10层
# -p: 下载所有页面所需的资源(图片,CSS等)
# -k: 转换链接,便于本地浏览

8. nc (netcat) - 瑞士军刀

功能: 一个功能强大的网络工具,可以读写 TCP 和 UDP 连接。

bash 复制代码
# 端口扫描(-z 扫描, -v 详细信息)
nc -zv example.com 20-80

# 监听端口,模拟一个简单的服务器
nc -l 9999

# 在另一台机器上连接该端口,模拟客户端
nc 192.168.1.100 9999
# 之后,两台机器之间可以发送文本消息。

# 传输文件(接收端监听,输出到文件)
nc -l 9999 > received_file.txt
# 发送端发送文件
nc 192.168.1.100 9999 < file_to_send.txt

9. telnet - 检查远程端口连通性

注意: telnet 协议本身不安全,不应再用于远程登录。但它是一个极佳的 TCP 端口连通性测试工具。

bash 复制代码
# 测试目标主机的 80 端口是否开放
telnet google.com 80
# 如果连接成功,会进入一个空白界面,可以输入 HTTP 请求(如 GET / HTTP/1.1)来测试 Web 服务。
# 按 Ctrl+] 然后输入 'quit' 退出。

10. arp - 查看 ARP 缓存

工作层级: 链路层

功能: 显示和修改本地的 ARP 缓存表,该表用于映射 IP 地址到 MAC 地址。

bash 复制代码
# 显示 ARP 表
arp -a

# 以数字格式显示
arp -n

# 删除 ARP 缓存中的一条记录
arp -d 192.168.1.1

11. pidof

在查看服务器的进程id时非常方便.

语法:pidof 进程名

功能:通过进程名, 查看进程id

工作原理

pidof 通过扫描系统的 /proc 文件系统来工作。在 /proc 目录下,每一个以数字命名的子目录都代表一个正在运行的进程,目录名就是 PID。pidof 会检查这些目录中的 comm 或 cmdline 文件,与您提供的程序名进行匹配。

常用选项详解

选项 全称 作用
-s --single-shot 只返回一个 PID(对于多实例进程,仅返回一个)。
-c --check 仅返回具有相同根目录的进程的 PID。主要用于在 chroot 环境中。
-x --scripts 同时返回运行该 Shell 脚本的 Shell 进程的 PID。
-o --omit 排除指定的 PID。可以是一个 PID 或用逗号分隔的多个 PID。%PPID 是一个特殊值,表示排除 pidof 命令自身的父进程。
相关推荐
摇滚侠7 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush47 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5207 小时前
Linux 11 动态监控指令top
linux
网络研究院9 小时前
2026年网络安全
网络·安全·法律·法规·趋势·发展
酣大智9 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
treesforest9 小时前
AI安全系统如何识别异常访问?IP风险识别正在成为关键能力
网络·人工智能·tcp/ip·安全·web安全
不会C语言的男孩9 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
shushangyun_9 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
古城小栈9 小时前
Unix 与 Linux 异同小叙
linux·服务器·unix
2601_961845159 小时前
粉笔行测题库|系统班|刷题
网络·百度·微信·微信公众平台·facebook·新浪微博