При помощи сеансового уровня (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. Какие способы используется для учета стоимости соединений в Интернет? Ответ: Обычно взимается абонентская плата или плата за объем принятой

Сетевой стек протокола и 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, IPX/SPX, NetBIOS/SMB, Novell NetWare, DECnet, XNS, SNA и OSI. Все эти стеки, кроме SNA, на нижних уровнях - физическом и канальном - используют одни и те же хорошо стандартизованные протоколы Ethemet, Token Ring, FDDI и некоторые другие, которые позволяют использовать во всех сетях одну и ту же аппаратуру. Зато на верхних уровнях все стеки работают по своим собственным протоколам. Эти протоколы часто не соответствуют рекомендуемому моделью OSI разбиению на уровни. В частности, функции сеансового и представительного уровня, как правило, объединены с прикладным уровнем. Такое несоответствие связано с тем, что модель OSI появилась как результат обобщения уже существующих и реально используемых стеков, а не наоборот.

Все протоколы, входящие в стек, разработаны одним производителем, то есть они способны работать максимально быстро и эффективно.

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

Вне зависимости от того, какое количество сетевых адаптеров установлено в компьютере, привязка может осуществляться как «один к нескольким», так и «несколько к одному», то есть один стек протоколов можно привязать сразу к нескольким адаптерам или несколько стеков к одному адаптеру.

NetWare - сетевая операционная система и набор сетевых протоколов, которые используются в этой системе для взаимодействия с компьютерами-клиентами, подключёнными к сети. В основе сетевых протоколов системы лежит стек протоколов XNS. В настоящее время NetWare поддерживает протоколы TCP/IP и IPX/SPX. Novell NetWare была популярна в 80-е и 90-е года по причине большей эффективности в сравнении с операционными системами общего назначения. Ныне это устаревшая технология.

Стек протоколов XNS (Xerox Network Services Internet Transport Protocol) разработан компанией Xerox для передачи данных по сетям Ethernet. Содержит 5 уровней.

Уровень 1 - среда передачи - реализует функции физического и канального уровня в OSI-модели:

* управляет обменом данными между устройством и сетью;

* маршрутизирует данные между устройствами одной сети.

Уровень 2 - межсетевой - соответствует сетевому уровню в OSI- модели:

* управляет обменом данными между устройствами, находящимися в разных сетях (обеспечивает дейтаграммный сервис в терминах IEEE- модели) ;

* описывает способ прохождения данных через сеть.

Уровень 3 - транспортный - соответствует транспортному уровню в OSI-модели:

* обеспечивает связь "end-to-end" между источником и приемником данных.

Уровень 4 - контрольный - соответствует сессионному и представительному уровню в OSI-модели:

* управляет представлением данных;

* управляет контролем над ресурсами устройств.

Уровень 5 - прикладной - соответствует высшим уровням в OSI- модели:

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

Стек протоколов TCP/IP (Transmission Control Protocol/Internet Protocol) на сегодня является наиболее распространенным и функциональным. Он работает в локальных сетях любых масштабов. Данный стек является основным стеком в глобальной сети Интернет. Поддержка стека была реализована в компьютерах c операционной системой UNIX. В результате популярность протокола TCP/IP возросла. В стек протоколов TCP/IP входит достаточно много протоколов, работающих на различных уровнях, но свое название он получил благодаря двум протоколам - TCP и IP.

TCP (Transmission Control Protocol) - транспортный протокол, предназначенный для управлением передачей данных в сетях, использующих стек протоколов TCP/ IP. IP (Internet Protocol) - протокол сетевого уровня, предназначенный для доставки данных в составной сети с использованием одного из транспортных протоколов, например TCP или UDP.

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

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

Недостатком TCP/IP-протокола является сложность администрирования сети. Так, для нормального функционирования сети требуется наличие дополнительных серверов, например DNS, DHCP и т. д., поддержание работы которых и занимает большую часть времени системного администратора. Лимончелли Т., Хоган К., Чейлап С. - Сестемное и сетевое администрирование. 2-е изд. 2009год. 944с

Стек протоколов IPX/SPX (Internetwork Packet Exchange/Sequenced Packet Exchange) является разработкой и собственностью компании Novell. Он был разработан для нужд операционной системы Novell NetWare, которая еще до недавнего времени занимала одну из лидирующих позиций среди серверных операционных систем.

Протоколы IPX и SPX работают на сетевом и транспортном уровнях модели ISO/ OSI соответственно, поэтому отлично дополняют друг друга.

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

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

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

Достаточно популярный стек протоколов, разработкой которого занимались компании IBM и Microsoft, соответственно, ориентированный на использование в продуктах этих компаний. Как и у TCP/IP, на физическом и канальном уровне стека NetBIOS/SMB работают стандартные протоколы, такие как Ethernet, Token Ring и другие, что делает возможным его использование в паре с любым активным сетевым оборудованием. На верхних же уровнях работают протоколы NetBIOS (Network Basic Input/Output System) и SMB (Server Message Block).

Протокол NetBIOS был разработан в середине 80-х годов прошлого века, но вскоре был заменен на более функциональный протокол NetBEUI (NetBIOS Extended User Interface), позволяющий организовать очень эффективный обмен информацией в сетях, состоящих не более чем из 200 компьютеров.

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

Главные плюсы протокола NetBEUI - скорость работы и очень малые требования к ресурсам. Если требуется организовать быстрый обмен данными в небольшой сети, состоящей из одного сегмента, лучшего протокола для этого не найти. Кроме того, для доставки сообщений установленное соединение не является обязательным требованием: в случае отсутствия соединения протокол использует датаграммный метод, когда сообщение снабжается адресом получателя и отправителя и «пускается в путь», переходя от одного компьютера к другому.

Однако NetBEUI обладает и существенным недостатком: он полностью лишен понятия о маршрутизации пакетов, поэтому его использование в сложных составных сетях не имеет смысла. Пятибратов А.П.,Гудыно Л.П.,Кириченко А.А.Вычислительные машины, сети и телекоммуникационные системы Москва 2009год. 292с

Что касается протокола SMB (Server Message Block), то с его помощью организуется работа сети на трех самых высоких уровнях - сеансовом, уровне представления и прикладном уровне. Именно при его использовании становится возможным доступ к файлам, принтерам и другим ресурсам сети. Данный протокол несколько раз был усовершенствован (вышло три его версии), что позволило применять его даже в таких современных операционных системах, как Microsoft Vista и Windows 7. Протокол SMB универсален и может работать в паре практически с любым транспортным протоколом, например TCP/IP и SPX.

Стек протоколов DECnet (Digital Equipment Corporation net) содержит 7 уровней. Несмотря на разницу в терминологии, уровни DECnet очень похожи на уровни OSI-модели. DECnet реализует концепцию сетевой архитектуры DNA (Digital Network Architecture), разработанную фирмой DEC, согласно которой разнородные вычислительные системы (ЭВМ разных классов), функционирующие под управлением различных операционных систем, могут быть объединены в территориально-распределенные информационно-вычислительные сети.

Протокол SNA (System Network Architecture) компании IBM предназначен для удаленной связи с большими компьютерами и содержит 7 уровней. SNA основана на концепции главной (хост) -машины и обеспечивает доступ удаленных терминалов к мейнфреймам IBM. Основной отличительной чертой SNA является наличие возможности доступа каждого терминала к любой прикладной программе главной ЭВМ. Системная сетевая архитектура реализована на базе виртуального телекоммуникационного метода доступа (Virtual Telecommunication Access Method - VTAM) в главной ЭВМ. VTAM управляет всеми линиями связи и терминалами, причем каждый терминал имеет доступ ко всем прикладным программам.

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

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

Существует достаточное количество стеков протоколов, широко применяемых в сетях. Наиболее популярные стеки протоколов: 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 реализуется файловая служба. а также службы печати и передачи сообщений между приложениями.

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

TCP/IP

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

Стек протоколов сети TCP/IP имеет 4 уровня:

  1. Канальный (Link).
  2. Сетевой (Internet).
  3. Транспортный (Transport).
  4. Прикладной (Application).

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

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

  • HTTP;
  • SMTP;

Каждый протокол определяет собственный порядок и принципы работы с данными.

HTTP (HyperText Transfer Protocol) предназначен для передачи данных. По нему отправляются, например, документы в формате HTML, которые служат основой веб-страницы. Упрощенно схема работы представляется как «клиент - сервер». Клиент отправляет запрос, сервер его принимает, должным образом обрабатывает и возвращает конечный результат.

Служит стандартом передачи файлов в сети. Клиент посылает запрос на некий файл, сервер ищет этот файл в своей базе и при успешном обнаружении отправляет его как ответ.

Используется для передачи электронной почты. SMTP-операция включает в себя три последовательных шага:

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

Заголовок (Header)

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

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

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

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

Протоколы передачи данных:

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

UDP (User Datagram Protocol) - второй по популярности протокол. Он также отвечает за передачу данных. Отличительное свойство кроется в его простоте. Пакеты просто отправляются, не создавая особенной связи.

TCP или UDP?

У каждого из этих протоколов есть своя область применения. Она логически обусловлена особенностями работы.

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

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

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

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

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

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

IP-адрес (Internet Protocol address) - логический адрес устройства. Содержит информацию о местоположении устройства в сети. Пример записи: .

MAC-адрес (Media Access Control address) - физический адрес устройства. Используется для идентификации. Присваивается сетевому оборудованию на этапе изготовления. Представлен как шестибайтный номер. Например: .

Сетевой уровень отвечает за:

  • Определение маршрутов доставки.
  • Передачу пакетов между сетями.
  • Присвоение уникальных адресов.

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

Самый популярный протокол этого уровня - IP.

IP (Internet Protocol) - интернет-протокол, предназначенный для адресации в сети. Используется для построения маршрутов, по которым происходит обмен пакетами. Не обладает никакими средствами проверки и подтверждения целостности. Для обеспечения гарантий доставки используется TCP, который использует IP в качестве транспортного протокола. Понимание принципов этой транзакции во многом объясняет основу того, как работает стек протоколов TCP/IP.

Виды IP-адресов

В сетях используются два вида IP-адресов:

  1. Публичные.
  2. Приватные.

Публичные (Public) используются в Интернете. Главное правило - абсолютная уникальность. Пример их использования - маршрутизаторы, каждый из которых имеет свой IP-адрес для взаимодействия с сетью Интернет. Такой адрес называется публичным.

Приватные (Private) не используются в Интернете. В глобальной сети такие адреса не являются уникальными. Пример - локальная сеть. Каждому устройству присваивается уникальный в пределах данной сети IP-адрес.

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

IPv4

Самая распространенная версия интернет-протокола. Предшествует IPv6. Формат записи - четыре восьмибитных числа, разделенные точками. Через знак дроби указывается маска подсети. Длина адреса - 32 бита. В подавляющем большинстве случаев, когда речь идет об IP-адресе, имеется в виду именно IPv4.

Формат записи: .

IPv6

Эта версия предназначается для решения проблем предыдущей версией. Длина адреса - 128 бит.

Основная проблема, которую решает IPv6 - это исчерпание адресов IPv4. Предпосылки начали проявляться уже в начале 80-х годов. Несмотря на то, что эта проблема вступила в острую стадию уже в 2007-2009 годах, внедрение IPv6 очень медленно «набирает обороты».

Главное преимущество IPv6 - более быстрое интернет-соединение. Это происходит из-за того, что для этой версии протокола не требуется трансляции адресов. Выполняется простая маршрутизация. Это является менее затратным и, следовательно, доступ к интернет-ресурсам предоставляется быстрее, чем в IPv4.

Пример записи: .

Существует три типа IPv6-адресов:

  1. Unicast.
  2. Anycast.
  3. Multicast.

Unicast - тип одноадресных IPv6. При отправке пакет достигает только интерфейса, расположенного на соответствующем адресе.

Anycast относится к групповым IPv6-адресам. Отправленный пакет попадет в ближайший сетевой интерфейс. Используется только маршрутизаторами.

Multicast являются многоадресными. Это значит, что отправленный пакет достигнет всех интерфейсов, находящихся группе мультивещания. В отличие от broadcast, который является «вещанием для всех», multicast вещает лишь определенной группе.

Маска подсети

Маска подсети выявляет из IP-адреса подсеть и номер хоста.

Например, IP-адрес имеет маску . В таком случае формат записи будет выглядеть так . Число «24» - это количество бит в маске. Восемь бит равняется одному октету, который также может называться байтом.

Если подробнее, то маску подсети можно представить в двоичной системе счисления таким образом: . В ней имеется четыре октета, и запись состоит из «1» и «0». Если сложить количество единиц, то получим в сумме «24». К счастью, считать по единице не обязательно, ведь в одном октете - 8 значений. Видим, что три из них заполнены единицами, складываем и получаем «24».

Если говорить именно о маске подсети, то в двоичном представлении она имеет в одном октете либо единицы, либо нули. При этом последовательность такова, что сначала идут байты с единицами, а только потом с нулями.

Рассмотрим небольшой пример. Есть IP-адрес и маска подсети . Считаем и записываем: . Теперь сопоставляем маску с IP-адресом. Те октеты маски, в которых все значения равны единице (255) оставляют соответствующие им октеты в IP-адресе без изменения. Если же в значении нули (0), то октеты в IP-адресе также становятся нулями. Таким образом, в значении адреса подсети получаем .

Подсеть и хост

Подсеть отвечает за логическое разделение. По сути, это устройства, использующие одну локальную сеть. Определяется диапазоном IP-адресов.

Хост - это адрес сетевого интерфейса (сетевой карты). Определяется из IP-адреса с помощью маски. Например: . Так как первые три октета - подсеть, то остается . Это и есть номер хоста.

Диапазон адресов хоста - от 0 до 255. Хост под номером «0» является, собственно, адресом самой подсети. А хост под номером «255» является широковещательным.

Адресация

Для адресации в стеке протоколов TCP/IP используются три типа адресов:

  1. Локальные.
  2. Сетевые.
  3. Доменные имена.

Локальными называются MAC-адреса. Они используются для адресации в таких технологиях локальной сети как, например, Ethernet. В контексте TCP/IP слово «локальные» означает, что они действуют лишь в пределах подсети.

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

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

Домен первого уровня представляет конкретную информацию. Общие (.org, .net) не ограничены какими-либо строгими границами. Обратная ситуация - с локальными (.us, .ru). Они, как правило, привязаны территориально.

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

Например, "www.test.quiz.sg" - корректное доменное имя, где «sg» - локальный домен первого (верхнего) уровня, «quiz.sg» - домен второго уровня, «test.quiz.sg» - домен третьего уровня. Доменные имена также могут называться DNS-именами.

Устанавливает соответствие между доменными именами и публичным IP-адресом. При наборе доменного имени в строке браузера DNS обнаружит соответствующий IP-адрес и сообщит устройству. Устройство обработает этот и вернет его в виде веб-страницы.

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

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

Самые распространенные протоколы:

  1. Ethernet.
  2. WLAN.

Ethernet - наиболее распространенная технология проводных локальных сетей.

WLAN - локальная сеть на основе беспроводных технологий. Взаимодействие устройств происходит без физических кабельных соединений. Пример самого распространенного метода - Wi-Fi.

Настройка TCP/IP для использования статического IPv4-адреса

Статический IPv4-адрес назначается напрямую в настройках устройства или автоматически при подключении к сети и является постоянным.

Для настройки стека протоколов TCP/IP на использование постоянного IPv4-адреса необходимо ввести в консоль команду ipconfig/all и найти следующие данные.

Настройка TCP/IP для использования динамического IPv4-адреса

Динамический IPv4-адрес используется какое-то время, сдается в аренду, после чего меняется. Присваивается устройству автоматически при подключении к сети.

Чтобы настроить стек протоколов TCP/IP на использование непостоянного IP-адреса необходимо зайти в свойства нужного соединения, открыть свойства IPv4 и поставить отметки так, как указано.

Способы передачи данных

Данные передаются через физическую среду тремя способами:

  • Simplex.
  • Half-duplex.
  • Full Duplex.

Simplex - это односторонняя связь. Передача ведется только одним устройством, в то время как другое только принимает сигнал. Можно сказать, что информация транслируется только в одном направлении.

Примеры симплексной связи:

  • Телевещание.
  • Сигнал от спутников GPS.

Half-duplex - это двусторонняя связь. Однако только один узел может передавать сигнал в определенный момент времени. При такой связи два устройства не могут одновременно использовать один канал. Полноценная может быть невозможна физически или приводить к коллизиям. Говорится, что они конфликтуют за среду передачи. Этот режим применяется при использовании коаксиального кабеля.

Пример полудуплексной связи - общение по рации на одной частоте.

Full Duplex - полноценная двусторонняя связь. Устройства могут одновременно транслировать сигнал и производить прием. Они не конфликтуют за среду передачи. Этот режим применяется при использовании технологии Fast Ethernet и соединении с помощью витой пары.

Пример дуплексной связи - общение по телефону через мобильную сеть.

TCP/IP vs OSI

Модель OSI определяет принципы передачи данных. Уровни стека протоколов TCP/IP прямо соответствуют этой модели. В отличие от четырехуровневого TCP/IP имеет 7 уровней:

  1. Физический (Physical).
  2. Канальный (Data Link).
  3. Сетевой (Network).
  4. Транспортный (Transport).
  5. Сеансовый (Session).
  6. Представительский (Presentation).
  7. Прикладной (Application).

В данный момент не стоит сильно углубляться в эту модель, но необходимо хотя бы поверхностное понимание.

Прикладной уровень в модели TCP/IP соответствует трем верхним уровням OSI. Все они работают с приложениями, поэтому можно отчетливо проследить логику такого объединения. Такая обобщенная структура стека протоколов TCP/IP способствует облегченному пониманию абстракции.

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

Сетевой уровень также не изменен. Выполняет ровно те же задачи.

Канальный уровень в TCP/IP соответствует двум последним уровням OSI. Канальный уровень устанавливает протоколы передачи данных через физическую среду.

Физический представляет собой собственно физическую связь - электрические сигналы, коннекторы и т.п. В стеке протоколов TCP/IP было решено объединить эти два уровня в один, так как они оба работают с физической средой.