Содержание
Сегодня мы разберемся в том, что такое TCP/IP, как функционирует этот стек протоколов, рассмотрим его преимущества и недостатки.
Начнем с самого простого. Вся современная инфраструктура опутана бесконечным числом сетей, объединяющих сервера, пользовательские лэптопы, маршрутизаторы, смартфоны, десктопы, камеры слежения и прочее оборудование. Все эти устройства обмениваются между собой данными по сети. Для того, чтобы одно устройство могло передать информацию другому устройству, они должны действовать сообща. Два устройства обязаны каким-то образом понимать, как устанавливать между собой сессию, какие параметры передачи данных использовать, как определять и что делать в случае возникновения ошибок, как завершать передачу и т.д. Иными словами — необходим был некоторый алгоритм, определенный набор правил. Этот набор правил и называется протокол.
В далеком 1969 году в США подразделение Министерства обороны, которое называлось DARPA, разработала прототип современного интернета — сеть под названием Arpanet. Сначала это были объединенные четыре вычислительных модуля, затем еще 11. Она постепенно росла и развивалась, включая уже терминалы в Великобритании, а также Норвегии.
Поскольку вариантов компьютерных сетей может быть бесконечное число, во избежание неразберихи были разработаны сетевые модели, основной из которых стала OSI (The Open Systems Interconnection model). Она определяла основные правила и требования к сетевым протоколам. Большинство алгоритмов связи, применяемых сегодня, основаны на стандарте OSI, определяющим уровни взаимодействия систем. Модель предусматривает семь вариантов таких взаимодействий:
Группа протоколов по определенным уровням называется стеком протоколов. Современный Интернет построен на стеке протоколов TCP/IP. Как видно из названия стека – TCP/IP состоит из двух частей, протокола TCP и протокола IP. Забегая наперед, скажем, что IP-протокол решает вопросы с адресацией, в то время как TCP – реализует трансфер данных и следит за тем, чтобы клиент точно получил свои байты. Данный стек использует четыре уровня из перечисленных выше:
Прикладной уровень отвечает за работоспособность всевозможных сетевых приложений. Такие программы могут применять свои персональные протоколы обмена данными. Это могут быть браузеры, функционирующие через 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 (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.
Завершается сессия между двумя хостами в три шага:
Сфера применения UDP ограничивается приложениями с потоковыми данными – IPTV, Voice over IP, онлайн-играх и т.д.
Для контроля сетевых подключений можно использовать набор команд, введенных в терминале. Например, с помощью команды iptrace (UNIX) выполняется трассировка (анализ, отслеживание) пакетов на уровне сетевого интерфейса. Вызов данных о трассировке данных в шестнадцатеричном и текстовом форматах осуществляется при помощи команды ipreport, а команда trpt выполнит трассировку пакетов TCP на транспортном уровне, показав их порядок следования, время и состояние TCP.
Чтобы просмотреть на компьютере под управлением Windows все установленные соединения, необходимо открыть терминал (cmd) и ввести команду netstat -an. В окне командной строки будет выведен список TCP и UDP коннектов, с указанием адресов и текущего состояния между хостами.
Почему именно этот стек стал таким популярным? Во-первых, благодаря полностью общедоступной спецификации. Этот стек протоколов позволяет реализовать широкий спектр сервисных функций – от совместного использования принтеров и файлов до функций удаленного доступа к ОС. TCP/IP это хорошо масштабируемый стек надежных протоколов, на базе которого можно легко настраивать работу приложений и управлять маршрутизацией в глобальной или локальных сетях.
Однако, у данного стека есть и минусы. Из недостатков TCP/IP можно выделить высокую нагрузку на операционную систему при большом количестве соединений. Кроме того, рассматриваемый стек протоколов предполагает большое время на установление коннекта, что очень заметно при подключении нескольких TCP-соединений. Также для TCP/IP характерна долгая реакция на потерю пакета.
Теперь вы знаете основные принципы работы TCP/IP, а также имеете представление о достоинствах и недостатках данной модели. Если у вас остались вопросы, вы можете также почитать нашу статью о масках подсети, где мы подробнее рассмотрели данный вопрос. Также мы рекомендуем вам посмотреть видео, в котором подробно разобрано как работают сети TCP/IP и веб-приложения.
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…