Soll dein Programm als Man-In-The-Middle agieren
(also Client <-> DeinProg <-> Server)
oder soll dein Programm selbstständig arbeiten und so vortäuschen selbst der Server zu sein ?
(also Client <-> DeinProg)
In beiden Fällen brauchst die
TCP-Header selbst nicht kreieren, sondern nur die Nutzdaten herumschaufeln.
Die Netzwerkpakete (also Ethernet-Header,
IP-Header,
TCP-Header) werden von WinSock zusammengebaut.