Требуется разработать обычное консольное сетевое приложение на языке ассемблера (не имеет значения MASM, TASM, NASM или др.) с возможностью пересылки сообщений между клиентской и серверной частью по протоколам TCP, UDP и ICMP, при этом желательна реализация receive timeout (ожидать конкретное время после чего выдавать ошибку), send timeout (на отправку сообщения отводится конкретное время), возможность задания TTL вручную, возможность связывания нескольких клиентов с одним портом.
Кто-то может подсказать в каком направлении копать?
Какую литературу посмотреть?
Какие готовые библиотеки для этого существуют?
Существуют ли похожие проекты?
P.S. в свою очередь обещаю за помощь интересную статью Хабру, если всё получится.
Если хочется использовать ассемблер из-за размера выходного кода, то вы уверены, что в итоге приложение на ассемблере займет много меньший объем кода, чем gcc в режиме -Os?
Если же все это just for fun, то мой вопрос отпадает сам собой.
Я бы сначала написал прототип на Си (примеров и документации в сети вагон),
сгенерировал ассемблерный текст и затем писал бы собственный вариант на его базе.
Используйте системные вызовы (сокеты), будет не сложнее, чем написать на Си. Литературы и статей по сокетом много, разберетесь. Если пишите под Windows, попробуйте MASM или FASM. Под *nix лучше NASM.
Вам нужна не литература, а описание системных функций для работы с berkeley sockets. Для Windows — это сайт MSDN, для Линукс — мануалы. Какая разница, на ассемблере вы пишете или на чем-то еще, если отправлять и принимать пакеты будет операционная система.