IP potinklio skaičiuoklė: CIDR ir adresų diapazonas
Apskaičiuokite IPv4 potinklio duomenis pagal adresą ir CIDR prefiksą: tinklo ir transliavimo adresus, naudojamų pagrindinių kompiuterių adresų diapazoną, potinklio kaukę ir atvirkštinę kaukę.
IP Subnet Calculator
Results
Subnet Mask in Binary
Results follow RFC 791 (IPv4 addressing), RFC 4632 (CIDR notation), RFC 950 with RFC 919 and RFC 922 (network and broadcast reservation), and RFC 3021 (/31 point-to-point links).
Dokumentacija
IP potinklio skaičiuoklė
IP potinklio skaičiuoklė apskaičiuoja tinklo informaciją pagal IPv4 adresą ir prefikso ilgį. Naudodama šiuos du įvesties duomenis, ji nustato tinklo adresą, transliavimo adresą, naudojamų pagrindinių kompiuterių adresų intervalą, potinklio kaukę ir pakaitos kaukę.
Ką daro skaičiuotuvas
Įrankis priima IPv4 adresą, užrašytą keturiais skaičiais, atskirtais taškais, pavyzdžiui, 192.168.1.10, ir prefikso ilgį nuo 0 iki 32. Taip pat galima įrašyti abu kartu CIDR forma, pavyzdžiui, 192.168.1.10/24: dalis /24 automatiškai perkeliama į prefikso lauką.
Skaičiuoklė pateikia:
- CIDR žymėjimas: tinklas adreso ir prefikso forma, pavyzdžiui, 192.168.1.0/24.
- Tinklo adresas: pirmasis bloko adresas. Jis nurodo patį tinklą.
- Transliavimo adresas: paskutinis bloko adresas. Į jį išsiųstas pranešimas pasiekia kiekvieną potinklio pagrindinį kompiuterį.
- Naudojamų pagrindinių kompiuterių adresų intervalas: pirmasis ir paskutinis adresai, kuriuos įrenginys gali faktiškai naudoti.
- Naudojami pagrindiniai kompiuteriai ir visi adresai: kiek adresų yra bloke ir kiek jų galima skirti įrenginiams.
- Potinklio kaukė ir pakaitos kaukė: taškais užrašyta kaukė, pavyzdžiui, 255.255.255.0, ir jos atvirkštinė forma, 0,0.0,255.
- Potinklio kaukė, išskleista po vieną bitą, kiekviename oktete pateikiant po aštuonis bitus.
Rezultatai atitinka RFC 791 (IPv4 adresavimas), RFC 4632 (CIDR žymėjimas), RFC 950 kartu su RFC 919 ir RFC 922 (tinklo ir transliavimo rezervacijos) bei RFC 3021 (/31 tiesioginiai ryšiai).
Kaip veikia potinklių skaidymas
IPv4 adresas yra 32 bitų skaičius. Jis užrašomas kaip keturi oktetai, kurių kiekvienas turi 8 bitus ir gali įgyti reikšmę nuo 0 iki 255. Prefikso ilgis šiuos 32 bitus padalija į dvi dalis. Pirmieji bitai, kurių skaičių nurodo prefiksas, identifikuoja tinklą. Likusieji bitai identifikuoja pagrindinį kompiuterį tame tinkle.
Tinklas /24 tinklo daliai skiria 24 bitus, o pagrindiniams kompiuteriams palieka 8 bitus. Aštuoni pagrindinio kompiuterio bitai suteikia 2⁸ = 256 adresus. Tinklas /26 palieka tik 6 pagrindinio kompiuterio bitus, todėl jame yra 2⁶ = 64 adresai.
Potinklio kaukė tą patį padalijimą užrašo kaip adresą: kiekvienam tinklo bitui skiriamas 1 bitas, o kiekvienam pagrindinio kompiuterio bitui – 0 bitas. Prefiksui /24 tai yra 255,255.255,0. Pakaitos kaukė apverčia kiekvieną potinklio kaukės bitą. Maršrutizatorių prieigos sąrašai, ypač „Cisco“ įrenginiuose, adresams sutapdinti naudoja pakaitos kaukes, todėl įrankis rodo abi.
Potinklio formulė
Kai prefikso ilgis p yra nuo 0 iki 30, skaičiuoklė taiko šias taisykles, apibrėžtas RFC 950 ir RFC 4632:
- Potinklio kaukė = viršutiniai p 32 bitų žodyje nustatomi į 1.
- Tinklo adresas = IP adresas IR potinklio kaukė (bitinė IR operacija išlaiko bitą tik tada, kai abiejose įvestyse yra 1).
- Transliavimo adresas = tinklo adresas ARBA pakaitos kaukė (kiekvienas pagrindinio kompiuterio bitas nustatomas į 1).
- Visi adresai = 2⁽³²⁻ᵖ⁾.
- Naudojami pagrindiniai kompiuteriai = 2⁽³²⁻ᵖ⁾ − 2. Atimami tinklo ir transliavimo adresai, kuriuos rezervuoja RFC 950 ir RFC 919.
- Pirmasis naudojamas pagrindinis kompiuteris = tinklo adresas + 1. Paskutinis naudojamas pagrindinis kompiuteris = transliavimo adresas − 1.
Dviem prefikso ilgiams taikomos kitokios taisyklės. /31 turi tiksliai 2 adresus, o RFC 3021 abu juos leidžia naudoti kaip pagrindinių kompiuterių adresus tiesioginiame ryšyje, visai nenaudojant transliavimo adreso. /32 nurodo vieną adresą: iš viso 1, naudojamas 1, be transliavimo adreso. Šiais dviem atvejais įrankis pirmąjį adresą vadina „Prefikso baze“, o ne „Tinklo adresu“, nes nė viename bloke adresas nerezervuojamas tinklui identifikuoti.
Kiekvienas rezultatas gaunamas atliekant aritmetinius veiksmus su vienu 32 bitų skaičiumi. Įrankis adresų nenurodo po vieną, todėl /0, apimantis visus 4 294 967 296 IPv4 adresus, apskaičiuojamas taip pat greitai kaip /32.
Išspręstas pavyzdys
Adresui 10.128.7.33 su prefikso ilgiu /26:
- Potinklio kaukė: 26 vienetų bitai, po kurių eina 6 nulių bitai, sudaro 11111111,11111111.11111111,11000000, o tai atitinka 255,255.255,192.
- Tinklo adresas: adresui pritaikome kaukę atlikdami IR operaciją. Pirmieji trys oktetai lieka nepakitę. Paskutiniame oktete 33 dvejetaine forma yra 00100001; atlikus IR operaciją su 11000000 gaunama 00000000, t. y. 0. Tinklo adresas yra 10.128.7.0, todėl CIDR žymėjimas yra 10.128.7.0/26.
- Transliavimo adresas: visi 6 pagrindinio kompiuterio bitai nustatomi į 1. Paskutinis oktetas tampa 00111111, t. y. 63. Transliavimo adresas yra 10,128.7,63.
- Kiekiai: 2⁶ = 64 visų adresų, o 64 − 2 = 62 naudojami pagrindinių kompiuterių adresai.
- Pagrindinių kompiuterių adresų intervalas: nuo 10.128.7.1 iki 10,128.7,62.
- Pakaitos kaukė: potinklio kaukės atvirkštinė forma, 0,0.0,63.
Antrasis pavyzdys su numatytosiomis įrankio įvesties reikšmėmis, 192.168.1.10/24: tinklas 192.168.1.0, transliavimo adresas 192.168.1.255, pagrindinių kompiuterių adresai nuo 192.168.1.1 iki 192.168.1.254, 254 naudojami adresai iš 256 visų adresų, potinklio kaukė 255.255.255.0, pakaitos kaukė 0,0.0,255.
Įrankio taikomos konvencijos
Oktetai su nuliniais pradžios skaitmenimis atmetami. Įrankis nepriima 010.1.1.1, o ne interpretuoja jo kaip 10,1.1,1. Tai daroma tyčia. POSIX funkcija inet_aton, naudojama komandose „ping“, „curl“ ir daugumoje operacinių sistemų sprendiklių, oktetą su pradiniu nuliu laiko aštuntainiu skaičiumi, todėl 010.1.1.1 toms programoms reiškia 8.1.1.1. Kadangi joks dešimtainis ar aštuntainis aiškinimas nesutaptų su kiekvieno skaitytojo naudojamu, įrankis nepriima nė vieno iš jų. Dėl tos pačios priežasties atmetamas ir prefiksas, užrašytas kaip /08.
Pagrindinių kompiuterių skaičius sumažinamas dviem. Kai kurios skaičiuoklės kaip pagrindinių kompiuterių skaičių pateikia neapdorotą bloko dydį. Šis įrankis vadovaujasi RFC 950: bet kuriame bloke nuo /0 iki /30 pagrindinio kompiuterio dalis, sudaryta vien iš nulių, nurodo tinklą, o dalis, sudaryta vien iš vienetų, yra transliavimo adresas, todėl abu adresai neįtraukiami, o /24 turi 254 naudojamus pagrindinių kompiuterių adresus, ne 256.
/31 turi du naudojamus pagrindinių kompiuterių adresus. Senesniuose tekstuose, parašytuose prieš paskelbiant RFC 3021 (paskelbtą 2000), /31 laikomas netinkamu, nes atėmus du rezervuotus adresus lieka nulis. RFC 3021 panaikino abi rezervacijas tiesioginiuose ryšiuose, o maršrutizatoriai tai palaiko jau dešimtmečius, todėl įrankis pateikia 2 naudojamus pagrindinių kompiuterių adresus ir nenurodo transliavimo adreso.
Priimamas bet kuris prefiksas nuo /0 iki /32. /0 yra galiojantis blokas, apimantis visą IPv4 erdvę, kaip 0.0.0.0/0 maršrutizavimo lentelėse nurodo numatytąjį maršrutą.
Tik IPv4. IPv6 (RFC 4291) naudoja 128 bitų adresus ir kitokį žymėjimą, todėl į šio įrankio taikymo sritį nepatenka. Įrankis taip pat nepažymi specialios paskirties intervalų, pavyzdžiui, privačiųjų ar grįžtamojo ryšio adresų (RFC 6890); jis pateikia tik adresų aritmetikos rezultatus.
Dažnai užduodami klausimai
Kiek naudojamų pagrindinių kompiuterių turi /24? 254. /24 palieka 8 pagrindinio kompiuterio bitus, todėl gaunami 2⁸ = 256 adresai. Du iš jų rezervuoti: tinklo adresas ir transliavimo adresas. Įrenginiams lieka 254 adresai.
Kas yra pakaitos kaukė? Tai bitais išreikšta potinklio kaukės atvirkštinė forma. Ten, kur potinklio kaukėje yra 1, pakaitos kaukėje yra 0, ir atvirkščiai. Kaukės 255.255.255.0 pakaitos kaukė yra 0,0.0,255. Daugelio maršrutizatorių prieigos kontrolės sąrašuose pakaitos kaukės naudojamos aprašyti adresams, kuriuos atitinka taisyklė.
Kodėl /31 nerodo transliavimo adreso? /31 turi tik du adresus. Vieną rezervavus tinklui, o kitą – transliavimui, nieko neliktų, todėl RFC 3021 apibrėžia /31 kaip tiesioginį ryšį, kuriame abu adresai yra pagrindinių kompiuterių adresai ir transliavimo adreso nėra. Skaičiuoklė pateikia 2 naudojamus pagrindinių kompiuterių adresus ir pažymi, kad transliavimo adresas netaikomas.
Kodėl 010.1.1.1 atmetamas, o ne perskaitomas kaip 10.1.1.1? Operacinės sistemos nesutaria dėl paprasto dešimtainio aiškinimo. POSIX inet_aton oktetą su pradiniu nuliu laiko aštuntainiu skaičiumi, todėl 010 daugumoje sistemų reiškia 8. Įvesties atmetimas yra vienintelis sprendimas, kuris negali tyliai skirtis nuo to, kaip ją apdorotų paties naudotojo kompiuteris.
Kuo skiriasi visi adresai ir naudojami pagrindinių kompiuterių adresai? Visi adresai – tai visas bloko dydis, 2 pakelta laipsniu (32 minus prefikso ilgis). Naudojamų pagrindinių kompiuterių adresų skaičius yra šis skaičius, sumažintas dviem rezervuotais adresais, išskyrus /31 (abu adresai naudojami) ir /32 (vienintelis adresas yra pagrindinio kompiuterio adresas).
Ką reiškia tinklo adresas 192.168.1.10/24? Tai yra 192.168.1.0, gautas išlaikant pirmuosius 24 adreso bitus ir pagrindinio kompiuterio bitus nustačius į nulius. Jis identifikuoja visą potinklį ir negali būti priskirtas įrenginiui.
Šaltiniai
- Postel, J. „RFC 791: Interneto protokolas.“ IETF, 1981.
- Mogul, J. ir J. Postel. „RFC 950: Standartinė interneto potinklių skaidymo procedūra.“ IETF, 1985.
- Mogul, J. „RFC 919: Interneto datagramų transliavimas.“ IETF, 1984.
- Fuller, V. ir T. Li. „RFC 4632: Klasėms nepriklausomas maršrutizavimas tarp domenų (CIDR).“ IETF, 2006.
- Retana, A. ir kt. „RFC 3021: 31 bitų prefiksų naudojimas tiesioginiuose IPv4 ryšiuose.“ IETF, 2000.