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

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 и веб-приложения.

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

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023