【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 命令自身的父进程。
相关推荐
XUE-52113143 小时前
BGP实验-路由反射器
linux·运维·网络
安当加密3 小时前
CAS密钥管理系统在汽车行业的核心密钥管理实践——构建智能网联汽车的可信安全底座
网络·安全·汽车
upgrador3 小时前
Linux内核与设备管理:USB存储驱动usb_storage/uas的安全卸载与复原
linux·运维·安全
风为你而吹4 小时前
【玩泰山派】4、制作ubuntu镜像-(5)总结制作镜像流程
linux·ubuntu
tt5555555555554 小时前
Linux虚拟机固定IP超详细教程
linux·运维·tcp/ip
阑梦清川4 小时前
动静态库和编译链接简述
linux
拾光Ծ4 小时前
【Linux】入门指南:基础指令详解Part One
linux·运维·服务器·centos
egoist20234 小时前
[linux仓库]肝爆进程通信:匿名管道、命名管道、进程池核心原理与实战【万字长文】
linux·服务器·进程通信·匿名管道·命名管道·进程池
轻颂呀5 小时前
线程的概念和控制
linux