IPv4

**IPv4** () — чацвёртая версія 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* — традыцыйная дзесятковая форма ўяўлення адрасу)

### Уяўленне адрасу 
## Зарэзерваваня адрасы 
Некаторыя адрасы IPv4 зарэзерваваны для спецыяльных мэтаў і не прызначаны дзеля глабальнай маршрутызацыі.

Ёсць таксама рарэзерваваныя адрасы, якія маршрутызуюцца глабальна.

## Структура пакету 
Пакет 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 байт, але сучасныя рэалізацыі звычайна падтрымліваюць значна большы памер. Пакеты большага памера, чым падтрымлівае канал сувязі, фрагментуюцца.

; Ідэнтыфікатар : Пераважна ўжываецца для ідэнтыфікацыі фрагментаў пакету, калі ён быў фрагментаваны. Існуюць эксперыменты па яго ўжыванню для іншых мэтаў, такіх як даданне інфармацыі аб трасіроўцы пакета для спрашчэння адсочвання шляха пакета з падробным адрасам крыніцы.

; Флагі : Поле памерам тры біта змяшчае флагі кантролю над фрагментацыяй. Біты ад старэйшага да малодшага азначаюць:
:* 0: Зарэзерваваны, павінен быць роўны 0.
:* 1: Не фрагментаваць
:* 2: У пакета ёсть яшчэ фрагменты
: Калі ўсталяваны флаг «не фрагментаваць», то ў выпадку неабходнасці фрагментацыі такі пакет будзе знішчаны. Можа ўжывацца для перадачы даных хостам, якія ня маюць досыць рэсурсаў для апрацоўкі фрагментаваных пакетаў.
: Флаг «ёсть фрагменты» павінен быць усталяваны ў 1 ва ўсіх фрагментаў пакета, акрамя апошняга. У нефрагментаваных усталёўваецца ў 0 — такі пакет лічыцца ўласным апошнім фрагментам.

; Зрушэнне фрагмента : Поле памерам у 13 біт, указвае зрушэнне бягучага фрагмента ад пачатка перадачы фрагментаванага пакета ў блоках па 8 байт. Дазваляе (213−1)×8=65528 байт зрушэння, што перавышае максімальны памер пакета. Першы фрагмент у паслядоўнасці мае нулявое зрушэнне.

; «Час жыцця» (Time to Live, TTL) пакета. : Дазваляе перадухіліць закальцоўванне пакетаў у сеціве шляхам знішчэння пакетаў, якія перавысілі час жыцця. Указваецца ў секундах, інтэрвалы менш секунды акругляюцца да адной секунды. На практыцы кожны маршрутызатар змяньшае час жыцця пакетаў на адзінку (што слушна для існуючых тыповых затрымак у сеціве). Пакеты, час жыцця якіх стаў роўны нулю, знішчаюцца, а адпраўніку дасылаецца паведамленне ICMP Time Exceeded. На адпраўцы пакетаў з розным часам жыцця заснавана трасіроўка іх шляха праходжання (traceroute).

; Пратакол : Указвае, даныя якога пратакола змяшчае пакет (напрыклад, TCP ці ICMP). Прысвоеныя нумары пратаколаў можна знайсці на сайце IANA.

; Кантрольная сума загалоўка : 16-бітная кантрольная сума, ужываецца для праверкі цэласнасці загалоўка. Кожны хост ці маршрутызатар параўноўвае кантрольную суму загалоўка са значэннем гэтага поля і адкідвае пакет, калі яны не супадаюць. Цэласнасць даных IP не правярае — яна правяраецца пратаколамі больш высокіх узроўняў (такіх як TCP ці UDP), якія таксама выкарыстоўваюць кантрольныя сумы.
: Паколькі TTL памяньшаецца на кожным кроку праходжання пакета, сума таксама павінна вылічацца на кожным кроку. Метад пераліку кантрольнай сумы вызначаны ў RFC 1071.

; Адрас крыніцы : 32-бітны адрас адпраўніка пакета. Можа не супадаць з сапраўдным адрасам адпраўніка з-за трансляцыі адрасоў.

; Адрас прызначэння : 32-бітны адрас атрымальніка пакета.

; Опцыі : За адрасам прызначэння можа ісці поле дадатковых опцый, але яно ўжываецца рэдка. Памер загалоўка ў гэтым выпадку павінен быць дастатковым, каб змясціць усе опцыі (з улікам дадатку да цэлага ліку 32-бітных слоў).
: Калі спіс опцый не з'яўляецца канцом загалоўка, ён павінен сканчацца опцыяй 0x00. Опцыі маюць наступны фармат:

* Заўвага: Памер загалоўка больш 5 слоў указвае на прысутнасць опцый і неабходнасць іх апрацоўкі.
* Заўвага: Палі «капіяваць», «клас опцыі» і «нумар опцыі» часам называюць адным васьмібітным полем «тып опцыі».

## Вычарпанне адраснай прасторы 
Ужо ў 1980-я гады стала відавочна, што размеркаванне адраснай прасторы адбываецца значна болей хуткімі тэмпамі, чым было заложана ў архітэктуру IPv4. Гэта прывяло спачатку да з’яўлення класавай адрасацыі, пазней бяскласавай адрасацыі, і ў канчатковым выніку да распрацоўкі новага пратакола IPv6.

У лютым 2011 года IANA выдаткавала 5 апошніх блокаў адрасоў RIRам. Блокі вольных IP-адрасоў пачалі заканчвацца ў рэгіянальных рэгістратараў з 2011 года.

## Гл. таксама 
* TCP
* SCTP
* Рэгіянальны інтэрнэт-рэгістратар

Катэгорыя:TCP/IP
Катэгорыя:Пратаколы сеткавага ўзроўню