Основной стек протоколов интернет. Стек (сетевые коммутаторы)

Интернет – глобальная система взаимосвязанных компьютерных, локальных и других сетей, которые взаимодействуют друг с другом посредством стека протоколов TCP/IP (рис. 1.).

Рисунок 1 – Обобщенная схема сети Интернет

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

Основные ячейки Интернета – локальные вычислительные сети (LAN – Local Area network). Если некоторая локальная сеть непосредственно подключена к Интернету, то каждая рабочая станция этой сети также может подключаться к нему. Существуют также компьютеры, самостоятельно подключенные к Интернету. Они называются хост-компьютерами (host – хозяин).

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

Важной особенностью сети Интернет является то, что она, объединяя различные сети, не создает при этом никакой иерархии - все компьютеры, подключенные к сети, равноправны.

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

Интернет не является коммерческой организацией и никому не принадлежит. Пользователи Интернета имеются практически во всех странах мира.

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

Организации, соединенные друг с другом самыми скоростными линиями связи, образуют базовую часть сети, или хребет Интернета Backbon [Бэкбон]. Если поставщик подключен непосредственно к хребту, то скорость передачи информации будет максимальной.

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

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

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

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

Что такое протокол? Как ранее было сказано, протокол - это правила взаимодействия. Например, дипломатический протокол предписывает, как поступать при встрече зарубежных гостей или при проведении приема. Так же сетевой протокол предписывает правила работы компьютерам, которые подключены к сети. Стандартные протоколы заставляют разные компьютеры "говорить на одном языке". Таким образом осуществляется возможность подключения к Интернету разнотипных компьютеров, работающих под управлением различных операционных систем.

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

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

Для понимания сути протокола TCP можно представить игру в шахматы по переписке, когда двое участников разыгрывают одновременно десяток партий. Каждый ход записывается на отдельной открытке с указанием номера партии и номера хода. В этом случае между двумя партнерами через один и тот же почтовый канал работает как бы десяток соединений (по одному на партию). Два компьютера, связанные между собой одним физическим соединением, могут точно так же поддерживать одновременно несколько TCP-соединений. Так, например, два промежуточных сетевых сервера могут одновременно по одной линии связи передавать друг другу в обе стороны множество ТСР-пакетов от многочисленных клиентов.

Когда мы работаем в Интернете, то по одной единственной телефонной линии можем одновременно принимать документы из Америки, Австралии и Европы. Пакеты каждого из документов поступают порознь, с разделением во времени, и по мере поступления собираются в разные документы.

Протокол IP. Теперь рассмотрим адресный протокол - IP (Internet Protocol). Его суть состоит в том, что у каждого участника Всемирной сети должен быть свой уникальный адрес (IP-адрес). Без этого нельзя говорить о точной доставке ТСР-пакетов на нужное рабочее место. Этот адрес выражается очень просто - четырьмя числами, например: 195.38.46.11. Структуру IP-адреса мы подробнее рассмотрим позже. Она организована так, что каждый компьютер, через который проходит какой-либо TCP-пакет, может по этим четырем числам определить, кому из ближайших «соседей» надо переслать пакет, чтобы он оказался «ближе» к получателю. В результате конечного числа перебросок ТСР-пакет достигает адресата.

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

Стек протоколов TCP/IP

Стек протоколов TCP/IP - набор сетевых протоколов передачи данных, используемых в сетях, включая сеть Интернет. Название TCP/IP происходит из двух наиважнейших протоколов семейства - Transmission Control Protocol (TCP) и Internet Protocol (IP), которые были разработаны и описаны первыми в данном стандарте.

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

Стек протоколов TCP/IP включает в себя четыре уровня:

  • прикладной уровень (application layer),
  • транспортный уровень (transport layer),
  • сетевой уровень (internet layer),
  • канальный уровень (link layer).

Протоколы этих уровней полностью реализуют функциональные возможности модели OSI (таблица 1). На стеке протоколов TCP/IP построено всё взаимодействие пользователей в IP-сетях. Стек является независимым от физической среды передачи данных.

Таблица 1 – Сравнение стека протоколов TCP/IP и эталонной модели OSI

Прикладной уровень

На прикладном уровне (Application layer) работает большинство сетевых приложений.

Эти программы имеют свои собственные протоколы обмена информацией, например, HTTP для WWW, FTP (передача файлов), SMTP (электронная почта), SSH (безопасное соединение с удалённой машиной), DNS (преобразование символьных имён в IP-адреса) и многие другие.

В массе своей эти протоколы работают поверх TCP или UDP и привязаны к определённому порту, например:

  • HTTP на TCP-порт 80 или 8080,
  • FTP на TCP-порт 20 (для передачи данных) и 21 (для управляющих команд),
  • запросы DNS на порт UDP (реже TCP) 53,

Транспортный уровень

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

Протоколы автоматической маршрутизации, логически представленные на этом уровне (поскольку работают поверх IP), на самом деле являются частью протоколов сетевого уровня; например OSPF (IP идентификатор 89).

TCP (IP идентификатор 6) - «гарантированный» транспортный механизм с предварительным установлением соединения, предоставляющий приложению надёжный поток данных, дающий уверенность в безошибочности получаемых данных, перезапрашивающий данные в случае потери и устраняющий дублирование данных. TCP позволяет регулировать нагрузку на сеть, а также уменьшать время ожидания данных при передаче на большие расстояния. Более того, TCP гарантирует, что полученные данные были отправлены точно в такой же последовательности. В этом его главное отличие от UDP.

UDP (IP идентификатор 17) протокол передачи датаграмм без установления соединения. Также его называют протоколом «ненадёжной» передачи, в смысле невозможности удостовериться в доставке сообщения адресату, а также возможного перемешивания пакетов. В приложениях, требующих гарантированной передачи данных, используется протокол TCP.

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

И TCP, и UDP используют для определения протокола верхнего уровня число, называемое портом.

Сетевой уровень

Сетевой уровень (Internet layer) изначально разработан для передачи данных из одной (под)сети в другую. С развитием концепции глобальной сети в уровень были внесены дополнительные возможности по передаче из любой сети в любую сеть, независимо от протоколов нижнего уровня, а также возможность запрашивать данные от удалённой стороны, например в протоколе ICMP (используется для передачи диагностической информации IP-соединения) и IGMP (используется для управления multicast-потоками).

ICMP и IGMP расположены над IP и должны попасть на следующий - транспортный - уровень, но функционально являются протоколами сетевого уровня, и поэтому их невозможно вписать в модель OSI.

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

Канальный уровень

Канальный уровень (Link layer) описывает, каким образом передаются пакеты данных через физический уровень, включая кодирование (то есть специальные последовательности бит, определяющих начало и конец пакета данных). Ethernet, например, в полях заголовка пакета содержит указание того, какой машине или машинам в сети предназначен этот пакет.

Примеры протоколов канального уровня - Ethernet, Wi-Fi, Frame Relay, Token Ring, ATM и др.

Канальный уровень иногда разделяют на 2 подуровня - LLC и MAC.

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

Инкапсуляция

Инкапсуляция – упаковка, или вложение, пакетов высокого уровня (возможно, разного протокола) в пакеты одного протокола (нижнего уровня), включая адрес.

Например, когда приложению требуется послать сообщение с помощью TCP, то производится следующая последовательность действий (рис. 2):

Рисунок 2 – Процесс инкапсуляции

  • в первую очередь, приложение заполняет специальную структуру данных, в которой указывает информацию о получателе (сетевой протокол, IP-адрес, порт TCP);
  • передаёт сообщение, его длину и структуру с информацией о получателе обработчику протокола TCP (транспортный уровень);
  • обработчик TCP формирует сегмент, в котором в качестве данных выступает сообщение, а в заголовках находится TCP-порт получателя (а также другие данные);
  • обработчик TCP передаёт сформированный сегмент обработчику IP (сетевой уровень);
  • обработчик IP рассматривает переданный TCP сегмент как данные и предваряет их своим заголовком (в котором, в частности, находится IP-адрес получателя, взятый из той же структуры данных приложения, и номер верхнего протокола;
  • полученный пакет обработчик IP передаёт на канальный уровень, который опять-таки рассматривает данный пакет как «сырые» данные;
  • обработчик канального уровня, аналогично предыдущим обработчикам, добавляет в начало свой заголовок (в котором так же указывается номер протокола верхнего уровня, в нашем случае это 0x0800(IP)) и, в большинстве случаев, добавляет конечную контрольную сумму, тем самым формируя кадр;
  • далее полученный кадр передаётся на физический уровень, который осуществляет преобразование битов в электрические или оптические сигналы и посылает их в среду передачи.

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

Похожая информация:



2015-2020 lektsii.org -

Сетевой стек протокола и TCP хакинг

Alexander Antipov

Сетевой стек протоколов, формирующий конвейеризацию и передачу данных между хостами, разработан для наилучшего взаимодействия между различными сетевыми уровнями. В этой статье мы попытаемся описать перемещение данных через расположенные в стеке уровни и попробуем внедрить модуль ядра Linux, помогающий нам захватывать и отображать данные, проходящие через уровень TCP. Ниже представлена программа, показывающая как установить новый элемент в файловой системе proc. И что наиболее важно, эта программа взламывает TCP протокол, отслеживает все данные, проходящие через tcp уровень, и отображает их в /proc/TCPdata.


Шямитх, перевод Алексей Антипов

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

Сетевой стек протоколов

Сетевые устройства формируют базовый уровень стека протоколов. Для связи с другими устройствами и приема-передачи трафика они используют протокол канала передачи данных (обычно Ethernet). Интерфейс, организуемый драйверами сетевых устройств, копирует пакеты с физической среды, выполняя некоторые проверки ошибок, после чего помещает пакеты в сетевой уровень. Интерфейсы вывода принимают пакеты из сетевого уровня, выполняют некоторые проверки ошибок и пересылают их в физическую среду. Мы будем обсуждать IP (протокол Интернет) являющийся стандартным протоколом сетевого уровня. Главными функциями IP являются маршрутизация, проверка входящих пакетов, определяющая направлены ли эти пакеты на данный хост или они нуждаются в дальнейшей пересылке. При этом, в случае необходимости, пакеты дефрагментируются и доставляются на транспортные протоколы. Такие протоколы имеют динамическую базу данных маршрутов для исходящих пакетов, адресуют и фрагментируют их перед посылкой на уровень связи.

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

Продвигаясь по транспортному уровню, мы можем найти INET уровень, формирующий промежуточный уровень между транспортным уровнем и сокетами приложений. С помощью INET уровня поддерживаются принадлежащие приложениям сокеты. В этом уровне осуществлены все специфические операции сокетов.

BSD - абстрактная структура данных, содержащая INET сокеты. Запрос приложения на подключение, чтение или запись через сокет, преобразовывается в INET операции с помощью BSD.

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

Сетевые функции Linux

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

socket(), bind(), listen(), connect(), accept(), send(), sendto(), recv(), recvfrom(), getsockopt(), and setsockopt().

Функция socket() используется для создания нового сокета. Все операции с различными протоколами происходят с помощью сокетов. Поскольку функция socket() возвращает значение дескриптора файла, то к нему могут обращаться стандартные операции работы с файлами типа read(), write().

Фунция bind() используется для связи созданного сокета с портом. Порт, наряду с IP адресом сетевого интерфейса, используется для уникальной идентификации сокета.

Функция listen() используется для программирования сервера. После создания сокета и связи его с портом функция listen() устанавливает сокет в состояние прослушивания. Это означает, что сокет ожидает подключения со стороны других хостов.

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

Необходимые структуры данных

Эта структура является основой для выполнения интерфейса BSD сокетов. Установка и инициализация этой структуры происходит при помощи системного вызова socket().

sk_buff:

Эта структура управляет индивидуальными пакетами соединений приходящими и отсылаемыми с хоста. При этом происходит буферизация ввода-вывода.

Эта структура управляет различными частями сокетов, зависящими от конкретной сети. Она необходима для TCP, UDP и RAW сокетов.

Эта структура содержит ряд операций, одинаковых для всех протоколов.

Sockaddr (sockaddr_in):

Такая структура необходима для поддержки различных форматов адресов.

Модули ядра Linux

Ядра Linux ядра состоят из модулей. Некоторые части ядра находятся в памяти постоянно (типа планировщика), а некоторые загружаются при необходимости. Например, файловая система VFAT для чтения дисков, загружается только при необходимости. Такая особенность linux ядра позволяет пространству ядра занимать немного места.

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

#define MODULE #include /* ... other required header files ... */ /* * ... module declarations and functions ... */ int init_module() { /* code kernel will call when installing module */ } void cleanup_module() { /* code kernel will call when removing module */}

Проект хакерского модуля для TCP протокола.

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

Используемые структуры данных

tcp_prot -> Содержит указатели на все осуществленные TCP операции

struct msghdr -> Содержит данные, посылаемые приложением, а также другими полями для идентификации адреса сокета

Struct msg_iov -> находится в msghdr, в нем содержатся указатели на данные

Перед началом кодирования давайте поймем значение файловой системы /proc. Файловая система proc называется так, из-за того что она находиться в каталоге /proc на большинстве Linux машин. Система является мощным инструментом, часто используемым приложениями. Это часть механизма при помощи которого ядро связывается с пространством пользователя и наоборот. Хотя она разработана как файловая система со структурой каталогов и inodes, в тоже время это фактически компонент зарегистрированных функций, обеспечивающих информацией важные переменные.

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

Теперь мы начнем кодирование

/* tcpdata.c. Ниже представлена программа, показывающая как установить новый элемент в файловой системе proc. И что наиболее важно, эта программа взламывает TCP протокол, отслеживает все данные, проходящие через tcp уровень, и отображает их в /proc/TCPdata. */ #define MODULE #define __KERNEL__ /*we are doing kernel work*/ #include #include #include /*for registering proc entry*/ #include #include #include #include #include #include #include static struct proc_dir_entry *test_entry; struct msghdr *msg_moniter; struct iovec *iovec_moniter; static char *tcp="Tcp monitered data"; int (*orginalSend)(struct sock *, struct msghdr *,int); /* show_tcp_stats This function is what the /proc FS will call when anything tries to read /proc/TCPstat you could see last 200 bytes move out of the sockets through tcp connections */ static int show_tcp_stats(char *buf,char **start,off_t offset,int len,int unused) { len += sprintf(buf+len,"%s\n",tcp); return len; } /* Это функция обработчика, захватывающая tcp sendmsg запросы */ int moniter_tcp(struct sock *sk, struct msghdr *msg,int len) { int size; char *temp; printk("I am dangerously monitoring your tcp data \n"); msg_moniter=(struct msghdr *)kmalloc(sizeof(struct msghdr),GFP_KERNEL); memcpy(msg_moniter,msg,sizeof(struct msghdr)); orginalSend(sk,msg,len); iovec_moniter=msg_moniter->msg_iov; size=sizeof(tcp); printk("sizeof of TCPdat is %d \n",size); (sizeiov_base):strcpy(tcp,"Tcp monitered data"); kfree(msg_moniter); return len; } /* init_module Данная функция устанавливает модуль; она просто регистрирует новый каталог в /proc и создает указатель. */ int init_module() { test_entry=create_proc_entry("TCPdata",S_IRUGO,NULL); test_entry->read_proc=show_tcp_stats; orginalSend=tcp_prot.sendmsg; /* printk("the address of send send mes is %x \n",tcp_prot.sendmsg); printk("the address of hack mes is %x \n",orginalSend); */ tcp_prot.sendmsg=moniter_tcp; /* printk("the address of send send mes after hacking %x \n",tcp_prot.sendmsg); printk("the address of send send mes after hacking %x \n",moniter_tcp); */ return 0; } /* init_module */ /* cleanup_module Данная функция удаляет модуль; Она удаляет регистрацию записи директории из /proc FS */ void cleanup_module() { /* put the pointer back to tcp"s orginal message sender */ tcp_prot.sendmsg=orginalSend; /* unregister the function from the proc FS */ remove_proc_entry("TCPdata",NULL); } /* cleanup_module */ MODULE_AUTHOR("shyamjithe.c.s "); /*macros*/ MODULE_DESCRIPTION("moniter tcp data"); MODULE_LICENSE("GPL");

Данная программа была протестирована на ядре 2.4, так что вы можете откомпилировать её используя:

Gcc -O6 -Wall -c tcpdata.c -I /usr/src/linux-2.4.20-8/include/ this will produce tcpdata.o now insmod tcpdata.o open some tcp applications cat /proc/TCPdata to remove the module use rmmod tcpdata Теперь для того, чтобы понять этот код, я дам некоторые пояснения. Вся программа - это только хитрый путь для использования функциональных указателей. Но необходимо быть внимательным при использовании ваших собственных обработчиков, потому что неправильное размещение функционального указателя может привести к зависанию системы. Как было сказано, это является минимальным путем для взлома TCP. Вы можете сформировать новый уровень над уровнем TCP подобно этому, который будет вмешиваться во все типы заданий, сделанных TCP. Тоже может быть проделано и с UDP.

Заключение

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

Стёком протоколов, или в просторечье TCP/IP называют сетевую архитектуру современных устройств, разработаных для пользования сетью. Stack - это стенка, в которой каждый составляющий кирпичик лежит поверх другого, зависит от него. Называть стек протоколов "стёком TCP/IP" начали благодаря двум основным протоколам, которые были реализованы - непосредственно IP, и TCP на его основе. Однако, они лишь основные и наиболее распостраненные. Если не сотни, то десятки других используются по сей день в разных целях.

Привычный нам веб (world wide web) основан на протоколе HTTP (hyper-text transfer protocol), который в своб очередь работает на основе TCP. Это классический пример использования стека протоколов. Есть еще протоколы электронной почты IMAP/POP и SMTP, протоколы удаленной оболочки SSH, удаленного рабочего стола RDP, баз данных MySQL, SSL/TLS, и тысячи других приложений со своими протоколами (..)

Чем же отличаются все эти протоколы? Все довольно просто. Помимо различных задач, поставленных при разработке (например, скорость, безопасность, устойчивость и прочие критерии), протоколы созданы с целью разграничения. Например, существуют протоколы прикладного уровня, разные у разных приложений: IRC, Skype, ICQ, Telegram и Jabber - несовместимы друг с другом. Они разработаны для выполнения конкретной задачи, и в данном случае возможность звонить по WhatsApp в ICQ просто не определена технически, так как приложения используют различный протокол. Но их протоколы основываются на одном и том же протоколе IP.

Протоколом можно называть запланированную, штатную последовательность действий в процессе, в котором существует несколько субъектов, в сети они называются пирами (напарниками), реже - клиент и сервер, подчеркивая особенности конкретного протокола. Простейший пример протокола для непонимающего до сих пор - рукопожатие при встрече. Оба знают как и когда, но вопрос зачем - это уже вопрос разработчиков, а не пользователей протокола. Кстати, рукопожатие (handshake) есть почти по всех протоколах, например, для обеспечения разграничения протоколов и защиты от "полетов не на том самолете".

Вот что такое TCP/IP на примере самых популярных протоколов. Здесь показана иерархия зависимости. Надо сказать что приложения лишь пользуются указанными протоколами, которые могут быть а могут и не быть реализованы внутри ОС.

Если уж совсем-совсем простым языком, это почтовая служба.

У каждого участника IP-совместимой сети есть свой собственный адрес, который выглядит примерно так: 162.123.058.209. Всего таких адресов для протокола IPv4 - 4,22 миллиарда.

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

TCP/IP - это набор протоколов.

Протокол - это правило. Например, когда с вами здороваются - вы здороваетесь в ответ (а не прощаетесь или нежелает счастья). Программисты скажут что мы используем протокол приветствия, например.

Что за TCP/IP (сейчас будет совсем просто, пусть коллег не бомбит):

Информация до вашего компа идет по проводам (радио или что еще - не суть важно). Если по проводам пустили ток - значит 1. Выключили - значит 0. Получается 10101010110000 и так далее. 8 ноликов и единиц (битов) это байт. Например 00001111. Это можно представить как число в двоичном виде. В десятичном виде байт - это число от 0 до 255. Эти числа сопоставляет с буквами. Например 0 это А, 1 это Б. (Это называется кодировка).

Ну так вот. Чтобы два компьютера могли эффективно передавать информацию по проводам - они должны подавать ток по каким то правилам - протоколам. Например, они должны условиться как часто можно менять ток, чтобы можно было отличить 0 от второго 0.

Это первый протокол.

Компьютерам как то понимать, что один из них перестал отдавать информацию (типа "я все сказал"). Для этого в начале последовательности данных 010100101 компьютеры могут слать несколько бит, длинну сообщения, которое они хотят передать. Например, первые 8 бит могут означать длину сообщения. То есть сначала в первых 8 битах передают закодированное число 100 и потом 100 байт. После этого принимающий компьютер будет ожидать следующие 8 бит и следующее сообщение.

Вот у нас еще один протокол, с его помощью можно передавать сообщения (компьютерные).

Компьютеров много, чтобы они могли понять кому надо отправить сообщение используют уникальные адреса компьютеров и протокол, позволяющий понять кому это сообщение адресовано. Например первые 8 бит будут означать адрес получателя, следующие 8 - длину сообщения. И потом сообщение. Мы только что засунули один протокол в другой. IP протокол отвечает за адресацию.

Связь не всегда надежная. Для надежной доставки сообщений (компьютерных) используют TCP. При выполнении протокола TCP компьютеры будут переспрашивает друг друга - правильное ли они сообщение получили. Есть еще UDP - это когда компы не переспрашивают то ли они получили. Зачем надо? Вот вы слушаете интернет радио. Если пару байт придет с ошибками - вы услышите например "пш" и дальше снова музыку. Не смертельно, да и не особо важно - для этого используют UDP. А вот если пару байт испортятся при загрузку сайта - вы получите хрень на мониторе и ничего не поймёте. Для сайтом используют TCP.

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

Еще есть http протокол. Первая строчка - адрес сайта, последующие строчки - текст который вы шлете на сайт. Все строчки http - это текст. Который засовывают в TCP сообщение, которое адресуют с помощью IP и так далее.

Ответить

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

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

Существует достаточное количество стеков протоколов, широко применяемых в сетях. Наиболее популярные стеки протоколов: OSI международной организации по стандартизации , TCP/IP , используемый в сети Internet и во многих сетях на основе операционной системы UNIX , IPX/SPX фирмы Novell, NetBIOS/SMB, разработанный фирмами Microsoft и IBM , DECnet корпорации Digital Equipment , SNA фирмы IBM и некоторые другие.

Энциклопедичный YouTube

    1 / 3

    Основы сетей передачи данных. Модель OSI и стек протоколов TCP IP. Основы Ethernet.

    Стек протоколов

    Информатика. Сетевые технологии: Стек протоколов OSI. Центр онлайн-обучения «Фоксфорд»

    Субтитры

Стандартные стеки коммуникационных протоколов

OSI

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

В отличие от других стеков протоколов, стек OSI полностью соответствует модели OSI, включая спецификации протоколов для всех семи уровней взаимодействия, определённых в этой модели:

  • На физическом и канальном уровнях стек OSI поддерживает протоколы Ethernet , Token ring , FDDI , а также протоколы LLC , X.25 и ISDN , то есть использует все разработанные вне стека популярные протоколы нижних уровней, как и большинство других стеков.
  • Сетевой уровень включает сравнительно редко используемые протоколы Connection-oriented Network Protocol (CONP) и Connectionless Network Protocol (CLNP). Как следует из названий, первый из них ориентирован на соединение (connection-oriented), второй - нет (connectionless). Более популярны протоколы маршрутизации стека OSI: ES-IS (End System - Intermediate System) между конечной и промежуточной системами и IS-IS (Intermediate System - Intermediate System) между промежуточными системами.
  • Транспортный уровень стека OSI в соответствии с функциями, определёнными для него в модели OSI, скрывает различия между сетевыми сервисами с установлением соединения и без установления соединения, так что пользователи получают требуемое качество обслуживания независимо от нижележащего сетевого уровня. Чтобы обеспечить это, транспортный уровень требует, чтобы пользователь задал нужное количество обслуживания.
  • Службы прикладного уровня обеспечивают передачу файлов, эмуляцию терминала , службу каталогов и почту . Из них наиболее популярными являются служба каталогов (стандарт X.500), электронная почта (стандарт X.400), протокол виртуального терминала (VTP), протокол передачи, доступа и управления файлами (FTAM), протокол пересылки и управления работами (JTM).

TCP/IP

Стек протоколов TCP/IP - набор сетевых протоколов, на которых базируется Интернет . Обычно в стеке TCP/IP верхние 3 уровня (прикладной , представления и сеансовый) модели OSI объединяют в один - прикладной. Поскольку в таком стеке не предусматривается унифицированный протокол передачи данных, функции по определению типа данных передаются приложению.

Уровни стека TCP/IP:

  1. Канальный уровень описывает каким образом передаются пакеты данных через физический уровень, включая кодирование (то есть специальные последовательности битов, определяющих начало и конец пакета данных).
  2. Сетевой уровень изначально разработан для передачи данных из одной (под)сети в другую. Примерами такого протокола является X.25 и IPC в сети ARPANET . С развитием концепции глобальной сети в уровень были внесены дополнительные возможности по передаче из любой сети в любую сеть, независимо от протоколов нижнего уровня, а также возможность запрашивать данные от удалённой стороны.
  3. Протоколы транспортного уровня могут решать проблему негарантированной доставки сообщений («дошло ли сообщение до адресата?»), а также гарантировать правильную последовательность прихода данных.
  4. На прикладном уровне работает большинство сетевых приложений. Эти программы имеют свои собственные протоколы обмена информацией, например, HTTP для WWW , FTP (передача файлов), SMTP (электронная почта), SSH (безопасное соединение с удалённой машиной), DNS (преобразование символьных имён в IP-адресa) и многие другие.

Существуют разногласия в том, как вписать модель TCP/IP в модель OSI, поскольку уровни в этих моделях не совпадают. Упрощённо интерпретацию стека TCP/IP можно представить так:

OSI TCP/IP
7. Прикладной HTTP, FTP, Telnet , SMTP, DNS (RIP , работающий поверх UDP , и BGP , работающий поверх TCP , являются частью сетевого уровня), LDAP Прикладной
6. Представления
5. Сеансовый
4. Транспортный TCP, UDP, RTP , NCP) и протокол объявления о сервисах Service Advertising Protocol (SAP).

NetBIOS/SMB

На физическом и канальном уровнях этого стека также задействованы уже получившие распространение протоколы, такие как Ethernet, Token Ring, FDDI, а на верхних уровнях - специфические протоколы NetBEUI (протокол расширенного пользовательского интерфейса NetBEUI - NetBIOS Extended User Interface) и SMB . NetBEUI разрабатывался как эффективный протокол, потребляющий немного ресурсов и предназначенный для сетей, насчитывающих не более 200 рабочих станций. Этот протокол содержит много полезных сетевых функций, которые можно отнести к транспортному и сеансовому уровням модели OSI, однако с его помощью невозможна маршрутизация пакетов. Это ограничивает применение протокола NetBEUI локальными сетями, не разделёнными на подсети, и делает невозможным его использование в составных сетях.

Протокол Server Message Block (SMB) поддерживает функции сеансового уровня, уровня представления и прикладного уровня. На основе SMB реализуется файловая служба. а также службы печати и передачи сообщений между приложениями.

При помощи сеансового уровня (Session Layer) организуются диалог между сторонами, фиксируется, какая из сторон является инициатором, какая из сторон активна и каким образом завершается диалог.

Представительный уровень (Presentation Layer) занимается формой предоставления информации нижележащим уровням, например, перекодировкой или шифрованием информации.

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

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

1.3. Стек протоколов Интернет

Интернет предназначена для транспортировки любого вида информации от источника к получателю. В транспортировке информации участвуют различные элементы сети (рис. 1.1) – оконечные устройства, коммутационные устройства и серверы. Группы узлов при помощи коммутационных устройств объединяются в локальную сеть, локальные сети соединяются между собой шлюзами (маршрутизаторами). Коммутационные устройства используют различные технологии: Ethernet, Token Ring, FDDI и другие.

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

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

Узлы, с точки зрения сети, представляют собой источники и получатели информации. Четыре нижних уровня в совокупности независимы от вида передаваемой информации. Каждое сетевое приложение, связывающееся с четвертым уровнем, идентифицируется своим уникальным номером порта . Значения портов занимают диапазон от 0 до 65535. В этом диапазоне номера портов 0-1023 выделены под общесетевые приложения (well-known ports), номера портов 1024-49151 используются разработчиками специализированного программного обеспечения, номера портов 49152-65535 – динамически закрепляются за сетевыми приложениями пользователей на время сеанса связи. Численные значения номеров портов стека приведено в .

Транспортный (четвертый) уровень поддерживает два режима установления связи

– с установлением соединения и без установления соединения. Каждый из режимов идентифицируется своим номером протокола (Protocol) . В стандартах Интернет принято кодирование в шестнадцатеричном коде. Первый режим используется модулем TCP, имеющий код протокола 6 (в шестнадцатеричном коде – 0x06) и используется для гарантированной транспортировки информации. Для этого каждый передаваемый пакет снабжается порядковым номером и должен быть подтвержден

______________________________________________________________________________

приемной стороной о его правильном приеме. Второй режим используется модулем UDP без гарантии доставки информации получателю (гарантия доставки обеспечивается приложением). Протокол UDP имеет код 17 (в шестнадцатеричном коде – 0x11).

Прикладной

Представительный

Сеансовый

DHCP (Port = 67/68)

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

Protocol = 0x0059

Protocol = 0x0002

Protocol = 0x0001

Protocol Type = 0x0806

Protocol Type = 0x0800

Канальный

Канальный

Канальный

Физический

Канальный

Кабель,Ethernetвитая пара, оптоволокно

Физический Кабель, витая пара, оптоволокно

Физический

Кабель, витая пара, оптоволокно

Физический

Кабель, радио, оптоволокно

Рис. 1.3. Стек базовых протоколов Интернет

______________________________________________________________________________

Сетевой (третий) уровень обеспечивает перемещение информации в виде пакетов между сетями (интерфейсами канального уровня), используя сетевой адрес. Семейство протоколов третьего уровня нижележащими уровнями идентифицируется типом протокола (ARP – типом 0x0806 или IP – типом 0x0800). Связка “протокол – сетевой адрес – номер порта ” называется сокетом (socket). Пара сокетов – на передаче и приеме – однозначно определяет установленное соединение. Адрес назначения каждого пакета, поступившего в модуль IP с канального уровня, анализируется, чтобы понять, куда пакет следует дальше направить: в собственное приложение или переместить на другой интерфейс для дальнейшей транспортировке по сети.

Второй (канальный) уровень осуществляет обработку пакетов в локальной сети, используя различные технологии: Ethernet, Token Ring, FDDI и другие. Первый уровень обеспечивает преобразование бинарных кодов в линейные коды, которые наиболее хорошо подходят к используемой транспортной среде (металлический кабель, оптоволоконная линия связи, радиоканал).

ВОПРОСЫ К РАЗДЕЛУ 1.3

1. Чем определяются средства сетевого уровня для обработки пакетов, поступающих с канального уровня?

Ответ. Типом протокола: 0x0806 – для ARP и 0x0800 – для IP.

2. Чем определяются средства транспортного уровня для обработки пакетов, поступающих с сетевого уровня?

Ответ. Номером протокола: 0x0006 – для TCP и 0x0011 – для UDP.

3. Чем определяется тип сетевого приложения для обработки дейтаграмм?

Ответ. Номером порта.

4. Приведите примеры номеров портов общесетевых приложений.

Ответ: Порт 80 – HTTP, порт 23 – TELNET, порт 53 – DNS.

1.4. Протоколы доступа в Интернет

Для доступа в Интернет используется семейство протоколов под общим названием PPP (Point-to-Point Protocol) , в число которых входят :

1. Протокол управления каналом (Link Control Protocol – LCP) для согласования параметров обмена пакетами на канальном уровне на участке хост – сервер сетевого доступа (в частности, для согласования размера пакета и типа протокола аутентификации).

2. Протокол аутентификации (Authentication Protocol) для установления легитимности пользователя (в частности, с использованием протокола Challenge Handshake Authentication Protocol – CHAP).

3. Протокол сетевого управления (IP Control Protocol – IPCP) для конфигурации параметров сетевого обмена (в частности, присвоения IP-адреса).

После этого начинается обмен информацией по протоколу IP.

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

HDLC .

Обмен кадрами с использованием процедуры схожей с HDLC (High-level Data Link Control Procedure) предполагает дуплексный обмен кадрами. Каждый переданный кадр должен быть подтвержден, при отсутствии подтверждения в течение тайм-аута передатчик повторяет передачу. Структура кадра приведена на рис. 1.4. Порядок передачи полей кадра – слева направо. Назначение полей кадра следующее.

Ю.Ф.Кожанов, Колбанев М.О ИНТЕРФЕЙСЫ И ПРОТОКОЛЫ СЕТЕЙ СЛЕДУЮЩЕГО ПОКОЛЕНИЯ

______________________________________________________________________________

Рис. 1.4. Структура полей HDLC-кадра

Каждый передаваемый кадр должен начинаться и заканчиваться комбинацией "Флаг" (Flag), имеющую битовую структуру вида 01111110 (0х7е). Одна и та же комбинация "Флаг" может быть использована как закрывающая для одного кадра и открывающая для следующего кадра. Комбинации "Флаг" должны выявляться приемной стороной с целью определения границ кадра. Для обеспечения кодонезависимого переноса информации необходимо исключить из последующих полей кадра все комбинации, совпадающие со служебными символами (например, комбинацией "Флаг").

В асинхронном режиме формирование всех полей кадра производится побайтно, каждый байт предваряется битом “старт” и заканчивается битом “стоп”.

В синхронном режиме используется либо байт-вставка, либо бит-вставка. В первом случае в полях кадра производится замена байтовых последовательностей 0x7e (“Флаг”) на 2-байтовые 0x7d и 0x5e, 0x7d на 0x7d и 0x5d, 0x03 на 0x7d и 0x23. Во втором случае после формирования всех полей кадра производится побитовый просмотр содержимого каждого кадра между комбинациями "Флаг" и вставляется бит "ноль" после каждых пяти смежных битов "единица". При декодировании кадра на приеме производится побитовый просмотр содержимого кадра между комбинациями "Флаг" и изъятии бита "ноль" после каждых пяти смежных битов "единица".

Адресное поле (Address) имеет постоянное значение 11111111 (0хff), а поле управления (Control) – значение 00000011 (0x03).

Поле протокола принимает значение 0хс021 для протокола LCP, 0хc223 – для протокола CHAP, 0х8021 – для IPCP и 0х0021 – для протокола IP.

Заполнение информационного поля зависит от типа протокола, но его длина не должна быть менее 4 байт.

Проверочная последовательность (Frame Check Sequence, FCS) на передаче формируется так, чтобы а)при умножении информации между флагами на Х16 и б)последующем делении по модулю 2 на образующий полином Х16 + Х12 + Х5 + 1 результат был бы равен постоянному числу 0хf0b8.

Процедура доступа абонента ТФОП в Интернет состоит из нескольких этапов. На первом этапе используется протокол LCP (Protocol = 0xc021), который

использует следующий формат (рис. 1.5).

Рис. 1.5. Формат кадра протокола LCP

Поле протокола принимает значение 0хс021. Каждое сообщение характеризуется своим кодом (Code), порядковым номером (ID), длиной (Length). В длину сообщения включаются все поля от Code до FCS. В одном сообщении может содержаться несколько параметров, каждый из которых характеризуется типом параметра (Type),

длиной (Length) и данными (Date).

(Configure-Nak), 04 – отказ от конфигурации (Configure-Reject), 05 – запрос на разъединение (Terminate-Request), 06 – подтверждение разъединения (Terminate-Ack).

Полная диаграмма взаимодействия оконечного устройства (Host), сервера сетевого доступа (NAS) и сервера аутентификации, авторизации и учета (ААА) при организации доступа абонента ТФОП в Интернет приведена на рис. 1.6.

______________________________________________________________________________

Из рисунка 1.6 видно, что вначале хост по протоколу LCP (Protocol = 0xc021) запросил соединение с параметрами MTU=300, PFC=7, но в результате их согласования с сервером доступа NAS (Code=02) установлены параметры MTU=200 (MTU – максимальный размер пакета в байтах), протокол аутентификации – CHAP (Auth.prot=c223). Обмен сжатыми заголовками (PFC=7) сервером доступа NAS был отвергнут (Code=04).

Type = 3, IP-address = a.b.c.d, Mask,

Protocol = 0xc021, code=04,

Protocol = 0xc021, code=01,

Type = 1, MTU=300

Protocol = 0xc021, code=03,

Type = 1, MTU=200

Protocol = 0xc021, code=01,

Type = 1, MTU=200

Protocol = 0xc021, code=02,

Type = 1, MTU=200

Protocol = 0xc021, code=01,

Protocol = 0xc021, code=02,

Type = 3, Auth.prot=0xc223, Algorithm=5

Protocol = 0xc223, code=01,

Protocol = 0xc223, code=02,

Prot=UDP, code=01,

Name=ABC, Value = W

Auth = 0, Attr = Name, Chall=V

Prot=UDP, code=02,

IP-address=a.b.c.d , Mask,

Prot=UDP, code=05, Data

Protocol = 0x0021, …

Protocol =0x0021, …

Protocol = 0xc021, code=05,

1994, DS] . Суть процедуры аутентификации состоит в том, что NAS посылает хосту некоторое случайное число V, а хост возвращает другое число W, вычисленное по заранее известной функции с использованием имени (Name) и пароля (Password), которые вводятся пользователем в компьютер из купленной Интернет карты у провайдера. Иначе говоря, W=f(V, Name, Password). Предполагается, что злоумышленник (хакер) в состоянии перехватить пересылаемые по сети значения V, Name и W, и ему известен алгоритм вычисления функции f. Существо формирования W состоит в том, что исходное элементы (биты) случайного числа V различным образом “перемешиваются” с неизвестным злоумышленнику элементами пароля Password. Затем полученный зашифрованный текст подвергается сжатию, например, суммированию байтов по модулю два. Такое преобразование называется дайджест-функцией (digest function) или хэш-функцией, а результат – дайджестом. Точная процедура формирования дайджеста определена алгоритмом MD5 и описана в . NAS по протоколу RADIUS запрашивает у сервера ААА истинное значение W, пересылая ему значения Name и Challenge=V. Сервер AAA на основании полученных от NAS значений V и Name и имеющегося у него в базе данных пароля Password по тому же алгоритму вычисляет W и отсылает его NAS. NAS сравнивает два значения W, полученных от хоста и от сервера AAA: если они совпадают, то хосту посылается сообщение об успешной аутентификации – Success (Code=03).

На третьем этапе происходит конфигурация сетевых параметров по протоколу IPCP (он же PPP IPC, Protocol=0x8021). Хост запрашивает у NAS сетевые IP-адреса и NAS выделяет из пула (диапазона) IP-адрес для хоста (IP-address=a.b.c.d), а

также сообщает IP-адрес DNS-сервера (IP-address=e.f.g.h). NAS по протоколу RADIUS

высылает серверу ААА извещение (Code=04) о начале тарификации и получает подтверждение (Code=05).

На 4-м этапе пользователь начинает сеанс связи с Интернет по протоколу IP (Protocol = 0x0021).

После завершения сеанса (этап 5) пользователь по протоколу LCP высылает NAS сообщение о разрушении соединения (Code=05), NAS подтверждает это сообщение (Code=06), отсылает серверу ААА извещение об окончании тарификации и получает от него подтверждение. Все устройства возвращаются в исходное состояние.

ВОПРОСЫ К РАЗДЕЛУ 1.4

1. Назовите состав и назначение семейства протоколов РРР.

Ответ. LCP – для согласования параметров обмена пакетами, CHAP – для установления легитимности пользователя, IPCP – для присвоения IP-адреса.

2. Обеспечивает ли протокол РРР обнаружение ошибок и упорядоченную доставку пакетов?

Ответ. Обнаружение ошибок – да, упорядоченную доставку – нет, это обеспечивает протокол TCP.

3. Где хранятся данные для аутентификации пользователя?

Ответ. В Интернет-карте и на сервере ААА.

4. Можно ли до установления соединения с сервером NAS заранее определить IPадрес пользователя?

Ответ: Нет. После успешной аутентификации NAS выдает свободный IP-адрес из диапазона отведенных адресов.

5. Какие способы используется для учета стоимости соединений в Интернет? Ответ: Обычно взимается абонентская плата или плата за объем принятой