我正在嘗試構建一個函數,該函數在給定CIDR的情況下返回匹配映射到該CIDR的IP的正則表達式。瞭解IP,CIDR以及IP如何映射到CIDR
例如:
def cidr_to_regex(cidr_input):
return ip_matcher
的cidr_to_regex('192.168.100.14/24')
的結果應該是相匹配的正則表達式的IP與該CIDR地址相關聯。
這是我如何理解CIDR映射,但我不知道它是正確的。你能幫我弄明白嗎?
調用cidr_to_regex
像在實施例應返回匹配192.168.100.x
,其中x爲介於0和255
這是因爲/ 24是指1 24位之間的數正則表達式,即前3個字節的地址是1,這意味着我們只關心剩餘的字節。
如果我有cidr_to_regex('192.168.100.14/23')
第一23位將是1,所以不關心前2個字節(16個比特),和最後一個字節將是:
11111110
或11111111
,所以224或225.
這意味着我應該匹配192.168.yx其中y是224或225,並且x是0 225.
如果我有cidr_to_regex('192.168.100.14/13')
之間和IP的前13位是1,這意味着我不不關心第一個字節,第二個字節的前5位等於1,所以它是這樣的:
首先位:11111111
第二位:11111xyz(因此它可以是11111000,11111001,11111010,等等)
我的表達應該匹配192.zyx,其中z是248之間以及255而X y是介於0和255之間。
我不確定我對CIDR的理解是否正確。你能幫我理解IP如何映射到CIDR嗎?
謝謝!
您似乎正確理解CIDR和VLSM。您的程序是否存在特定的問題或錯誤? – rtpddrummon
我相信我不正確地理解它。我在這裏描述的規則並沒有給出與許多在線cidr計算器相同的結果。另外,我仍然在努力構建一個匹配給定cidr的所有IP的正則表達式。 – RandomGuyqwert