· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.NETWORKS —› канальный уровень программирование

Посл.отвђт Сообщенiе


Дата: Окт 27, 2003 14:45:55

Есть два компа, две сетевых карты. Задача передать с одного компа на другой данные (файл) таким образом, чтобы было минимальное количество заголовково. В идеале — чистый файл и сохранить его на другом компе. Сокеты и остальное не предлагать :). Именно канальный уровень.
Если есть какие доки по этому или предложения рад буду почитать.

PS Это что придется свой драйвер для сетевухи писать?


Дата: Окт 27, 2003 17:36:09

Что ты подразумеваешь под канальным уровнем? Данные передающиеся непосредственно в среде?
Если да, то тогда тебе нужно писать свою сетевую карту. Т.к. размер Ethernet-фрейма определяется картой а не драйвером. Причем эти значения исходят из физических свойств среды. Читай В.Г. Олифера.
Если ты имеешь ввиду транспорт прикладного уровня, то юзай
raw_sockets. по крайней мере ты тогда избежишь передачи IP-хедеров. Но тогда тебе придется самому реализовывать скользящие окна и прочее. И опять вернешься к тому же -)
В общем - минимальное количество заголовков, доступное юзеру - это Raw sockets.


Дата: Окт 27, 2003 19:06:56 · Поправил: Quantum

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

ЗЫ: Действительно, канального уровня в OSI и TCP/IP нет и никогда не было.


Дата: Окт 27, 2003 22:10:42 · Поправил: van

JIocb
Корректней сформулируй задачу.
Зачем нужно мало заголовков?
Канальный уровень - это уже NDIS.
Можно написать свой протокол(или фильтр на протокол).
Если фильтр, то можно поставить обработчик, который
посылает пакеты Max size.Но в случае с загруженной сеткой
это ненадёжно.

Quantum
Действительно, канального уровня в OSI и TCP/IP нет и никогда не было.
Почему? В TCP/IP нет, а в OSI как раз есть.
По Олиферу:
1)Физический(коаксил,например)
2)Канальный(802.5(Ethernet),802.3,X.25,FDDI etc)
3)Сетевой(IP в случае TCP/IP)
4)Транспортный (TCP)
5)Сеансовый(TCP)
6)Представительный(HTTP например)
7)Прикладной(тот же HTTP например)


Дата: Окт 28, 2003 06:10:38

van
2)Канальный(802.5(Ethernet),802.3,X.25,FDDI etc)
Никогда бы не подумал, что "data link" переводится как "канал". Приму к сведению...

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


Дата: Окт 28, 2003 07:30:41

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


Дата: Окт 29, 2003 12:27:15

Возможно стоит разобраться с NDIS... (ответ самому себе)


Дата: Ноя 4, 2003 13:02:26

Теперь ещё один вопрос: есть у кого документация по NDIS на русском. А то я задолбался читать DDK на английском — слова вроде все знаешь, а смысл ускользает.


Дата: Ноя 4, 2003 15:16:11

ммм... "там же все слова из С" . Попробуй взять исходники winpcap библиотеки.


Дата: Ноя 4, 2003 17:14:23

JIocb
На русском нет.
В DDK действительно с первого раза непонятно.
На английском более понятно - у Руссиновича сотоварищи.
Но там в основном концепция.
Так что DDK рулит.
Постараюсь в течении 10 - 13 дней дописать-таки статью
по NDIS.
Но если решил писать свой минипорт, то это нелёгкое
занятие.Не в смысле понимания, а в смысле кодинга.
В статье по фильтрации сетевого траффика я указывал
на это. И MP* и Pt* функции достаточно обширны и их
не так уж мало. И ещё нужно писать свой inf-файл для
установки твоего минипорта + протокола.
Если хочешь посмотреть на Cишную реализацию, то с DDK
поставляются примеры.
А вообще NDIS Intermediate Driver - не самое эффективное
решение.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.082