TCP
| TCP/IP модель (RFC 1122) |
|---|
| Прикладний рівень |
| BGP · DHCP · DNS · FTP · Gopher · GTP · HTTP · IMAP · IRC · NNTP · NTP · POP3 · RIP · RPC · RTCP · RTP · RTSP · SDP · SIP · SMTP · SNMP · SOAP · SSH · STUN · Telnet · TLS/SSL · XMPP · |
| Сеансовий рівень |
| ADSP • H.245 • iSNS • NetBIOS • PAP • L2TP • PPTP • RTCP • SMPP • SSH • ZIP • SDP • RPC • SCP • (more) |
| Транспортний рівень |
| TCP · UDP · DCCP · SCTP · RSVP · ECN · (more) |
| Мережевий рівень |
| IP (IPv4, IPv6) · ICMP · ICMPv6 · IGMP · IPsec · (more) |
| Рівень мережевих інтерфейсів |
| ARP · RARP · NDP · OSPF · Tunnels (L2TP) · MAC-адреса (Ethernet, DSL, ISDN, FDDI) · Device Drivers · (more) |
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.
Посилання[ред.]
- RFC 793 — Transmission Control Protocol
- Специфікація протоколу TCP(рос.)
Література[ред.]
- Douglas E. Comer. Internetworking with TCP/IP, Vol. 1: Principles, Protocols and Architecture
- російський переклад: Дуглас Камер. Сети TCP/IP, том 1. Принципы, протоколы и структура. М. «Вильямс» 2003, ISBN 0-13-018380-6,
http://www.williamspublishing.com/Books/5-8459-0419-6.html
