TCP в тесно интегрированном по IP. Одним из примеров является использование псевдоголовка , который включает в себя определенные части заголовка IP для вычисления контрольной суммы. Кроме того, я сомневаюсь, что существуют какие-либо реализации TCP, которые не содержат распространяющихся предположений о 32-битных (для IPv4) или 128-битных (для IPv6) адресах.
Почему вы хотите пропустить IP и запустить TCP напрямую через нижний уровень? Просто чтобы сохранить 20 байтов заголовка?