下面是一些 Mac OS X 下常用的网络诊断命令。它们能帮助我们发现网络问题。文中提到的协议和网络通信原理,可参考协议森林。
有些工具,如 arping, arp-scan,需要借助 HomeBrew 安装。
基本工具
网络诊断的第一步,是了解自己的设备,比如有哪些接口,IP 地址都是什么。
ifconfig
$ ifconfig
显示网络接口(interface)信息。如接口名称,接口类型,接口的 IP 地址,硬件的 MAC 地址等。
ARP
ARP 协议用在局域网(LAN)内部。借用ARP协议,设备可以知道同一局域网内的 IP-MAC 对应关系。当我们访问一个本地 IP 地址时,设备根据该对应关系,与对应的 MAC 地址通信。通过 ARP 工具,我们可以知道局域网内的通信是否正常。
$ arp -a
网络层
网络层是一个广域的互联网,互联网上的设备用IP地址识别。ping 是向某个IP地址发送 ICMP 协议的 ECHO_REQUEST 请求。收到该请求的设备,将返回ICMP回复。如果 ping 到某个 IP 地址,那么说明该 IP 地址的设备可以经网络层顺利到达。
ping 10.0.10.161
路由
局域网通过路由器,接入广域的互联网。互联网上的通信往往要经过多个路由器接力。途中路由器的故障,可能导致互联网访问异常。
$ netstat -nr
显示路由表。从路由表中,可以找到网关(Gateway)。网关是通向更加广域网络的出口。
域名解析
DNS 是在域名和 IP 之间进行翻译。DNS 故障会导致我们无法通过域名访问某个网址。
$ host www.sina.com.cn
DNS 域名解析。返回域名对应的 IP 地址