IPv4
Назва: | Internet Protocol version 4 |
---|---|
Сямейства: | TCP/IP |
Прызначэнне пратаколу: | Адрасацыя |
Спецыфікацыя: | RFC 791 |
Асноўныя рэалізацыі (кліенты): | рэалізацыі стэка TCP/IP у Windows, Linux і BSD |
Асноўныя рэалізацыі (серверы): | рэалізацыі стэка TCP/IP у Windows, Linux і BSD |
IPv4 (англ.: Internet Protocol version 4) — чацвёртая версія IP-пратакола, першая шырока ўжывальная версія. Пратакол апісаны ў RFC 791 (верасень 1981 года), замяніўшы RFC 760 (студзень 1980 года).
Адрасацыя
[правіць | правіць зыходнік]IPv4 выкарыстоўвае 32-бітныя (чатырохбайтныя) адрасы, якія абмяжоўваюць адрасную прастору 4 294 967 296 (232) магчымымі ўнікальнымі адрасамі.
Зручнай формай запісу IP-адраса (IPv4) з’яўляецца запіс у выглядзе чатырох дзесятковых лікаў (ад 0 да 255), падзеленых кропкамі, напрыклад, 192.168.0.1. (ці 128.10.2.30 — традыцыйная дзесятковая форма ўяўлення адрасу)
Уяўленне адрасу
[правіць | правіць зыходнік]Форма запісу | Прыклад | Пераўтварэнне з дзесятковай натацыі з кропкамі |
---|---|---|
Дзесятковая з кропкамі | 192.0.2.235 | — |
Шаснаццатковая з кропкамі | 0xC0.0x00.0x02.0xEB | Кожны актэт пераўтвараецца ў шаснаццатковую форму |
Васьмярковая з кропкамі | 0300.0000.0002.0353 | Кожны актэт пераўтвараецца ў васьмярковую форму |
Шаснаццатковая | 0xC00002EB | Канкатэнацыя актэтаў з шаснаццатковай натацыі з кропкамі |
Дзесятковая | 3221226219 | 32-бітны лік у дзесятковай форме |
Васьмярковая | 030000001353 | 32-бітны лік у васьмярковай форме |
Зарэзерваваня адрасы
[правіць | правіць зыходнік]Некаторыя адрасы IPv4 зарэзерваваны для спецыяльных мэтаў і не прызначаны дзеля глабальнай маршрутызацыі[1].
Падсетка | Прызначэння |
---|---|
0.0.0.0/8[2] | Адрасы крыніц пакетаў «гэтай» («сваёй») сеткі прызначаны для лакальнага ўжывання на хосце пры стварэнні сокетаў IP. Адрас 0.0.0.0/32 выкарыстоўваецца дзеля пазначэння адрасу крыніцы самога хосту.[1] |
10.0.0.0/8[3] | Дзеля ўжывання ў прыватных сетках. |
127.0.0.0/8[2] | Падсетка дзеля камунікацый унутры хосту (гл.: localhost). |
169.254.0.0/16[4] | Канальныя адрасы; падсетка выкарыстоўваецца для аўтаматычнага канфігуравання адрасоў IP у выпадку адсутнасці сервера DHCP. |
172.16.0.0/12[3] | Для ўжывання ў прыватных сетках. |
100.64.0.0/10[5] | Для ўжывання ў сетках сэрвіс-правайдэра. |
192.0.0.0/24[6] | Рэгістрацыя адрасоў спецыяльнага прызначэння. |
192.0.2.0/24[7] | Для ўзораў у дакументацыі. |
192.168.0.0/16[3] | Для ўжывання ў прыватных сетках. |
198.51.100.0/24[7] | Для ўзораў у дакументацыі. |
198.18.0.0/15[8] | Для стэндаў тэставання прадукцыйнасці. |
203.0.113.0/24[7] | Для ўзораў у дакументацыі. |
240.0.0.0/4[2] | Зарэзервавана для ўжывання ў будучыні. |
255.255.255.255[9] | Абмежаваны шырокавяшчальны адрас. |
Ёсць таксама рарэзерваваныя адрасы, якія маршрутызуюцца глабальна.
Падсетка | Прызначэнне |
---|---|
192.88.99.0/24[1] | Ужываюцца дзеля рассылкі бліжэйшаму вузлу. Адрас 192.88.99.1/32 ужываецца ў якасці рэтранслятара пры інкапсуляцыі IPv6 у IPv4 (6to4)[10]. |
224.0.0.0/4[11] | Выкарыстоўваюцца для шматадраснай рассылкі. |
Структура пакету
[правіць | правіць зыходнік]Пакет IP змяшчае 14 палёў, з якіх 13 з’яўляюцца абавязковымі. Чатырнаццатае поле прызначана для неабавязковых опцый. Палі ўжываюць парадак байтаў ад старэйшага да малодшага, старэйшыя біты ідуць першымі. Першы біт мае нумар 0. Такім чынам, напрыклад, поле з версіяй знаходзіцца ў чатырох старэйшых бітах першага байта.
Зрушэнне ў бітах | 0-3 | 4-7 | 8-13 | 14-15 | 16-18 | 19-31 | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Версія | Памер загалоўка | Differentiated Services Code Point | Explicit Congestion Notification | Памер пакета | |||||||||||||||||||||||||||
32 | Ідэнтыфікатар | Флаги | Зрушэнне фрагмента | |||||||||||||||||||||||||||||
64 | Час жыцця | Пратакол | Кантрольная сума заголоўка | |||||||||||||||||||||||||||||
96 | Адрас крыніцы | |||||||||||||||||||||||||||||||
128 | Адрас прызначэння | |||||||||||||||||||||||||||||||
160 | Опцыі (калі памер загалоўка > 5) | |||||||||||||||||||||||||||||||
160 или 192+ | Даныя |
- Версія
- Першым полем пакета з’яўляецца версія пратакола памерам у чатыры біта. Для IPv4 гэта 4.
- Памер загалоўка (Internet Header Length)
- Наступныя чатыры біта змяшчаюць памер загалоўка пакета у 32-бітных словах. Паколькі колькасць опцый не сталая, указанне памера важна для адлучэння заголоўка ад даных. Мінімальнае значэнне роўнае 5 (5×32=160 біт, 20 байт), максімальнае — 15 (60 байт).
- Differentiated Services Code Point (DSCP)
- Першапачаткова звалася «тып абслугоўвання» (Type of Service, ToS), у цяперашні час вызначаецца RFC 2474 як «Differentiated Services». Ужываецца для падзялення трафіка на класы абслугоўвання, напрыклад для ўсталёўкі адчувальнаму да затрымак трафіку, такому як VoIP большага прыярытэту.
- Указальнік перагрузкі (Explicit Congestion Notification, ECN)
- Папярэджанне аб перагрузцы сеткі без страты пакетаў. З’яўляецца неабавязковай функцыяй і ўжываецца толькі калі абодва хоста яе падтрымліваюць.
- Памер пакета
- 16-бітны поўны памер пакета ў байтах, уключаючы загаловак і даныя. Мінімальны памер роўны 20 байтам (зашаловак без даных), максімальны — 65535 байт. Хосты павінны падтрымліваць перадачу пакетаў памерам да 576 байт, але сучасныя рэалізацыі звычайна падтрымліваюць значна большы памер. Пакеты большага памера, чым падтрымлівае канал сувязі, фрагментуюцца.
- Ідэнтыфікатар
- Пераважна ўжываецца для ідэнтыфікацыі фрагментаў пакету, калі ён быў фрагментаваны. Існуюць эксперыменты па яго ўжыванню для іншых мэтаў, такіх як даданне інфармацыі аб трасіроўцы пакета для спрашчэння адсочвання шляха пакета з падробным адрасам крыніцы.[12]
- Флагі
- Поле памерам тры біта змяшчае флагі кантролю над фрагментацыяй. Біты ад старэйшага да малодшага азначаюць:
- 0: Зарэзерваваны, павінен быць роўны 0.[13]
- 1: Не фрагментаваць
- 2: У пакета ёсть яшчэ фрагменты
- Калі ўсталяваны флаг «не фрагментаваць», то ў выпадку неабходнасці фрагментацыі такі пакет будзе знішчаны. Можа ўжывацца для перадачы даных хостам, якія ня маюць досыць рэсурсаў для апрацоўкі фрагментаваных пакетаў.
- Флаг «ёсть фрагменты» павінен быць усталяваны ў 1 ва ўсіх фрагментаў пакета, акрамя апошняга. У нефрагментаваных усталёўваецца ў 0 — такі пакет лічыцца ўласным апошнім фрагментам.
- Зрушэнне фрагмента
- Поле памерам у 13 біт, указвае зрушэнне бягучага фрагмента ад пачатка перадачы фрагментаванага пакета ў блоках па 8 байт. Дазваляе (213−1)×8=65528 байт зрушэння, што перавышае максімальны памер пакета. Першы фрагмент у паслядоўнасці мае нулявое зрушэнне.
- «Час жыцця» (Time to Live, TTL) пакета.
- Дазваляе перадухіліць закальцоўванне пакетаў у сеціве шляхам знішчэння пакетаў, якія перавысілі час жыцця. Указваецца ў секундах, інтэрвалы менш секунды акругляюцца да адной секунды. На практыцы кожны маршрутызатар змяньшае час жыцця пакетаў на адзінку (што слушна для існуючых тыповых затрымак у сеціве). Пакеты, час жыцця якіх стаў роўны нулю, знішчаюцца, а адпраўніку дасылаецца паведамленне ICMP Time Exceeded. На адпраўцы пакетаў з розным часам жыцця заснавана трасіроўка іх шляха праходжання (traceroute).
- Пратакол
- Указвае, даныя якога пратакола змяшчае пакет (напрыклад, TCP ці ICMP). Прысвоеныя нумары пратаколаў можна знайсці на сайце IANA.[14]
- Кантрольная сума загалоўка
- 16-бітная кантрольная сума, ужываецца для праверкі цэласнасці загалоўка. Кожны хост ці маршрутызатар параўноўвае кантрольную суму загалоўка са значэннем гэтага поля і адкідвае пакет, калі яны не супадаюць. Цэласнасць даных IP не правярае — яна правяраецца пратаколамі больш высокіх узроўняў (такіх як TCP ці UDP), якія таксама выкарыстоўваюць кантрольныя сумы.
- Паколькі TTL памяньшаецца на кожным кроку праходжання пакета, сума таксама павінна вылічацца на кожным кроку. Метад пераліку кантрольнай сумы вызначаны ў RFC 1071.[15]
- Адрас крыніцы
- 32-бітны адрас адпраўніка пакета. Можа не супадаць з сапраўдным адрасам адпраўніка з-за трансляцыі адрасоў.
- Адрас прызначэння
- 32-бітны адрас атрымальніка пакета.
- Опцыі
- За адрасам прызначэння можа ісці поле дадатковых опцый, але яно ўжываецца рэдка. Памер загалоўка ў гэтым выпадку павінен быць дастатковым, каб змясціць усе опцыі (з улікам дадатку да цэлага ліку 32-бітных слоў).
- Калі спіс опцый не з'яўляецца канцом загалоўка, ён павінен сканчацца опцыяй 0x00. Опцыі маюць наступны фармат:
Поле | Памер у бітах | Апісанне |
---|---|---|
Капіяваць | 1 | Усталёўваецца ў 1, калі патрэбна капіяваць опцыі ў загалоўкі ўсіх фрагментаў. |
Клас опцыі | 2 | 0 для «кіравальных» опцый і 2 для опцый «зменаў і адладкі». 1 і 3 зарэзерваваны. |
Нумар опцыі | 5 | Указвае опцыю. |
Памер опцыі | 8 | Указвае памер опцыі (з улікам гэтага поля). Можа не ўказвацца для опцый без аргументаў. |
Аргументы опцыі | пераменны | Дадатковыя даныя, якія ўжываюцца опцыяй. |
- Заўвага: Памер загалоўка больш 5 слоў указвае на прысутнасць опцый і неабходнасць іх апрацоўкі.
- Заўвага: Палі «капіяваць», «клас опцыі» і «нумар опцыі» часам называюць адным васьмібітным полем «тып опцыі».
Вычарпанне адраснай прасторы
[правіць | правіць зыходнік]Ужо ў 1980-я гады стала відавочна, што размеркаванне адраснай прасторы адбываецца значна болей хуткімі тэмпамі, чым было заложана ў архітэктуру IPv4. Гэта прывяло спачатку да з’яўлення класавай адрасацыі, пазней бяскласавай адрасацыі, і ў канчатковым выніку да распрацоўкі новага пратакола IPv6.
У лютым 2011 года IANA выдаткавала 5 апошніх блокаў адрасоў RIRам. Блокі вольных IP-адрасоў пачалі заканчвацца ў рэгіянальных рэгістратараў з 2011 года.[16]
Гл. таксама
[правіць | правіць зыходнік]Зноскі
- ↑ а б в RFC3330: Special-use IPv4 addresses (англ.); заменены RFC5735: Special-use IPv4 addresses (англ.)
- ↑ а б в RFC1700: Assigned Numbers (англ.)
- ↑ а б в RFC1918: Address allocation for private internets (англ.)
- ↑ RFC3927: Dynamic configuration of IPv4 link-local addresses (англ.)
- ↑ RFC6598: IANA-reserved IPv4 prefix for shared address space (англ.)
- ↑ RFC5736: IANA IPv4 Special Purpose Address Registry (англ.)
- ↑ а б в RFC5737: IPv4 address blocks reserved for documentation (англ.)
- ↑ RFC2544: Benchmarking methodology for network interconnect devices (англ.)
- ↑ RFC919: Broadcasting internet datagrams (англ.)
- ↑ RFC3068: An anycast prefix for 6to4 relay routers (англ.)
- ↑ RFC3171: IANA guidelines for IPv4 multicast address assignments (англ.)
- ↑ Stefan Savage.. Practical network support for IP traceback . Праверана 6 верасня 2010.
- ↑ У якасці першакрасавіцкага жарта прапанаваны азначаць зламыснасць пакета (evil bit)
- ↑ Assigned Internet Protocol Numbers (англ.)
- ↑ Computing the Internet Checksum (англ.)
- ↑ IPv4 Address Report