Windows網路診斷

來源:互聯網
上載者:User

       隨著Internet的不斷普及,網路已經成為人們生活的重要組成部分。網路已經成為很多人使用電腦的最直接理由,這使得網路功能在電腦中的地位更顯突出。然而,對於大部分使用者來說,電腦以及作業系統是一個相當複雜的系統,Windows網路經常會出現不能訪問互連網問題。對於具有一定電腦和網路基礎的人來說,可以利用系統提供的工具進行網路診斷,協助解決相關網路問題。

  網路問題診斷,從根本上說,就是按照網路通訊協定棧順利依次進行診斷並發現問題環節所在,包括物理層、資料連結層、網路層、傳輸層、應用程式層等。Windows系統提供了一系列的工具協助使用者進行網路診斷,主要包括:
    1、ipconfig:顯示IP協議的配置資訊
    2、ping:檢測到指定主機之間的網路是否連通
    3、nslookup:主機名稱/IP解析
    4、arp:查看IP與物理地址轉換資訊
    5、netstat:查看當前活動網路連接資訊
    6、tracert:跟蹤資料包到達目的主機的路由表資訊
  使用這些工具,有經驗的使用者可以快速定位到問題所在。另外,Windows系統內建了一個網路診斷工具,它自動掃描當前系統,收集相關硬體、軟體和網路連接的資訊,並給出診斷報告。按如下方式運行該工具:控制台-->網路連接-->(左側)網路疑難問題解答程式-->診斷網路設定並運行自動的網路測試-->掃描您的系統。

  網路應用軟體往往也會整合一個網路診斷功能,這就需要開發人員編程對各個網路通訊協定環節進行自動檢測。下面是一個簡單的網路檢測常式架構,僅供參考。
PLUGIN_API void check_network(void)
{
    plugin_show_rt_info("netdiag is checking...");

    if (check_network_connectivity()) 
    {
        plugin_show_rt_info("network is ok!");
    }
    else
    {
        //1 檢測物理網路連接
        if (!network_is_alive())
        {
            plugin_show_rt_info(GetDiagnosisError());
            goto _EXIT;
        }

        //2 檢測網卡是否工作
        if (!DiagnoseTcpIp())
        {
            plugin_show_rt_info(GetDiagnosisError());
            goto _EXIT;
        }

        //3 檢測網路設定
        if (!DiagnoseLocalIp())
        {
            plugin_show_rt_info(GetDiagnosisError());
            goto _EXIT;
        }
       
        //4 檢測網關是否可達
        if (!DiagnoseGateway())
        {
            plugin_show_rt_info(GetDiagnosisError());
            goto _EXIT;
        }
       
        //5 檢測HOST檔案
        if (!DiagnoseHostFile())
        {
            plugin_show_rt_info(GetDiagnosisError());
            goto _EXIT;
        }
       
        //6 檢測DNS伺服器是否可達
        if (!DiagnoseDns())
        {
            plugin_show_rt_info(GetDiagnosisError());
            goto _EXIT;
        }

        //7 檢測網域名稱是否可以解析
        char hostname[] = "your.host.name";
        char ip[128];
        if (!get_ip_byname(hostname, ip))
        {
            plugin_show_rt_info(GetDiagnosisError());
            goto _EXIT;
        }

        //8 檢測路由可達性
        printf("%s -> %s/n", hostname, ip);
        if(!trace_route(ip, 30, true))
        {
                plugin_show_rt_info(GetDiagnosisError());
                goto _EXIT;
        }
    }
_EXIT:
    return;
}

 

(Aigui LIU / 劉愛貴 / aigui.liu@gmail.com)

相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。