本發(fā)明涉及寬帶故障自動檢測技術(shù),尤其涉及一種基于寬帶的網(wǎng)絡(luò)檢測方法。
背景技術(shù):
在互聯(lián)網(wǎng)絡(luò)普遍應(yīng)用的情況下,由于不安全軟件的安裝導(dǎo)致網(wǎng)絡(luò)設(shè)置發(fā)生變化,或由于網(wǎng)絡(luò)知識缺乏對計算機進行不合理的設(shè)置導(dǎo)致網(wǎng)絡(luò)故障的情況越來越普遍,自動修復(fù)網(wǎng)絡(luò)的工具也因此而被開發(fā)和應(yīng)用,但是這些功能和軟件大都是大型軟件的輔助工具,想要使用必須安裝整個的軟件包,占用系統(tǒng)資源太多,同時安裝太多的無用功能,要么使用過于復(fù)雜不易使用。
隨著網(wǎng)絡(luò)的普及和PC機的廣泛應(yīng)用,以及格式各樣軟件的安裝,家用PC機出現(xiàn)網(wǎng)絡(luò)故障已成為人們常見的問題,對于不熟悉電腦和網(wǎng)絡(luò)的人來說解決網(wǎng)絡(luò)故障并不是件容易的事情。
技術(shù)實現(xiàn)要素:
為了解決該問題,本發(fā)明提出了一種基于寬帶的網(wǎng)絡(luò)檢測方法。
本發(fā)明使最簡單直接的方法對可能引起網(wǎng)絡(luò)故障的因素進行自動的檢測,使用的函數(shù)和方法都是系統(tǒng)提供的API不會涉及任何的安全問題,是一個檢測網(wǎng)絡(luò)故障的簡單有效的方法。
本發(fā)明的技術(shù)方案是:
一種基于寬帶的網(wǎng)絡(luò)檢測方法,
包括:
1)聯(lián)通性檢查,是檢測遠端IP地址是否可以到達的方法,通過一個函數(shù)實現(xiàn);
2)網(wǎng)絡(luò)聯(lián)通性檢測,用1)的方法檢測一個固定的服務(wù)端IP地址是否聯(lián)通;
3)檢測代理服務(wù)器設(shè)置,檢測代理服務(wù)器設(shè)置情況,關(guān)閉代理后用2)的方法進行聯(lián)通性檢測;
4)檢測防火墻設(shè)置,檢測防火墻是否開啟,關(guān)閉后用2)的方法進行聯(lián)通性檢測;
5)檢測網(wǎng)卡狀態(tài),獲取網(wǎng)卡的相關(guān)參數(shù),并檢測網(wǎng)卡參數(shù)設(shè)置是否合理。
進一步的,
聯(lián)通性檢查,使用原始套接字向遠端目標機發(fā)送帶回現(xiàn)ICMP封包;
網(wǎng)絡(luò)聯(lián)通性檢測,是遠端固定服務(wù)器IP可以在一個配置文件中配置;
檢測代理服務(wù)器設(shè)置,是從指定的注冊表項目中獲取狀態(tài)數(shù)據(jù),關(guān)閉代理重新檢查聯(lián)通性;
檢測防火墻設(shè)置,是使用INetFwPolicy2提供的接口函數(shù)get_FirewallEnabled和put_FirewallEnabled進行檢查和設(shè)置防火墻;
檢測網(wǎng)卡狀態(tài)是從注冊表SOFTWARE\\Microsoft\\WindowsNT\\CurrentVersion\\NetworkCards中獲取網(wǎng)卡信息,用CreateFile函數(shù)判斷網(wǎng)卡是否禁用,DeviceIoControl函數(shù)獲取網(wǎng)卡狀態(tài)和相關(guān)信息,使用GetAdaptersInfo獲取網(wǎng)卡適配器信息。
本發(fā)明的有益效果是
本發(fā)明能夠檢測出因為 代理設(shè)置,防火墻設(shè)置,IP設(shè)置,DNS設(shè)置不正確而導(dǎo)致的網(wǎng)絡(luò)故障。
具體實施方式
下面對本發(fā)明的內(nèi)容進行更加詳細的闡述:
【聯(lián)通性檢查方法:】
通過向檢測主機發(fā)送ICMP包,檢測遠程主機是否可以聯(lián)通
1. 根據(jù)遠程主機IP地址創(chuàng)建原始套接字,ICMP協(xié)議的socket連接
2. 建立ICMP封包并發(fā)送并等待返回結(jié)果(嘗試3次)
3. 如果有結(jié)果返回則認為遠程主機可以聯(lián)通,否則認為主機不可達;
【網(wǎng)絡(luò)故障檢測方法和步驟】
第一步:網(wǎng)絡(luò)聯(lián)通性檢測
1.根據(jù)【聯(lián)通性檢查方法】的方法檢測主機是否可以聯(lián)通;
2.如果可以聯(lián)通,則網(wǎng)絡(luò)正常,結(jié)束;
3.如果不可以聯(lián)通,進行【第二步】
第二步:檢測瀏覽代理設(shè)置
通過注冊表,檢測代理設(shè)置情況,判斷代理設(shè)置是否正確
1. 獲取注冊表鍵:
HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\
Internet Settings下ProxyEnable和ProxyServer的值
2.如果ProxyEnable為0則沒有啟用代理,進行【防火墻檢測】;
3.如果ProxyEnable為1則啟用了代理,繼續(xù);
4.關(guān)閉代理服務(wù)器設(shè)置(將ProxyEnable設(shè)置為0)
5.檢測遠程主機的聯(lián)通性;
6.如果聯(lián)通,則認為是代理服務(wù)器影響網(wǎng)絡(luò),否則進行【第三步】
第三步:檢測防火墻設(shè)置
用防火墻相關(guān)的API停止防火墻,并檢測網(wǎng)絡(luò)的聯(lián)通行
使用windows提供的INetFwPolicy2接口
1.使用INetFwPolicy2接口提供的函數(shù)get_FirewallEnabled
獲取NET_FW_PROFILE2_PRIVATE和NET_FW_PROFILE2_PRIVATE
網(wǎng)絡(luò)防火墻狀態(tài)
2.如果防火墻都沒有開啟,與防火墻無關(guān),結(jié)束防火墻檢測;
3.如果防火墻有開啟的,使用INetFwPolicy2提供的函數(shù)put_FirewallEnabled關(guān)閉防火墻;
4.根檢測網(wǎng)絡(luò)的聯(lián)通性;
5.如果聯(lián)通,則認為是防火墻影響網(wǎng)絡(luò);
6.如果不通,進行【第四步】;
第四步:檢測網(wǎng)卡狀態(tài)
檢測網(wǎng)卡是否斷開或禁用
1.使用GetAdaptersInfo函數(shù)獲取所有網(wǎng)卡適配器信息并保存
2.從注冊表HKEY_LOCAL_MACHINE項中的
SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\NetworkCards
中獲取安裝網(wǎng)卡信息:
ServiceName:服務(wù)名稱,
根據(jù)服務(wù)名稱可以組合文件描述\\\\.\\+ ServiceName
3. 使用CreateFile函數(shù),傳人文件描述服務(wù),打開文件句柄hFile
4. 如果返回文件句柄錯誤,說明該網(wǎng)卡被禁用了
5. 如果獲取的文件句柄有效,則使用DeviceIoControl函數(shù)獲取網(wǎng)卡的狀態(tài)和相關(guān)信息:
網(wǎng)卡狀態(tài)(斷開,連接),網(wǎng)卡MAC地址,網(wǎng)卡類型
6.果多個網(wǎng)卡,展示選擇網(wǎng)卡頁面
7.顯示網(wǎng)卡狀態(tài),判斷網(wǎng)卡是否正常;
8.如果網(wǎng)卡正常,根據(jù)ServiceName 找到網(wǎng)卡適配器信息,并獲取IP地址和網(wǎng)關(guān)以及 DNS
9.檢測網(wǎng)卡的IP地址和網(wǎng)關(guān)是否是有效的IP地址
10.如果無效,則IP和網(wǎng)關(guān)設(shè)置錯誤;
11.如果有效,檢測到網(wǎng)關(guān)是否聯(lián)通;
12.如果不通,說明網(wǎng)關(guān)設(shè)置錯誤,進行DNS檢測
13.判斷網(wǎng)卡的兩個DNS是否是有效的IP地址;
14.如果是有效的IP地址,檢測是否可以到達,如果有一個能到達則認為DNS沒有問題,如果都不能到達則說明DNS設(shè)置有問題,提示修改DNS設(shè)置。
本發(fā)明用一種簡單有效的方法檢測遠端服務(wù)是否聯(lián)通,一步步通過對代理服務(wù)器,防火墻,網(wǎng)卡參數(shù)和DNS數(shù)據(jù)的進行自動檢測,以快速定位網(wǎng)絡(luò)故障產(chǎn)生的原因以此為依據(jù)及時修復(fù)網(wǎng)絡(luò)故障。