python來求劃分網段子網掩碼

2021-10-08 05:50:41 字數 2712 閱讀 3111

在求子網掩碼之前必須先搞清楚要劃分的子網數目,以及每個子網內的所需主機數目。

取得該二進位制的位數,為n;   

該二進位制為五位數,n = 5

取得該ip位址的類子網掩碼,將其主機位址部分的的前n位置1即得出該ip位址劃分子網的子網掩碼。

將b類位址的子網掩碼255.255.0.0的主機位址前5位置 1,得到 255.255.248.0

將主機數目轉化為二進位制來表示;

700=1010111100;

如果主機數小於或等於254(注意去掉保留的兩個ip位址),則取得該主機的二進位制位數,為n,這裡肯定 n<8。如果大於254,則 n>8,這就是說主機位址將佔據不止8位;

該二進位制為十位數,n=10;

使用255.255.255.255來將該類ip位址的主機位址位數全部置1,然後從後向前的將n位全部置為 0,即為子網掩碼值。

將該b類位址的子網掩碼255.255.0.0的主機位址全部置1,得到255.255.255.255,然後再從後向前將後 10位置0,即為:11111111.11111111.11111100.00000000,即255.255.252.0。這就是該欲劃分成主機為700臺的b類ip位址 168.195.0.0的子網掩碼。

基於以上可寫pycode如下:

print("1---已知網段數求掩碼")

print("2---已知網段內主機數求掩碼")

choice = input("請輸入計算的情況:")

if choice == "1" :

wangduan = input("請輸入網段:")

yanma_num = int(input("請輸入掩碼如255.255.255.0直接輸入24:"))

huafen_num = int(input("請輸入需要劃分的網段數:"))

er_num = bin(huafen_num) #轉為2進製位數

sum_num = yanma_num+len(er_num)-2#掩碼位數的總長度,-2是因為3 = 「0b11」

yan_num = sum_num//8#有多少個255掩碼。

ziwang_num = sum_num%8

s = ""

i = 0

while i < 8-ziwang_num:

s += "1"

i +=1

s2 = int(s,2)

s3 = 255- s2

list = ["255" for i in range(1,yan_num+1)]

ii = len(list)

while ii < 4:

ii += 1

print("需要劃分的掩碼為:"+list[0]+"."+list[1]+"."+list[2]+"."+list[3]+"/"+str(sum_num))

elif choice == "2":

wangduan = input("請輸入網段:")

yanma_num = int(input("請輸入掩碼如255.255.255.0直接輸入24:"))

huafen_num = int(input("請輸入需要劃分的網段內主機數:"))

er_num = bin(huafen_num)

sum_num = 32-len(er_num)+2#掩碼位數的總長度

yan_num = sum_num//8#有多少個255掩碼。

ziwang_num = sum_num%8

s = ""

i = 0

while i < 8-ziwang_num:

s += "1"

i +=1

s2 = int(s,2)

s3 = 255- s2

list = ["255" for i in range(1,yan_num+1)]

ii = len(list)

while ii < 4:

ii += 1

print("需要劃分的掩碼為:"+list[0]+"."+list[1]+"."+list[2]+"."+list[3]+"/"+str(sum_num))

else:

print("輸入錯誤。")

執行結果:

**比較簡單,未進行優化。

要你根據每個網路的主機數量進行子網位址的規劃和計算子網掩碼。這也可按上述原則進行計算。

比如乙個子網有10臺主機,那麼對於這個子網需要的ip位址是:

10+1+1+1=13

注意:加的第乙個1是指這個網路連線時所需的閘道器位址,接著的兩個1分別是指網路位址和廣播位址。

因為13小於16(16等於2的4次方),所以主機位為4位。而256-16=240,所以該子網掩碼為255.255.255.240。

如果乙個子網有14臺主機,不少人常犯的錯誤是:依然分配具有16個位址空間的子網,而忘記了給閘道器分配位址。這樣就錯誤了,因為14+1+1+1=17,17大於16,所以我們只能分配具有32個位址(32等於2的5次方)空間的子網。這時子網掩碼為:255.255.255.224。

YAMAHA XJR NK年代劃分 網路

xjr400在1993年推出時前剎車是無任何標記,就是葫蘆8形狀的剎車幫浦。後減震是yamaha 自己生產的減震器,外觀是金黃色!但千萬別以為金黃色就是奧林絲 瑞典出品 嘻 94年開始使用奧林絲 減震上有突出的奧林絲英文標記 後減震,前剎車還是無任何標記的葫 8剎車幫浦。95年,推出r版!活塞鍛造,...

劃分網段和子網掩碼 子網劃分

自己複習所用 ip和 子網掩碼 我們都知道,ip是由四段數字組成,在此,我們先來了解一下3類常用的ip a類ip段 1.0.0.0 到126.255.255.255 0段和127段不使用 b類ip段 128.0.0.0 到191.255.255.255 c類ip段 192.0.0.0 到223.25...

運用盒子模型劃分網頁模組

1.盒子模型的屬性 內邊距 padding 邊框 border 外邊距 margin 盒子模型不要求每個元素都必須定義這些屬性 2.div division 標籤 大多數html標籤都巢狀在div中,div中還可以巢狀多層div,通過與id class等屬性結合設定css樣式,可以替代大多數塊級文字...