① 如何通過一個編程獲得IP地址歸屬地的最簡單辦
有時在網站應用程序中要顯示對方的IP地址與它的歸屬地,一般來說,有下列幾種辦法。
1, 採用IP地址資料庫。本地查詢
這個辦法的優點是:查詢速度最快,不依賴於外部網站。
缺點是:要編寫一定的資料庫查詢代碼,而且你的資料庫如果不是很新,則某些IP的查詢結果會不正確。
(有需要的可以在此留言,大蝦米可以提供一個能找到的最新的IP地址庫)
2,採用WebService查詢。
這里有一個最好的WebService
http://www.webxml.com.cn/zh_cn/web_services_item.aspx?id=56647553443555386D2F4D3D
缺點是:要編寫一定的WebService查詢代碼。而且查詢的結果是XML形式,需要進一步的解析。
3,調用某些查詢網站的代碼,如http://www.ip.cn/
缺點是:它會返回相當多的無關代碼,難以解析出你想要的東西。
4, 調用氣動隔膜泵網站鏈接直接查詢
比如
http://www.tianqizx.cn/ip.aspx?ip=202.105.19.49
網站會直接返回查詢的結果,如「 廣東省佛山市 三水區」
不會有任何的雜信息干擾
win32 API並沒有提供直接得到CPU佔用率的氣動隔膜泵函數,但提供GetProcessTimes()函數可以得到進程佔用的CPU時間,通過和實際時間的流逝相比,可以得到某進程佔用CPU的比率好了,
下面就是完整的C++代碼。
// 得到當前進程的CPU佔用率
class GetCPUPercentage
{
private:
CRITICAL_SECTION cs; // 供多線程同步的臨界區變數
HANDLE hd; // 空閑進程的句柄
DWORD t1; // 時間戳
int percent; // 最近一次計算的CPU佔用率
__int64 oldp;
__int64 FileTimeToInt64(const FILETIME& time);
int GetTime(__int64& proc); // 得到進程佔用的CPU時間
public:
GetCPUPercentage();
~GetCPUPercentage();
int Get(); // 得到CPU佔用率
};
GetCPUPercentage::GetCPUPercentage()
{
InitializeCriticalSection(&cs); // 初始化線程臨界區變數
percent = 0; // 初始的佔用率
DWORD pid = GetCurrentProcessId(); // 得到當前進程id
hd = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid); // 通過id得到進程的句柄
if( hd==NULL ){
return;
}
// 得到初始時刻的值
GetTime(oldp);
t1 = GetTickCount();
}
GetCPUPercentage::~GetCPUPercentage()
{
if( hd!=NULL ){
CloseHandle(hd);
}
DeleteCriticalSection(&cs);
}
// 時間格式轉換
__int64 GetCPUPercentage::FileTimeToInt64(const FILETIME& time)
{
ULARGE_INTEGER tt;
tt.LowPart = time.dwLowDateTime;
tt.HighPart = time.dwHighDateTime;
return(tt.QuadPart);
}
// 得到進程佔用的CPU時間
int GetCPUPercentage::GetTime(__int64& proc)
{
FILETIME create;
FILETIME exit;
FILETIME ker; // 內核佔用時間
FILETIME user; // 用戶佔用時間
FILETIME now;
if( !GetProcessTimes(hd, &create, &exit, &ker, &user) ){
return(-1);
}
proc = (FileTimeToInt64(ker) + FileTimeToInt64(user))/10000;
return(0);
}
// 進行換算
int GetCPUPercentage::Get()
{
if( hd==NULL )
return(0);
EnterCriticalSection(&cs);
DWORD t2 = GetTickCount();
DWORD dt = t2 - t1;
if( dt>139 ){ // 毫秒數。用一個比較少的時間片作為計算單位,這個值可修改
__int64 proc;
GetTime(proc);
percent = ((proc-oldp)*100)/dt;
t1 = t2;
oldp = proc;
}
LeaveCriticalSection(&cs);
return(percent);
}
// 定義一個全局變數
GetCPUPercentage _cpu;
// 下面是用C++Bulider寫的測試例子:
// --------------------------
// 在用一個時鍾不停地顯示當前的CPU佔用率
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{http://www.it168.com/
Label1->Caption = _cpu.Get();
}
//---------------------------------------------------------------------------
// 再弄個按鈕
LRESULT WINAPI TestThread(LONG lParam)
{
int n = lParam;
for(int i=0 ;i<n; i++){
Form1->Label2->Caption = i;
Sleep(12);
}
return(0);
}
// 點擊這個按鈕會創建一些線程來把CPU整的繁忙些
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int n = atoi(Edit1->Text.c_str());
DWORD dwThreadid;
CreateThread(NULL
② 怎樣計算IP地址,能舉一下例嗎
二樓的不懂就不要亂說。
內容有點多,慢慢看。
IP地址與網路分類
(1)IP地址
不同的物理網路技術有不同的編址方式;不同物理網路中的主機,有不同的物理網路地址。網間網技術是將不同物理網路技術統一起來的高層軟體技術。網間網技術採用一種全局通用的地址格式,為全網的每一網路和每一主機都分配一個網間網地址,以此屏蔽物理網路地址的差異。IP協議提供一種全網間網通用的地址格式,並在統一管理下進行地址分配,保證一個地址對應一台網間網主機(包括網關),這樣物理地址的差異被IP層所屏蔽。IP層所用到的地址叫做網間網地址,又叫IP地址。它由網路號和主機號兩部分組成,統一網路內的所有主機使用相同的網路號,主機號是唯一的。IP地址是一個32為的二進制數,分成4個欄位,每個欄位8位。
(2)三類主要的網路地址
我們知道,從LAN到WAN,不同種類網路規模相差很大,必須區別對待。因此按網路規模大小,將網路地址分為主要的三類,如下:
A類:
0 1 2 3 8 16 24
3 1 0網路號主機號
B類:
1 0網路號主機號
C類:
1 1 0網路號主機號
A類地址用於少量的(最多27個)主機數大於216的大型網,每個A類網路可容納最多224台主機;B類地址用於主機數介於28~216之間數量不多不少的中型網,B類網路最多214個;C類地址用於每個網路只能容納28台主機的大量小型網,C類網路最多221個。
除了以上A、B、C三個主類地址外,還有另外兩類地址,如下:
D類:
1 1 1 0多目地址
E類:
1 1 1 1 0留待後用
其中多目地址(multicast address)是比廣播地址稍弱的多點傳送地址,用於支持多目傳輸技術。E類地址用於將來的擴展之用。
(3)TCP/IP規定網路地址
除了一般地標識一台主機外,還有幾種具有特殊意義的特殊形式。
*廣播地址
TCP/IP規定,主機號全為「1」的網路地址用於廣播之用,叫做廣播地址。所謂廣播,指同時向網上所有主機發送報文。
*有限廣播
前面提到的廣播地址包含一個有效的網路號和主機號,技術上稱為直接廣播(directed boradcasting)地址。在網間網上的任何一點均可向其他任何網路進行直接廣播,但直接廣播有一個缺點,就是要知道信宿網路的網路號。
有時需要在本網路內部廣播,但又不知道本網路網路號。TCP/IP規定,32比特全為「1」的網間網地址用於本網廣播,該地址叫做有限廣播地址(limited broadcast address)。
*「0」地址
TCP/IP協議規定,各位全為「0」的網路號被解釋成「本」網路。
*回送地址
A類網路地址127是一個保留地址,用於網路軟體測試以及本地機進程間通信,叫做回送地址(loopback address)。無論什麼程序,一旦使用回送地址發送數據,協議軟體立即返回之,不進行任何網路傳輸。
TCP/IP協議規定,一、含網路號127的分組不能出現在任何網路上;二、主機和網關不能為該地址廣播任何尋徑信息。由以上規定可以看出,主機號全「0」全「1」的地址在TCP/IP協議中有特殊含義,不能用作一台主機的有效地址。
二、子網掩碼
(1)子網TCP/IP網間網技術產生於大型主流機環境中,它能發展到今天的規模是當初的設計者們始料未及的。網間網規模的迅速擴展對IP地址模式的威脅並不是它不能保證主機地址的唯一性,而是會帶來兩方面的負擔:第一,巨大的網路地址管理開銷;第二,網關尋徑急劇膨脹。其中第二點尤為突出,尋徑表的膨脹不僅會降低網關尋徑效率(甚至可能使尋徑表溢出,從而造成尋徑故障),更重要的是將增加內外部路徑刷新時的開銷,從而加重網路負擔。
因此,迫切需要尋求新的技術,以應付網間網規模增長帶來的問題。仔細分析發現,網間網規模的增長在內部主要表現為網路地址的增減,因此解決問題的思路集中在:如何減少網路地址。於是IP網路地址的多重復用技術應運而生。
通過復用技術,使若干物理網路共享同一IP網路地址,無疑將減少網路地址數。
子網編址(subnet addressing)技術,又叫子網尋徑(subnetrouting),英文簡稱subnetting,是最廣泛使用的IP網路地址復用方式,目前已經標准化,並成為IP地址模式的一部分。
一般的,32位的IP地址分為兩部分,即網路號和主機號,我們分別把他們叫做IP地址的「網間網部分」和「本地部分」。子網編址技術將本地部分進一步劃分為「物理網路」部分和「主機」部分,如圖:
網間網部分物理網路主機
|←網間網部分→|←————本地部分—————→|
其中「物理網路」用於標識同一IP網路地址下的不同物理網路,既是「子網」。
(2)子網掩碼IP協議標准規定:每一個使用子網的網點都選擇一個32位的位模式,若位模式中的某位置1,則對應IP地址中的某位為網路地址(包括網間網部分和物理網路號)中的一位;若位模式中的某位置0,則對應IP地址中的某位為主機地址中的一位。例如位模式:
11111111 11111111 11111111 00000000中,前三個位元組全1,代表對應IP地址中最高的三個位元組為網路地址;後一個位元組全0,代表對應IP地址中最後的一個位元組為主機地址。這種位模式叫做子網模(subnet mask)或「子網掩碼」。
為了使用的方便,常常使用「點分整數表示法」來表示一個IP地址和子網掩碼,例如B類地址子網掩碼(11111111 11111111 11111111 00000000)為:
255.255.25.0 IP協議關於子網掩碼的定義提供一種有趣的靈活性,允許子網掩碼中的「0」和「1」位不連續。但是,這樣的子網掩碼給分配主機地址和理解尋徑表都帶來一定困難,並且,極少的路由器支持在子網中使用低序或無序的位,因此在實際應用中通常各網點採用連續方式的子網掩碼。像255.255.255.64和255.255.255.160等一類的子網掩碼不推薦使用。
(3)子網掩碼與IP地址子網掩碼與IP地址結合使用,可以區分出一個網路地址的網路號和主機號。
例如:有一個C類地址為:
192.9.200.13其預設的子網掩碼為:
255.255.255.0則它的網路號和主機號可按如下方法得到:
①將IP地址192.9.200.13轉換為二進制11000000 00001001 11001000 00001101
②將子網掩碼255.255.255.0轉換為二進制11111111 11111111 11111111 00000000
③將兩個二進制數邏輯與(AND)運算後得出的結果即為網路部分11000000 00001001 11001000 00001101 AND 11111111 11111111 11111111 00000000 11000000 00001001 11001000 00000000結果為192.9.200.0,即網路號為192.9.200.0。
④將子網掩碼取反再與IP地址邏輯與(AND)後得到的結果即為主機部分11000000 00001001 11001000 00001101 AND 00000000 00000000 00000000 11111111 00000000 00000000 00000000 00001101結果為0.0.0.13,即主機號為13。
(4)子網掩碼與IP地址子網掩碼與IP地址結合使用,可以區分出一個網路地址的網路號和主機號。
例如:有一個C類地址為:
192.9.200.13 其預設的子網掩碼為:
255.255.255.0 則它的網路號和主機號可按如下方法得到:
①將IP地址192.9.200.13轉換為二進制11000000 00001001 11001000 00001101
②將子網掩碼255.255.255.0轉換為二進制11111111 11111111 11111111 00000000
③將兩個二進制數邏輯與(AND)運算後得出的結果即為網路部分11000000 00001001 11001000 00001101 AND 11111111 11111111 11111111 00000000 11000000 00001001 11001000 00000000結果為192.9.200.0,
即網路號為192.9.200.0。
④將子網掩碼取反再與IP地址邏輯與(AND)後得到的結果即為主機部分11000000 00001001 11001000 00001101 AND 00000000 00000000 00000000 11111111 00000000 00000000 00000000 00001101 結果為0.0.0.13,即主機號為13。
三、子網劃分與實例根據以上分析,建議按以下步驟和實例定義子網掩碼。
1、將要劃分的子網數目轉換為2的m次方。如要分8個子網,8=23。
2、取上述要劃分子網數的2的m次方的冪。如23,即m=3。
3、將上一步確定的冪m按高序佔用主機地址m位後轉換為十進制。如m為3 則是11100000,轉換為十進制為224,即為最終確定的子網掩碼。如果是C類網,則子網掩碼為255.255.255.224;如果是B類網,則子網掩碼為255.255.224.0;如果是C類網,則子網掩碼為255.224.0.0。
在這里,子網個數與佔用主機地址位數有如下等式成立:2m=n。其中,m表示佔用主機地址的位數;n表示劃分的子網個數。根據這些原則,將一個C類網路分成4個子網。若我們用的網路號為192.9.200,則該C類網內的主機IP地址就是192.9.200.1~192.9.200.254(因為全「0」和全「1」的主機地址有特殊含義,不作為有效的IP地址),現將網路劃分為4個部分,按照以上步驟:
4=22,取22的冪,即2,則二進制為11,佔用主機地址的高序位即為11000000,轉換為十進制為192。這樣就可確定該子網掩碼為:192.9.200.192,4個子網的IP地址范圍分別為:
二進制十進制
① 11000000 00001001 11001000 00000001 11000000 00001001 11001000 00111110 192.9.200.1
192.9.200.62
② 11000000 00001001 11001000 01000001 11000000 00001001 11001000 01111110 192.9.200.65
192.9.200.126
③ 11000000 00001001 11001000 10000001 11000000 00001001 11001000 10111110 192.9.200.129
192.9.200.190
④ 11000000 00001001 11001000 11000001 11000000 00001001 11001000 11111110 192.9.200.193
192.9.200.254
在此列出A、B、C三類網路子網數目與子網掩碼的轉換表,以供參考。
A類:
子網數目 佔用位數 子網掩碼 子網中主機數
2 1 255.128.0.0 8,388,606
4 2 255.192.0.0 4,194,302
8 3 255.224.0.0 2,097,150
16 4 255.240.0.0 1,048,574
32 5 255.248.0.0 524,286
64 6 255.252.0.0 262,142
128 7 255.254.0.0 131,070
128 8 255.255.0.0 65,534
B類:
子網數目 佔用位數 子網掩碼 子網中主機數
2 1 255.255.128.0 32,766
4 2 255.255.192.0 16,382
8 3 255.255.224.0 8,190
16 4 255.255.240.0 4,094
32 5 255.255.248.0 2,046
64 6 255.255.252.0 1,022
128 7 255.255.254.0 510
256 8 255.255.255.0 254
C類:
子網數目 佔用位數 子網掩碼 子網中主機數
2 1 255.255.255.128 126
4 2 255.255.255.192 62
8 3 255.255.255.224 30
16 4 255.255.255.240 14
32 5 255.255.255.248 6
64 6 255.255.255.252 2
③ ip地址的計算
看了一下資料 你就會了 自己掌握了才是知識
一、IP地址概念
IP地址是一個32位的二進制數,它由網路ID和主機ID兩部份組成,用來在網路中唯一的標識的一台計算機。網路ID用來標識計算機所處的網段;主機ID用來標識計算機在網段中的位置。IP地址通常用4組3位十進制數表示,中間用「.」分隔。比如,192.168.0.1。
補充[IPv6]:前面所講的32位IP地址稱之為IPv4,隨著信息技術的發展,IPv4可用IP地址數目已經不能滿足人們日常的需要,據權威機構預測到2010年要充分應用信息技術,每個人至少需要10個IP地址,比如:計算機、筆記本、手機和智能化冰箱等。為了解決該問題開發了IPv6規范,IPv6用128位表示IP地址,其表示為8組4位16進制數,中間為「:」分隔。比如,AB32:33ea:89dc:cc47:abcd:ef12:abcd:ef12。
二、IP地址分類
為了方便IP定址將IP地址劃分為A、B、C、D和E五類,每類IP地址對各個IP地址中用來表示網路ID和主機ID的位數作了明確的規定。當主機ID的位數確定之後,一個網路中是多能夠包含的計算機數目也就確定,用戶可根據企業需要靈活選擇一類IP地址構建網路結構。
A類A類地址用IP地址前8位表示網路ID,用IP地址後24位表示主機ID。A類地址用來表示網路ID的第一位必須以0開始,其他7位可以是任意值,當其他7位全為0是網路ID最小,即為0;當其他7位全為1時網路ID最大,即為127。網路ID不能為0,它有特殊的用途,用來表示所有網段,所以網路ID最小為1;網路ID也不能為127;127用來作為網路迴路測試用。所以A類網路網路ID的有效范圍是1-126共126個網路,每個網路可以包含224-2台主機。
B類B類地址用IP地址前16位表示網路ID,用IP地址後16位表示主機ID。B類地址用來表示網路ID的前兩位必須以10開始,其他14位可以是任意值,當其他14位全為0是網路ID最小,即為128;當其他14位全為1時網路ID最大,第一個位元組數最大,即為191。B類IP地址第一個位元組的有效范圍為128-191,共16384個B類網路;每個B類網路可以包含216-2台主機(即65534台主機)。
C類C類地址用IP地址前24位表示網路ID,用IP地址後8位表示主機ID。C類地址用來表示網路ID的前三位必須以110開始,其他22位可以是任意值,當其他22位全為0是網路ID最小,IP地址的第一個位元組為192;當其他22位全為1時網路ID最大,第一個位元組數最大,即為223。C類IP地址第一個位元組的有效范圍為192-223,共2097152個C類網路;每個C類網路可以包含28-2台主機(即254台主機)。
D類D類地址用來多播使用,沒有網路ID和主機ID之分,D類IP地址的第一個位元組前四位必須以1110開始,其他28位可以是任何值,則D類IP地址的有效范圍為224.0.0.0到239.255.255.255。
E類E類地址保留實驗用,沒有網路ID和主機ID之分,E類IP地址的第一位元組前四位必須以1111開始,其它28位可以是任何值,則E類IP地址的有效范圍為240.0.0.0至255.255.255.254。其中255.255.255.2555表示廣播地址。
在實際應用中,只有A、B和C三類IP地址能夠直接分配給主機,D類和E類不能直接分配給計算機。
三、網路ID、主機ID和子網掩碼
網路ID用來表示計算機屬於哪一個網路,網路ID相同的計算機不需要通過路由器連接就能夠直接通信,我們把網路ID相同的計算機組成一個網路稱之為本地網路(網段);網路ID不相同的計算機之間通信必須通過路由器連接,我們把網路ID不相同的計算機稱之為遠程計算機。
當為一台計算機分配IP地址後,該計算機的IP地址哪部份表示網路ID,哪部份表示主機ID,並不由IP地址所屬的類來確定,而是由子網掩碼確定。子網確定一個IP地址屬於哪一個子網。
子網掩碼的格式是以連續的255後面跟連續的0表示,其中連續的255這部份表示網路ID;連續0部份表示主機ID。比如,子網掩碼255.255.0.0和255.255.255.0。
根據子網掩碼的格式可以發現,子網掩碼有0.0.0.0、255.0.0.0、255.255.0.0、255.255.255.0和255.255.255.255共五種。採用這種格式的子網掩碼每個網路中主機的數目相差至少為256倍,不利於靈活根據企業需要分配IP地址。比如,一個企業有2000台計算機,用戶要麼為其分配子網掩為255.255.0.0,那麼該網路可包含65534台計算機,將造成63534個IP地址的浪費;要麼用戶為其分配8個255.255.255.0網路,那麼必須用路由器連接這個8個網路,造成網路管理和維護的負擔。
網路ID是IP地址與子網掩碼進行與運算獲得,即將IP地址中表示主機ID的部份全部變為0,表示網路ID的部份保持不變,則網路ID的格式與IP地址相同都是32位的二進制數;主機ID就是表示主機ID的部份。
例題1:IP地址:192.168.23.35 子網掩碼:255.255.0.0
網路ID:192.168.0.0 主機ID:23.35
例題2:IP地址:192.168.23.35 子網掩碼:255.255.255.0
網路ID:192.168.23.0 主機ID:35
四、子網和CIDR
將常規的子網掩碼轉換為二進制,將發現子網掩格式為連續的二進制1跟連續0,其中子網掩碼中為1的部份表示網路ID,子網掩中為0的表示主機ID。比如255.255.0.0轉換為二進制為11111111 11111111 00000000 00000000。
在前面所舉的例子中為什麼不用連續的1部份表示網路ID,連續的0部份表示主機ID呢?答案是肯定的,採用這種方案的IP定址技術稱之為無類域間路由(CIDR)。CIDR技術用子網掩碼中連續的1部份表示網路ID,連續的0部份表示主機ID。比如,網路中包含2000台計算機,只需要用11位表示主機ID,用21位表網路ID,則子網掩碼表示為11111111.11111111.11100000.00000000,轉換為十進制則為255.255.224.0。此時,該網路將包含2046台計算機,既不會造成IP地址的浪費,也不會利用路由器連接網路,增加額外的管理維護量。
CIDR表示方法:IP地址/網路ID的位數,比如192.168.23.35/21,其中用21位表示網路ID。
例題1:192.168.23.35/21
子網掩碼:11111111 11111111 11111000 00000000則為255.255.248.0
網路ID:192.168.00010111.0(其中第三個位元組紅色部分表示網路ID,其他表示主機ID,網路ID是表示網路ID部份保持不變主機ID全部變為0)則網路ID為192.168.16.0
起始IP地址:192.168.16.1(主機ID不能全為0,全為0表示網路ID最後一位為1)
結束IP地址:192.168.00010111.11111110(主機ID不能全為1,全為1表示本地廣播)則結束IP地址為:192.168.23.254。
例題2:將163.135.0.0劃分為16個子網,計算前兩個子網的網路ID、子網掩碼、起止IP地址。
第1步:用CIDR表示163.135.0.0/20,則子網掩碼為255.255.240(11110000).0。
第2步:第一網路ID(子網掩碼與IP地址與運算):163.135.0.0
第一個IP地址:163.135.0.1 結束IP地址:163.135.15.254;
第3步:第二網路ID:163.135.16.0
第一個IP地址:163.135.16.1 結束IP地址:163.135.31.254。
五、子網掩碼和網路ID的快速計算方法
CIDR的子網掩碼都是連續的1跟連接的0表示,則子網掩碼有以下幾種表示方法:
0000 0000 0
1000 0000 128
1100 0000 128+64=192
1110 0000 128+64+32=224
1111 0000 255-15=240
1111 1000 255-7=248
1111 1100 255-3=252
1111 1110 255-1=254
1111 1111 255
大家都知道11111111的十進制數為255,那麼我們怎麼來快速計運算元網掩碼呢?二進制的1=1,11=3,111=7,1111=15;那麼1111 1110=255-1,1111 1100=255-3,1111 1000=255-8,1111 0000=255-15這樣是不是就很快呢?只要我們一旦確定子網掩碼中有多少位表示網路ID,那麼我們馬上就可以寫出子網掩碼了。那麼,對於1000 0000,1100 0000和1110 0000 我們又該怎麼計算呢?27=8則1000 0000=128,1100 0000=128+64,1110 0000=128+64+32,所以我們不需要去記住每一個為多少,只需要做做簡單的加減法就搞定子網掩碼的計算。
網路ID的結果大家都知道網路ID部份不變,主機ID部分全部變為0,那麼在計算網路ID時,首先看子網掩碼中有多少位用來表示網路,相應在將IP地址轉換為二進制時就只轉換前面幾位,比如192.168.176.15/19,網路ID一共19位,則網路ID前兩個位元組為192.168.X.0發生變化的為第三個位元組。那麼怎樣快速計算出這個變化的X的值呢?我們知道第三位元組只有三位表示網路ID,轉換時176>128,第1位為1,176-128=48<64,第2位為0,48>32第3位為1,剩下的計算就沒有意義了,全都要轉換為0,則網路ID為10100000,則網路ID為192.168.160.0,這樣計算反而出錯的可能性很小。
六、本地和遠程網路概念
網路ID相同的計算機稱之為本地網路,本地網路中的計算機相互通信不需要路由器連接;網路ID不相同的計算機稱之為遠程網路,遠程網路中的計算機要相互通信必須通過路由器連接。
例題:192.168.10.14/28,192.168.10.15/28,192.168.10.16/28,192.168.10.31/28哪些是合法IP,哪些是非法IP地址?
主機ID全為0和主機ID全為1的為非法IP地址:192.168.10.15/28、192.158.10.16/28、192.168.10.31/28都是非法IP地址。
例題:192.168.10.14/28,192.168.10.15/28,192.168.10.16/28哪個不是同一網段?
網路ID相同的就屬於同一網段,則192.168.10.16/28不屬於同一網段。
七、子網數和主機數的計算方法
例題:172.168.34.56/20,一共劃分為了多少個子網,各子網可以包含多少台主機。
172.168.34.56是一個B類地址,B類地址用16位表示網路ID,題目中20位表示網路ID,則子網位數為4位,那麼子網就有24次個(即從0000、0001到1111的16種變化)。
由於IP地址是32位,用20位表示網路ID,則主機ID的位數為12位,則每個子網可以包含212-2個IP地址,即可以包含4096個IP地址。
注意:為什麼計算IP地址時要減2,而計運算元網數目時不減2呢?IP地址減2的原因是主機ID不能全為0也不能全為1;子網就不存在這個問題。
八、公共IP和私有IP地址
IP地址由IANA(Internet地址分配機構)管理和分配,任何一個IP地址要能夠在Internet上使用就必須由IANA分配,IANA分配的能夠在Internet上正常使用的IP地址稱之為公共IP地址;IANA保留了一部份IP地址沒有分配給任何機構和個人,這部份IP地址不能在Internet上使用,此類IP地址就稱之為私有IP地址。為什麼私有IP地址不能在Internet上使用呢?因為Internet上沒有私有IP地址的路由。私有IP地址范圍包括:
A類:10.0.0.0/8
B類:172.16.0.0/12 即172.16.0.1-172.31.255.254共16個B類網路
C類:192.168.0.0/16即192.168.0.1-192.168.255.254共256個C類網路
九、路由概念、Ping、Ipconfig、Route和Tracert命令
通過路由器將數據從一個網路傳輸到另一個網路稱之為路由。路由選擇負責在網路中選擇一段最優先的路徑將數據傳輸到目的網路,路由選擇的基礎和依據是路由表,路由表由目的網路ID、子網掩碼、網關、介面和計費組成,通過route print可查看計算機的路由表。
Ping命令三種結果 Ipconfig命令 Tracert命令
目的地不可到達:路由表無目的地記錄
超時:網關設置錯有路由表記錄
Ping通過:正常
更多資料請訪問:http://www.ecity.cn/user/xch/from.asp?id=109&wh=badhunk
免費觀看希賽所有視頻及資料:http://www.ecity.cn/user/xch/from.asp?id=92&wh=badhunk
④ C#.net中,關於兩個ip(是字元串)的比較計算方法
首先是你得知道內蒙古的IP段,好吧我們先假設58.18.135.*是赤峰的IP段,當然肯定不止這么少,你自己去查下赤峰 IP段,這不重要,重要是解決問題的辦法:
你直接把IP取出來裝在String變數里,也就是先定義一個string變數接IP段
string strIP = 什麼什麼什麼;//取IP地址,我不知道你什麼途徑取得的,自己寫
//然後把String按照"."分割裝在string數組里
char[] separator = { ',' };
String[] chStrIP = new String[4];//因為IP段都是被"."分成4部分
chStrIP = strIP.Split(separator);
//再然後你把string 數組轉成int型的
int[] chIntIP = new int[4];
for(int i=0;i<4;i++)
{
int.TryParse(chStrIP[i], out chIntIP[i]);
}
然後你就可以把chIntIP[0],chIntIP[1],chIntIP[2],chIntIP[3]取出來了,都是聽話的整形,想怎麼判斷怎麼判斷,只要你知道赤峰的代碼區間或者代碼段,這問題就解決了,我解釋的這么好,多給點分吧,再問不難,哈哈
⑤ ip地址的計算與應用
P地址(IP Address)的概念及其子網掩碼(Subnet Mask)的計算對於首次學習網路知識的初學者來說是一件比較困難的事情。下文所述的是我個人的一些心得,望大家指正。
按照目前使用的IPv4的規定,對IP地址強行定義了一些保留地址,即:「網路地址」和「廣播地址」。所謂「網路地址」就是指「主機號」全為「0」的IP地址,如:125.0.0.0(A類地址);而「廣播地址」就是指「主機號」全為「255」時的IP地址,如:125.255.255.255(A類地址)。
而子網掩碼,則是用來標識兩個IP地址是否同屬於一個子網。它也是一組32位長的二進制數值,其每一位上的數值代表不同含義:為「1」則代表該位是網路位;若為「0」則代表該位是主機位。和IP地址一樣,人們同樣使用「點式十進制」來表示子網掩碼,如:255.255.0.0。
如果兩個IP地址分別與同一個子網掩碼進行按位「與」計算後得到相同的結果,即表明這兩個IP地址處於同一個子網中。也就是說,使用這兩個IP 地址的兩台計算機就像同一單位中的不同部門,雖然它們的作用、功能、乃至地理位置都可能不盡相同,但是它們都處於同一個網路中。
子網掩碼計算方法
自從各種類型的網路投入各種應用以來,網路就以不可思議的速度進行大規模的擴張,目前正在使用的IPv4也逐漸暴露出了它的弊端,即:網路號佔位太多,而主機號位太少。目前最常用的一種解決辦法是對一個較高類別的IP地址進行細劃,劃分成多個子網,然後再將不同的子網提供給不同規模大小的用戶群使用。使用這種方法時,為了能有效地提高IP地址的利用率,主要是通過對IP地址中的「主機號」的高位部分取出作為子網號,從通常的「網路號」界限中擴展或壓縮子網掩碼,用來創建一定數目的某類IP地址的子網。當然,創建的子網數越多,在每個子網上的可用主機地址的數目也就會相應減少。
要計算某一個IP地址的子網掩碼,可以分以下兩種情況來分別考慮。
第一種情況:
無須劃分成子網的IP地址。
一般來說,此時計算該IP地址的子網掩碼非常地簡單,可按照其定義就可寫出。例如:某個IP地址為12.26.43.0,無須再分割子網,按照定義我們可以知道它是一個A類地址,其子網掩碼應該是255.0.0.0;若此IP地址是一個B類地址,則其子網掩碼應該為255.255.0.0;如果它是C類地址,則其子網掩碼為255.255.255.0。其它類推。
第二種情況:
要劃分成子網的IP地址。
在這種情況下,如何方便快捷地對於一個IP地址進行劃分,准確地計算每個子網的掩碼,方法的選擇很重要。下面我介紹兩種比較便捷的方法:
當然,在求子網掩碼之前必須先清楚要劃分的子網數目,以及每個子網內的所需主機數目。
方法一:利用子網數來計算。
1.首先,將子網數目從十進制數轉化為二進制數;
2.接著,統計由「1」得到的二進制數的位數,設為N;
3.最後,先求出此IP地址對應的地址類別的子網掩碼。再將求出的子網掩碼的主機地址部分(也就是「主機號」)的前N位全部置1,這樣即可得出該IP地址劃分子網的子網掩碼。
例如:需將B類IP地址167.194.0.0劃分成28個子網:
1)(28)10=(11100)2;
2)此二進制的位數是5,則N=5;
3)此IP地址為B類地址,而B類地址的子網掩碼是255.255.0.0,且B類地址的主機地址是後2位(即0-255.1-254)。於是將子網掩碼255.255.0.0中的主 機地址前5位全部置1,就可得到255.255.248.0,而這組數值就是劃分成 28個子網的B類IP地址 167.194.0.0的子網掩碼。
方法二:利用主機數來計算。
1.首先,將主機數目從十進制數轉化為二進制數;
2.接著,如果主機數小於或等於254(注意:應去掉保留的兩個IP地址),則統計由「1」中得到的二進制數的位數,設為N;如果主機數大於 254,則 N>8,也就是說主機地址將超過8位;
3.最後,使用255.255.255.255將此類IP地址的主機地址位數全部置為1,然後按照「從後向前」的順序將N位全部置為0,所得到的數值即為所求的子網掩碼值。
例如:需將B類IP地址167.194.0.0劃分成若干個子網,每個子網內有主機500台:
1)(500)10=(111110100)2;
2)此二進制的位數是9,則N=9;
3)將該B類地址的子網掩碼255. 255.0.0的主機地址全部置 1,得到255.255.255.255。然後再從後向前將後9位置0,可得:11111111. 11111111.11111110.00000000即255.255.254.0。這組數值就是劃分成主機為500台的B類IP地址 167.194.0.0的子網掩碼。
⑥ ip地址和掩碼計算
1) 將IP地址和子網掩碼換算為二進制,子網掩碼連續全1的是網路地址,後面的是主機地址。 虛線前為網路地址,虛線後為主機地址
2)IP地址和子網掩碼進行與運算,結果是網路地址
3) 將上面的網路地址中的網路地址部分不變,主機地址變為全1,結果就是廣播地址。
4) 地址范圍就是含在本網段內的所有主機
網路地址+1即為第一個主機地址,廣播地址-1即為最後一個主機地址,由此可以看出
地址范圍是: 網路地址+1 至 廣播地址-1
本例的網路范圍是:192·168·100·1 至 192·168·100·254
也就是說下面的地址都是一個網段的。
192·168·100·1、192·168·100·2 。。。 192·168·100·20 。。。 192·168·100·111 。。。 192·168·100·254
5) 主機的數量
主機的數量=2二進制的主機位數-2
減2是因為主機不包括網路地址和廣播地址。本例二進制的主機位數是8位。
主機的數量=28-2=254
(二)總體計算
我們把上邊的例子合起來計算一下過程如下:
例2: IP地址為128·36·199·3 子網掩碼是255·255·240·0。算出網路地址、廣播地址、地址范圍、主機數。
1) 將IP地址和子網掩碼換算為二進制,子網掩碼連續全1的是網路地址,後面的是主機地址, 虛線前為網路地址,虛線後為主機地址
2)IP地址和子網掩碼進行與運算,結果是網路地址
3)將運算結果中的網路地址不變,主機地址變為1,結果就是廣播地址。
4) 地址范圍就是含在本網段內的所有主機
網路地址+1即為第一個主機地址,廣播地址-1即為最後一個主機地址,由此可以看出
地址范圍是: 網路地址+1 至 廣播地址-1
本例的網路范圍是:128·36·192·1 至 128·36·207·254
5) 主機的數量
主機的數量=2二進制位數的主機-2
主機的數量=212-2=4094
減2是因為主機不包括網路地址和廣播地址。
從上面兩個例子可以看出不管子網掩碼是標準的還是特殊的,計算網路地址、廣播地址、地址數時只要把地址換算成二進制,然後從子網掩碼處分清楚連續1以前的是網路地址,後是主機地址進行相應計算即可。
子網掩碼計算方法
子網掩碼是用來判斷任意兩台計算機的IP地址是否屬於同一子網路的根據。
最為簡單的理解就是兩台計算機各自的IP地址與子網掩碼進行AND運算後,如果得出的結果是相同的,則說明這兩台計算機是處於同一個子網路上的,可以進行直接的通訊。就這么簡單。
請看以下示例:
運算演示之一:aa
I P 地址 192.168.0.1
子網掩碼 255.255.255.0
AND運算
轉化為二進制進行運算:
I P 地址 11010000.10101000.00000000.00000001
子網掩碼 11111111.11111111.11111111.00000000
AND運算
11000000.10101000.00000000.00000000
轉化為十進制後為:
192.168.0.0
運算演示之二:
I P 地址 192.168.0.254
子網掩碼 255.255.255.0
AND運算
轉化為二進制進行運算:
I P 地址 11010000.10101000.00000000.11111110
子網掩碼 11111111.11111111.11111111.00000000
AND運算
11000000.10101000.00000000.00000000
轉化為十進制後為:
192.168.0.0
運算演示之三:
I P 地址 192.168.0.4
子網掩碼 255.255.255.0
AND運算
轉化為二進制進行運算:
I P 地址 11010000.10101000.00000000.00000100
子網掩碼 11111111.11111111.11111111.00000000
AND運算
11000000.10101000.00000000.00000000
轉化為十進制後為:
192.168.0.0
通過以上對三組計算機IP地址與子網掩碼的AND運算後,我們可以看到它運算結果是一樣的。均為192.168.0.0
所以計算機就會把這三台計算機視為是同一子網路,然後進行通訊的。我現在單位使用的代理伺服器,內部網路就是這樣規劃的。
也許你又要問,這樣的子網掩碼究竟有多少了IP地址可以用呢?你可以這樣算。
根據上面我們可以看出,區域網內部的ip地址是我們自己規定的(當然和其他的ip地址是一樣的),這個是由子網掩碼決定的通過對255.255.255.0的分析。可得出:
前三位IP碼由分配下來的數字就只能固定為192.168.0 所以就只剩下了最後的一位了,那麼顯而易見了,ip地址只能有(2的8次方-1),即256-1=255一般末位為0或者是255的都有其特殊的作用。
那麼你可能要問了:如果我的子網掩碼不是255.255.255.0呢?你也可以這樣做啊假設你的子網掩碼是255.255.128.0
那麼你的區域網內的ip地址的前兩位肯定是固定的了(什麼,為什麼是固定的?你看上邊不就明白了嗎?·#¥)
這樣,你就可以按照下邊的計算來看看同一個子網內到底能有多少台機器
1、十進制128 = 二進制1000 0000
2、IP碼要和子網掩碼進行AND運算
3、
I P 地址 00010000.01001001.1*******.********
子網掩碼 11111111.11111111.10000000.00000000
AND運算
00010000.01001001.10000000.00000000
轉化為十進制後為:
16 . 73 . 128 . 0
4、可知我們內部網可用的IP地址為:
00010000.01001001.10000000.00000000
到
00010000.01001001.11111111.11111111
5、轉化為十進制:
16.73.128.0 到 16.73.255.255
6、0和255通常作為網路的內部特殊用途。通常不使用。
7、於是最後的結果如下:我們單位所有可用的IP地址為:
192.168.128.1-192.168.128.254
192.168.129.1-192.168.129.254
192.168.130.1-192.168.130.254
192.168.131.1-192.168.131.254
. . . . . . . . . . . . .
192.168.139.1-192.168.139.254
192.168.140.1-192.168.140.254
192.168.141.1-192.168.141.254
192.168.142.1-192.168.142.254
192.168.143.1-192.168.143.254
. . . . . . . . . . . . .
192.168.254.1-192.168.254.254
192.168.255.1-192.168.255.254
8、總數為(255-128+1)*(254-1+1) =128 * 254 = 32512
FAINT!!!!@#!@把我們公司都買了還買不了這么多的機器呢!·¥!·#
9、看看的結果是否正確
(1)、設定IP地址為192.168.128.1
Ping 192.168.129.233通過測試
訪問http://192.168.129.233可以顯示出主頁
(2)、設定IP地址為192.168.255.254
Ping 192.168.129.233通過測試
訪問http://192.168.129.233可以顯示出主頁
10、結論
以上證明我們的結論是對的。
現在你就可以看你的子網中能有多少台機器了
255.255.255.128
分解:
11111111.11111111.11111111.1000000
所以你的內部網路的ip地址只能是
xxxxxxxx.xxxxxxxx.xxxxxxxx.0???????
到
xxxxxxxx.xxxxxxxx.xxxxxxxx.01111111