Hello, world!
Не так давно я установил сервер и клиент Novell Netware 4.11. В составе этой системы есть драйверы разных протоколов, которые позволяют отправлять и получать данные по сети по правилам, соответствующим используемому протоколу. В данной теме расскажу про протокол IPX, а в дальнейшем опишу функции драйвера IPX, которые будут интересны программисту.
Протокол IPX относится к сетевому уровню модели OSI, использует тип связи между рабочими станциями на уровне датаграмм (передача пакетов данных между рабочими станциями производится без подтверждения). Что значит "без подтверждения"? А это значит, что не гарантируется доставка пакета данных от передающей станции к принимающей, также передающая сторона так и не узнает, получила пакет данных принимающая сторона или нет.
ФОРМАТ ПАКЕТА IPX
Формат передаваемых пакетов данных представлен на рисунке:
Все поля, кроме последнего поля "Data", представляют собой заголовок пакета. Для примера можно привести почтовый конверт, заголовок пакета выполняет ту же роль, там указаны адрес отправителя, адрес получателя и некоторые служебные данные, давайте расскажу о каждом поле этой структуры подробнее.
Поле Checksum предназначено для хранения контрольной суммы пакетов, вам не придётся думать об этом при программировании, т.к. проверка данных по контрольной сумме производится драйвером сетевого адаптера.
Поле Length определяет общую длину пакета вместе с заголовком, длина заголовка фиксированная и составляет 30 байт. Размер передаваемых данных может быть от 0 до 546 байт, следовательно то, что длина пакета может составлять от 30 до 576 байт. Если длина поля Data равна 0, то пакет состоит из одного заголовка. Да, пакеты, состоящие из одного заголовка тоже нужны! Если вы будете использовать драйвер протокола IPX из системы Novell Netware, то вам не придётся считать длину пакета, драйвер вычислит длину пакета, исходя из длины поля Data.
Поле TransportControl содержит информацию о пройденных мостах, каждый раз при передаче пакета, когда он проходит через мост, значение счётчика увеличивается на единицу, перед передачей пакета драйвер IPX записывает в это поле значение 0.
Поле PacketType определяет тип передаваемого пакета. Программа, которая передает пакеты по протоколу IPX, должна записать в поле PacketType число 4. Если вы будете использовать протокол SPX, то в это поле необходимо записать число 5.
Поле DestNetwork определяет номер сети, в которую передается пакет. При формировании собственного пакета необходимо записать в это четырёхбайтовое поле число, соответствующее номеру сети, в которую будет передан пакет.
Поле DestNode определяет адрес рабочей станции, куда будет передан пакет. Необходимо записать все 6 байт этого поля, даже если число номера рабочей станции имеет значение меньше, старшие разряды необходимо записать нулями. Запись в это поле числа FFFFFFh означает, что пакет должен быть отправлен на все рабочие станции в этой сети.
Поле DestSocket необходимо для адресации программы, запущенной на рабочей станции, которая должна принять пакет. Socket - идентификатор программы.
Поля SourceNetwork, SourceNode, SourceSocket содержат номер сети, из которой происходит посылка пакета, адрес рабочей станции - отправителя и идентификатор программы, которая отправляет пакет.
Поле Data содержит передаваемые данные. Длина этой области памяти может быть от 0 до 546 байт
Спасибо за внимание!
С уважением, push0ret!
Протокол IPX
Модератор: push0ret
- push0ret
- Набирающий обороты
- Сообщения: 27
- Зарегистрирован: Вс дек 29, 2024 2:48 pm
- Благодарил (а): 16 раз
- Поблагодарили: 26 раз
Вернуться в «Системное программирование»
Перейти
- Всё о форуме
- ↳ Новости форума
- ↳ Критика и проблемы
- ↳ Вопрос-ответ
- ↳ Предложения и идеи
- Технологический раздел
- ↳ Администрирование сетей
- ↳ Администрирование серверов
- ↳ Программное обеспечение
- ↳ Поиск программ
- ↳ Безопасность
- ↳ Поиск драйверов
- Интернет
- ↳ Статический хостинг
- ↳ Веб-хостинг (shared)
- ↳ Хостинг VPS/VDS
- ↳ Хостинг физических серверов
- ↳ Регистраторы доменных имён
- ↳ VPN сервисы
- ↳ Оверлейные сети
- ↳ Mesh-сети
- ↳ Интернет-провайдеры
- ↳ Операторы сотовой связи
- ↳ Диагностика проблем
- ↳ Интересные сайты
- ↳ Веб-дизайн
- ↳ Старые сайты
- ↳ Веб-архив
- ↳ Другие сервисы
- Программирование
- ↳ Фронтенд
- ↳ Бекенд
- ↳ Базы данных
- ↳ Прикладное программирование
- ↳ Программирование для мобильных устройств
- ↳ Системное программирование
- ↳ Программирование микроконтроллеров
- Downgrade
- ↳ Ретро компьютеры
- ↳ Устаревшие операционные системы
- ↳ Старый софт
- ↳ Коммуникации
- ↳ Носители информации
- Творческий раздел
- ↳ Работа с графикой
- ↳ Работа со звуком
- ↳ Работа с видео
- ↳ Дизайн
- Железный раздел
- ↳ Радиоэлектроника
- ↳ Модернизация и ремонт
- ↳ Поделки
- ↳ Схемы
- ↳ Мобильные технологии
- ↳ Гаджеты
- ↳ Компьютерная техника
- Развлечения
- ↳ Игры
- Гуманитарный раздел
- ↳ Литература
- ↳ Психология
- ↳ Философия
- ↳ Музыка
- ↳ Кино
- ↳ Юмор
- ↳ Учёба
- ↳ Карьера
- ↳ Полезные советы
- ↳ Спорт
- ↳ Отдых
- Афиша
- ↳ Хочу поделиться
- ↳ Реклама
- ↳ Антиреклама
- Услуги
- ↳ Ищу
- ↳ Предлагаю
- Беспредел
- ↳ Флейм