Добрый день. Так получилось,что нужно реализовать свой TCP(UDP)/IP стек. Логика приложения обитает на сетевом уровне OSI (OSI level 3), т.е. есть дескриптор файла с которого я могу прочитать\записать IP дейтаграммы, далее каждый кадр могу обработать в соответствии с протоколом TCP/UDP (а это уже транспортный уровень OSI - 4). Собственно вопросы:
1. Для TCP протокола нужно установить соединение и держать "где-то" связку ip/port str/dst и его сокет? (соединяемся банально - создаем сокет через socket и тупа connect?)
1.1 В отдельном потоке (форке) долбить сокетом recv для получения данных?
1.2 Как бы с флагами протокола?
2. Тоже самое, но для UDP, интересуют пока только TCP/UDP (дай бог и до ICMP дойду, но это уже другая история, при том,что он работает параллельно с IP)
p.s. перерыл готовые реализации,как то непонятно, как они обрабатывают соединения. Наверно привычка из работы с сокетами в приложениях,где ты не заботишься об этом.
p.p.s Смотрел в сторону
dunkels.com/adam/miniweb в качестве примера, но там жесть какая-то, они получают пакеты с tun-a и назад отправляют в него, это какой-то фокус?