Ух, знаете вы, батенька, толк в извращениях то...
Коль уж вы решили работать с TCP, то вам придется реализовать полностью этот протокол (сборка/проверка/распаковка пакетов, установление соединения (как раз таки handshake) и т.д.). Если вам не важна производительность, можно не реализовывать контроль насыщением и прочие приблуды. а посылать следующий пакет только по подтверждению доставки предыдущего. Но это будет оооочень медленно работать.
По поводу того что сервер принимает только ip и заголовок - так а вы уверены что там должны быть данные? В любом случае рекомендую глянуть на реализацию простенького снифера:
вот.
p.s. А почему именно RAW сокеты то?