TCP

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Transmission Control Protocol, TCP (укр. Прото́кол керува́ння переда́чею) — один з основних мережевих протоколів Інтернету, призначений для управління передачею даних в мережах і підмережах TCP/IP.

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

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

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

Формат TCP-сегменту[ред.ред. код]

Біт 0 — 3 4 — 9 10 — 15 16 — 31
0 Порт джерела Порт призначення
32 Номер послідовності
64 Номер підтвердження
96 Зсув даних Зарезервовано Прапорці Вікно
128 Контрольна сума Вказівник важливості
160 Опції (необов'язково)
160/192+  
Дані
 

Порт джерела[ред.ред. код]

Порт джерела ідентифікує порт, з якого відправлено пакет.

Порт призначення[ред.ред. код]

Порт призначення ідентифікує порт, на який відправлено пакет

Номер послідовності[ред.ред. код]

Номер послідовності виконує два завдання:

  • Якщо встановлено прапор SYN, то це початкове значення номера послідовності і перший байт даних — це номер послідовності плюс 1.
  • Інакше, якщо SYN не встановлено, перший байт даних — номер послідовності

Номер підтвердження[ред.ред. код]

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

Зсув даних[ред.ред. код]

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

Зарезервовано[ред.ред. код]

4 біта зарезервовано для майбутнього використання і повинні встановлюватися в нуль.

Прапорці (керуючі біти)[ред.ред. код]

Це поле містить 8 бітових прапорців:

  • CWR — Поле встановлюється відправником, щоб показати що TCP-сегмент був отриманий з встановленим полем ECE (додано до заголовку в RFC 3168).
  • ECE — Поле показує, що відправник підтримує ECN
  • URG — Поле «Показник важливості» задіяно (англ. Urgent pointer field is significant)
  • ACK — Поле «Номер підтвердження» задіяно (англ. Acknowledgement field is significant)
  • PSH — (англ. Push function) інструктує отримувача передати дані з прийомного буферу до програми, якій ці дані призначені.
  • RST — Обірвати з'єднання, скинути буфер (очищення буферу) (англ. Reset the connection)
  • SYN — Синхронізація номерів послідовності (англ. Synchronize sequence numbers)
  • FIN (англ. final) — прапорець, якщо встановлений, вказує на завершення з'єднання (англ. FIN bit used for connection termination).

Контрольна сума[ред.ред. код]

Поле контрольної суми — це 16-бітове доповнення суми всіх 16-бітових слів заголовку та тексту. Якщо сегмент містить непарне число октетів в заголовку /або тексті, останні октети доповнюються праворуч 8 нулями для вирівнювання по 16-бітовій межі. Біти заповнення (0) не передаються в сегменті і слугують лише для розрахунку контрольної суми. При розрахунку контрольної суми значення самого поля контрольної суми приймається рівним 0.

Показник важливості[ред.ред. код]

16-бітове значення позитивного зсуву від порядкового номера в даному сегменті. Це поле вказує порядковий номер октету, з якого починаються важливі (urgent) дані. Поле береться до уваги тільки для пакетів зі встановленим прапором U.

Посилання[ред.ред. код]

Література[ред.ред. код]

  • Douglas E. Comer. Internetworking with TCP/IP, Vol. 1: Principles, Protocols and Architecture
  • Дуглас Камер. Сети TCP/IP, том 1. Принципы, протоколы и структура. М. «Вильямс» 2003, ISBN 0-13-018380-6,