文章目录
- ping
- 基本用法
- 主要选项
- 常见用途和理解输出
- 注意事项
- ifconfig
- 基本用法
- 配置网络接口
- 示例
- 高级功能
- netstat
- 基本用法
- 常用选项
- 示例
- 注意事项
- wget
- 主要特点
- 基本用法
- 常见选项
- 示例
- 注意事项
- curl
- 主要特点
- 基本用法
- 常见选项
- 示例
- 注意事项
- 参考资料
- 在线文档和手册
- 图书
- 在线教程和指南
- 论坛和社区
ping
ping 是一种常见的网络工具,用于测试从运行 ping 命令的设备到网络另一端设备(可以是另一台计算机、网络路由器等)的连通性。它基于 ICMP(Internet Control Message Protocol,互联网控制消息协议)工作,发送 ICMP 回显请求消息给目的地址,并等待接收到回显回复消息。
基本用法
ping [选项] 目的地
其中,目的地 可以是 IP 地址或域名。例如:
ping 8.8.8.8(向 Google 的 DNS 服务器发送 ICMP 请求)
ping www.google.com(向 Google 的网站发送 ICMP 请求)
主要选项
-c count:发送指定数量的请求包然后停止。
-i interval:设置每次请求之间的间隔秒数。
-t ttl:设置 Time To Live 值(IP 数据包在网络中的生命周期)。
-s packetsize:设置每个数据包的大小(字节)。
-w deadline:设置 ping 超时时间,无论请求是否得到响应,都会在指定的时间后停止 ping 命令。
-q:安静输出,只显示摘要信息。
常见用途和理解输出
当你运行 ping 命令时,它将显示一系列的输出信息,每一行通常包括:
目的地 IP 地址,
ICMP 序列号,
TTL 值,
往返时间(RTT, Round-Trip Time)等信息。
示例输出
PING www.google.com (216.58.214.132): 56 data bytes
64 bytes from 216.58.214.132: icmp_seq=0 ttl=117 time=10.689 ms
64 bytes from 216.58.214.132: icmp_seq=1 ttl=117 time=14.639 ms
64 bytes from 216.58.214.132: icmp_seq=2 ttl=117 time=13.252 ms
解释
64 bytes:每个回复的数据大小。
from 216.58.214.132:响应的源 IP 地址。
icmp_seq=0:ICMP 请求的序列号。
ttl=117:数据包的生存时间(它经过的每个路由器会减一,直到为零时被丢弃,避免了在网络中无限循环)。
time=10.689 ms:数据包往返时间,可以作为网络延迟的一个指标。
注意事项
在某些网络环境或系统中,ICMP 请求可能会被防火墙或路由规则阻止,从而导致 ping 请求无响应。
有些设备可能配置为不响应 ICMP 请求,即使它们是在线和可访问的,所以 ping 不通不一定代表网络不通。
ping 是测试基本网络连通性的有用工具,但它不能提供关于网络质量的全面信息。进一步的网络性能分析可能需要其他工具,如 traceroute(跟踪路径)和 mtr。
ping 很有用于排除网络故障,检查网络的响应时间,并帮助诊断网络连接问题。它简单易用,是每个网络管理员和IT专业人员的必备工具之一。
ifconfig
ifconfig(interface configuration)是 Unix 和类 Unix 操作系统中一种传统的网络配置工具,用于配置、控制和查询 TCP/IP 网络接口参数的命令行工具。通过它可以设置接口的 IP 地址、子网掩码、广播地址等,并可以查看每个接口的统计数据,比如接收和发送的数据包数量、碰撞、掉包情况等。
随着 Linux 发行版的发展,许多最新版本已经将 ifconfig 命令标记为弃用(deprecated),并推荐使用 ip 命令来代替。然而,ifconfig 依然在许多旧系统和学习资源中被广泛使用。
基本用法
不带任何参数执行 ifconfig 将列出所有活动的网络接口及其配置:
ifconfig
配置网络接口
分配 IP 地址和子网掩码给网络接口:
ifconfig [接口名] [IP地址] netmask [子网掩码]
启用或关闭网络接口:
- 启用接口:
ifconfig [接口名] up - 关闭接口:
ifconfig [接口名] down - 设置广播地址:
ifconfig [接口名] broadcast [广播地址]
示例
- 查看所有接口的状态信息:
ifconfig -a
- 设置接口 eth0 的 IP 地址为 192.168.1.10 并设置子网掩码:
ifconfig eth0 192.168.1.10 netmask 255.255.255.0
- 启用网络接口 eth0:
ifconfig eth0 up
- 禁用网络接口 eth0:
ifconfig eth0 down
高级功能
除了基本的配置功能,ifconfig 还可以被用来执行更复杂的任务,如配置混杂模式(promiscuous mode,允许网卡接收所有经过其所在物理网络的数据包),查看多播成员资格等。
注意事项
由于 ifconfig 被视为弃用,一些最新的 Linux 发行版可能默认不包括这个命令,用户可能需要安装 net-tools 包来获取它。
ip 命令比 ifconfig 提供了更多的网络配置功能和更一致的语法。
如果可能,请熟悉和使用 ip 命令,这将确保在所有现代系统中的兼容性和最佳的网络管理实践。
尽管 ifconfig 不再是推荐使用的网络配置工具,但了解其功能和用法在处理老式系统时仍非常有用。对于习惯使用 ifconfig 的人来说,逐渐过渡到 ip 和其他现代工具也是一种顺应时代的选择。
netstat
netstat(Network Statistics)命令是一个非常有用的工具,用于在 Unix 和类 Unix 系统(包括 Linux、macOS 等)中监控和诊断网络系统的统计信息和配置。netstat 可以显示网络连接、路由表、接口统计、伪装连接和组播成员资格等信息。
基本用法
基本的 netstat 命令不带任何参数,将显示当前系统中的所有连接:
netstat
常用选项
-a 或 --all:显示所有选项,默认情况下不显示监听的服务器套接字。
-t 或 --tcp:显示 TCP 连接。
-u 或 --udp:显示 UDP 连接。
-n:以数字形式显示地址和端口号,不尝试解析名称(如主机、端口和用户名称)。
-l 或 --listening:显示监听中的服务端套接字。
-p 或 --program:显示每个连接或监听端口的进程 PID 及其名称。需要特定的权限(如 root)来查看非当前用户的进程。
-r 或 --route:显示路由表。
-i:显示网络接口列表。
示例
- 显示所有当前活跃的连接:
netstat -a
- 仅显示 TCP 连接:
netstat -t
- 仅显示正在监听的端口:
netstat -l
- 显示所有UDP连接:
netstat -u
- 以数字形式显示地址和端口,一起使用 -atn 或 -aun 查看 TCP 或 UDP 连接:
netstat -atn
- 显示每个活跃连接所属的进程ID和程序名称:
netstat -p
注意事项
netstat 命令可能在一些最新的 Linux 发行版中已经被弃用,而被推荐使用更现代的工具如 ss 与 ip 命令(作为 iproute2 包的一部分)替代。ss 命令特别用于显示套接字信息,它被认为是 netstat 的直接替代品。
尽管 netstat 在新版系统中可能不再默认提供,但仍然可以通过安装系统的 legacy 网络工具来使用它。
对于进行网络故障诊断和性能分析,熟悉 netstat 的选项和输出仍然非常有帮助。
netstat 提供了丰富的信息来帮助你理解和诊断你的网络。学习如何解释 netstat 的输出可以极大地提高解决网络问题的能力。尽管如此,了解和适应新工具(如 ss 和 ip),特别是在你的操作系统中推荐使用的工具,对于保持技能的更新和应对当前和未来的网络挑战也非常重要。
wget
wget 是一款广泛使用的、免费的、开源的命令行工具,用于从网络上下载文件。它支持 HTTP、HTTPS 和 FTP 协议,能够在下载过程中在断点处自动继续(支持断点续传),非常适合需要通过命令行自动化下载文件的场景,比如在脚本中下载资源或进行批量下载。
主要特点
- 支持多种协议:wget 支持 HTTP、HTTPS 和 FTP 协议,满足大多数网络下载需求。
- 断点续传:若下载过程中断,wget 能够从中断的地方重新开始下载,而无须重新下载已经接收的部分。
- 递归下载:wget 支持递归下载,能够镜像整个网站,保持网站的目录结构。
- 支持代理服务器:通过配置,wget 可以通过代理服务器进行下载。
基本用法
基础格式为:
wget [选项] [URL]
常见选项
-O 指定下载文件的保存名称。例如,wget -O example.html http://example.com,将下载的网页保存为 example.html。
-c 断点续传功能。如果因为网络问题或其他原因下载中断,使用这个选项可以继续之前的下载。
-r 或 --recursive 递归下载网页或网站,可以配合 -l(或 --level)选项指定递归的深度。
-l 或 --level 用来指定递归下载的深度。-l 0 表示无限递归下载。
–no-parent 在递归下载时不下载父目录中的文件,即只下载指定目录及其子目录中的内容。
-i 从文件读取多个 URL 进行批量下载。
–http-user=用户 和 --http-password=密码,在需要认证的网站上使用 HTTP 认证时提供用户名和密码。
示例
- 下载单个文件并保存为指定名称:
wget -O savedfile.html http://example.com/index.html
- 断点续传:
wget -c http://example.com/bigfile.zip
- 递归下载一个完整的网站:
wget -r -l 0 http://example.com/
- 从文件下载多个 URL:
wget -i urls.txt
- 使用 HTTP 认证下载文件:
wget --http-user=user --http-password=password http://example.com/protected/area
注意事项
在使用 wget 进行递归下载时,特别是当 -l 选项的值较大或为0(无限制)时,应该小心,因为这可能会下载大量数据并给网站服务器带来压力。
尊重网站的 robots.txt 文件和版权信息,不要下载非授权内容。
wget 是一个非常强大的下载工具,通过学习它的各种参数和选项,可以在很多情况下简化下载任务,或在脚本中自动化下载过程。
curl
curl 是一款强大的命令行工具,用于传输数据,它支持多种协议,包括 HTTP、HTTPS、FTP、FTPS、SCP、SFTP、TFTP、LDAP、LDAPS、DICT、FILE、TELNET 和更多。curl为开发者和系统管理员提供了一个简单而有效的方式来在终端或脚本中与各种服务器进行数据交换和API通信。
主要特点
- 多协议支持:curl 支持广泛的网络协议,使得它可以与许多不同的服务器和服务进行交互。
- 数据传输:curl 可以上传或下载数据,并具有从指定URL下载文件到本地的功能。
- 灵活性:通过命令行选项,curl提供非常灵活的方式来修改请求,包括请求方法、头部、体内容等,非常适合API测试和自动化脚本。
- 安全性:支持 SSL 证书,HTTP POST,HTTP PUT,FTP 上传等特性,还可以通过 SSL 对连接进行加密,保证数据传输的安全。
基本用法
基础格式为:
curl [选项] [URL...]
常见选项
-o 或 --output:将下载的内容保存到文件中,后面紧跟文件名。
-O:将下载的内容直接按照URL中的文件名保存到当前目录。
-X 或 --request:指定 HTTP 请求的方法(如 GET、POST、DELETE等)。
-H 或 --header:添加额外的 HTTP 请求头部。
-d 或 --data:发送到服务器的 HTTP POST 数据。
–data-urlencode:发送到服务器的 HTTP POST 数据并进行 URL 编码。
-u 或 --user:使用用户认证,格式例如 user:password。
-v 或 --verbose:提供更详细的操作信息,用于调试。
–insecure:允许 curl 访问未使用证书或使用自签名证书的 HTTPS 网站。
-F 或 --form:用于模拟 HTML 表单提交。
示例
- 下载文件:
curl -O https://example.com/file.zip
- 发送POST请求并提供数据:
curl -d "name=John&age=22" https://example.com/submit
- 使用自定义请求头部请求数据:
curl -H "X-My-Header: 123" https://example.com
- 使用基本身份验证:
curl -u username:password https://example.com
- 从指定的文件中上传数据:
curl -d @filename https://example.com/submit
- 提交表单数据:
curl -F "file=@path/to/local/file" https://example.com/upload
注意事项
当使用 curl 传输敏感信息,如密码等时,应避免在共用或不安全的网络中明文传输,及时采用 HTTPS 或其他安全措施来保护数据。
curl 的 -v 或 --verbose 选项对于排查网络通信问题非常有用,但输出的信息可能很多,需要按需使用。
curl 与 wget 的主要区别在于 curl 设计用于与服务器交互并获取或发送数据,而 wget 则侧重于从服务器下载内容。curl 提供了更多调节请求的选项,适合做API测试和数据操作。
curl 作为一个非常强大的工具,在Web开发、系统管理和自动化任务中被广泛应用,熟练掌握它将大大提升工作和开发的效率。
参考资料
在线文档和手册
- Linux 用户管理手册
通过 man useradd, man usermod, man passwd, man groupadd 等命令来获取命令使用手册。 - Linux 权限管理手册
使用 man chmod, man chown, man chgrp 等命令对权限管理命令获取帮助手册。 - GNU Coreutils 文档
https://www.gnu.org/software/coreutils/manual/coreutils.html
包含了GNU 版本的权限和用户管理工具的详细信息。
图书
-
“UNIX and Linux System Administration Handbook” by Evi Nemeth, Garth Snyder, Trent R. Hein, and Ben Whaley
这本书被认为是 Unix 和 Linux 系统管理的经典著作,它详细讲解了包括用户管理和权限设置在内的众多主题。 -
“Linux Administration: A Beginner’s Guide” by Wale Soyinka
这本指南适用于初学者,并涉及了系统安装、配置、更新、监控和用户管理的基础内容。 -
“How Linux Works: What Every Superuser Should Know” by Brian Ward
此书提供了 Linux 系统的深入分析,包括文件系统管理、用户权限等关键主题。
在线教程和指南
-
DigitalOcean 社区教程
https://www.digitalocean.com/community
提供了一系列关于权限和用户管理的详细教程,适用于不同层次的用户。
Linuxize -
https://linuxize.com/
包含许多关于 Linux 用户和权限管理的教程和文章。 -
Tecmint
https://www.tecmint.com/
这个网站包含许多指南和教程,覆盖了 Linux 权限、用户账户创建和管理等方面。
论坛和社区
- Stack Overflow
在 Stack Overflow https://stackoverflow.com/ 上搜索和学习社区提供的关于用户和权限管理的答案和解决方案。 - Unix & Linux Stack Exchange
定位于 Unix 和 Linux 用户的问题和答案:https://unix.stackexchange.com/ - Reddit 的 Linux 社群
Reddit 上的 Linux 用户社区是交流经验和获取建议的好地方:https://www.reddit.com/r/linux/