Сетевое программирование уровня 2 OSI

Недавно я взял несколько классов по сетевому взаимодействию (CCNA с 1 по 4), поэтому я понимаю большую часть теории, стоящей за всем этим. То, что я хотел бы сделать сейчас, это взять эти знания и применить их на практике в виде небольших приложений.

Я читал некоторые статьи на MSDN о том, как это сделать, но они, кажется, охватывают только сетевое программирование на уровне 3 или 4 и выше, IIRC. То, что я ищу, - это несколько простых примеров того, как иметь дело со связностью второго уровня (т. Е. Кадрированием) между хостами, или даже просто с чем-то простым, например, как выполнять широковещательную передачу Ethernet.

У меня есть небольшой опыт работы с C# и C++, поэтому примеры, которые используют любой из этих языков, были бы хорошими.

Благодарю.

3 ответа

Решение

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

Кстати, в Linux есть пакетные сокеты.

Вы можете использовать сетевую библиотеку eEx для написания небольших приложений (я делал то же самое во время моего CCNA).

Это простая в использовании и объектно-ориентированная библиотека программирования.Net, которая позволяет перейти на второй уровень и отправлять пользовательские кадры через WinPcap.

Типы фреймов, такие как Ethernet, ARP, IP, UDP, TCP и RIP, реализованы, и, насколько я знаю, это протоколы, которые происходят во время CCNA.

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

Очень вероятно, что вы могли бы изучить низкоуровневые сетевые утилиты в системах GNU/Linux или также изучить уровни ядра TCP, UDP или IP. Но, например, вещание через Ethernet - это что-то очень низкое и не очень полезное. И реальные примеры (обычно написанные на C, а не C++), вероятно, не могут быть простыми, потому что они имеют дело с обработкой ошибок.

Другие вопросы по тегам