TCP протокол управління передачею даних. Протокол TCP

Матеріал із Національної бібліотеки ім. Н. Е. Баумана
Остання змінацієї сторінки: 23:49, 28 січня 2017 року.

NUMBEREDHEADINGS__

Стек протоколів ТСР/IP

IP-мережа

IP-мережа (який є Інтернет)відрізняється від глобальних мереж тим, що є складовою мережею із підмереж, число яких вимірюється тисячами. Для Інтернету характерно використання стека протоколів еталонної моделі OSI, а еталонної моделі TCP/IP. На рис. 1 представлений стек протоколів TCP/IP та його відповідність рівням моделі OSI. Відмінною особливістю TCP/IP є також те, що IP-пакети можуть передаватися з використанням різних технологій складових мереж, у тому числі за допомогою вже розглянутих глобальних мереж Х.25, FR та ATM, які є самостійними зі своїми протоколами, адресацією та ін. Іншою особливістю є те, що еталонна модель TCP/IP на відміну еталонної моделі OSI була розроблена під конкретну складову мережу (інтермерети чи internet). Підмережі, яка становить цю складову мережу, з'єднуються між собою маршрутизаторами. Такими підмережами можуть бути як локальні, і глобальні мережі різних технологій.

Прикладний рівень стека TCP/IP (рівень 4) відповідає трьом верхнім рівням моделі OSI. До протоколів прикладного рівня належать протокол перенесення файлів (FTP); протокол електронної пошти(SMTP); протокол, який використовується для створення сторінок у всесвітньому павутинню WWW (HTTP) – основа для доступу до пов'язаних між собою документів; протокол перетворення (DNS) текстових імен у мережеві IP-адреси, простий протокол мережного управління (SNMP), протоколи відповідно сигналізації та передачі даних (SIP, RTP/RTCP) в IP-телефонії або мова поверх IP (VoIP-Voice over IP) та ін. До протоколів прикладного рівня належать також протоколи інформаційної безпеки Kerberos, PGP, SET та ін.

Мал. 1. Стек протоколів TCP/IP

Транспортний рівень стеку TCP/IP

Транспортний рівень стека TCP/IP (рівень 3)забезпечує передачу даних між прикладними процесами. Транспортний рівень включає два протоколи TCP та UDP. Протокол управління передачею TCP (Transmission Control Protocol) є надійним протоколом із встановленням з'єднання, що дозволяє управляти потоком, тобто. без помилок доставляти байтовий потік з однієї машини на іншу машину складової мережі. Щоб забезпечити надійну доставку даних, протокол TCP передбачає встановлення логічного з'єднання. Це дозволяє йому нумерувати пакети, підтверджувати їх прийом квитанціями, у разі втрати організовувати повторні передачі, розпізнавати та знищувати дублікати, доставляти прикладному рівню у тому порядку, у якому їх було відправлено. Пакети, що надходять на транспортний рівень, організуються як безліч черг до точок входу прикладних процесів. У термінології TCP/IP такі черги, що однозначно визначають додаток у межах хоста, називається портами. За портами кожного стандартної програмивизначений номер наприклад, порт TCP№ 21 – за протоколом передачі файлу FTP (File Transport Protocol). Номер порту разом із номером мережі та номером кінцевого вузла має назву сокет (socket). Кожна логічна сполука ідентифікується парою сокетів взаємодіючих процесів. Другий протокол транспортного рівня – протокол користувачів дейтаграм UDP (User Data Protocol) є найпростішим дейтаграмним протоколом (тобто без встановлення з'єднання). До протоколу транспортного рівня належить протокол інформаційної безпеки SSL/TLS. Протоколи прикладного та транспортного рівнів стека рівнів TCP/IP встановлюються на кінцевих станціях (хостах) мережі.

Міжмережевий рівень стека TCP/IP

Міжмережевий рівень стека TCP/IP (рівень 2), званий також мережевим рівнем (за моделлю OSI), є стрижнем всієї архітектури TCP/IP. Саме цей рівень, функції якого відповідають мережевому рівню моделі OSI, забезпечує перенесення пакетів даних у межах усієї складової мережі. Протоколи міжмережевого рівня підтримують інтерфейси з транспортним рівнем, отримуючи від нього запити на передачу даних по складовій мережі. Основним протоколом міжмережевого рівня є міжмережевий протокол IP (Internet Protocol). Він забезпечує просування пакета між підмережами - від одного прикордонного маршрутизатора до іншого, доки пакет не потрапить до мережі призначення. Протокол IP як і, як і протоколи функцій комутації глобальних мереж зв'язку (FR, ATM та інших.), встановлюється як на кінцевих пунктах (хостах), а й у всіх маршрутизаторах мережі. Маршрутизатор є процесором, який зв'язує між собою дві мережі (підмережі). Протокол міжмережевого рівня працює в режимі без встановлення з'єднання (дейтаграмний режим), відповідно до якого він не відповідає за доставку пакета до вузла призначення. При втраті пакета мережі IP не намагається відновити його.

У заголовку IP-пакета міститься IP-адреса відправника та одержувача - по 4 байти кожен. До міжмережевого рівня належать також протоколи, що виконують функції складання та корекції таблиць маршрутизації RIP (Routing Internet Protocol), OSPF (Open Shortest Path First), протокол міжмережевих керуючих повідомлень ICMP (Internet Control Message Protocol). До протоколу мережного рівня належить протокол інформаційної безпеки IPSec. Рівень мережного доступустека TCP/IP (рівень 1) відповідає за організацію інтерфейсу з приватними технологіями підмереж складової мережі. Переміщення пакета можна розглядати як послідовність стрибків від одного маршрутизатора до іншого. На черговому маршрутизаторі на мережному рівні визначається мережна адреса наступного маршруту маршрутизатора. Щоб передати пакет IP цьому маршрутизатору, треба перенести через деяку підсіть. Для цього необхідно використати транспортні засоби цієї підмережі. Завдання рівня мережного доступу зводиться до інкапсуляції (вкладання) пакета в блок даних цієї проміжної мережі та перетворення мережних адрес граничних маршрутизаторів цієї підмережі в новий типадреси, прийнятої технології проміжної мережі.

Приклад перенесення даних до IP-мережі

На прикладі IP-мережі (рис. 2) покажемо перенесення даних кінцевої станції А локальної обчислювальної мережі (підмережі) Ethernet в кінцеву станцію мережі (підмережі) АТМ. Як видно з малюнка до цієї складової мережі ще входить мережа (підмережа) Frame Relay. В основу наведеного спрощеного опису покладено приклад міжмережевої взаємодії мереж Ethernet та АТМ, наведений у роботі . Додатково до цієї складової мережі введена мережа (підмережа) Frame Relay. Принцип маршрутизації та короткий описпротоколів маршрутизації в Інтернеті наведено в наступному розділі. Для того, щоб технологія TCP/IP могла вирішувати завдання об'єднання мереж, їй потрібна власна глобальна системаадресації, яка залежить від способів адресації вузлів в окремих підмережах. Такою адресою є IP-адреса, що складається з адреси підмережі (префіксу) та адреси кінцевого пристрою (хоста). Наведемо приклад адресації підмережі та хоста. IP-адреса 200.15.45.126/25 означає, що 25 старших біт з виділених 4-х байт під адресацію є адресою підмережі, а 7 біт, що залишилися, означають адресу хоста в цій мережі.

Як видно з попередніх розділів, глобальні мережі Frame Relay та АТМ мають різні системинумерації, які від системи нумерації локальної обчислювальної мережі (ЛВС) технології Ethernet. Кожен комп'ютер Ethernet має унікальну фізичну адресу, що складається із 48 біт. Ця адреса називається МАС-адресою і відноситься до канального рівня - управління доступом до середовища MAC (Media Access Control). Для організації міжмережевої взаємодії підмереж різної технології та адресації використовуються маршрутизатори, що включають IP-пакети. До цих пакетів входять глобальні IP-адреси. Кожен інтерфейс маршрутизатора IP-мережі та кінцевого пристрою включає дві адреси – локальну адресу кінцевого пристрою підмережі та IP-адресу.

Мал. 2. Приклад взаємодії двох пристроїв

Розглянемо просування IP-пакету у мережі (рис. 2).


Протоколи TCP/IP

Нижче наведено короткий опис протоколу прикладного рівня SNMP та протоколу транспортного рівня TCP архітектури TCP/IP.

Протокол прикладного рівня SNMP

Великі мережі не можуть бути налаштовані та керуватися вручну в плані зміни конфігурації мережі, усунення несправності в мережі, збирання параметрів якості обслуговування. Якщо в мережі використовується обладнання різних виробників, необхідність таких засобів стає особливо необхідною. У зв'язку з цим розроблено стандарти мережного управління. Одним із найбільш широко використовуваних є простий протокол керування мережею SNMP (Simple Network Management Protocol). Наведемо короткі відомості про архітектуру мережного керування. Система мережного управління включає інструментальні засоби на вирішення завдань управління. При цьому необхідне використання вже наявного обладнання шляхом впровадження додаткових апаратних і програмних засобів для управління мережею. Це програмне забезпеченнярозміщується в хостах, комунікаційних процесорах та інших пристроях мережі. Модель мережевого управління, що використовується для SNMP, складається з наступних елементів:

  • станція управління, що виконує роль інтерфейсу між мережевим адміністратором та системою мережевого управління. Станція керування дозволяє здійснити моніторинг мережі та керування мережею. У цій станції є база даних з інформацією, одержаною з інформаційних баз усіх керованих об'єктів мережі;
  • агент управління (хости, комутатори та ін), які відповідають на запити від станції управління. Агент забезпечує інформацією станцію та без запиту;
  • агент підтримує базу даних, що називається MIB (база керуючої інформації, Management Information Base), в якій записані конфігурація, характеристики та стан пристроїв.

Станція управління та агенти взаємодіють за протоколом SNMP. Так як управління мережею завдання багатоцільове, наведемо деякі можливості використання протоколу SNMP у мережі Frame Relay. Агент підтримує базу даних, що називається MIB (база керуючої інформації, Management Information Base), в якій записані конфігурація, характеристики та стан пристроїв. Форум Frame Relay стандартизував MIB для пристроїв Frame Relay. У більшості служб Frame Relay провайдер збирає інформації від агентів SNMP у кожному комутаторі FR і записує її до центральної бази MIB для загального користування. Тим самим користувачеві надається єдине джерело статистичної інформації про всі з'єднання віртуальних каналів мережі. Це дозволяє відстежити свої потоки даних у мережі провайдера від комутатора до комутатора. Можна використовувати SNMP для збирання статистики та аварійних повідомлень від власного обладнання, підключеного до мережі FR. Для цього доводиться працювати з багатьма MIB. Для збирання даних на основі SNMP можна використовувати віртуальний канал FR.

SNMP може керувати конфігурацією мережі. Для мережі FR це стосується як фізичної, і логічної конфігурації мережі, включаючи встановлення адресації, визначення DLCI, призначення смуги пропускання PVC. SNMP може керувати усуненням несправностей у мережі при отриманні системою керування аварійних повідомлень від агента мережі.

Забезпечення інформаційної безпеки протоколу SNMP

У документі RFC 2574 визначається модель USM (User Security Model – модель захисту користувача) під час використання протоколу SNMP. USM розроблялася з метою захисту від загроз таких типів.

  1. Модифікація інформації.По дорозі повідомлення, згенерованого авторизованим об'єктом, інший об'єкт може змінити це повідомлення, щоб виконати несанкціоновані операції управління (наприклад, встановивши відповідні значення об'єкта управління). Суть загрози полягає в тому, що несанкціонований об'єкт може змінити будь-які параметри керування, включаючи параметри конфігурації, виконуваних дій та контролю.
  2. Імітація.Об'єкт може намагатися виконати не дозволені йому операції управління, ототожнюючи даний об'єктіз деяким авторизованим об'єктом.
  3. Модифікація потоку повідомлень Протокол SNMPпризначений для роботи над транспортним протоколом, що не передбачає встановлення з'єднань. Існує загроза переупорядкування, затримки або відтворення (дублювання) повідомлень SNMP для несанкціонованого керування. Наприклад, можна скопіювати і відтворити повідомлення, яке викликає перезапуск пристрою.
  4. Розголошення інформації.Спостерігаючи за потоком обміну даними між адміністратором і агентом, об'єкт може з'ясувати значення керованих об'єктів і розпізнати події, що підлягають реєстрації. Наприклад, спостереження за набором команд, що змінюють паролі, може дозволити атакуючому дізнатися про нові паролі.

Протокол транспортного рівня TCP

Протокол транспортного рівня TCP виконує функцію управління потоками між кінцевими пунктами, оскільки рівень IP не гарантує правильної доставки дейтаграм. Дейтаграми з рівня IP можуть прибувати у неправильному порядку. Відновлює повідомлення з таких дейтаграм протокол TCP, забезпечуючи надійний режим встановленого з'єднання з низькою ймовірністю втрати пакета. Механізм управління потоками, що використовується TCP, відрізняється від механізму відновлення правильної послідовності кадрів Х.25 і називається схемою кредитів. У цій схемі вважається, що кожен переданий байт даних має порядковий номер. Кордони між повідомленнями не зберігаються. Наприклад, якщо відправляючий прикладний процес записує в TCP-потік чотири 512-байтові порції даних, ці дані можуть бути доставлені одержуючий процес у вигляді чотирьох 512-байтових порцій, або двох 1024-байтових порцій, або однієї 2048-байтової порції. Кожна протокольна одиниця PDU TCP називається сегментом TCP і включає заголовок сегмента порт джерела даних і порт одержувача. Значення портів ідентифікують відповідні користувачі (додатки) двох об'єктів TCP.

Логічний зв'язок відноситься саме до цієї пари значення портів. У процесі зв'язку кожен об'єкт відстежує сегменти TCP, одержувані з іншого боку чи відправлені іншій стороні, щоб регулювати потік сегментів і відновлювати втрачені чи пошкоджені сегменти. Стандартний номер порту однозначно ідентифікує тип програми, однак він не може однозначно ідентифікувати прикладний процес цієї програми. Один додаток може одночасно здійснювати кілька процесів. Тому прикладний процес однозначно визначається в межах мережі та в межах окремого комп'ютерапарою (IP-адреса, номер порту) і називається сокетом (socket). Логічне TCP-з'єднання однозначно ідентифікується парою сокетів, визначених для цього з'єднання двома сокетами, що взаємодіють.

Працюючи на хост-отправителе протокол TCP розглядає інформацію, що до нього від рівня додатків, як неструктурований потік байтів. Ці дані буферуються засобами TCP. На рівень IP із буфера «вирізуються» сегменти, до яких додаються заголовки. До складу заголовка входять сегменти SYN та ACK, що служать для встановлення TCP-з'єднання.

Для передачі сегмента даних є три поля, пов'язані з керуванням потоком (відновленням цілісності прийнятого повідомлення): порядковий номер (SN), номер підтвердження (AN) та вікно (W).Коли транспортний об'єкт відправляє сегмент, він поміщає у полі даних сегмента порядковий номер першого байта. Об'єкт, що приймає, підтверджує отримання сегмента за допомогою зворотного сегмента, в якому (АN=i, W=j), що означає:

  • всі байти до SN=i-1 підтверджено. Наступний очікуваний байт має номер AN=i.
  • дозволяється відправити додаткове вікно з W=j байт даних, тобто. байти від I до i+j-1.

Таким чином, протокол TCP забезпечує надійну доставку повідомлень, що надходять із мережі від ненадійного дейтаграмного протоколу на міжмережевому рівні. У мережі Х.25 функцію надійної доставки виконує канальний рівень моделі OSI, який був докладно розглянутий у попередніх розділах, а мережі Frame Relay цю функцію виконує протокол ITU-T Q.921.

Транспортні протоколи TCP та UDP стеку протоколів TCP/IP забезпечують передачу даних між будь-якою парою прикладних процесів, що виконуються в мережі, і надають інтерфейс для протоколу IP шляхом демультиплексування декількох процесів, що використовують як адреси транспортного рівня порти. Для кожного прикладного процесу (ПП) (додатки), що виконується на комп'ютері, може бути сформовано кілька точок входу, що виступають як транспортних адресзваних портами (Рис.4.60).

Існують два способи присвоєння порту:

· централізований(присвоєні або призначені номери від 0 до 1023), що використовує стандартні номери, які присвоєні загальнодоступним службам (додаткам), наприклад: FTP – 21, telnet – 23, SMTP – 25, DNS – 53, HTTP – 80.

· локальний(динамічні номери від 1024 до 65535), що надає довільний номер зі списку вільних номерів при надходженні запиту додатка користувача.

Динамічні номери портів програм є унікальними в межах кожного комп'ютера, але можуть збігатися з номерами портів в інших комп'ютерах. Відмінність між ними визначається лише різницею інтерфейсів кожного з комп'ютерів, що задаються IP-адресами.

Таким чином, пара IP-адреса; номер порту», звана сокетом (socket), однозначно визначає прикладний процес у мережі.

Номери UDP- та TCP-портів в межах одного і того ж комп'ютера можуть збігатися, хоча і ідентифікують різні програми. Тому при записі номера порту обов'язково вказується тип протоколу транспортного рівня, наприклад 2345/TCP та 2345/UDP. У деяких випадках, коли програма може звертатися на вибір до протоколу UDP або TCP, йому можуть бути призначені однакові номери UDP- та TCP-портів, наприклад DNS-додатку призначено номер 53 – 53/UDP та 53/TCP.

Транспортний протокол UDP

UDP – транспортний протокол, що забезпечує передачу даних у вигляді дейтаграмміж будь-якою парою прикладних процесів, що виконуються в мережі, без встановлення з'єднання. Сегменти складаються з 8-байтового заголовка, за яким слідує поле даних. Заголовок UDP-сегменту показано на рис.4.61.

Найбільш широко UDP використовується під час виконання клієнт-серверних додатків(Типу запит-відповідь).

При цьому UDP не виконує:

· Контроль потоку,

· Контроль помилок,

· Повторної передачі після отримання зіпсованого сегмента.

прикладамидодатків, які використовують протокол UDP передачі даних, є DHCP, DNS, SNMP.

У деяких випадках на одному кінцевому вузлі може виконуватися кілька копій однієї й тієї ж програми. Виникає питання: як розрізняються ці додатки?

Для цього розглянемо на простому прикладі процес формування запиту та процедуру звернення DNS-клієнта до DNS-сервера, коли на одному комп'ютері запущено два DNS-сервери, причому обидва використовують для передачі даних транспортний протокол UDP (рис.4.62). Для того щоб розрізняти DNS-сервери, їм присвоюються різні IP-адреси - IP1 і IP2, які разом з номером порту утворюють два різні сокети: UDP-порт 53, IP1 і UDP-порт 53, IP2.

Рис.4.62,а) ілюструє процес формування DNS-клієнтом запиту до DNS-сервера.

DNS-запит на транспортному рівні стека протоколів TCP/IP передається протоколу UDP, який вкладає цей запит у UDP-дейтаграму і вказує в заголовку порт призначення 53/UDP. Потім UDP-дейтаграма передається на міжмережевий рівень, де вона вкладається в IP-пакет, заголовок якого містить IP-адресу: IP2. IP-пакет, у свою чергу, передається на рівень «міжмережевий інтерфейс», де він міститься у кадрі канального рівня з відповідним заголовком канального рівня (ЗКУ). Цей кадр передається мережею до комп'ютера, що містить два DNS-сервера (рис.4.62,б).

У цьому комп'ютері протокол канального рівня (ПКУ) знімає заголовок ЗКУ та передає вміст кадру на міжмережевий рівень протоколу IP, який, своєю чергою, витягує вміст (UDP-дейтаграму) з IP-пакету. Подальші маніпуляції з даними, що передаються, відрізняються від принципів, закладених у багаторівневу модель ієрархії протоколів. Замість того, щоб просто передати UDP-дейтаграму, що знаходиться в полі даних IP-пакету, транспортному рівню, IP-протокол приєднує до UDP-дейтаграмитак званий псевдозаголовок, що містить серед іншого IP-адреси відправника та одержувача. Таким чином, протокол UDP, маючи IP-адресу та порт призначення, однозначно визначає, що вміст поля даних (тобто DNS-запит) має бути переданий додатком «DNS-сервер 2».

Транспортний протокол TCP

Протокол TCPзабезпечує надійну передачу даних між прикладними процесами з допомогою встановлення логічних сполук між взаємодіючими процесами.

Логічне з'єднанняміж двома прикладними процесами ідентифікується парою сокетів (IP-адреса, номер порту), кожен з яких описує один із взаємодіючих процесів.

Інформація, що надходить до протоколу TCP у межах логічного з'єднання від протоколів вищого рівня, розглядається протоколом TCP як неструктурований потік байтіві заноситься до буфера. Для передачі на мережевий рівень із буфера вирізається сегмент, що не перевищує 64 Кбайт (максимального розміру IP-пакета). Насправді зазвичай довжина сегмента обмежується значенням 1460 байтами, що дозволяє помістити їх у кадр Ethernet із заголовками TCP і IP.

З'єднання TCP орієнтоване на повнодуплексну передачу.

Управління потоком даних у протоколі ТСР здійснюється з використанням механізму ковзного вікна змінного розміру. При передачі сегмента вузол-відправник включає таймер і очікує на підтвердження. Негативні квитанції не надсилаються, а використовуються механізм тайм-ауту. Вузол призначення, який отримав сегмент формує і надсилає назад сегмент (з даними, якщо вони є, або без даних) з номером підтвердження, що дорівнює наступному порядковому номеру очікуваного байта. На відміну від багатьох інших протоколів, протокол TCP підтверджує отримання не пакетів, а байтівпотоку. Якщо час очікування підтвердження закінчується, відправник надсилає сегмент ще раз.

Незважаючи на простоту протоколу, в ньому є ряд нюансів, які можуть призвести до деяких проблем.

По-перше, оскільки сегменти при передачі по мережі можуть фрагментуватися, можлива ситуація, за якої частина переданого сегмента буде прийнята, а решта виявиться втраченою.

По-друге, сегменти можуть прибувати у вузол призначення у довільному порядку, що може призвести до ситуації, коли байти з 2345 по 3456 вже прибутку, але підтвердження їм може бути вислано, оскільки байти з 1234 по 2344 ще отримано.

По-третє, сегменти можуть затриматися в мережі так довго, що у відправника закінчиться інтервал очікування, і він передасть їх знову. Переданий повторно сегмент може пройти іншим маршрутом і може бути інакше фрагментований, або сегмент може по дорозі випадково потрапити в перевантажену мережу. У результаті відновлення вихідного сегмента знадобиться досить складна обробка На рис.4.63 представлений формат заголовка TCP-сегмента. Перші 20-байт заголовка мають строго фіксований формат, за яким можуть бути додаткові поля. Після додаткових полів заголовка розміщується поле даних, що містить не більше 65495 байт, яке разом з TCP-і IP-заголовками розміром по 20 байт дасть максимально допустимий розмір IP-пакета в 65535 байт.

Не вдаючись до деталей, розглянемо коротко призначення фіксованих полів заголовка ТСР-сегмента.

Поля «Порт відправника» (2 байти) та «Порт одержувача» (2 байти) ідентифікують процесиміж якими встановлено логічне з'єднання.

Поле «Порядковий номер» (4 байти) містить номер першого байтаданих у сегменті, який визначає зміщення сегмента щодо потоку даних, що передаються

Поле «Номер підтвердження» (4 байти) містить номер наступного очікуваного байта, який використовується як квитанція, що підтверджує правильний прийом всіх попередніх байтів.

Поле "Довжина TCP-заголовка" (4 біта) задає довжину заголовка ТСР-сегменту, виміряну в 32-бітових словах.

Поле "Резерв" завдовжки 6 біт зарезервовано на майбутнє.

Однобітові прапоринесуть службову інформацію про тип сегменту та інтерпретуються наступним чином:

· URG = 1 вказує на наявність термінових даних, що означає використання поля «Покажчик на термінові дані » ;

· ACK = 1 означає, що сегмент є квитанцієюна прийнятий сегмент та поле «Номер підтвердження» містить осмислені дані. В іншому випадку цей сегмент не містить підтвердження і поле "Номер підтвердження" просто ігнорується.

· PSH = 1 (PUSH-прапор) означає запит на надсилання данихбез очікування заповнення буфера;

· RST = 1 використовується для скидання стану з'єднанняпри виявленні проблем, а також для відмови від невірного сегмента або спроби створити з'єднання;

· SYN=1 використовується для установки з'єднання, у своїй якщо АСК=0, це означає, що полі підтвердження немає;

· FIN = 1 використовується для розриву з'єднання.

Поле «Розмір вікна» (2 байти) визначає, скільки байт може бути надіслано після байта, який отримав підтвердження.

Поле «Контрольна сума» (2 байти) містить контрольну суму, яка охоплює заголовок, дані та псевдозаголовок.

Алгоритм обчислення контрольної сумивиглядає наступним чином.

Перед початком обчислення контрольної суми значення поля встановлюється рівним нулю. Якщо поле даних містить непарне число байтів, воно доповнюється нульовим байтом, який використовується під час підрахунку контрольної суми, але не вставляється в сегмент передачі в мережі. Необхідність такого додавання обумовлена ​​тим, що ТСР-сегмент, що включає заголовок, дані та псевдозаголовок, розглядається як сукупність 16-розрядних двійкових чисел, які складаються в додатковому коді, а потім обчислюється додаток для отриманої суми, що заноситься до поля «Контрольна сума».

Одержувач сегмента аналогічно підраховує контрольну суму для всього сегмента, включаючи поле «Контрольна сума». Очевидно, що отриманий таким чином результат має дорівнювати 0. Зазначимо, що додатковий нульовий байт Поле «Покажчик на термінові дані» (2 байти) містить зміщення в байтах від поточного порядкового номера байта до місця розташування термінових даних, які необхідно терміново прийняти, незважаючи на переповнення буфера. Таким чином, у протоколі TCP реалізуються повідомлення, що переривають. Вмістом термінових даних займається прикладний рівень. Протокол TCP лише забезпечує їх доставку і цікавиться причиною переривання.

Поле «Параметри» має змінну довжину і може бути відсутнім.

прикладамиПрограми, що використовують протокол TCP для передачі даних, є FTP, TFTP, DNS, POP3, IMAP, TELNET.

Транспортний протокол TCP та модель ТСР/IР

За час розвитку обчислювальних мереж було запропоновано та реалізовано багато протоколів обміну даними, найвдалішими з яких з'явилися сімейство протоколів TCP/IP (Transmission Control Protocol/Internet Protocol – протокол управління передачею/міжмережевий протокол).

ТСР/IР – це набір протоколів, що складається з наступних компонентів:

· міжмережевий протокол (Internet Protocol), Забезпечує адресацію в мережах (IP-адресацію);

· міжмережевий протокол керування повідомленнями (Internet Control Message Protocol – ICMP), який забезпечує низькорівневу підтримку протоколу IP, включаючи такі функції, як повідомлення про помилки, квитанції, сприяння маршрутизації тощо;

· протокол дозволу адрес (Address Resolution Protocol – ARP)що виконує перетворення логічних мережевих адрес в апаратні, а також зворотний йому RARP (Reverse ARP);

· протокол користувальницьких датаграм (User Datagramm Protocol – UDP);

· протокол управління передачею (Transmission Control Protocol – TCP).

Протокол UDP забезпечує передачу пакетів без перевірки доставки, тоді як протокол TCP вимагає встановлення віртуального каналу і підтвердження доставки пакета з повтором у разі помилки.

Цей набір протоколів утворює найпоширенішу модель мережного обміну даними, що отримала назву – TCP/IP. Модель TCP/IP ієрархічна і включає чотири рівні.

Прикладний рівеньвизначає спосіб спілкування користувацьких додатків. У системах "клієнт-сервер" додаток-клієнт повинен знати, як надсилати запит, а додаток-сервер повинен знати, як відповісти на запит. Цей рівень забезпечує такі протоколи як HTTP, FTP, Telnet.

Транспортний рівеньдозволяє мережним додаткамотримувати повідомлення по суворо визначених каналах із конкретними параметрами.

на мережевому рівнівизначаються адреси включених у мережу комп'ютерів, виділяються логічні мережі та підмережі, реалізується маршрутизація між ними.

на канальному рівнівизначається адресація фізичних інтерфейсів мережевих пристроїв, наприклад мережних плат. До цього рівня належать програми управління фізичними. мережевими пристроямитак звані драйвери.

Як зазначалося раніше, у мережах з комутацією пакетів, а модель TCP/IP належить до таких, передачі з мережі повідомлення (сформоване прикладному рівні) розбивається на пакети чи датаграми. Пакет чи датаграма– це частина повідомлення з доданим заголовком пакета чи датаграми.

На транспортному рівні до корисної інформації додається заголовок – службова інформація. Для мережного рівня корисною інформацією є пакет чи датаграма транспортного рівня. До них додається заголовок мережного рівня.

Отриманий блок даних називається IP-пакетом. Корисним навантаженням для канального рівня є IP-пакет. Тут перед передачею каналом до нього додаються власний заголовок і ще завершувач. Блок, що вийшов, називається кадром. Він і передається через мережу.

Переданий через мережу кадр у пункті призначення перетворюється у зворотному порядку, проходячи за рівнями моделі знизу вгору.

Висновки на тему

1. Протокол мережного обміну інформацією– це перелік форматів переданих блоків даних, а також правил їх обробки та відповідних дій.

2. Протокол обміну даними– це докладна інструкціяу тому, якого типу інформація передається через мережу, у порядку обробляються дані, і навіть набір правил обробки цих даних.

3. В даний час майже всі мережі у світі є мережами комутації пакетів.

4. Існують два принципи організації обміну даними: встановлення віртуального з'єднання з підтвердженням прийому кожного пакета та передачі датаграм.

5. При віртуальному з'єднанні пункт прийому інформації повідомляє відправника про правильний або неправильний прийом кожного пакета. Віртуальним його називають тому, що на відміну від телефонного комутованого каналу обмін інформацією може йти різними фізичними шляхами навіть у процесі передачі одного повідомлення.

6. Під час передачі датаграми короткі пакети надсилаються адресату без підтвердження отримання кожної з них, а про отримання всього повідомлення повністю повинна повідомити цільову програму.

7. ТСР/IР– це набір протоколів, що складається з таких компонентів: міжмережевий протокол (IP), міжмережевий протокол керування повідомленнями (ICMP), протокол дозволу адрес (ARP), протокол користувальницьких датаграм (UDP) та протокол управління передачею (TCP).

Запитання для самоконтролю

1. Що розуміємо під протоколом передачі?

2. Охарактеризуйте мережі з комутацією повідомлень та комутацією пакетів.

3. Чим відрізняється з'єднання віртуальним каналом від передачі датаграм?

4. Які протоколи утворюють модель TCP/IP?

5. Які рівні входять до мережеву модель TCP/IP?

6. Дайте характеристику всіх рівнів моделі TCP/IP і вкажіть відповідні протоколи.

7. Співвіднесіть по рівнях моделі TCP/IP поняття "пакет" та "кадр". Чим вони відрізняються?

8. Який протокол забезпечує перетворення логічних мережевих адрес в апаратні?

За час розвитку обчислювальних мереж було запропоновано та реалізовано багато протоколів обміну даними, найвдалішими з яких з'явилися сімейство протоколів TCP/IP (Transmission Control Protocol/Internet Protocol – протокол управління передачею/міжмережевий протокол).

ТСР/IР – це набір протоколів, що складається з наступних компонентів:

· міжмережевий протокол (Internet Protocol), Забезпечує адресацію в мережах (IP-адресацію);

· міжмережевий протокол керування повідомленнями (Internet Control Message Protocol – ICMP), який забезпечує низькорівневу підтримку протоколу IP, включаючи такі функції, як повідомлення про помилки, квитанції, сприяння маршрутизації тощо;

· протокол дозволу адрес (Address Resolution Protocol – ARP)що виконує перетворення логічних мережевих адрес в апаратні, а також зворотний йому RARP (Reverse ARP);

· протокол користувальницьких датаграм (User Datagramm Protocol – UDP);

· протокол управління передачею (Transmission Control Protocol – TCP).

Протокол UDP забезпечує передачу пакетів без перевірки доставки, тоді як протокол TCP вимагає встановлення віртуального каналу і підтвердження доставки пакета з повтором у разі помилки.

Цей набір протоколів утворює найпоширенішу модель мережного обміну даними, що отримала назву – TCP/IP. Модель TCP/IP ієрархічна і включає чотири рівні.

Прикладний рівеньвизначає спосіб спілкування користувацьких додатків. У системах "клієнт-сервер" додаток-клієнт повинен знати, як надсилати запит, а додаток-сервер повинен знати, як відповісти на запит. Цей рівень забезпечує такі протоколи як HTTP, FTP, Telnet.

Транспортний рівеньдозволяє мережним додаткам отримувати повідомлення строго певними каналами з конкретними параметрами.

на мережевому рівнівизначаються адреси включених у мережу комп'ютерів, виділяються логічні мережі та підмережі, реалізується маршрутизація між ними.

на канальному рівнівизначається адресація фізичних інтерфейсів мережевих пристроїв, наприклад мережних плат. До цього рівня належать програми управління фізичними мережевими пристроями, звані, драйвери.

Як зазначалося раніше, у мережах з комутацією пакетів, а модель TCP/IP належить до таких, передачі з мережі повідомлення (сформоване прикладному рівні) розбивається на пакети чи датаграми. Пакет чи датаграма– це частина повідомлення з доданим заголовком пакета чи датаграми.

На транспортному рівні до корисної інформації додається заголовок – службова інформація. Для мережного рівня корисною інформацією є пакет чи датаграма транспортного рівня. До них додається заголовок мережного рівня.

Отриманий блок даних називається IP-пакетом. Корисним навантаженням для канального рівня є IP-пакет. Тут перед передачею каналом до нього додаються власний заголовок і ще завершувач. Блок, що вийшов, називається кадром. Він і передається через мережу.

Переданий через мережу кадр у пункті призначення перетворюється у зворотному порядку, проходячи за рівнями моделі знизу вгору.

Висновки на тему

1. Протокол мережного обміну інформацією– це перелік форматів переданих блоків даних, а також правил їх обробки та відповідних дій.

2. Протокол обміну даними- Це докладна інструкція про те, якого типу інформація передається по мережі, в якому порядку обробляються дані, а також набір правил обробки даних.

3. В даний час майже всі мережі у світі є мережами комутації пакетів.

4. Існують два принципи організації обміну даними: встановлення віртуального з'єднання з підтвердженням прийому кожного пакета та передачі датаграм.

5. При віртуальному з'єднанні пункт прийому інформації повідомляє відправника про правильний або неправильний прийом кожного пакета. Віртуальним його називають тому, що на відміну від телефонного комутованого каналу обмін інформацією може йти різними фізичними шляхами навіть у процесі передачі одного повідомлення.

6. Під час передачі датаграми короткі пакети надсилаються адресату без підтвердження отримання кожної з них, а про отримання всього повідомлення повністю повинна повідомити цільову програму.

7. ТСР/IР– це набір протоколів, що складається з таких компонентів: міжмережевий протокол (IP), міжмережевий протокол керування повідомленнями (ICMP), протокол дозволу адрес (ARP), протокол користувальницьких датаграм (UDP) та протокол управління передачею (TCP).

Запитання для самоконтролю

1. Що розуміємо під протоколом передачі?

2. Охарактеризуйте мережі з комутацією повідомлень та комутацією пакетів.

3. Чим відрізняється з'єднання віртуальним каналом від передачі датаграм?

4. Які протоколи утворюють модель TCP/IP?

5. Які рівні входять до мережі TCP/IP?

6. Дайте характеристику всіх рівнів моделі TCP/IP і вкажіть відповідні протоколи.

7. Співвіднесіть по рівнях моделі TCP/IP поняття "пакет" та "кадр". Чим вони відрізняються?

8. Який протокол забезпечує перетворення логічних мережевих адрес в апаратні?

Протокол TCP (Transmission Control Protocol) є протоколом транспортного рівня, що забезпечує надійну передачу даних у мережі. Його транспортна адреса в заголовку IP-сегменту дорівнює 6. Обмін даними здійснюється за допомогою "TCP-пакетів". Таблиця містить формат заголовка TCP-пакета.

Порт джерела та порт приймача: 16-бітові поля, що містять номери портів. Існує набір служб, що використовують TCP, за якими закріплені певні порти: 20/21 – FTP; 22 - SSH; 23 – Telnet; 25 - SMTP; 80,8080 – HTTP, альтернативний порт HTTP; 110 - POP3; 194 – IRC (Internet Relay Chat); 443 – HTTPS (Secure HTTP); 8080 – альтернативний порт HTTP

Номер у послідовності: 32-бітове поле, що визначає положення даних TCP-пакету всередині вихідного потоку даних. Номер послідовності виконує два завдання:

1. Якщо встановлено прапор SYN, це початкове значення номера послідовності - ISN (Initial Sequence Number), і перший байт даних, які будуть передані в наступному пакеті, матиме номер послідовності рівний ISN + 1.

2. В іншому випадку, якщо SYN не встановлений, перший байт даних, що передається в даному пакеті, має номер послідовності.

Номер підтвердження: 32-бітове поле містить кількість прийнятих даних із вхідного потоку до TCP-модуля, що формує TCP-пакет. Якщо встановлено прапорець ACK, це поле містить номер послідовності, очікуваний одержувачем наступного разу. Позначає цей сегмент як підтвердження одержання.

Зміщення даних: містить довжину заголовка TCP-пакета в 32-бітових словах і використовується для визначення початку розташування даних у TCP-пакеті. Це поле визначає розмір заголовка пакета TCP у 32-бітових словах. Мінімальний розмір становить 5 слів, а максимальний – 15, що становить 20 та 60 байт відповідно. Усунення вважається від початку заголовка TCP.

Зарезервовано(6 біт) для майбутнього використання та має встановлюватися в нуль. З них два (5-й та 6-й) вже визначено:

· CWR(Congestion Window Reduced) - Поле "Вікно перевантаження зменшено" - прапор встановлений відправником, щоб вказати, що отримано пакет із встановленим прапором ECE (RFC 3168)

· ECE(ECN-Echo) - Поле «Ехо ECN» - вказує, що даний вузол здатний на ECN (явне повідомлення перевантаження) та для вказівки відправнику про навантаження в мережі (RFC 3168)

Прапори (керуючі біти) Це поле містить 6 бітових прапорів:

  • URG: біт = 1 означає, що пакет містить важливі (urgent) дані
  • ACK=1 означає, що пакет містить у полі "номер підтвердження" правильні дані.
  • PSH=1 інструктує одержувача проштовхнути дані, що накопичилися в приймальному буфері, додаток користувача
  • RST=1 Обірвати з'єднання, скинути буфер (очищення буфера)
  • SYN= 1 означає, що TCP-пакет є запитом встановлення логічного з'єднання.
  • FIN= 1 означає, що TCP-пакет подає запит на закриття з'єднання.

Розмір вікна: містить кількість байт інформації, яка може прийняти TCP-модуль, що надсилає партнеру TCP-пакет. Поле використовується приймаючим потік даних TCP-модулем управління інтенсивністю цього потоку.

Контрольна сума: 16-бітове поле, що містить контрольну суму, підраховану для TCP-заголовка, даних пакета та псевдозаголовка.

Вказівникважливості: 16-бітове поле, що містить покажчик на перший байт у тілі TCP-пакета, що починає послідовність важливих (urgent) даних.

Додаткові дані заголовка: Протокол TCP визначає три типи додаткових даних заголовка: кінець списку полів додаткових даних; порожньо (No Operation); максимальний розмір пакета.

На відміну від протоколу UDP, який може відразу ж розпочати передачу пакетів, TCP перед передачею даних встановлює з'єднання:

  • Встановлення з'єднання
  • Передача даних
  • Завершення з'єднання

При обміні даними приймач використовує номер послідовності, що міститься в сегментах, що отримуються, для відновлення їх вихідного порядку. Приймач повідомляє сторону, що передає, про номер послідовності, до якої він успішно отримав дані, включаючи його в полі «номер підтвердження». Якщо згодом буде прийнятий сегмент, що відноситься до очікуваного номера послідовності, порядок даних буде автоматично відновлено виходячи з номерів послідовностей в сегментах.

Для того, щоб сторона, що передає, не відправляла дані інтенсивніше, ніж їх може обробити приймач, TCP містить засоби управління потоком. Для цього використовується поле вікно. У сегментах, що направляються від приймача стороні, що передає, в полі «вікно» вказується поточний розмір приймального буфера. Сторона, що передає, зберігає розмір вікна і відправляє даних не більше, ніж вказав приймач. Якщо приймач вказав нульовий розмір вікна, то передача даних у напрямку цього вузла не відбувається, доки приймач не повідомить про більший розмір вікна.

Останній сегмент, що містить команду, повинен містити прапор PSH, щоб додаток на стороні, що приймає, змогло почати її виконання.

Завершення з'єднання можна розглянути у три етапи:

  1. Надсилання серверу від клієнта прапорів FIN та ACK на завершення з'єднання.
  2. Сервер посилає клієнту прапори відповіді ACK, FIN, що з'єднання закрите.
  3. Після отримання цих прапорів клієнт закриває з'єднання і підтверджує відправляє серверу ACK , що з'єднання закрито.

Протоколи транспортного рівня, що забезпечують надійну передачу даних, передбачають підтвердження стороною, що приймає, правильності отриманих даних. Для цього використовується принцип "ковзного вікна" (sliding window), який полягає в тому, що кожна сторона може відправляти партнеру максимум стільки байт, скільки партнер вказав у полі "розмір вікна" заголовка TCP-пакету, що підтверджує отримання попередніх даних. Принцип "ковзного вікна" забезпечує випереджальну посилку даних з відкладеним підтвердженням. Якщо протягом деякого часу не буде отримано відкладене підтвердження відправленого пакета, то TCP-модуль, що відправляє, буде змушений повторити посилку всіх TCP-пакетів, починаючи з непідтвердженого пакета.

Хоча протокол здійснює перевірку контрольної суми по кожному сегменту, алгоритм вважається слабким за надійністю. У загальному випадку розподіленим мережним додаткам рекомендується використовувати додаткові програмні засобидля гарантування цілісності інформації, що передається.

Протокол TCP (TransmissionControlProtocol, протокол управління передачею) являє собою надійний протокол із встановленням з'єднання, що є альтернативою UDP, і відповідає за більшість передач даних користувача по мережах TCP/IP, і навіть зробив свій внесок в назву всього набору протоколів. Протокол TCP, як визначено в документі RFC 793, забезпечує програми всім діапазоном транспортних послуг, включаючи підтвердження отримання пакетів, відстеження помилок та їх виправлення, а також управління потоком.

Протокол TCP призначений передачі щодо великих обсягів інформації, яка свідомо зможе бути упакована однією пакет. Інформація зазвичай набуває форми цілих файлів, які повинні бути розділені на множинні дейтаграми для передачі. Інформація, що поставляється Транспортному рівню, в термінології протоколу TCP сприймається як послідовність (sequence), яку протокол розбиває на сегменти (segment) передачі мережі. Як і у випадку протоколу UDP, сегменти потім упаковуються в IP-дейтаграми, які можуть долати маршрут до місця призначення. у різний спосіб. Тому протокол TCP забезпечує кожен із сегментів порядковим номером для того, щоб система-одержувач змогла зібрати їх воєдино в правильному порядку.

Перед початком будь-якої передачі даних з застосуванням протоколу TCP дві системи обмінюються повідомленнями з метою встановлення з'єднання. Це дозволяє переконатися, що система-одержувач функціонує і може прийняти дані. Як тільки з'єднання встановлено і починається процес передачі даних, система-одержувач періодично надсилає повідомлення, що підтверджують прийом пакетів. Ці повідомлення сповіщають систему-відправника про втрачені пакети, а також забезпечують її інформацією, яка використовується під час контролю швидкості потоку передачі.

Формат TCP – повідомлення

Функції полів заголовка TCP описані нижче.

Порт джерела (SourcePort), 2 байти. Ідентифікує номер порту передавальної системи, який використовується процесом, який створив інформацію, що переноситься TCP-сегментами. У деяких випадках це може бути фіктивний номер порту, виділений клієнтом спеціально для цієї транзакції.

Порт призначення (DestinationPort), 2 байти. Вказує номер порту системи призначення, який має бути передана інформація ТСР-сегментів. Номери портів перелічені у документі "AssignedNumbers", а також у файлі SERVICES кожної ТСР/1Р-системи.

Порядковий номер (SequenceNumber), 4 байти. Визначає положення конкретного сегмента стосовно всієї послідовності даних.

Підтверджений номер (AcknowledgmentNumber), 4 байти. Задає максимальний номер байта в сегменті, збільшений на одиницю, яку підтверджуюча система очікує отримати від відправника. Використовується разом із бітом управління АСК.

Зміщення даних (DataOffset), 4 біти. Задає довжину в 4-байтних словах TCP-заголовка (який може містити опції, що збільшують його розмір аж до 60 байт).

Зарезервовано (Reserved), 6 бітів. Виділено для подальших застосувань.

Біти керування (ControlBits), 6 бітів. Містить шість 1-бітових прапорів, що виконують наведені нижче функції:

URG - показує, що послідовність містить термінові дані (urgentdata) та активує поле покажчика терміновості;

АСК - зазначає, що повідомлення є підтвердженням раніше отриманих даних та активує поле номера підтвердження;

PSH - наказує системі-одержувачу передати всю інформацію поточної послідовності, отриману на даний момент, додатку, ідентифікованому полем порту призначення, не чекаючи надходження інших фрагментів;

RST - інструктує систему-отримувача відкинути всі сегменти поточної послідовності, отримані на даний момент, і розпочати встановлення TCP-з'єднання заново;

SYN - використовується під час процедури встановлення з'єднання для синхронізації нумераторів переданих даних між взаємодіючими системами;

FIN - сповіщає іншу систему, що передача даних закінчена та з'єднання має бути завершено.

Вікно (Window), 2 байти. Реалізує механізм управління потоком протоколу TCP (ковзне вікно) шляхом оголошення кількості байтів, яку система-одержувач може прийняти від системи-джерела.

Контрольна сума (Checksum), 2 байти. Містить результат обчислення контрольної суми з урахуванням TCP-заголовка, даних, а також псевдозаголовок, складений з полів IP-адрес джерела, протоколу, IP-адреси призначення з IP-заголовка плюс довжина всього ТСР-повідомлення.

Вказівник терміновості (UrgentPointer), 2 байти. Задіюється разом із бітом URG, визначає дані послідовності, які мають розглядатися одержувачем як термінові.

Опції (Options), змінний розмір. Може містити додаткові параметри конфігурації для TCP-з'єднання разом з бітами вирівнювання, необхідними для того, щоб привести розмір поля до найближчого значення, кратного 4 байтам. Можливі опції наведені нижче.

Максимальний розмір сегмента (MaximumSegmentSize). Задає розмір максимального сегмента, який поточна системаможе отримати від іншої системи, поєднаної з нею.

Фактормасштабаокна (Window Scale Factor). Використовується для збільшення розміру поля вікна з 2 до 4 байтів.

Тимчасова позначка (Timestamp). Використовується для зберігання тимчасових позначок пакетів даних, які система-одержувач повертає відправнику для підтвердження. Це дозволяє відправнику вимірювати час подорожі даних в обидва кінці.

Дані (Data), змінний розмір. Може включати сегменти даних, що надійшли з вершини протокольного стека, від протоколів прикладного рівня. У пакетах SYN, АСК та FIN це поле залишається порожнім.

IPX/SPX: Для забезпечення транспортних послуг для операційної системи NovellNetWare, фірмою Novell було створено свій власний стек протоколів, який отримав загальну назву за найменуванням протоколу мережного рівня - IPX (InternetworkPacketExchange, міжмережевий обмін пакетами). За аналогією з TCP/IP цей стек іноді називають IPX/SPX. Друга частина цього позначення співвідноситься з SPX (SequencedPacketeXchange, послідовний обмін пакетами) протоколом, що працює на Транспортному рівні. Однак, на відміну від комбінації TCP та IP, яка повсюдно зустрічається в TCP/IP-мережах та призначена в основному для доставки великої кількості трафіку, комплекс IPX/SPX у мережах NetWare можна зустріти відносно рідко.

Протоколи IPX у кількох аспектах схожі на TCP/IP. Обидва стеки протоколів задіяні на Мережевому рівніненадійні протоколи без встановлення з'єднання (IPX та IP відповідно) для перенесення дейтаграм, що містять дані безлічі протоколів верхніх рівнів, що забезпечує широкий спектр послуг для різних застосувань. Подібно до IP, IPX відповідає за адресацію дейтаграм і маршрутизацію їх до місця призначення в іншій мережі.

Однак, на відміну від TCP/IP, протоколи IPX були розроблені для застосування в локальних мережах, і не підтримують тієї майже необмеженої масштабованості, властивої протоколам Інтернету. IPX не має таку самостійну адресну систему, яка є у протоколу IP. Системи в мережі NetWare ідентифікують інші системи за допомогою апаратних адрес, "зашитих" у плати мережевих адаптеріву поєднанні з адресою мережі, призначеним адміністратором (або ОС) під час інсталяції операційної системи.

Дейтаграми IPX переносяться всередині стандартних кадрів протоколу Канального рівнятак само, як дейтаграми IP. Протоколи IPX немає своїх протоколів Канального рівня. Тим не менш, у більшості мереж дані IPX інкапсулюються кадрами Ethernet або TokenRing.

IPX базується на протоколі IDP (InternetworkDatagramPacket, міжмережевий обмін дейтаграмами), розробленому для мережевих служб Xerox (XNS, XeroxNetworkServices). IPX забезпечує базові транспортні послуги без встановлення з'єднання між системами інтермережі при широкомовній та односпрямованій передачі. Більшість звичайного трафіку між серверами NetWare або між клієнтами та серверами переноситься за допомогою дейтаграм IPX.

Заголовок дейтаграми IPX має довжину 30 байтів (порівняно: розмір заголовка IP дорівнює 20 байтам). Призначення полів заголовка наведено нижче.

Контрольна сума (Checksum), 2 байти. В оригінальному заголовку IDP це поле містить значення CRC для дейтаграми. Оскільки протоколи Канального рівня самі виконують перевірку контрольних сум, то дана функціяпри обробці дейтаграм IPX не задіяна і поле завжди містить шістнадцяткове значення ffff.

Довжина (Length), 2 байти. Задає розмір дейтаграми в байтах, включаючи заголовок IPX та поле даних.

Управління доставкою (TransportControl), 1 байт. Це поле також відоме як лічильник транзитів (hopcount). Воно фіксує кількість маршрутизаторів, якими пройшла дейтаграмма шляху до місця призначення. Система, що передає, скидає його в 0, а кожен з маршрутизаторів при обробці дейтаграми збільшує значення лічильника на 1. Як тільки кількість транзитних маршрутизаторів досягає 16, останній з них відкидає дейтаграму.

Тип пакету (Packet Туре), 1 байт. Ідентифікує сервіс або протокол верхнього рівня, який створив дані, що переносяться дейтаграмою. Використовуються такі значення:

0 – не визначений;

1 - RoutingInformationProtocol (RIP, протокол інформації маршрутизації);

4 - ServiceAdvertisingProtocol (SAP, протокол сповіщення про послуги);

5 - SequencedPacketExchange (SPX, послідовний обмін пакетами);

17 - NetWare Core Protocol (NCP, основний протокол NetWare).

Адреса мережі призначення (Destination Network Address), 4 байти. Вказує мережу, в якій розташована система-одержувач, містить значення, виділене адміністратором або операційною системоюпід час інсталяції NetWare.

Адреса вузла призначення (DestinationNodeAddress), 6 байтів. Визначає мережевий інтерфейс комп'ютера, якому мають бути доставлені дані, є апаратною адресою протоколу Канального рівня. Широкомовні повідомлення надсилаються з шістнадцятковою адресою ffffffffffff.

Сокет призначення (DestinationSocket), 2 байти. Відповідає за ідентифікацію процесу, що виконується на системі-одержувачі, для якого власне і призначені дані всередині дейтаграми. Використовуєтьсяоднодосліджувальних значень:

0451 – NetWare Core Protocol;

0452 - Service Advertising Protocol;

0453 - Routing Information Protocol;

0456 – діагностичний пакет;

0457 - пакет надання номера (serializationpacket);

4000-6000 - сокети, відведені процесам сервера;

9004 – IPXWAN Protocol.

Адреса мережі джерела (SourceNetworkAddress), 4 байти. Ідентифікує мережу, в якій знаходиться система, яка надіслала дейтаграму. Використовується значення, виділене адміністратором або операційною системою під час інсталяції NetWare.

Адреса вузла джерела (SourceNodeAddress), 6 байтів. Містить апаратну адресу протоколу Канального рівня для мережного інтерфейсу комп'ютера, який надіслав дейтаграму.

Сокет джерела (SourceSocket), 2 байти. Визначає процес, що виконується на локальній системі, що сформував дані пакета. Застосовуються самі значення, як і поля сокета призначення.

Багатьом знайома абревіатура TCP, набагато менше людей знає, що це протокол передачі. Але практично ніхто не знає, як він улаштований.

Увага! Цей матеріал розрахований на тих, кого дійсно цікавиться питанням: «Як влаштована мережа, і що я можу зробити, якщо це знатиму». Якщо тебе ще бентежать слова на кшталт DNS, Telnet, Socket — то можеш відразу забити на цей матеріал — такі «страшні» слова тут звичайно не зустрінуться, але від цього зміст зрозуміліший не стане…

Для тих, хто залишився:

Напевно, багато хто з вас чув такі слова як SYN-flooding або IP-spoofing. Все це різновиди атак - перший D.O.S., другий
полягає в заміні IP-адреси. На перший погляд, між цими прикладами немає нічого спільного, але між тим, це не так — обидві ці атаки не можливі без глибокого знання протоколу TCP, протоколу на якому стоїть
Inet.

Специфікація протоколу TCP описана в RFC793. Рекомендую тобі ознайомитися з цим документом, тому що хоч я і постараюся повести до тебе найважливіше, забезпечивши це важливе відповідними коментарями, яких ти не знайдеш у мануалі, але все ж таки через малий обсяг і практичний кут зору, можу й упустити деякі тонкощі .

Дані передаються у вигляді пакетів. Така організація передачі означає, що дані, якого розміру вони не були, розбиваються на окремі фрагменти, які формуються в пакети (формування пакетів передбачає, що до даних додається службовий заголовок), після чого у вигляді пакетів дані передаються через мережу (причому порядок передачі пактів може порушуватись). Система, що приймає, «збирає» з пакетів вихідний масив даних на підставі заголовків пакетів. Це не дуже зрозуміло, але тільки доти, доки не розглянемо структуру пакетів.

Структура TCP-пакету:

Поясню лише найважливіші місця:

Адреса одержувача, порт одержувача та адреса відправника, порт відправника – це сподіваюся зрозуміло.

Sequence Number(SYN) — номер черги чи послідовний номер, показує порядковий номер пакета під час передачі, саме тому система, що приймає, збирає пакети саме так, як треба, а не в тому порядку, як вони прийшли.

Acknowledgment Number(ACK) — номер підтвердження, показує, на пакет з яким SYN відповідає віддалена система, таким чином ми маємо уявлення, що віддалена система отримала наш пакет з даними
SYN.

Контрольні біти- 6 біт (на схемі між reversed та window). Значення бітів:

URG: поле термінового покажчика задіяне
ACK: поле підтвердження задіяне
PSH: функція проштовхування
RST: перезавантаження цього з'єднання
SYN: синхронізація номерів черги
FIN: немає більше даних для передачі

DATA — це ті дані, які ми хочемо передати.

Думаю, спочатку це все, що потрібно, щоб зрозуміти принцип роботи протоколу. Докладніше про значення інших полів ти можеш прочитати в RFC793. Ну а ми краще розберемо як це працює на практиці.

Коли ми хочемо встановити з'єднання, ми відправляємо віддаленій системі пакет наступної структури:

Client - SYN (856779) - Host

Де Client-це ми, a Host - це віддалена система. Як ти бачиш, ми посилаємо пакет лише із зазначенням SYN - це означає, що цей пакет перший, ми ні на що не відповідаємо (відсутня ACK). Цей пакет виглядає приблизно так:

20 53 52 43 00 00 44 45 53 54 00 00 08 00 45 00 00 2C C3 00 40 00 20 06 10 0C CB 5E FD BA CB 5E F3 47 0 0 00 00 60 02 20 00 D9 70 00 00 02 04 05 B4 2D

Цікавий момент у тому, звідки береться SYN. SYN утворюється від початкового номера черги
(ISN) - це 32-бітний номер від 1 до 4294967295 (2 в 32-му ступені). ISN при перезавантаженні системи дорівнює 1, потім кожну секунду він збільшується на 128000 (строго кажучи, зміна відбувається кожні 4 мікросекунди) + при кожному встановленому з'єднаннівін збільшується на 64000. Виходить, що цикл унікальності ISN, за умови, що ніякі сполуки не встановлювалися, становить приблизно 4,55 години. Оскільки жоден пакет так довго не подорожує по мережі, ми можемо вважати, що SYN буде абсолютно унікальним.

Отримавши наш пакет, віддалена система відповідає, що отримала та готова встановити з'єднання. Даний пакет виглядає так:

Host - SYN (758684758) та ACK (856780) - Client

Як бачиш, віддалена система дає зрозуміти, що одержала наш пакет. Для цього вона надсилає нам ACK із номером «наш SYN+1». На додаток до цього віддалена система посилає нам свій SYN (ми ж теж відповідатимемо). А відповідь наша буде такою:

Client - SYN (856780) та ACK (758684759) - Host

Думаю, тобі вже має бути все зрозуміло. Якщо хтось не зрозумів, то пакет означає наступне: ваш пакет з SYN (758684758) отримано, з'єднання встановлено, наш SYN дорівнює 856780.

Цю процедуру називають "триразовим підтвердженням" або "триразовим рукостисканням". Перші два етапи необхідні синхронізації SYN наших систем, а третій — підтвердження, що синхронізація відбулася.

Далі ми йде обмін даними, тобто. те, навіщо з'єднання і встановлювалося. Причому слід зауважити, що на всіх стадіях забезпечення збереження даних, що передаються з використанням протоколу TCP, здійснюється так: посланий пакет поміщається в буфер і якщо за визначений часвід віддаленої системи не надходить пакет з підтвердженням (ACK), то пакет посилається знову; якщо ж підтвердження прийшло, то пакет вважається надісланим успішно і видаляється з буфера.

Ну з'єднання нам більше не потрібне, можна його і закрити. Цей етап знову буде
складатися з кількох стадій - сподіваюся ти вже можеш сам прочитати ці пакети.

Client - FIN(4894376) та ACK (1896955378) - Host

Host – ACK (4894377) – Client

Host - FIN (1896955378) та ACK (4894377) - Client

Client - ACK (1896955378) - Host

Думаю, нічого складного тут нема. Єдине, що варто відзначити, це прапор FIN, який означає бажання завершити з'єднання.

Підбиваючи невеликі підсумки вищевикладеного, відзначимо у яких випадках змінюються/не змінюються порядкові номери:

Передача одного FIN Пакету = +1
Передача одного SYN Пакету = +1
Передача одного ACK Пакет = 0
Передача одного SYN/ACK Пакет = +1
Передача одного FIN/ACK Пакет = +1
Зміна за 1 секунду = +128,000
Встановлення однієї сполуки = +64,000

Можливо, хтось запитає: «А що буде, якщо машин отримає пакет із таким ACK, якого не було?» (SYN=ACK-1, а пакет із таким SYN ми не посилали). Отримавши відповідь незрозуміло на що, ми у свою чергу відповімо віддаленій системі NACK-пакетом (означає «не знаю про що ти», ніякого з'єднання не встановлюється), але, сподіваюся, докладніше ми поговоримо з тобою про це наступного разу.