Стек протоколов TCP/IP: основа современного интернета

Стек протоколов TCP/IP: основа современного интернета

Когда сетевые устройства обмениваются данными друг с другом, они должны следовать набору правил — эти правила известны как протоколы. Интернет использует множество различных протоколов; без этих правил различные устройства не могли бы взаимодействовать друг с другом.

Сетевые протоколы организованы как последовательность слоев, через которые проходят данные. Эти слои можно представить как находящиеся друг на друге, образуя стек. Это называется стеком протоколов.

TCP/IP стек сетевых протоколов — это стек, который используется в Интернете. Он разделен на четыре слоя, которые располагаются один над другим:

  • Прикладной слой
  • Транспортный слой
  • Интернет-слой (иногда называемый сетевым слоем)
  • Канальный слой (иногда называемый уровнем передачи данных)

Протоколы работают вместе таким образом, чтобы производитель или разработчик программного обеспечения могли сосредоточиться на своем продукте. Пока они соблюдают необходимые стандарты и внедряют соответствующие протоколы, компоненты смогут взаимодействовать с другими слоями для эффективной связи.

Взаимодействие технологий в интернете

Связь через интернет включает использование множества различных технологий. Для каждого конкретного сообщения выбирается подмножество технологий, которые обеспечивают связь между двумя приложениями, работающими на разных устройствах. Эти устройства могут находиться рядом друг с другом, соединенные проводом, или на противоположных сторонах мира. Устройства могут быть подключены через множество различных технологий: например, Wi-Fi, Ethernet, ADSL, оптоволоконный кабель, UHF и спутник.

Устройства в сети обмениваются информацией о своих соединениях, чтобы находить наилучшие пути между сетями. Данные, которые нужно отправить, представляются в сети, и устройства отправляют их по наилучшему пути к месту назначения. Сетевые устройства должны работать вместе, чтобы транспортировать данные через весь путь связи. В локальной сети большая часть трафика обрабатывается коммутаторами. В интернете трафик обрабатывается маршрутизаторами.

Выбранный путь должен адаптироваться в реальном времени к изменяющимся ситуациям, таким как перегруженные или поврежденные соединения. Кроме того, устройства должны справляться с возможностью потери данных в сети или их прибытия в другом порядке, чем они были отправлены. Данные могут потребовать шифрования и дешифрования на различных участках пути или на всем его протяжении. Наконец, вся система должна быть способна использовать широкий спектр различных носителей для каждого сегмента пути передачи и легко адаптироваться к новым технологиям по мере их разработки и интеграции в инфраструктуру интернета.

Протоколы и их задачи

Для того чтобы это произошло, каждая из технологий использует набор правил, называемых «протоколами», которые определяют «язык», который должен использоваться, и порядок, в котором определенные действия должны выполняться. Каждый протокол разработан для конкретной задачи, и все протоколы должны работать вместе, чтобы обеспечить бесперебойный путь, по которому данные могут быть переданы. Это разделение позволило разработать новые технологии и сервисы, которые вписываются в существующую модель и поэтому работают вместе с существующими протоколами. Примером является постоянная миграция сотовых данных через 2G, 3G, 4G и теперь 5G. Новые технологии, такие как Bluetooth 4G и 5G, а также новые стандарты Wi-Fi, теперь предлагают все более высокие скорости передачи данных.

Реализация протоколов в устройстве

В устройстве, которое хочет общаться по сети, должны быть реализованы соответствующие протоколы. Эти протоколы будут использоваться для форматирования данных из приложения, которое нужно отправить, и их преобразования в биты, закодированные как подходящий оптический, электрический или радиочастотный сигнал. Этот сигнал затем передается на «среду» (любая проводная или беспроводная технология, по которой могут передаваться данные). На принимающей стороне должно произойти обратное преобразование, чтобы биты были преобразованы обратно в данные и переданы принимающему приложению.

Этот сложный набор требований достигается путем организации процесса в серии функциональных слоев и обеспечения того, чтобы данные передавались от слоя к слою для обработки, прежде чем быть отправленными на среду для передачи.

Эти последовательные слои можно представить как набор процессов, расположенных друг над другом, образуя стек. Концептуально данные, проходящие вниз по стеку, когда они отправляются из приложения на устройстве, направляются на среду для передачи. На принимающей стороне данные проходят от среды передачи вверх по стеку, чтобы быть доставленными в приложение на принимающем устройстве.

Четырехслойная модель TCP/IP

Прикладной слой

Прикладной слой — это тот слой, на котором данные отправляются из программного обеспечения в стек протоколов. На другом конце связи прикладной слой передает данные принимающему приложению.

Этот слой использует протоколы, специфичные для типов используемых приложений. Например, веб-браузер использует HTTP или HTTPS (HTTPS — это зашифрованная версия HTTP, используемая для безопасных веб-транзакций). Почтовый клиент использует SMTP в сочетании с IMAP или POP3.

Прикладной слой добавляет соответствующий заголовок к данным в соответствии с используемым протоколом, прежде чем они будут отправлены на следующий слой.

Транспортный слой

Транспортный слой разбивает данные приложения на пакеты данных. Присваиваются порядковые номера, и добавляются номера портов источника и назначения в заголовок.

На этом уровне есть два варианта:

  • Данные могут быть отправлены с использованием протокола TCP. Это надежный транспортный протокол, если принимающая сторона обнаружит, что некоторые данные отсутствуют, она запросит их повторную отправку.
  • Данные могут быть отправлены с использованием протокола UDP. Это ненадежный транспортный протокол; принимающая сторона может просто отметить, что некоторые данные отсутствуют, и передать эту информацию на прикладной уровень.

Интернет-слой

Интернет-слой подготавливает данные для интернета. На этом этапе в заголовок добавляются IP-адреса источника и назначения. Получившиеся данные называются IP-пакетом.

Для того чтобы каждый IP-пакет достиг своего назначения, маршрутизаторы используют адрес назначения, который хранится в заголовке IP-пакета, для выбора маршрута через интернет.

Канальный слой

Канальный слой отвечает за транспортировку IP-пакетов через каждый из отдельных каналов, которые составляют путь между двумя компьютерами. Эти каналы могут быть комбинацией Ethernet, Wi-Fi, 4G, спутника или волокна.

IP-пакет будет перемещаться через множество различных физических и/или беспроводных каналов между первоначальным источником и конечным пунктом назначения. Каждый тип физического канала использует различную технологию и имеет свой собственный протокол. Каждый из протоколов добавляет свои заголовки к IP-пакетам, создавая кадры. Эти кадры используются для переноса IP-пакетов через конкретный канал.

Ethernet — это распространенный протокол канального уровня, используемый в локальных сетях. Он регулирует способ передачи пакетов данных по общему каналу.

Канальный уровень на одном конце канала общается с канальным уровнем на другом конце, преобразуя кадр в электрический, электромагнитный (беспроводной) или световой сигнал, а затем отправляя его на среду.

Модель OSI

На ранних этапах разработки интернета правительство США и Министерство обороны разделили необходимую функциональность на семь слоев. Эта структура до сих пор существует в виде модели OSI с семью уровнями. Однако с ростом интернета интернет-сообщество определило новые операционные стандарты и, с целью упрощения, некоторые слои были объединены, и была утверждена более простая модель с четырьмя слоями. Название модели происходит от двух наиболее часто используемых протоколов — TCP и IP: модель TCP/IP или стек TCP/IP.

При отправке данных каждый из слоев в модели TCP/IP принимает данные от вышележащего слоя (или от программы в случае прикладного слоя) и добавляет дополнительную информацию к данным, необходимую для выполнения задач этого слоя. В некоторых случаях исходные данные могут быть обработаны перед добавлением дополнительной информации, например, они могут быть зашифрованы. Затем слой передает эти данные на нижележащий слой (или на среду передачи в случае канального слоя).

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

На принимающем конце процесс происходит в обратном порядке: каждый слой принимает данные от нижележащего слоя, проверяет и удаляет дополнительную информацию, добавленную соответствующим слоем на отправляющей стороне, прежде чем передать их на вышележащий слой.

Данные передаются от процесса на отправляющем компьютере к процессу на принимающем компьютере с использованием услуг нижележащего слоя. Только последний слой действительно передает данные на среду передачи (например, кабель).

Связь между четырьмя слоями достигается путем передачи данных вниз по слоям, через среду передачи и обратно вверх по слоям на другой стороне.

Этот метод модульной коммуникации называется инкапсуляцией. Его можно уподобить тому, как данные от вышележащего слоя помещаются в конверт, на котором пишется дополнительная информация, а затем передается на нижележащий слой. На принимающем конце слой получает конверт от нижележащего слоя, проверяет данные на конверте, чтобы решить, что делать с его содержимым, затем открывает конверт и передает содержащиеся в нем данные на следующий уровень. Обратный процесс называется декомпиляцией.

Alt text
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.

Ищем баги вместе! Но не те, что в продакшене...

Разбираем кейсы, делимся опытом, учимся на чужих ошибках

Зафиксируйте уязвимость своих знаний — подпишитесь!

Николай Нечепуренков

Я – ваш цифровой телохранитель и гид по джунглям интернета. Устал видеть, как хорошие люди попадаются на уловки кибермошенников, поэтому решил действовать. Здесь я делюсь своими секретами безопасности без занудства и сложных терминов. Неважно, считаешь ты себя гуру технологий или только учишься включать компьютер – у меня найдутся советы для каждого. Моя миссия? Сделать цифровой мир безопаснее, а тебя – увереннее в сети.