TCP/IP протоколи
I. Увод
TCP/IP пакетът от протоколи се нарича така заради двата основни протокола, съсържащи се в него. TCP – Transmission Control Protocol и IP – Internet Protocol. Основноата цел за създаването на TCP/IP била за осъществяването на връзка между отделни мрежи, Internet. Идеята била да се съдаде един протокол, който да се използва от всички за може да се свързват различни мрежи.
Структура на TCP/IP - ТCP/IP модел
TCP/IP протоколът се състои от четири нива: Приложно ниво, транспортно ниво, интернет ниво и мрежово ниво.
II. Структура на TCP/IP протокола
В мрежовото ниво /мрежови интерфейс/ за адресно преобразуване се използва само физическият MAC адрес. Дори и интерфеийсът да няма физически адрес /модем/, се използва логически физичен адрес. В интернет нивото се извършва преобразуване на логическия IP адрес към физическия MAC адрес. Всяко устрйство в TCP/IP мрежата има уникален IP адрес. Този адрес идентифицира устройството и подмрежата към която то принадлежи. Всички протоколи използвани в транспортното и интернет нивата се осигуряват от операционната система. Приложенията не подсигуряват техен собствен транспортен или мрежови протокол. Единственото необходимо е приложението да комуникира с TCP или UDP като транспортен протокол. Всички протоколи и софтуер, използвани в приложното ниво са зависими от приложението.
Мрежово ново
Мрежовото ниво има за задача да изпраща и да получава рамки от мрежовата среда. Използвания формат на рамките зависи от приложената мрежова топология.
Мрежовото ниво добавя в началото на всяка памка CRC за осигуряване на защита от грешки. Когато рамката достигне местоназначението си CRC стойността се преизчислява, за да се определи дали данните не са повредени при пренасянето. Ако рамката не е повредена то тя се предава на по високо ниво. Ако е повредена, то тя се отхвърля.
Интернет ниво
Интернет нивото осигурява три основни функции: адресиране, пакетиране и маршрутизиране.
Това ниво включва в себе се IP протокола. IP осигурява независима от крайните точки, негарантирана доставка на информация. IP протоколът не извършва проверка дали информацията е била успешно получена от нейния получател. При това могатр да бъдат загубени пакети или те да пристигнат в неподреден вид. Тази проверка се прави от по-горните слоеве.
При пристигането на информацията от транспортното ниво, IP протоколът добавя към нея header.
Той включва:
1. IP адреса на източника;
2. IP адреса на получателя;
3. Транспортен протокол. Протокола използван от транспортното ниво се съхранява в header-а. По този начин, при пристигане на пакета при получателя, интернет нивото му ще знае дали да използва TCP или UDP протокола.
4. Контролна сума /CRC/ - тя се използва за проверка дали данните пристигнали на това ниво не са били повредени при транспортирането.
5. Time-To-Live /TTL/ - При преминаване на информацията през маршрутизатор, TTL намалява с 1. Когато дотигне 0, информацията се изхвърля от мрежата.
Интернет нивото определя как да маршрутизира пакетите от информация до получателя. Ако бъде определено, че IP-то на получателя се намира в същия мрежови сегмент то информацията се изпраща директно към него. Ако получателя е в отдалечен мрежови сегмент, IP протоколът използва маршрутната таблица на източника, за да определи най-добрия маршрут до мрежата, където се намира отдалеченото устройство. Ако в маршрутната таблица няма определен маршрут към тази мрежа, то източника използва маршрутизатора си по подразбиране /Default Gateway/ за изпращане на данните към отдалечения получател.
Интернет нивото изпълнява още две функции: фрагментиране и реасемблиране. При трансфер на информация между мрежи с различна топология, има вероятност мрежовата топология на получателя да не може да работи с размера на пакета използван от източника. В този случай IP протокола разделя /фрагментира/ пакета информация на по-малки части. При получаването на малките пакети от получателя те се реасемблират в оригиналния пакет. В процеса на разделяне на пакета към всяка част от пакета се добавя следната информация:
1. Флаг – флага за фрагментиране в IP header-а се поставя в 1, за да се покаже, че данните са били фрагментирани. В последния фрагментиран пакет флага се оставя със стойност 0, за да се покаже, че след него няма повече фрагментиране.
2. Идентификатора на фрагмента – при разделяне на пакета информация на фрагменти, на всеки един от тях се поставя идентификатор. Тази информация се използва за реасемблиране.
3. Отместване на фрагмента – при реасемблиране на фрагментите от пакета, фрагментното отместване определя реда, в който трябва да бъде извършено реасемблирането.
Транспортно ниво
За транспортиране на данните в TCP/IP се използват TCP и UDP протоколите. При комуникиране на две устройства те трябва да установят сесия помежду си, като по този начин всяко устройство може да определи номера на поредицата от данни, която другото устройство ще използва. TCP връзката осигурява високо ниво на надежност. По време на предаване се използват поредни номера и потвърждение за сигурност, че получателят успешно е приел данните.
При UDP протоколът не гарантира достигането на информацията до получателя. UDP протоколът има контролна сума в своя header, която гарантира че данните не са повредени.
Приложно ниво
Мрежовите приложения работещи в TCP/IP мрежите се разделят в две категории:
1. Winsock приложения – тези приложения използват Windows Sockets Application Programing Interface /API/. Това са FTP, Telnet, IRC, SNMP
2. NetBIOS приложения – използват NetBIOS имена и услуги в TCP/IP мрежата.
III. Протоколи в интернет нивото
1. Addess Resolution Protocol (ARP) – RFC 826
2. Internet Control Message Protocol (ICMP) – RFC 792
3. Internet Protocol (IP) – RFC 791
4. Reverse Address Resolution Protocol (RARP) – RFC 903
5. Internet Group Messaging Protocol (IGMP) – RFC 1112
6. Bootstrap Protocol (BOOTTP) – RFC 951
7. Dynamic Host Configuration Protocol (DHCP) – RFC 2131
IV. IP протокол
IP протоколът осигурява логическо адресиране на устройствата в мрежата. Като протокол за адресиране, IP протоколът съдържа компоненти отнасящи се за както мрежата, така и за отделно устройство.
Полета на IP пакета:
1. Version – показва коя версия на IP протокола е използвана за форматиране на пакета.
2. Length – показва дължината на IP header-a. Това поле определя границата между header-a и информационната част на пакета.
3. Service Type – Задава как да се обработи пакета.
4. Packet Length – това поле съдържа дължината на IP пакета. Включва дължината на всички данни и на IP header-a.
5. Полета за фрагментация
• Identification – уникален идентификатор маркиращ един пакет. При фрагментиране, всички фрагменти имат 1 идентификатор.
• Flags – това поел съдържа 3 бита и контролира фрагментацията. Първия бит обикновено не се използва, втория е DF – do not fragment и при стойност 1 означава че пакета не трябва да се фрагментира, и третия бит – MF – more fragments, има стойност 1 когато оригиналният пакет е бил фрагментиран.
• Fragment Offsets – използва при реасемблиране на пакетите. Тези полета помагат да бъде определено как да се възстанови оригиналният пакет при реасемблирането.
6. Time To Live – това поле определя колко дълго може да се задържи даден пакет е мрежата. Всеки път когато пакетът мине през маршрутизатор стоиността на полето намалява с 1, когато стане равно на 0, пакета се изхвърля от текущия маршрутизатор.
7. Protocol – определя кои протоколи от високо ниво са били използвани в пакета. Това помага при движение на пакета нагоре по TCP/IP модела.
8. Header Checksum – служи да сигурност че header информацията не е била повредена при преноса.
9. Source Address/Destination Address – тези полета съдържат 32 битовите адреси на източника и получателя.
10. Options – може да съдържа няколко кода с различна дължина. Това поле се сстои от 3 подполета.
• Copy Flag – определя как да се третира опцията. При “0”, опцията се копира само в първия пакет при фрагментиране. При “1” опцията се копира във всички сегменти.
• Option Class – дължина 2 бита, има 4 възможности. “0” – означава че опцията е за пакет с данни или за мрежово управление. Стойност “2” означава че опцията се използва за настройки или измервания. “1” и “3” са резервирани за бъдещо ползване.
• Option number – дължина от 5 бита. В това поле се записва стойността на опцията.
11. Padding – запълването му осигурява закръглянето на header информацията до четен брой байтове.
V. Формиране на IP адресите
Класове адреси
1. IP адреси клас А – мрежовата част от адреса е с размер 8 бита, а частта за устройството е 24 бита. Т.е възможно е да имаме 16 777 214 уникални устройства в този тип мрежи. 126 мрежи.
2. IP адреси клас В – 16 бита мрежова част от адреса и 16 бита за устойства. В този тип мрежи е възможно да имаме 65 534 уникални устройства. 16 384 мрежи.
3. IP адреси клас С – 24 бита за мрежова част и 8 бита за устройства. Това са 254 уникални устройства в една мрежа от този тип и 2 097 152 мрежи от същия тип.
4. IP адреси клас D – те са резервирани за multicast използване и не могата да бъдат присвоени към индивидуални мрежови устройства. IP устройствата могат динамично да се рагистрират в multicast групи чрез IGMP протокола.
5. IP адреси клас Е – те са експериментални и са резервирани за бъдещо ползване.
VI. TCP протокол
– TCP протоколът осигурява гаранция че получателят е получил сегмента информация преди да изпрати следващия. Това става като получателя изпраща потвърждение (ACK), показващ следващия пакет, който очаква да получи.
TCP протоколът осигурява следните неща:
- Механизъм за надежна комуникация, между две устройства, използваши ненадежден базов протокол (IP)
- Начална поредица за осъществяване на комуникационна сесия между две крайни точки.
- Механизъм за реасемблиране на данни пристигнали в разбъркан ред.
- Способността на клиента да разпознава две различни приложения на server-a (базирани на техните портови номера)
- Таймери позволяващи препредаването на загубени пакети в определен момент от време.
- Опростено създаване на приложения – приложенията работещи с TCP не трябва да осигуряват препредаване на загубени или повредени данни.
VII. Формат на TCP header-a
1. Source Port – 16 битово поле. Показва порта, който източника използва за тази TCP връзка.
2. Destination Port – 16 битово поле, показващо порт-а, който получателя използва за тази TCP връзка.
3. Sequence Number – 32 битово поле, съдържащо поредицата на реасемблиране на пакетите.
4. Acknowledgment Number – 32 битово поле, съдържащо пореден номер, който получтеля очаква да получи от изпращача.
5. Data Offset – 4 ботово поле, съдържащо размера на TCP header-a в 32 битови думи. С него се определя от каде започват данните.
6. Reserved – 6 битово поле, резервирано за бъдещо ползване.
7. Urgent Control Bit – 1-битово поле. При “1”, то значи Urgent Pointer полето трябва да се прочете.
8. Acknowledgment Control Bit – 1-битово поле. Ако има ст-ност “1”, то Acknowledgement Number трябва да бъде прочетено.
9. Push Control Bit – Ако има ст-ност “1” то сегмента изиска изпълнението на функцията Push. Т.е данните да се изпратят веднага вместо да се чака запълването на буфера.
10. Reset Control Bit – при “1” в това поле, означава че се изисква нулиране на TCP връзката.
11. Synchronize Control Bit (SYN) – използва се по време на установяване на сесията и при “1” нзачи че поредните номера трябва да бъдат синхронизирани.
12. Finish Control Bit (FIN) – ако е “1” това означава че няма повече данни за изпращане.
13. Window Size – 16 битово; показва колко октета данни желае да приема получателя в даден момент. Това определя големината на изпращания и получавания прозорец.
14. Checksum – контролна сума, показваща, че данните и TCP header-a не са били повредени при транспортирането.
15. Urgent Pointer – орпеделя коя част от данните са спешни. Това поле сочи към поредния номер, след който следват спешните данни.
16. Options – може да съдържа 1 или повече от следните 3 опции:
- 0 – end of option list – използва се като край на всички опции в TCP сегмента.
- 1 – no operation – използва се между други опции за създаването на дума с опции.
- 2 – maximum segment size – използва се по време на синхронизация за задаване на максималния размер на сегмента.
17. Padding – осигурява запълване с нули на TCP header-a до 32 битов размер.
18. Data – действителните данни в сегмента.
Коментари