1. 請問 資料庫TCP/IP中 IP地址選項卡的各個IP代表什麼意思
子網掩碼計算方法
子網掩碼是用來判斷任意兩台計算機的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
2. SQL語句查詢IP段
你這種數據結構的話,應該先把IP地址轉換成數值,才能用 數值 比較查詢。
IP協議規定IP總長度是位的,所以每組是8位
如果我們把ip地址看成 a.b.c.d,那麼轉成IP數值就是
d*2的0次方 + c*2的8次方 + b*2的16次方 + a*2的24次方
為了實現IP 字元串轉換成數值,要建一個函數。
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_IP2Int]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_IP2Int]
GO
-- 字元串IP地址轉換成IP數值函數。
CREATE FUNCTION dbo.f_IP2Int(
@ip char(15)
)RETURNS bigint
AS
BEGIN
DECLARE @re bigint
SET @re=0
SELECT @re=@re+LEFT(@ip,CHARINDEX('.',@ip+'.')-1)*ID
,@ip=STUFF(@ip,1,CHARINDEX('.',@ip+'.'),'')
FROM(
SELECT ID=CAST(16777216 as bigint)
UNION ALL SELECT 65536
UNION ALL SELECT 256
UNION ALL SELECT 1)a
RETURN(@re)
END
GO
查詢語句中就可以用這個函數了
select address
from IP_table
where f_ip2int(IP_address) beween f_ip2int(IP_start) and f_ip2int(IP_end)
3. ip資料庫數據的含義
關於IP到Dword的轉換:
在這里,我們運用WINDOWS自帶的計數器,並開啟它的科學計算功能,以211,91,216,106到3546011754為例,先分別將十進制的206,169,40,2轉換成十六進制的d3,5b,d8,6a,再將d3,5b,d8,6a以十六進制的雙位元組的形式寫如計數器,再轉換成十進制,就可以得到3546011754.事實上,在平常運用中,我們常用的方法是這樣的:
211 x 16777216 = 3539992576
91 x 65536 = 5963776
216 x 256 = 55296
+ 106 x 1 = 106
--------------------------------
3546011754
與IP的256倍數疊加一致,3546011754也可以以4294967296的倍數疊加!
關於IP與八進制及十六進制的轉換:
雖然已經知道了Dword的轉換,但是還遠遠不夠,因為IP同樣可以被轉換成八進制和十六進制!對於八進制,我們僅僅只要將各段IP分別轉換成八進制,然後再在各段IP前加上一個"0(零)"即可,如211,91,216,106被轉換成0323,0133,0330.0152.對於十六進制,如八進制的轉換,在這里,不同的僅僅是在開頭處加上"0(零)x",成為0xd3.0x5b.0xd8.0x6a,而且此處小數點是可以省略的而成為0xd35bd86a,而且與上述的倍數疊加原理相同.
講了這么多,歸納起來,有以下幾種方式訪問http://www.ttian.net/index.html
http://user:pwd@3546011754/index.html --可加上4294967296的整數倍
http://user:[email protected]/index.html --各欄位前可加數個"0"
http://user:[email protected]/index.html
http://user:pwd@0xd35bd86a/index.html --可在"0x"後加上任意字元