Все зависит от того, на чем вы хотите сосредоточиться. Из вашего вопроса, что вас больше всего интересует, так это поток данных по различным уровням (поток из пространства пользователя -> напряжение на кабеле).
Для этого я предлагаю вам использовать http://www.csse.uwa.edu.au/cnet/,, который является полноценным симулятором сети. Позволяет проходить все уровни стека.
Реальные системы всегда будут иметь четкое различие между Layer3, Layer2 и Layer1 (встроенное ПО для проверки Ethernet и CRC на чипе, аппаратный MAC). Вам будет сложно войти в ОС, а некоторые детали реализации будут запутанными и запутанными для студентов. Для Linux вам придется объяснить инфраструктуру ядра, чтобы понять структуру стека TCP / IP.
Если вас интересует только часть TCP / IP, я рекомендую использовать встроенный стек TCP / IP, например http://www.sics.se/~adam/lwip/. Вы можете включить это в простую пользовательскую программу и полностью создать пакет TCP / IP.
Обратите внимание, что существует множество аспектов сетевого взаимодействия, которые вы не можете решить при переходе через стек TCP / IP. Между ними все еще есть микросхема MAC, которая регулирует доступ к среде, коллизии и т. Д. Ниже имеется микросхема PHY, которая преобразует все в электрические / оптические сигналы, и даже существует протокол, который управляет связью между MAC и PHY. Кроме того, вы не видите все аспекты, связанные с очередями, параллелизмом, распределением ресурсов ОС и т. Д. Полная картина должна включать все эти аспекты, которые можно увидеть только в симуляторе сети.