前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux基础指令及其作用之网络操作

Linux基础指令及其作用之网络操作

作者头像
薄荷冰
发布2024-06-02 09:13:20
1660
发布2024-06-02 09:13:20
举报
文章被收录于专栏:后端学习之旅后端学习之旅

网络操作

ping

ping 命令用于测试网络连接的连通性和响应时间。它通过向目标主机发送 ICMP 回显请求(echo request)数据包,并等待回显应答(echo reply),来确定目标主机是否可达以及网络的延迟情况。ping 命令在网络故障排除和诊断中非常有用。

代码语言:javascript
复制
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 字节。
  1. 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 毫秒。
  1. 其余几行
  • 类似于上面的解释,分别显示了第 2、3、4 个 ICMP 回显请求的应答情况,包括数据包大小、来源、序列号、TTL 和往返时间。
  1. — google.com ping statistics —
  • 表示 ping 测试的统计信息部分。
  1. 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 毫秒。
  1. 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 命令取代。

代码语言:javascript
复制
ifconfig [接口] [选项]

常用选项

  • [接口]:指定网络接口的名称(如 eth0wlan0)。
  • 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 ScopeIPv6 地址为 :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
  • TX packets:187514:发送的总数据包数为 187514
    • errors:0:发送时发生的错误数为 0
    • dropped:0:丢弃的数据包数为 0
    • overruns:0:发送时发生的超限数为 0
    • carrier:0:载波错误数为 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
  • TX packets:2200:发送的总数据包数为 2200
    • errors:0:发送时发生的错误数为 0
    • dropped:0:丢弃的数据包数为 0
    • overruns:0:发送时发生的超限数为 0
    • carrier:0:载波错误数为 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 软件包的一部分。

代码语言:javascript
复制
ip [选项] 对象 命令 
  • 对象:指定要操作的网络对象,如 linkaddrroute 等。
  • 命令:指定要执行的操作,如 showadddel 等。
常用选项和命令
代码语言: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)等。它是一个强大的网络诊断和调试工具。

代码语言:javascript
复制
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 等多种任务。

代码语言:javascript
复制
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&param2=value2" http://example.com/resource
//输出
{
    "status": "success",
    "param1": "value1",
    "param2": "value2"
}
//解释
此命令向指定 URL 发送一个 POST 请求,包含参数 param1 和 param2,并打印服务器响应的 JSON 数据。
wget

wget 是一个用于从 Web 下载文件的命令行工具。它支持 HTTP、HTTPS 和 FTP 协议,并且可以在网络中断时继续下载。wget 是一个功能强大且灵活的下载工具,适用于脚本化和批量下载任务。

代码语言:javascript
复制
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:下载所用时间。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 网络操作
    • ping
      • ifconfig
        • ip
          • 常用选项和命令
        • netstat
          • 示例输出解释
        • curl
          • 示例输出及解释
        • wget
          • 示例输出解释
      相关产品与服务
      命令行工具
      腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档