дай бог и до ICMP дойду
Как вы собираетесь имплементить TCP без ICMP? Вам же как-то нужно подтверждать доставку пакетов.
Соединение обрабатывается довольно просто. Производим тройное рукопожатие и по завершению оного создаем какой-то объект/структурку где хранятся все нужные нам данные, адрес второй оконечной точки, буферы записи/чтения (если вы решитесь реализовывать контроль насыщения и контроль потока ну или просто последний пакет сохранять и блокировать отправку пока не подтвердится доставка этого пакета).
Вообще мне кажется что вы просто придумали себе неподъемную проблему... Зачем вам TCP имплементить если у вас IP дейтаграммы есть? Кому адресованы эти IP дейтаграммы? Кому вы их отправлять собираетесь? С кем соединяться? Мне кажется вам просто нужно сделать перепаковку данных из IP дейтаграммы в TCP пакет.