IPv4

[десно|300px|мини|Разложување на IPv4 адресата во [Двоичен броен систем|бинарна вредност]]
**Интернет протокол верзија 4** е четврта итерација на Интернет-протоколот (IP) и прва верзија на овој протокол која е пошироко прифатена и имплементирана.
IPv4 е доминантен протокол на мрежно ниво на Интернет. Со исклучок на IPv6, единствениот протокол на Интернет.

Овој протокол е опишан во IETF RFC 791 (Септември 1981) а претходно во RFC 760 (Јануари 1980). Департментот за одбрана на Соединетите Американски Држави го има прифатено и адаптирано овој стандард како MIL-STD-1777.

Целта на IP е да обезбеди систем на адресирање на компјутерите во мрежата со доделување на единствен идентификациски број.

IP датаграмот се состои од заглавие и информационо поле. Заглавието кај IPv4 е составено од фиксен дел со должина 20 бајти и опционен дел со променлива должина. Секој бајт од ваквата структура се праќа во мрежата во редослед од MSB (Most significant bit) кон LSB (Least significant bit) бит, па по тој редослед и се прима во дестинационата машина.

Кога не се спомнува верзијата на IP протоколот секогаш се подразбира IPv4, која е доминантен тип на Интернет протокол денес. Во продолжение ќе ги анализираме одделните полиња кои се составен дел на заглавието на IP пакетот.

Полето **верзија (Version)** укажува на верзијата на протоколот кој го генерирал тој датаграм (може да биде верзија 4 или 6, т.е. IPv4 или IPv6).
Бидејќи заглавието може да има променлива должина (зависно од тоа дали има и опции и колку), **IHL (Internet Header Length)** полето ја покажува **должината на заглавието**, изразена во 32 битни зборови (т.е. 1 збор = 4 бајти). Минималната должина е 5 збора (или 5 збора x 4 бајти = 20 бајти), што е случајот кога не е присутно опционо поле, а максималната е 60 зборови.

Полето **тип на сервис (Type of Service – ToS)** овозможува хостот да ѝ каже на подмрежата каков сервис бара од неа, во смисла на доцнење, надежност и брзина на пренос. Овие побарувања се различни за различни типови сервиси. На пример, за дигитализиран говор малото доцнење е многу побитно од точната испорака (загубите на пакети), бидејќи во говорот може да се толерира по некој загубен датаграм, но не и варијација во доцнењето. При File Transfer, безгрешната трансмисија е многу побитна од доцнењето. Самото ToS поле се состои од 3 битно Precedence поле, а наредните 3 бита ја носат информацијата за: Delay, Throught, и Reliability. Користејќи ги овие битови, насочувачите донесуваат одлука за тоа дали тој датаграм ќе го проследат користејќи некој сателитски врска или пак некоја изнајмена линија со голем проток (во bit/s). Денес, по дифолт, во насочувачите се игнорира ова поле ако не се специфицира поинаку. Кога нема различни побарувања за различни типови услуги (говор, веб-сурфање, електронска пошта, итн.), тогаш станува збор за еднакви сервиси за сите апликации од страна на мрежата, што е познато како best-effort. Затоа, честопати може да се сретне дека Интернет денес е во основа best-effort мрежа. 
	
Полето **вкупна должина на пакетот (Total Length)** ја дава вкупната должина на датаграмот. Следствено, бидејќи полето има 16 бити, максимална должина на еден датаграм е 65535 бајти (64 kB), т.е. должината може да биде од 0 до (216 -1). 
	
Полето за **идентификација на фрагмент (Fragment Identification)** е потребно за да му овозможи на дестинациониот хост да изврши реасемблирање на помалите датаграми кои се фрагментирани некаде во мрежата, а притоа да не ги помеша со датаграмите кои припаѓале на некој друг поголем датаграм, наменет за исто одредиште, но кој потекнува од друг извор.

Полето **знаменца (Flags)** се состои од 3 бита од кои двата со најмало значење служат за контрола на фрагментацијата. Најмалку значајниот бит специфицира дали пакетот може да биде фрагментиран или не. Средниот бит специфицира дали пакетот е последен од серијата фрагментирани пакети или не. Третиот бит не е искористен.

**Офсет на фрагментот (Fragment Offset)** полето содржи информација за позицијата на фрагментираниот податок, кој се пренесува со IP пакетот, а е дел од еден датаграм, релативно во однос на почетокот на податоците во датаграмот. Оваа информација овозможува да се изврши правилна реконструкција на правилниот датаграм на приемната страна. Бидејќи полето се состои од 13 бити, можни се 8192 фрагменти по датаграм, но нивната вкупна должина не смее да надмине 64 kB.

**Време на живот (Time to Live)** полето е бројач со кој се ограничува животот на секој датаграм во мрежата. Повеќето насочувачи го идентификуваат ова поле како број на hop-ови кои му се дозволени на пакетот да ги помине во мрежата. Во секој насочувач по патеката на пакетот вредноста на TTL полето се намалува за еден, независно од тоа колку датаграмот се задржал на линијата. Кога ќе стане 0, датаграмот се отфрла и насочувачот кој го отфрлил праќа информација за тоа до изворот на пакетот. Ова поле оневозможува датаграмите бесконечно да шетаат низ мрежата, што лесно може да се случи ако насочувачот на кој е поврзана дестинационата машина испадне од работа, така што тој датаграм бесцелно би патувал од насочувач до насочувач и непотребно би го оптоварувал сообраќајот. 
Кога датаграмот е успешно и целосно примен во одредиштето, IP нивото треба да знае на кој протокол над него да го проследи (на TCP, на UDP или пак до друг транспортен протокол). Таа информација ја носи **тип на протокол (Protocol)** полето.
	
Полето за **[[контролен збир|контрола на грешка]] на заглавието** (*Header Checksum*) служи за контрола на грешка само на IP заглавието. Битно е да се забележи дека ова поле од еден ист датаграм во секој насочувач мора повторно да се пресметува, бидејќи најмалку едно поле од заглавието се менува во секој насочувач (тоа е Time to Live полето) што зема доста обработувачко време. 
	
**IP-адреса на изворот (Source Address)** – ја дефинира IP-адресата на изворот на датаграмот.

**IP-адреса на одредиштето (Destination Address)** – ја дефинира IP-адресата на крајното одредиште, кон која е упатен IP пакетот. 
	
Полето **опции (Options)** е предвидено за усовршување на протоколот, обезбедување на додатни сервиси како на крајниот корисник така и за потребите за одржување на самата мрежа. Со тоа што ова поле е опционо, се избегнува трајно алоцирање на бити во заглавието кои ретко би се користеле, а со тоа се намалува редундантната информација. Options полето е со променлива должина. Тоа почнува со код со кој се идентификува конкретната опција, потоа следи самата опциона информација. 

v4
Категорија:Протоколи на мрежно ниво
Категорија:Мрежни протоколи
Категорија:Семрежни протоколи
Категорија:Сметачки мрежи