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] | Абмежаванышырокавяшчальны адрас. |
Ёсць таксама рарэзерваваныя адрасы, якія маршрутызуюцца глабальна.
Пакет IP змяшчае 14 палёў, з якіх 13 з’яўляюцца абавязковымі. Чатырнаццатае поле прызначана для неабавязковых опцый. Палі ўжываюцьпарадак байтаў ад старэйшага да малодшага, старэйшыя біты ідуць першымі. Першы біт мае нумар 0. Такім чынам, напрыклад, поле з версіяй знаходзіцца ў чатырох старэйшых бітах першага байта.
- Версія
- Першым полем пакета з’яўляецца версія пратакола памерам у чатыры біта. Для 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]
Зноскі