小林带你盘一盘,常用的网络命令

本文涉及的产品
.cn 域名,1个 12个月
云解析DNS,个人版 1个月
全局流量管理 GTM,标准版 1个月
简介: Linux 为我们提供了很多网络相关的命令,我们这次就来看看 Linux 系统里有哪些常用的网络命令。

前言


大家好,我是小林。

服务器一般都是命令页面,不像 windows 有图形页面点点鼠标就好,所以掌握些基本的 Linux 命令是很有必要的,不然就无法操作 Linux,更体会不到 Linux 的精髓。

这次,我们就来看看关于网络相关的命令。

学习网络不应该只局限于理论,作为工程师的我们,掌握一些基本的网络命令对我们帮助会很大,因为平时在远程操作、开发、调试、排查线上问题的时候,会常常用到。

Linux 为我们提供了很多网络相关的命令,我们这次就来看看 Linux 系统里有哪些常用的网络命令。


正文


远程连接命令


如果我们要想操作 Linux 服务器,不可能说拿个显示器、鼠标和键盘接到服务器上,服务器一般都是放在机房里的,只需让服务器把网络接通,我们在自己的电脑就可以使用 ssh 命令远程登录服务器,进而操作和管理服务器。

还有一个很常用的远程命令是 scp,它可以帮助我们传输文件到服务器上。


ssh


在需要远程登录 Linux 系统,可以使用 ssh 命令,比如你想远程登录一台服务器,可以使用 ssh user@ip 的方式,如下图:

39.png

接着,会有输入密码的提示,输入正确的密码后,就进入到了服务器的终端页面,之后你操作的命令就是控制服务器的了。

38.png


scp


当我们需要把一台机器上的文件传输给另一台机器时,使用 scp 命令就可以。

如下图,我使用 scp 命令将本地 test.txt 文件传输给了 IP 地址为 192.168.12.35 机器的 /home 目录。

37.png

输入 scp 命令后,会弹出需要输入对方密码的提示,输入完成后,输入回车即可,如果密码验证通过后,就进行文件的传输。


查看本地网络状态


要想知道本地机器的网络状态,比较常用的网络命令是 ifconfig 和 netstat。


ifconfig


当你想知道机器上有哪些网口,和网口对应的状态信息时,使用 ifconfig 就可以,状态信息包含 IP 地址、子网掩码、MAC 地址等。

如下图,是在我设备上的 ifconfig 信息。

36.png

可以看到,这台机器一共有 3 个网口,分别是 eth0、eth1、lo。其中 lo 是本地回路,发送给 lo 就相当于发送给自己,eth0 和 eth1 都是真实的网口。


netstat


netstat 命令主要用于查看目前本机的网络使用情况。


查看所有 socket


如果只是单纯执行 netstat 命令,则查询的是本地所有 socket,如下图:

35.png

上图中,我们看到的都是 socket 文件,socket 负责在客户端与服务端之间收发数据,当客户端和服务端建立连接时,各自同时都会生成一个 socket 文件,用于管理这个连接。


查看 TCP/UDP 连接


如果只想看 TCP 连接的网络信息,可以使用 netstat -t。

比如下面我通过 netstat -t 看 tcp 协议的网络情况:

34.png

上图的末尾的 state 描述的是当前 TCP 连接处于的状态。

另外,如果要想看 UDP 的网络信息,可以使用 netstat -u。


查看端口占用


如果你想知道某个端口是哪个进程在占用,比如我想查 80 端口被哪个进程占用了,如下图:

33.png

可以看到,80 端口被 http 进程占用了,最末尾的信息也能看到这个进程对应的 pid。


网络测试


当我们想确认网络的延时情况,以及与服务器网络是否畅通,则可以使用 ping 和 telnet 命令。


ping


想知道本机到目标网页的网络延时,可以使用 ping 命令,如下图所示:

image.gif31.png

ping 是基于 ICMP 协议的,所以对方防火墙如果屏蔽了 ICMP 协议,那么我们就无法与它 ping 通,但这并不代表网络是不通的。

每一个 ICMP 包都有序号,所以你可以看到上图中 icmp 序号,如果序号是断断续续的,那么可能出现了丢包现象。

time 显示了网络包到达远程主机后返回的时间,单位是毫秒。time 的时间越小,说明网络延迟越低,如果你看到 time 的时间变化很大,这种现象叫做网络抖动,这说明客户端与服务器之间的网络状态不佳。

ttl 全称叫 time to live,指定网络包被路由器丢弃之前允许通过的网段数量,说白了就是定义了网络包最大经过路由器的数量,这个目的是防止网络包在网络中被无限转发,永不停止。当网络包在网络中被传输时,ttl 的值通过一个路由器时会递减1,当 ttl 递减到 0 时,网络包就会被路由器抛弃。

另外,ping 不单单只能输入 ip 地址,也能输入域名地址,如果输入的是域名地址,会先通过 DNS 查询该域名的 ip 地址,再进行通信。


telnet


有时候,我们想知道本机到某个 IP + 端口的网络是否通畅,也就是想知道对方服务器是否有对应该端口的进程,于是就可以使用 telnet 命令,如下所示:

telnet 192.168.0.5

telnet 执行后会进入一个交互式的页面,这时就可以填写你将要发送给对方的信息,比如你想发 HTTP 请求给服务器,那么你就可以写出 HTTP 请求 的格式信息,但是手写 HTTP 报文太累人吧,后面会介绍专门用于 HTTP 的网络工具。


DNS查询


如果想知道 DNS 解析域名的过程,可以使用 host 和 dig 命令。


host


host 就是一个 DNS 查询命令,比如我们要查百度的 DNS,如下图所示:

30.png

可以看到,www.baidu.com 只是个别名,原名是 www.a.shifen.com,且对应了 2 条 IPv4 地址。

如果想追查某种类型的记录,可以加个 -t 参数,比如下图我们追查百度的 AAAA 记录,也就是查询域名对应的 IPv6 地址,由于百度还没部署 IPv6 地址,所以没有查询到 :

29.png


dig


dig 同样也是做 DNS 查询的,区别在于,dig 显示的内容更加详细,比如下图是 dig 百度的结果:

28.png

也可以看到 www.baiu.com 的别名(CNAME)为 www.a.shifen.com,然后共有 2 条 A 记录,也就是 IPv4 地址的记录,通常对应多个是为了负载均衡或分发内容。


HTTP


在电脑桌面我们常使用浏览器去请求网页,而在服务器一般是没有可视化页面的,也就没有浏览器,这时如果想要 HTTP 访问,就需要网络相关的命令。


curl


如果要在命令行请求网页或者接口,可以使用 curl 命令,curl 支持很多应用协议,比如 HTTP、FTP、SMTP 等,实际运用中最常用还是 HTTP。

比如,我用 curl 访问了百度网页,如下图:

27.png

如果不想看 HTTP 数据部分,只想看 HTTP GET 返回头,可以在加个 -I 参数,如 curl -I,如下图所示:

26.png

上面演示的 HTTP GET 请求,如果想使用 POST 请求,命令如下:

25.png

curl 向 http://localhost/myapi 接口发送 POST 请求,各参数的说明:

  • -d 后面是要发送的数据,例子中发送的是 JSON 格式的数据;
  • -X 后面是指定 HTTP 的方法,例子中指定的是 POST 方法;
  • -H 是指定自定义的请求头,例子中由于发送的是 JSON 数据,所以内容类型指定了 JSON;


总结


最后,列一下本次提到的 Linux 下常用的网络命令:

  • 远程登录的 ssh 指令;
  • 远程传输文件的 scp 指令;
  • 查看网络接口的 ifconfig 指令;
  • 查看网络状态的 netstat 指令;
  • 测试网络延迟的 ping 指令;
  • 可以交互式调试和服务端的 telnet 指令;
  • 两个 DNS 查询指令 host 和 dig;
  • 可以发送各种请求包括 HTTPS 的 curl 指令。
相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
1月前
|
监控 安全 Linux
【专栏】Linux中六个常用的网络命令:ping、traceroute、netstat、nmap、ifconfig和ip
【4月更文挑战第28天】本文介绍了Linux中六个常用的网络命令:ping、traceroute、netstat、nmap、ifconfig和ip,以及它们在测试网络连通性、追踪路由、查看网络状态、安全扫描和接口配置等场景的应用。通过学习和运用这些命令,系统管理员和网络爱好者能更有效地诊断和管理网络问题,确保网络稳定运行。
|
11天前
|
Docker 容器
docker network inspect 查询出来的网络的创建命令是什么
【6月更文挑战第17天】docker network inspect 查询出来的网络的创建命令是什么
18 1
|
1天前
|
运维 网络协议 Linux
Linux与Windows下追踪网络路由:traceroute、tracepath与tracert命令详解
Linux与Windows下追踪网络路由:traceroute、tracepath与tracert命令详解
7 0
|
24天前
|
缓存 网络协议 Linux
玩转网络调试利器:深入剖析ip命令的强大功能
玩转网络调试利器:深入剖析ip命令的强大功能
24 2
|
2天前
|
Linux 网络安全 数据处理
探索Linux命令ping:网络诊断的得力助手
`ping`是Linux下的网络诊断命令,基于ICMP协议,用于测试主机连通性和测量延迟。它发送Echo请求并等待响应,显示统计信息如发送/接收包数、丢失率和平均延迟。命令支持配置参数,如`-c`指定发送次数,`-i`设置间隔,`-s`定义包大小。示例包括测试到Google的连通性及定制化测试。注意防火墙可能阻止ICMP流量,排查网络问题时可与其他工具结合使用。
|
12天前
|
人工智能 安全 网络安全
白宫关于AI的行政命令对网络安全领导人意味着什么
白宫关于AI的行政命令对网络安全领导人意味着什么
|
1月前
|
缓存 网络协议 Linux
Linux 网络命令大全,详细归纳!
【4月更文挑战第24天】
54 3
Linux 网络命令大全,详细归纳!
|
22天前
|
负载均衡 Ubuntu Linux
Linux命令探秘:bond2team与网络绑定技术
Linux的`bond2team`是网络绑定和团队技术工具,用于组合多个网络接口以提升带宽、容错性和负载均衡。通过安装`ifenslave-2.6`,在`/etc/sysconfig/network-scripts/`或`/etc/network/interfaces`配置文件中设定接口绑定模式,如`activebackup`。它支持负载均衡、容错和热备等多种工作模式,确保网络高可用性和性能。在配置前务必备份,并重启服务使配置生效。
|
1月前
|
Linux Shell 网络安全
网络安全中Dos和linux常用命令总结
本篇是对网安学习中,常用的命令做一个图文与命令示例,并对一些比较重要的dos和shell命令进行总结,方便自己后续学习进行查询,并希望能够给更多人有一个总结命令和了解命令的地方.
|
1月前
|
运维 监控 安全
【亮剑】为网络工程师总结了Juniper设备的配置、监控和故障排除命令
【4月更文挑战第30天】本文为网络工程师总结了Juniper设备的配置、监控和故障排除命令。配置命令包括基础设置、路由协议、安全和系统服务;监控命令涉及系统状态、接口、流量及路由表;故障排除命令涵盖日志、接口、路由协议和安全方面的排查工具。掌握这些基本命令将提升网络运维效率。

热门文章

最新文章