易栈 · 一盏

塞外秋来,衡阳雁去

工具篇:netstat、ping、traceroute、arp、route、host

一、netstat

netstat命令用来查看网络状态。netstat可以打印六种信息:

  • 默认情况下netstat显示当前正在使用的套接字的信息,按照不同协议分类。
  • -r:显示路由表信息。
  • -g:显示组播组信息。
  • -i:显示网络接口信息。
  • -M:显示masqueraded连接信息。
  • -s:显示每种协议的统计信息。

常用选项:

  • -n:不要把地址(主机名、端口号、用户ID)显示成名字(域名、服务名、用户名)。
  •  -A:指定协议族,可用的协议族为inet、unix、ipx、ax25、netrom、ddp。要指定多个协议族的时候,用逗号“,”分隔(inet协议族包括了raw、udp、tcp协议的套接字)。
  • -c:每隔一秒刷新一次打印信息。
  • -e:显示额外的信息。例如tcp套接字的用户、inode节点信息等。
  • -o:显示网络套接字的的定时器信息。例如tcp套接字的保活定时器。
  • -p:显示套接字所属的进程的进程ID和进程名。
  • -l:只显示正在监听的套件字(这个是默认值)。
  • -a:显示所有监听和非监听套件字。

二、ping

ping命令用来测试另一台主机是否可达。ping发送ICMP回显请求报文给对方主机,然后等待ICMP回显应答。根据是否收到应答来判对方主机是否可达,另外根据请求和应答的时间差计算往返时间RTT。

通过-R选项启动记录路由表功能,可以用来查看IP数据报在传输过程中经过的路由器地址。原理是设置IP数据报的RR选项,这样每个处理该数据报的路由器都会把自己的IP放入选项字段中。ping收到回显应答后,打印出选项字段中的IP地址清单。这个功能的缺陷在于IP首部的长度是有限制的,所以地址清单中最多只能存放9个IP地址

三、trace route

traceroute命令可以用来查看IP数据报在传输过程中经过的路由器地址。traceroute功能与“ping -R”类似,但是没有9个IP地址的限制。

traceroute利用了ICMP报文IP首部的TTL字段来实现。前面讲过IP数据报每经过一个路由器,TTL就会减1。如果TTL为0的时候还没有到达目的主机,路由器会丢弃这个数据报,并且返回一个ICMP超时信息。traceroute通过发UDP数据报来探测路径上的路由器。这个UDP数据报使用一个不可能的目的端口号,当数据报到达目的主机,目的主机发现目的端口不可用,则会给源主机返回ICMP端口不可达信息。探测的原理是先发一个TTL为1的报文,如果收到ICMP端口不可达消息,表示数据报已经到达目的主机;如果收到ICMP超时信息,则从该信息中获取路由器的IP地址,然后发一个TTL为2的报文,重复上述步骤(TTL逐次递增),就可以获取到路径中所有路由器的IP地址。

使用traceroute要注意的是,traceroute的探测方法假定了IP数据报的路径是不变的,但是路径可能会随网络状态改变,两个传输方向的路径也可能是不对称的。

四、arp

arp命令用来显示或操作arp高速缓存项。

#设置arp高速缓存项
arp -s <address> <hw_addr>
#删除arp高速缓存项 
arp -d <address>

五、route

route命令用来显示或操作路由表项。详细的参数含义见本系列的《网络层:IP》。

#添加路由表项。这里只列出了之前介绍过的参数。net/host表示target是网络地址还是主机地址。
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
#添加默认路由
route add default gw <address>
#删除默认路由
route del default
#删除路由表项
route del <target>

六、host、nslookup、dig

这几个命令都可以用来做DNS域名查找。下面只介绍host命令的几个选项:

  • -v:默认情况下只显示A记录,指定了-v选项之后会把其它信息例如授权服务器列表等信息显示出来。
  • -t:查询特定类型的信息。默认查找A、AAAA和MX记录,可以指定其它类型,如PTR、CNAME、NS、SOA、SIG、KEY、AXFR等。

本文链接:易栈 - 工具篇:netstat、ping、traceroute、arp、route、host