Рубріки: Теорія

TCP/IP – що це таке і як працює

Сергій Бондаренко

Сьогодні ми розберемося в тому, що таке TCP/IP, як функціонує цей стек протоколів, розглянемо його переваги та недоліки.

Що таке протокол

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

Передісторія виникнення протоколу IP

У далекому 1969 році в США підрозділ Міністерства оборони, який називався DARPA, розробила прототип сучасного інтернету – мережу під назвою Arpanet. Спочатку це були об’єднані чотири обчислювальні модулі, потім ще 11. Мережа поступово росла і розвивалася, включаючи вже термінали у Великій Британії, а також Норвегії. Так, якщо 1977 року Arpanet складалася з усього трохи більше сотні хостів, то вже 1983 року це число зросло до 4 тисяч. Починаючи з 1983 року, вона стала першою у світі мережею, в якій була реалізована маршрутизація пакетів даних. Протоколом маршрутизації для роботи цієї мережі став протокол IP – один із найважливіших протоколів передачі даних в Інтернеті сьогодні.

Мережева модель та рівні взаємодії

Оскільки варіантів комп’ютерних мереж може бути нескінченне число, щоб уникнути плутанини були розроблені мережеві моделі, основною з яких стала OSI (The Open Systems Interconnection model). Вона визначала основні правила та вимоги до мережевих протоколів. Більшість алгоритмів зв’язку, що застосовуються сьогодні, ґрунтуються на стандарті OSI, що визначає рівні взаємодії систем. Модель передбачає сім варіантів таких взаємодій:

  • Прикладний рівень
  • Сеансовий рівень
  • Рівень представлення
  • Транспортний рівень
  • Мережевий рівень
  • Канальний рівень
  • Фізичний рівень

 

Група протоколів за певними рівнями називається стеком протоколів. Сучасний Інтернет побудований на стеку протоколів TCP/IP. Як очевидно з назви стека TCP/IP – він складається із двох частин, протоколу TCP і протоколу IP. Забігаючи наперед —  IP-протокол вирішує питання з адресацією, тоді як TCP – реалізує трансфер даних і стежить, щоб клієнт точно отримав свої байти. Цей стек використовує чотири рівні з перерахованих вище:

  • Прикладний рівень
  • Транспортний рівень
  • Мережевий рівень
  • Канальний рівень

Прикладний рівень у TCP/IP

Прикладний рівень відповідає за працездатність усіляких мережевих додатків. Такі програми можуть використовувати свої персональні протоколи обміну даними. Це можуть бути браузери, що функціонують через HTTP, клієнти для завантаження по ftp, програми для роботи з електронною поштою, SMTP, SSH (надійна комунікація з хостом), DNS (співвідношення IP-адрес і символьних імен) та ін.

Як відбувається передача інформації

Трансфер пакетів від одного мережного вузла іншому забезпечує протокол IP – протокол мережного рівня. Щоб дані перейшли від хоста-відправника до хоста-отримувача, необхідно повідомити IP-адресу одержувача та відправника, а також вказати номер порту. Поєднання IP-адреси та номера порту за яким здійснюється передача даних називають сокетом. Для спрощення стандартів прийнято використовувати певні порти в залежності від функціонального призначення програми. Приміром, поштовий SMTP-сервер слухає 25 порт, POP3-сервер налаштований на 110 порт тощо. Більшість додатків на ПК є клієнтами та номери портів для них виділяються динамічно операційною системою. Серверні порти мають номер до 1024, клієнтські порти йдуть із більш великим значенням. Скажімо, сокет при зверненні до сервера порт HTTP може бути представлений як: 194.106.118.30:80. Відповідь у цьому випадку надходитиме на сокет виду aaa.bbb.ccc.ddd:xxxxx.

Щоб мати можливість звертатися до того чи іншого мережного інтерфейсу, протоколом застосовуються IP-адреси, що відповідають одній із двох версій протоколу: IPv4 та IPv6. Для версії IPv4 використовуються 32-бітові адреси по 4 октети (вісім позицій під нуль або одиницю). Завдяки IP-адресам, що закріплені за пакетами даних, мережа визначає, з якого вузла той чи інший пакет надійшов і до якого хосту його слід відправити. Застосовувати довгі адресні записи з тридцяти двох нулів та одиниць не дуже зручно, тому IP-адресу вирішили вказувати у десятковій системі. Оскільки адресний простір протоколу IPv4 обмежено 4 294 967 296 (дві ступеня 32) адресами, було розроблено оновлений варіант протоколу – IPv6, у якому використовується довжина адреси 128 біт.

Для зручності адресації замість числових значень використовується символьно-цифрове ім’я хоста. Щоб перетворити IP-адресу на доменне ім’я застосовується сервіс доменних імен DNS (Domain Name Server). DNS моніторить 53-й порт UDP (рідше – TCP).

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

Работа транспортного рівня у TCP/IP

Центральним протоколом транспортного рівня TCP/IP є TCP (Transmission Control Protocol), крім нього ще використовуються два допоміжні протоколи – UDP (User Datagram Protocol ) і SCTP. На відміну від UDP, в якому передача датаграм відбувається без встановлення з’єднання, механізм передачі даних через TCP гарантує точне пересилання даних. З цієї причини, на практиці частіше використовується TCP – він перевіряє передані пакети з даними та при виявленні помилок, перезапитує пакети по новій. Крім того, протокол TCP стежить за правильною послідовністю переданих пакетів. Передача даних за допомогою TCP починається з так званого “рукостискання” – процедури встановлення з’єднання, яке виконується за три кроки.

Клієнт надсилає одержувачу фрагмент даних з номером послідовності та прапором SYN. Сервер виділяє пам’ять для обробки завдання та повертає відправнику фрагмент з номером послідовності та прапорами SYN та ACK, після чого перемикається в режим SYN-RECEIVED. У разі збою в роботі сервер сигналізує клієнту про проблему, посилаючи сегмент із прапором RST (отримавши відмову, хост-відправник припиняє спроби встановити з’єднання).

Отримавши прапор SYN, клієнт передає сегмент із прапором ACK, і якщо цей прапор вузол вже отримав, включається режим ESTABLISHED. Якщо за десять секунд сервер не відповідає, клієнт повторює свій запит. Коли сервер із режимом SYN-RECEIVED отримує пакет із прапором ACK, він включає режим ESTABLISHED. Не дочекавшись відповіді, після деякого часу він вимикає сокет, включаючи режим CLOSED.

Завершується сесія між двома хостами за три кроки:

  • Клієнт шле хосту прапор FIN
  • Вузол повертає прапори відповіді ACK, FIN, що свідчить про закінчення зв’язку.
  • Клієнт зупиняє з’єднання, після чого надсилає хосту сигнал про завершення сесії у вигляді прапора ACK.

Сфера застосування UDP обмежується програмами з потоковими даними – IPTV, Voice over IP, онлайн-іграх і т.д.

У цих додатках цифрова достовірність передачі даних не критична, тому нею жертвують (при необхідності функція перевірки достовірності даних може бути перекладена сама програма).

Для контролю мережевих з’єднань можна використовувати набір команд, введених у терміналі. Наприклад, за допомогою команди iptrace (UNIX) виконується трасування (аналіз, відстеження) пакетів на рівні мережного інтерфейсу. Виклик даних про трасування даних у шістнадцятковому та текстовому форматах здійснюється за допомогою команди ipreport, а команда trpt виконає трасування пакетів TCP на транспортному рівні, показавши їх порядок прямування, час і стан з’єднання TCP.

Щоб переглянути на комп’ютері під керуванням Windows всі встановлені з’єднання, необхідно відкрити термінал (cmd) та ввести команду netstat -an. У вікні командного рядка буде виведено список TCP та UDP коннектів, із зазначенням адреса та поточного стану між хостами.

Недоліки та переваги TCP/IP

Чому саме цей стек став таким популярним? По-перше, завдяки цілком загальнодоступній специфікації. Цей стек протоколів дозволяє реалізувати широкий спектр сервісних функцій від спільного використання принтерів і файлів до функцій віддаленого доступу до ОС. TCP/IP – це добре масштабований стек надійних протоколів, на базі якого можна легко налаштовувати роботу додатків і керувати маршрутизацією в глобальній або локальній мережі.

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

Висновок

Тепер ви знаєте основні принципи роботи TCP/IP, а також маєте уявлення про переваги та недоліки даної моделі. Якщо у вас залишилися питання, ви також можете почитати нашу статтю про маски підмережі, де ми докладніше розглянули це питання. Також ми рекомендуємо вам переглянути відео, в якому детально розібрано, як працюють мережі TCP/IP та веб-додатки.

Останні статті

GitHub на наступному тижні випустить Copilot Workplace — ШІ-помічника для розробників

GitHub анонсував Copilot Workspace, середовище розробки з використанням «агентів на базі Copilot». За задумкою, вони…

30.04.2024

Українців запрошують на перший безплатний глобальний ETHKyiv хакатон

21-23 червня українське Ethereum ком’юніті ETHKyiv проведе офлайн-хакатон, який об'єднає талановитих розробників, студентів та ентузіастів…

30.04.2024

SET University пропонує військовим та їх родинам безплатну магістратуру за 4 спеціальностями

Некомерційний навчальний заклад SET University запускає стипендійну програму за рядом напрямків. Українці та українки можуть…

29.04.2024

Від РЕБ до «плащів-невидимок»: за рік в рамках Brave1 створили 1 671 інноваційну розробку

За рік в рамках defense-tech кластеру Brave1 963 розробники створили 1 671 інноваційну розробку —…

29.04.2024

Треба «дешева» робоча сила: Google повністю звільнила команду Python в США

Корпорація Google звільнила всю команду Python в США. Про це стало відомо з публікації Social.coop…

29.04.2024

Українські школярі перемогли на міжнародному ШІ-хакатоні зі застосунком для вивчення жестової мови

Команда з ліцею КПІ PL of KPI Igor Sikorsky перемогла на міжнародному хакатоні зі штучного…

29.04.2024