网络常用测试工具

目录

 

一、netstat

二、ping

三、traceroute

四、telnet命令

五、route命令

六、ifconfig命令

七、tcpdump--抓包命令

八、nc命令

九、curl命令

十、dig命令

十一、Linux如何查看端口使用情况


一、netstat

命令功能:

它可以用来查询系统上的网络套接字连接情况,包括tcp,udp以及Unix套接字;

netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。

常见实例:

1)netstat

网络常用测试工具_第1张图片

说明:无参数使用

从整体上看,netstat的输出结果可以分为两个部分:

一个是Active Internet connections,称为有源TCP连接,其中"Recv-Q"和"Send-Q"指的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。

另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。

Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。

Recv-Q、Send-Q

Recv-Q:表示收到的数据已经在本地接收缓冲,但是还有多少没有被进程取走,recv()

Send-Q:对方没有收到的数据或者说没有Ack的,还是本地缓冲区.

这两个值通常应该为0,如果不为0可能是有问题的。packets在两个队列里都不应该有堆积状态。通过netstat的这两个值就可以简单判断程序收不到包到底是包没到还是包没有被进程recv。

2)netstat -a

说明:列出所有端口

显示一个所有的有效连接信息列表,包括已建立的连接(ESTABLISHED),也包括监听连接请(LISTENING)的那些连接。

3)netstat -nu

说明:显示当前UDP连接状况

4)netstat -i

说明:显示网卡列表

5)netstat -l

说明:显示监听的套接口

6)netstat -n

说明:显示所有已建立的有效连接

7)netstat -r

说明:显示关于路由表的信息

8)netstat -at

说明:列出所有 tcp 端口

8)netstat -au

说明:列出所有 udp 端口

二、ping

命令功能:

Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性,这样我们就可以根据它ping输出的信息来确定目标主机是否可访问(但这不是绝对的)。有些服务器为了防止通过ping探测到,通过防火墙设置了禁止ping或者在内核参数中禁止ping,这样就不能通过ping确定该主机是否还处于开启状态。

常见实例:

1)ping 14.215.177.39

网络常用测试工具_第2张图片

2)ping -c 3 14.215.177.39

说明:ping指定次数

网络常用测试工具_第3张图片

3)ping -c 3 -i 1 14.215.177.39

说明:时间间隔和次数限制的ping

网络常用测试工具_第4张图片

三、traceroute

命令功能:

通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。linux系统中,我们称之为traceroute,在MS Windows中为tracert。 traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。

常见实例:

1)traceroute www.baidu.com

说明:

记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,单位是 ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果您用 traceroute -q 4 www.baidu.com ,表示向每个网关发送4个数据包。

有时我们traceroute 一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。

有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会 有延时长的现象;您可以加-n(-n 直接使用IP地址而非主机名称)。 参数来避免DNS解析,以IP格式输出数据。

网络常用测试工具_第5张图片

2)traceroute -m 10 www.baidu.com

说明:跳数设置

网络常用测试工具_第6张图片

3)traceroute -n www.baidu.com

说明:显示IP地址,不查主机名

网络常用测试工具_第7张图片

4)traceroute -q 4 www.baidu.com

说明:把探测包的个数设置为值4

网络常用测试工具_第8张图片

Traceroute的工作原理:

Traceroute最简单的基本用法是:traceroute hostname

Traceroute程序的设计是利用ICMP及IP header的TTL(Time To Live)栏位(field)。首先,traceroute送出一个TTL是1的IP datagram(其实,每次送出的为3个40字节的包,包括源地址,目的地址和包发出的时间标签)到目的地,当路径上的第一个路由器(router)收到这个datagram时,它将TTL减1。此时,TTL变为0了,所以该路由器会将此datagram丢掉,并送回一个「ICMP time exceeded」消息(包括发IP包的源地址,IP包的所有内容及路由器的IP地址),traceroute 收到这个消息后,便知道这个路由器存在于这个路径上,接着traceroute 再送出另一个TTL是2 的datagram,发现第2 个路由器...... traceroute 每次将送出的datagram的TTL 加1来发现另一个路由器,这个重复的动作一直持续到某个datagram 抵达目的地。当datagram到达目的地后,该主机并不会送回ICMP time exceeded消息,因为它已是目的地了,那么traceroute如何得知目的地到达了呢?

Traceroute在送出UDP datagrams到目的地时,它所选择送达的port number 是一个一般应用程序都不会用的号码(30000 以上),所以当此UDP datagram 到达目的地后该主机会送回一个「ICMP port unreachable」的消息,而当traceroute 收到这个消息时,便知道目的地已经到达了。所以traceroute 在Server端也是没有所谓的Daemon 程式。

Traceroute提取发 ICMP TTL到期消息设备的IP地址并作域名解析。每次 ,Traceroute都打印出一系列数据,包括所经过的路由设备的域名及 IP地址,三个包每次来回所花时间。

四、telnet命令

命令功能:

telnet命令通常用来远程登录。telnet程序是基于TELNET协议的远程登录客户端程序。Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的 能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个 telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。

但是,telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了。但仍然有很多别的系统可能采用了telnet方式来提供远程登录,因此弄清楚telnet客户端的使用方式仍是很有必要的。

常见实例:

1)telnet 192.168.120.204

说明:

网络常用测试工具_第9张图片

五、route命令

命令功能:

Linux系统的route命令用于显示和操作IP路由表(show / manipulate the IP routing table)。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为Linux机器的默认路由。要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;可以在/etc/rc.local中添加route命令来保证该路由设置永久有效。

常见实例:

1)route

说明:显示当前路由

2)route add

说明:添加网关/设置网关

网络常用测试工具_第10张图片

六、ifconfig命令

命令功能:

命令用来查看和配置网络设备。当网络环境发生改变时可通过此命令对网络进行相应的配置。

常见实例:

1)ifconfig

说明:显示网络设备信息

lo 是表示主机的回坏地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。比如把 HTTPD服务器的指定到回坏地址,在浏览器输入 127.0.0.1 就能看到你所架WEB网站了。但只是您能看得到,局域网的其它主机或用户无从知道。

网络常用测试工具_第11张图片

2)ifconfig ens33 up            ifconfig ens33 down

说明:ifconfig ens33 up 为启动网卡ens33 ;ifconfig ens33 down 为关闭网卡ens33。

3)ifconfig eth0 192.168.120.56 

说明:给eth0网卡配置IP地:192.168.120.56

七、tcpdump--抓包命令

过滤主机/IP: 

tcpdump -i eth1 host 172.16.7.206
抓取所有经过网卡1,目的IP或源地址为172.16.7.206的网络数据 

tcpdump -i eth1 src host 172.16.7.206   指定源地址

tcpdump -i eth1 dst host 172.16.7.206   指定目的地址 

过滤端口: 

tcpdump -i eth1 dst port 1234
抓取所有经过网卡1,目的端口为1234的网络数据 

过滤特定协议: 

tcpdump -i eth1 udp
抓取所有经过网卡1,协议类型为UDP的网络数据 

特定协议特定端口: 

tcpdump udp port 1234
抓取所有经过1234端口的UDP网络数据 

抓取特定类型的数据包: 

tcpdump -i eth1 ‘tcp[tcpflags] = tcp-syn’
抓取所有经过网卡1的SYN类型数据包

tcpdump -i eth1 udp dst port 53
抓取经过网卡1的所有DNS数据包(默认端口) 

使用-w参数指定将监听到的数据包写入文件中保存

八、nc命令

功能说明:功能强大的网络工具
语  法:nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>][-s<来源位址>][-v...][-w<超时秒数>][主机名称][通信端口...]
参  数:
 -g<网关>  设置路由器跃程通信网关,最丢哦可设置8个。
 -G<指向器数目>  设置来源路由指向器,其数值为4的倍数。
 -h  在线帮助。
 -i<延迟秒数>  设置时间间隔,以便传送信息及扫描通信端口。
 -l  使用监听模式,管控传入的资料。
 -n  直接使用IP地址,而不通过域名服务器。
 -o<输出文件>  指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
 -p<通信端口>  设置本地主机使用的通信端口。
 -r  乱数指定本地与远端主机的通信端口。
 -s<来源位址>  设置本地主机送出数据包的IP地址。
 -u  使用UDP传输协议。
 -v 详细输出--用两个-v可得到更详细的内容
 -w<超时秒数>  设置等待连线的时间。
 -z  使用0输入/输出模式,只在扫描通信端口时使用。
(1)端口扫描
# nc -v -w 2 192.168.2.34 -z 21-24
nc: connect to 192.168.2.34 port 21 (tcp) failed: Connection refused
Connection to 192.168.2.34 22 port [tcp/ssh] succeeded!
nc: connect to 192.168.2.34 port 23 (tcp) failed: Connection refused
nc: connect to 192.168.2.34 port 24 (tcp) failed: Connection refused
 
(2)从192.168.2.33拷贝文件到192.168.2.34
在192.168.2.34上: nc -l 1234 > test.txt
在192.168.2.33上: nc 192.168.2.34 < test.txt
 
(3)简单聊天工具
在192.168.2.34上: nc -l 1234
在192.168.2.33上: nc 192.168.2.34 1234
这样,双方就可以相互交流了。使用ctrl+C(或D)退出。

九、curl命令

在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。

(1)获取页面内容

当我们不加任何选项使用 curl 时,默认会发送 GET 请求来获取链接内容到标准输出。

网络常用测试工具_第12张图片

(2)显示 HTTP 头

如果我们只想要显示 HTTP 头,而不显示文件内容,可以使用 -I 选项:

网络常用测试工具_第13张图片

(3)将链接保存到文件

我们可以使用 > 符号将输出重定向到本地文件中。

curl http://www.codebelief.com > index.html

也可以通过 curl 自带的 -o/-O 选项将内容保存到文件中。

  • -o(小写的 o):结果会被保存到命令行中提供的文件名
  • -O(大写的 O):URL 中的文件名会被用作保存输出的文件名

curl -o index.html http://www.codebelief.com

curl -O http://www.codebelief.com/page/2/

(4)同时下载多个文件

我们可以使用 -o-O 选项来同时指定多个链接,按照以下格式编写命令:

十、dig命令

域名解析工具

网络常用测试工具_第14张图片

十一、Linux如何查看端口使用情况

1、lsof -i:端口号 用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i:8000

2、netstat -tunlp |grep 端口号,用于查看指定的端口号的进程情况,如查看8000端口的情况,netstat -tunlp |grep 8000

你可能感兴趣的:(Linux)