IP-адрес, желі маскасы және барлығы жайлы

Бұл мақала habrahabr.ru сайтындағы Еще раз про IP-адреса, маски подсетей и вообще мақаласының тікелей аудармасы. Осы мақаладан соң мен желілер туралы бір нәрсе түсіне бастадым )). Мақала жазылуының ерекше түріне қарамай көп нәрсе түсініп алуға болады. Қазақ тіліне де сол сапаны сақтап көшіре алдым деп үміттенемін. Түсініксіз жерлер мен, дұрыс аударылмаған жерлер болса, комментариилерде талқылаймыз.

IP-адрес (v4) 32-биттен тұрады. Кез-келген өзін құрметтейтін админ, онымен бірге айти маман (желі инженерлері туралы үндемей-ақ қояйық), түн ортасында ұйқысынан оятқанда «IP-адрес қанша биттен тұрады» деген сұраққа дұрыс жауап бере алуы керек. Онымен қоса IPv6 туралы білген де артықтық етпейді, IPv6 128 биттен тұрады.

Бірінші жағдай. Барлығы

232 = 210*210*210*22 = 1024*1024*1024*4 ≈ 1000*1000*1000*4 = 4 млрд

Ipv4-адрестер болуы мүмкін.

IPv4-адрес қалай жазылатынын бәрі біледі деп ойлаймын. Ондық жүйеде, басындағы нөльдерсіз, нүктелермен бөлінген төрт октет (октет – байт дегенді білдіреді): «192.168.11.10».

IP-адрес пакетінің тақырыбында (заголовок) source IP және destination IP өрістері бар: жіберушінің адресі және қабылдаушының адресі (кімге жіберіліп жатыр). Почта конвертіндегі секілді. IP-адрес пакеттерінің ішінде маска туралы ешқандай мәлімет жоқ. Октеттердің арасындағы бөлу белгілері де жоқ. Жай ғана 32-бит қабылдаушының адресі және тағы 32 бит жіберушінің аты. Тағы да қайталаймыз: маска IP-пакет тақырыбы құрамында жіберілмейді.

Компьютерлерге маска ішкі желі (подсеть) шекараларын (басқаша айтқанда диапазонын) анықтау үшін қажет. Яғни, әр компьютер кімнің онымен бірге бір [ішкі] желіде, кімнің осы желіден тыс орналасқандығын білуі үшін. Мұндағы негізгі мақсат, бір желі ішінде орналасқан компьютерлер пакеттермен «тікелей» алмасады, ал егер пакеттерді басқа желіге жіберу керек болса, онда пакеттер үнсіз келісім бойынша шлюзге жіберіледі. Осы жағдай қалай іске асатынын қарастырайық.

Ішкі желі маскасы – ол да 32 бит. Бірақ, онда нөльдер мен бірліктер алмасып, кезектесіп кездесуі мүмкін емес. Әрқашан, бірінші тек бірнеше бірліктер, содан соң ғана бірнеше нөлдер. Яғни, келесі түрдегі маска болуы мүмкін емес:

120.22.123.12=01111000.00010110.01111011.00001100.

Бірақ, мына түрдегі маска болуы мүмкін:

255.255.248.0=11111111.11111111.11111000.00000000.

Басында N бірлік, содан соң 32-N нөлдер. Мұндай жазу түрі артықшыл (яғни, көп символ жазуға тура келеді) екенін түсіну қиын емес. Негізінде масканың ұзындығы деп аталатын N саны да жеткілікті. Көбінесе осылай жазу түрі пайдаланылады: 192.168.11.10 255.255.248.0 деп жазудың орнына 192.168.11.10/21 деп жазылады. Жазудың екі түрі де бір мағынаны береді, бірақ екінші жазу түрі ыңғайлылау екені көрініп тұр.

Ішкі желінің шекараларын анықтау үшін, компьютер IP-адрес және маска арасында биттік көбейту (логикалық ЖӘНЕ) орындайды. Көбейтіндінің нәтижесінде масканың нөлдері тұрған позициялар нөлге айналдырылған адрес алынады. Мысал қарастырайық 192.168.11.10/21:

11000000.10101000.00001011.00001010
11111111.11111111.11111000.00000000
_________________________________________________
11000000.10101000.00001000.00000000 = 192.168.8.0

Екінші жағдай. Кез-келген өзін құрметтейтін администратор IP-адрестерді ойында немесе қағазда ондық санау жүйесінен екілік санау жүйесіне және керісінше ауыстыра алуды білуге міндетті. Сонымен қатар, екілік арифметиканы жақсы игеруі керек.

Көбейтінді нәтижесінде алынған адрес 192.168.8.0 ішкі желі адресі деп аталады. Оны (негізінде) хост интерфейсінің адресі ретінде пайдалануға болмайды. Егер де осы биттерді, керісінше, бірліктерге ауыстырсақ, онда 192.168.15.255 адресін аламыз. Бұл адрес осы желі үшін бағытталған бродкаст (широковещательным) деп аталады. Оның қызметі (қажеттілігі) қазіргі кезде көп емес: бір уақыттарда ішкі желідегі барлық хосттар осы адреске жауап беруі керек деген сенім болған, бірақ бұл жағдай өте ертеде болған және қазір ол өтірік. Сонда да бұл адресті хост адресі ретінде пайдалануға болмайды. Нәтижесінде, әр ішкі желіде екі адрес – қоқысқа кетеді. Барлық қалған 192.168.8.1-тен бастап 192.168.15.254-ге дейінгі диапазондағы адрестер 192.168.8.0/21 ішкі желісінің адрестері болып табылады, оларды компьютерлерге беру үшін қолдануға болады.

Осылай, адрестің маскадағы бірліктер сәйкес келетін бөлігі (192.168.8), ішкі желінің адресі (идентификаторы) болып табылады. Оны тағы да көбінесе префикс деп те атайды. Ал, адрестің нөлдер сәйкес келетін бөлігі,- хосттың ішкі желідегі идентификаторы деп аталады. Ішкі желі адресін 192.168.8.0/21 немесе 192.168.8.0 255.255.248.0 түрінде көп кездестіруге болады. Маррутизаторлар трафиктердің желіде берілу маршрутын жасай отырып осы префикстармен жұмыс жасайды. Хосттардың ішкі желідегі мекен-жайын транзиттік маршрутизаторлар емес, осы желінің шлюзі ғана біледі (каналдық деңгейдегі технологиялар арқылы). Хост адресі ішкі желіден жеке түрде ешқашан қолданылмайды.

Үшінші жағдай. Хосттардың ішкі желідегі саны 232-N-2 арқылы анықталады, мұндағы N – маска ұзындығы. Маска ұзындығы үлкейген сайын, хосттардың саны азаяды.

Осы жағдайдан ішкі желі үшін масканың максимал ұзындығы N=30 екендігі келіп шығады. Тура осы /30 желілері маршрутизаторлар арасындағы point-to-point протоколымен байланыста көп қолданылады.

Негізінде қазіргі кезде көптеген замануи маршрутизаторлар ішкі желі адресі және бродкастты интерфейс адрестері ретінде пайдалану арқылы /31 маскасымен де жұмыс жасай алады. Администраторлан және желі инженерлері «тағы кім біледі» принципін ұстанғандықтан мұндай әдісті пайдаланудан жай ғана қорқады.

Ал міне /32 маскасы жиі пайдаланылады. Біріншіден, әр түрлі loopback деп аталатын интерфейстерді адресация жасау үшін, екіншіден қисық қолдылықтан: /32 – бұл бір хосттан тұратын ішкі желі, яғни, шынында ешқандай да желі емес. Администратор қаншалық хосттардың тобымен емес, жекелеген машиналармен жұмыс жасаса, желі соншалық кеңейтілмейтін болады, онда соншылақ көп ретсіздік және ешкімге түсініксіз ережелер болады. Мұнда бір ерекше жағдай серверлер үшін файрволдық ережелер жағдай болуы мүмкін. Ал мәні пайдаланушылармен жекелей емес, көптеген ішкі желілермен әрекет жасаған дұрыс, болмаса желі тез басқарылмайтын болып қалады.

IP-адрес бапталған интерфейс, кейде IP-интерфейс немесе L3-интерфейс деп аталады. («эл-три», Модель OSI қараңыз).

Пакетті жіберуден алдын, компьютер қажет адрес осы ішкі желіге кіреді ма жоқ па соны анықтап алады. Егер кірсе, онда пакетті тікелей қажет адреске жібереді, егер кірмесе – оны үнсіз келісім бойынша шлюзге жібереді (маршрутизаторға). Әдетте, шлюзге ішкі желідегі бірінші хост адресін береді: біздің жағдайымызда 192.168.8.1. Негізінде шлюзге адресті бұлай беру міндетті емес.

Төртінші жағдай. Айтылғандардан 192.168.8.1 адресіндегі маршрутизатор (шлюз немесе маршрутизатор – екеуі бір нәрсе), мысал үшін, 192.168.8.5 және 192.168.8.7 хосттарының арасындағы жүретін трафик туралы ештеңе білмейтіндігі келіп шығады. Жаңадан бастап жатқан администраторлардың ең жиі қателіктері, ол шлюз арқылы ішкі желідегі хосттардың арасындағы трафикті шектеу немесе басқаруға әрекет жасау. Трафик шлюзден өтуі үшін адресат және жіберуші әр түрлі ішкі желілерде орналасуы қажет.

Сөйтіп, желіде (тіпті өте кіші кәсіпорын болса да), әдетте, желілер арасындағы трафикті басқаратын және маршрутизациялайтын бірнеше IP- ішкі желілер (2+) және маршрутизаторлар (нақтырақ айтқанда файрвол, бірақ осы контекстте бұл сөздерді синонимдер деп есептеуге болады) болуы керек.

Келесі қадам – ол ішкі желіні одан да кіші ішкі желілерге бөлу. Бізге ұнап қалған 192.168.8.0/21 желісін екі /22 ішкі желісіне, төрт /23 ішкі желісіне, сегіз /24 және т.с.с. Жалпы ереже, мынандай: K=2X-Y, мұндағы K – маскасы X ұзындықты болатын ішкі желіге кіретін маскасы Y ұзындықты ішкі желілер саны.

Бесінші жағдай. Кез-келген өнегелі айтишник, желі администраторы егер ол айлығын әдемі көздері үшін ғана алып жатпаған болса, екінің 0-ден 16-ға дейінгі дәрежесін жатқа білуі тиіс.

Майда префикстерді (хосттар аз болатын, ұзын маскалы) үлкен (қысқа маскалы, хосттар көп болатын) префикстерге біріктіру процессі агрегация немесе қосақтау деп аталады. Бұл, маршрутизаторға желідегі жіберу желісін іздеуге қажет болатын мәліметті азайтуға мүмкіндік беретін маңызды процесс. Мысалыға айталық, провайдерлер клиенттерге /29 типті мыңдаған майда блоктарды таратады, бірақ интернет олардың барлығы туралы ештеңе білмейді. Оның орнына әр провайдерге /19 типті және одан да үлкен префикстер бекітіледі. Бұл глобаль интернет-маршрутизация кестесіндегі жазбаларды едәуір кемейтуге мүмкіндік береді.

Алтыншы жағдай. Масканың ұзындығы үлкен болған сайын, ішкі желіде соншалық аз хосттар болуы мүмкін, және адрестердің соншалық көп бөлігі ішкі желі адресі, бағытталған бродкаст және шлюзге адрес беру үшін қолданылады. Мысалы, /29 маскалы ішкі желіде (232-29 = 8 комбинация) қолдануға болатын 5 қана адрестер қалады (62,5%). Енді өзіңізді корпоративтік клиенттерге мыңдаған /29 блоктарын беретін провайдер ретінде елестетіп көріңіз. Сөйтіп, желіні сауатты түрде бөлу (адрестік жобаны құру) – бұл кішігірім ғылым.

Адрестердің үлкен диапазондары болған кезде, әдетте жеке қолдануға болатын блоктарда 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16, әрине, ұзындығы бойынша октеттердің шекараларымен сәйкес келетін маскаларды қолданған тиімді: /8, /16, /24 немесе, сәйкесінше, 255.0.0.0, 255.255.0.0 и 255.255.255.0. Оларды қолданған кезде, миға немесе калькуляторға жеңілдіктер жасауға болады. Бұл әрине дұрыс, бірақ жалқаулық көп жағдайда жақсы нәрсеге алып келмейтіндігін есте ұстаған дұрыс.

Және соңғысы. Атақты адрестер класстары түсінігі. Құрметті ағайындар, бұл сөзді мәңгілік ұмытыңыздар. Міне жақында бұл түсініктің жоқтығына 20 жыл толады (!). Класстар түсінігі префикстердің ұзындығы кез-келген болуы мүмкін екендігі мен адрестерді /8 блоктарымен таратқанда ешқандай интернеттің болмайтындығы түсінікті болғаннан бері жоқ.

Кейде «кейбір мамандар» мынандай сөздермен «мынандай класстың адресі» деп айтып мақтануды жақсы көреді. Айталық, көбінесе 10.1.2.0/24 секілді желі туралы «С класының желісі» деген сөздерді есітуге болады. Желінің класы (ол болған кезде) масканың ұзындығына ешқандай қатысы жоқ болған және ол мүлдем басқа факторлармен анықталатын болған (адрестегі биттер комбинацияларымен). Сонымен қатар, желінің класы масканың ұзындығы осы класқа бекітілген ұзындықта болуы керек екендігін міндеттеген. Сондықтан, көрсетілген ішкі желі 10.1.2.0/24 ешқашан С классына жатпаған және жатпайды да.

Бұл туралы еске алмаған дұрыс. Бастысы, кейбір адрес блоктарының арнайы мағыналары туралы RFC3330 қол астына жиналған глобальді конвенциалар бар екендігін білу керек. Мысалы, аталып кеткен блоктар 10/8, 172.16/12 және 192.168/16 (иа, префикстерді хосттық жағын алып тастап жазуға болады) интернетте маршрутизациалауға тиым салынған жекелік пайдаланылуға арналған диапазондар ретінде анықталған. Әркім оны өзінің жекелеген мақсаттарында пайдалана алады. 224.0.0.0/4 блогы мультикаст үшін резервтелген және т.с.с. Бірақ мұның бәрі басқарушылық қарым-қатынасты жеңілдету үшін қабылданған келісімдер ғана. Бірақ мен бұл келісімдерді бұзуға кеңес бермеймін, техникалық тұрғыдан кез-келген мақсат үшін кез-келген адресті пайдалануды ешкім шектей алмайды.


P.s. Жазылған нәрселер түсінікті болуы үшін мысал қарастырып көрейік:
Мысалы, біздің компьютеріміздің ip адресі 192.168.10.10, ал желі маскасы /27, яғни 255.255.255.224. Біздің мақсатымыз желі адресін, броадкастты және осы желіде неше хост адресі бар екенін анықтау. Біріншіден, өзіміздің ip адрес пен масканы екілік жүйеге айналдырамыз:

192.168.10.10 — 11000000.10101000.00001010.00001010
255.255.255.224 — 11111111.11111111.11111111.11100000

Енді осы екілік жүйедегі сандарды биттік көбейтеміз (логикалық ЖӘНЕ):

11000000.10101000.00001010.00001010
11111111.11111111.11111111.11100000
___________________________________
11000000.10101000.00001010.00000000 = 192.168.10.0

алынған адрес, біздің ішкі желіміздің адресі, енді егер біздің маскамыздың нөлдері (соңғы 5 позиция) тұрған позицияларга тек бірліктерді қойсақ, біз мынандай сан аламыз:
11000000.10101000.00001010.00011111 = 192.168.10.31

бұл біздің броадкаст адрес болады. Осы екі адрестің арасындағы 192.168.10.1 — 192.168.10.30 адрестер диапазонын, компьютерлерге беру үшін қолдануға болады, сонда барлығы 30 адрес. Көрнекілік үшін бұл санды мақалада жазылған әдіспен есептеуге болады: 232-27-2 = 32-2 = 30

  • +4
10 пікір
dekan
Жақсы жазылған. Кез келген админ деп орыстардың бөсе сөйлеген жерін алып тастаймыз ба? Қайта орнына ip калькуляторлардың бар екенін айтсаң. Сосын мысал ретінде бір сеть алып, мыс: 10.0.0.0/30 соны талдау кк кайжерге дейін сеть қай жер хост
raimbek
Бұл тікелей аударма болғандықтан, аса өзгертулер енгізуден өзімді тидым, қанша дегенмен бізден тәжірибесі көп адам жазған ғой )).

Иә, байқаған болсаңыз, аударманы түнгі үшке жақын бітірдім )) Сондықтан, ip калькулятор туралы ұмытып та кетіппін.

Мысал, ретінде 10.0.0.0/30 ішкі желісінен басқа желі алған дұрыс қой деймін, өйткені бұл ішкі желіде 3 қана хост бола алады. Яғни, 232-30-2=3, оның біреуі ішкі желі адресі болса, біреуі бродкаст, біреуі шлюз )) сонда не қалады ))
raimbek
Ой, кешіріңіздер, қателестім 232-30-2=2 хост
unknown
кетші боспей
raimbek
Ай, қазақ, қазақ!!!
unknown
сен кімге окпелейсің сайтка жана келгендермен осылай сойлесуші ма едің ccbootты пайдалы акпарат есебінде усынгым келіп еді оныда коп кордің бе калкам — ау менің коздегенім ол емес гылыми жумысымен боліскім келіп еді ол ушін каншама бейне роликтер дайындап едім барін сен бір сатте кетірдің адамга жаксылык жакпас
raimbek
Кешіріңіз, мен өкпелеп жатқан жоқпын, кейін, бәріміз сайтқа жаңа келгендерміз, ешкім сайтта бірнеше жыл бойы отқан жоқ.

Жарайды, бір комментарий, және сіз барлық мақалаларыңызды сайттан алып тастадыңыз. Не үшін??? Қайтаға, өзіңіздің пікіріңізді комментарийлерде қорғамайсыз ба?

Кейн, қаншама видеороликтер? Ағылшынша комментарийлермен жаcалған видеороликтерді сіз жасаған деп шынымды айтсам мен ойлаған жоқпын. Youtube-дан қарап көріп едім солай да болып шықты, ол видеолар ccbott жасайтын компанияның арнайы оқытатын видеолары. Мен қараған видео мынау.

«кетші боспей» деп жазып менің жағамнан алған сияқты болдыңыз, менің сізбен бұлай сөз атысатын ойымда да жоқ еді. Кейн, мен бұл туралы сізге жеке хат жібергенмін, бұл нәрселер, комментарийлерде талқыланатын жайттар емес.

Артық кетсем кешірім өтінемін!
unknown
Біз бір-бірімізді дурыс тусінбеген секілдіміз кайта сен мені кешір сендермен терезе тенестіріп кішкене озімдегі оймен болісем деп келдім бул сайтка білмегенім болса уйреніп рахмет саган
raimbek
Түсіністік үшін рахмет.
dekan
Әлбетте, жай мысал ғой маскасын 255.255.252.0 деп қарастыруыңа қарсы емеспін
Тек тіркелген қолданушылар ғана пікір қалдыра алады.