做者:Vamei 出處:http://www.cnblogs.com/vamei 嚴禁任何形式轉載。html
下面是一些Mac OSX下經常使用的網絡診斷命令。它們能幫助咱們發現網絡問題。文中提到的協議和網絡通訊原理,可參考協議森林。服務器
有些工具,如arping, arp-scan,須要藉助HomeBrew安裝。網絡
網絡診斷的第一步,是瞭解本身的設備,好比有哪些接口,IP地址都是什麼。tcp
ifconfig工具
顯示網絡接口(interface)信息。如接口名稱,接口類型,接口的IP地址,硬件的MAC地址等。spa
ARP協議用在局域網(LAN)內部。借用ARP協議,設備能夠知道同一局域網內的IP-MAC對應關係。當咱們訪問一個本地IP地址時,設備根據該對應關係,與對應的MAC地址通訊。經過ARP工具,咱們能夠知道局域網內的通訊是否正常。翻譯
arp -ahtm
顯示本地存儲的IP-MAC對應關係blog
sudo arping -I eth0 192.168.1.1接口
經eth0接口,發送ARP請求,查詢IP爲192.168.1.1設備的MAC地址
sudo arp-scan -l
查詢整個局域網內的全部IP地址的對應MAC地址
sudo tcpdump -i en0 arp
監聽en0接口的arp協議通訊
網絡層是一個廣域的互聯網,互聯網上的設備用IP地址識別。ping是向某個IP地址發送ICMP協議的ECHO_REQUEST請求。收到該請求的設備,將返回ICMP回覆。若是ping到某個IP地址,那麼說明該IP地址的設備能夠經網絡層順利到達。
ping 192.168.1.1
向IP地址192.168.1.255發送ICMP請求。若是該地址的ICMP沒有被禁用,那麼在該網上的設備將回復。
ping 192.168.1.255
向廣播(broadcast)地址192.168.1.255發送ICMP請求。若是ICMP沒有被禁用,那麼在該網上的設備將回復。
須要注意的是,許多設備會禁用ICMP。若是ping不到一個設備,並不必定是網絡層故障。
若是兩個設備有相同的IP地址,將致使IP衝突。許多網絡中是由DHCP協議自動分配IP地址的,這樣能夠極大的減小IP衝突的可能性。DHCP服務器與設備達成協議,設備將在必定時間內佔據某個IP地址,而DHCP服務器再也不把該IP地址分配給別人。
sudo ipconfig set en0 DHCP
更新DHCP租約。設備將釋放IP地址,再從DHCP服務器從新得到IP地址。
sudo ipconfig set en0 INFORM 192.168.0.120
將接口en0設定爲靜態IP地址。
局域網經過路由器,接入廣域的互聯網。互聯網上的通訊每每要通過多個路由器接力。途中路由器的故障,可能致使互聯網訪問異常。
netstat -nr
顯示路由表。從路由表中,能夠找到網關(Gateway)。網關是通向更加廣域網絡的出口。
traceroute 74.125.128.99
追蹤到達IP目的地的全程路由。
traceroute -I 74.125.128.99
經過ICMP協議,追蹤路由。ICMP協議常常會被禁用,因此會返回"*"的字符串。
sudo traceroute -T -p 80 74.125.128.99
經過TCP協議,經80端口,追蹤路由。TCP協議的默認端口80不多會被禁用。
tcpdump是一款網絡抓包工具。它能夠監聽網絡接口不一樣層的通訊,並過濾出特定的內容,好比特定協議、特定端口等等。咱們上面已經使用tcpdump監聽了ARP協議通訊。這裏咱們來看更多的監聽方式。
sudo tcpdump -i en0
監聽en0接口的全部通訊
sudo tcpdump -A -i en0
用ASCII顯示en0接口的通訊內容
sudo tcpdump -i en0 'port 8080'
顯示en0接口的8080端口的通訊
sudo tcpdump -i eth1 src 192.168.1.200
顯示eth1接口,來自192.168.1.200的通訊
sudo tcpdump -i eth1 dst 192.168.1.101 and port 80
顯示eth1接口80端口,目的地爲192.168.1.101的通訊
sudo tcpdump -w record.pcap -i lo0
將lo0接口的通訊存入文件record.pcap
DNS是在域名和IP之間進行翻譯。DNS故障會致使咱們沒法經過域名訪問某個網址。
host www.sina.com.cn
DNS域名解析。返回域名對應的IP地址