使用常見的網絡命令查看當前網絡狀態——Mac OS X篇


轉載自:http://blog.csdn.net/zkh90644/article/details/50539948

 

 

操作系統擁有一套通用的實用程序來查明本地主機的有線或者無線鏈路狀態和IP的連接情況。如果本機有IP連接,那么就意味着有線或者無線是正常工作的。在Mac OS X系統中,有以下幾個實用的程序來確認連接狀態: 
ifconfig: 查找本機IP地址和網絡接口。 
netstat: 使用-r來找到特定網絡接口的默認網關。 
ping: 用來測試本機之間的端對端的IP連接。 
arp: 管理本地的ARP緩存。

以下是連接狀態和IP連接的例子:

  1. 打開Terminal(譯者附:可以通過Spotlight或者實用工具->終端“)

  2. 輸入ifconfig命令,來查找特定網絡接口的IP地址。在這個例子中這個無線網絡接口(en1)的地址是:192.168.128.253。

    myhost:/usr/bin someuser$ ifconfig 
    en1: flags=8863(UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST) 
    inet 192.168.128.253 netmask 0xffffff00 broadcast 192.168.128.255 
    ether 00:17:f2:e8:ac:0a  
    media: autoselect status: active 
    supported media: autoselect

  3. 輸入netstat -r 來尋找實用網絡接口en1 的默認網關。在本例子中en1 的默認網關地址是:192.168.128.1。

    myhost:/usr/bin someone$ netstat -r 
    Routing tables 
    Internet: 
    Destination Gateway > Flags Refs Use Netif Expire 
    default 192.168.128.1 > UGSc 90 2 en1

  4. 局域網的數據交互在OSI模型的第2層(即數據鏈路層)。主機在同一個局域網中發送數據給局域網中的用戶使用的第二層的地址(即MAC地址),每一個主機都有一個動態的MAC地址轉化為IP地址的列表映射到ARP表中,該表是通過ARP協議 來找到哪個MAC地址對應的是局域網中的哪個IP地址(IP地址在OSI的第三層網絡層中)。ARP是十分詳細的,同時為了更好的表達ARP,其中的許多內容被刪除。以下是ARP的簡要介紹:

    每次一個主機需要發送數據到另一台主機中的時候,他都會檢查本機的ARP表,如果在ARP表中存在相關的映射,那么數據就會直接發送到該IP地址的MAC地址中。如果不存在映射,為了獲得接收數據的IP地址對應的MAC地址,本機的將會發送一個ARP請求廣播到局域網,查看已知局域網中的所有IP地址。當對應IP地址的主機收到這個ARP請求后,將會以單播的方式發送ARP響應報文給請求方,告訴請求方自己的IP地址和自己相關聯的MAC地址。當請求方收到這個ARP響應報文后,它將更新自己的ARP表同時使用它自己的MAC地址直接發送幀到目的主機上。為了防止ARP緩存的老化,主機將會頻繁的發送ARP請求來更新自己的ARP緩存。

  5. 為了使用Terminal(終端) 手動的重新刷新你的ARP表,我們使用以下命令:

    mycomputer:/usr/bin someuser$ arp -d -a

  6. ping默認網關或局域網上另一台主機的IP地址來測試IP的連通性。在Mac OS X上,ping命令是連續的(譯者附:不使用終端命令,ping程序在默認參數下是不會停止的)。

    mycomputer:/usr/bin someuser$ ping 192.168.128.1

如果本地連接是同的並且目的主機也是在線上並且是可以達到的,你將會輸出每個ICMP(Internet Control Message Protocol)回顯請求來顯示每個ICMP回顯應答

格式如下:

PING 192.168.128.1 (192.168.128.1): 56 data bytes

64 bytes from 192.168.128.1: icmp_seq=0 ttl=64 time=3.255 ms 
64 bytes from 192.168.128.1: icmp_seq=1 ttl=64 time=0.897 ms 
64 bytes from 192.168.128.1: icmp_seq=2 ttl=64 time=0.897 ms 
64 bytes from 192.168.128.1: icmp_seq=3 ttl=64 time=0.905 ms

7 . 如果ICMP請求超時並被ICMP回顯應答,那么最有可能的是本地主機與目標主機中間的電纜存在問題,或者目的主機太過繁忙而無法回應。在這種情況下,你可以嘗試ping其他局域網中的主機。如果ping的過程中超時不存在,那么就說明本地連接是好的,同時你需要檢修問題主機的故障。 
情況如下

PING 192.168.128.1 (192.168.128.1): 56 data bytes

64 bytes from 192.168.128.1: icmp_seq=0 ttl=64 time=3.255 ms 
64 bytes from 192.168.128.1: icmp_seq=1 ttl=64 time=0.897 ms 
Request timeout for icmp_seq 2 
Request timeout for icmp_seq 3 
64 bytes from 192.168.128.1: icmp_seq=4 ttl=64 time=0.897 ms 
64 bytes from 192.168.128.1: icmp_seq=5 ttl=64 time=0.905 ms 
Request timeout for icmp_seq 6

 

 

  1. 如果你的連接是好的但是對方的防火牆拒絕了你的ICMP回顯請求,那么你講收到ICMP請求超時的消息。如果目的主機確實響應你的ARP請求,那就意味着你的本地連接是好的同時網絡狀態是好的。那么就應該嘗試關閉目的主機的防火牆,並再次發送PING請求,或者嘗試PING一個其他的主機。

 

PING 192.168.128.1 (192.168.128.1): 56 data bytes 
Request timeout for icmp_seq 0 
Request timeout for icmp_seq 1 
Request timeout for icmp_seq 2 
Request timeout for icmp_seq 3 
Request timeout for icmp_seq 5

    • 如果目的主機沒有響應ARP請求,或者目的主機不在線,你將會接收到“Host is down”這樣的消息。這樣你就需要嘗試ping其他主機,如果還是收到Host is down”這樣的消息,那么就說明你的IP地址是配置錯誤的或者你的上行鏈路是好的,但是局域網中的其他部分是有問題的。造成這個問題的可能的原因是 上行鏈路的管理不當,VLAN不匹配,電纜上游存在損壞。

      PING 192.168.128.1 (192.168.128.1): 56 data bytes 
      ping: sendto: No route to host 
      ping: sendto: Host is down 
      ping: sendto: Host is down 
      ping: sendto: Host is down 
      ping: sendto: Host is down

    • 如果你的本地連接是有問題的,那么你將會收到”No route to host“這樣的消息,這種狀態下你就需要確認你的適配器已啟用,或者重新把茶以太電纜(網線),或者重啟你的無線連接。 

      PING 192.168.128.1 (192.168.128.1): 56 data bytes 
      ping: sendto: No route to host 
      ping: sendto: No route to host 
      ping: sendto: No route to host 
      ping: sendto: No route to host 
      ping: sendto: No route to host


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM