Що таке TCP і як він забезпечує передачу даних

Автор: Опубліковано

Коротко: TCP — це транспортний протокол, тобто набір правил передавання даних між застосунками, що працюють у мережі. Він забезпечує доставлення даних у правильному порядку, виявляє пропуски й повторно передає втрачені фрагменти. Однак він не гарантує успішного завершення кожного з’єднання і сам не шифрує передану інформацію.

Яку роль TCP відіграє в інтернеті?

TCP, від англійського Transmission Control Protocol, працює між застосунками та рівнем, відповідальним за передавання пакетів мережею. Його використовують, зокрема, електронна пошта, віддалений вхід через SSH і багато з’єднань із вебсайтами. Завдяки TCP застосунку не потрібно самостійно стежити за порядком фрагментів даних і повторно надсилати їх у разі втрати.

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

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

Як TCP встановлює з’єднання та передає дані?

Перш ніж почнеться звичайний обмін даними, TCP встановлює з’єднання. Основна процедура складається з трьох кроків і називається three-way handshake, тобто триетапне узгодження:

  1. Клієнт надсилає повідомлення SYN, пропонуючи встановити з’єднання.
  2. Сервер відповідає SYN-ACK, підтверджуючи пропозицію та передаючи власні початкові параметри.
  3. Клієнт надсилає ACK — підтвердження відповіді сервера.

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

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

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

Що забезпечує TCP, а чого він не робить?

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

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

Важливі ще два обмеження:

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

Чим TCP відрізняється від UDP?

UDP — інший транспортний протокол. Він передає незалежні повідомлення, які називаються датаграмами, без вбудованих механізмів підтвердження отримання, повторного передавання та впорядкування. Застосунок може додати такі механізми, але сам UDP їх не забезпечує.

ХарактеристикаTCPUDP
Спосіб передаванняУпорядкований потік байтівОкремі датаграми
Повторне передавання втрачених данихВбудованеЗалежить від застосунку
Встановлення з’єднанняОбов’язковеУ UDP немає такої процедури
Типовий пріоритет використанняПовнота та порядок данихКонтроль застосунку над затримками й втратами

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

Це не означає, що UDP завжди швидший або що кожен сайт використовує TCP. HTTP/1.1 і HTTP/2 зазвичай працюють через TCP, тоді як HTTP/3 використовує QUIC на основі UDP. Сам QUIC забезпечує, зокрема, надійне передавання потоків і шифрування.

Що означає порт TCP у налаштуваннях мережі?

Порт — це номер, який допомагає системі спрямовувати трафік до потрібної служби. IP-адреса вказує на точку в мережі, а порт дає змогу розрізняти служби, доступні за цією адресою. Типовий приклад — порт TCP 443, який використовує HTTPS під час роботи через TCP.

TCP і UDP мають окремі простори портів. Правило міжмережевого екрана, яке дозволяє TCP 443, не дозволяє автоматично UDP 443, що його часто використовує HTTP/3. Сам по собі відкритий порт також не доводить, що застосунок працює правильно або безпечно.

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

Читайте також

Дізнайтеся, як PHP-FPM обробляє запити PHP, чим відрізняється від вебсервера та як налаштувати процеси під трафік і ресурси хостингу.
Дізнайтеся, як BIND обслуговує DNS, чим відрізняються його серверні ролі та коли варто розгортати його самостійно замість керованої послуги.
Дізнайтеся, що означають польський реєстр і номер REGON, чим вони відрізняються від NIP та KRS і як перевірити дані підприємства.