Я хотел бы скопировать протокол TCP в виде черного ящика, который в основном имеет 4 функции:
recv
send
recv_raw(buffer)
: имитирует получение заголовка TCP + данные TCP
send_raw(buffer)
: фактически обратный вызов, который вызывается, когда сокет хочет отправить уровень TCP.
Я думаю, что это возможно сделать с помощью необработанного сокета, который связывается с сокетом TCP. Однако мне нужно решение, которое не требует привилегий root (в любое время, даже для setcap
).
Какой самый простой способ сделать это (используя уже существующие эталонные реализации)? Моя текущая лучшая идея - использовать Scapy , поскольку он реализует протокол TCP. Может быть, есть некоторые функции API из socket.h
, которые уже реализуют это? (что-то вроде записи в дескриптор файла)