Ich weiß nicht genau, welche Header bei RawSockets schon dabei sind und welche man noch hinzufügen muss.
Die Header der ersten beiden Schichten (MAC-Adresse etc.) sind sicher schon dabei, aber ob du den
IP-Header auch selbst mitschicken musst, weiß ich nicht. Den
TCP/UDP-Header musst du aber bestimmt selber basteln.
Ein Datenverkehr ist immer zwischen zwei Sockets aufgebaut; ein Socket ist die Kombination aus
IP-Adresse und Port. Um dich in den Datenverkehr einzuklinken, musst du praktisch ein
IP-Paket mit den Adressen und Ports der jeweiligen Verbindungspartner. Evtl. muss auch noch das Paket des Transportprotokolls entsprechend verändert (nur bei
TCP: Acknowledgementnumer etc.).
Die Sache ist aber die: Wenn der Remote-Rechner das Paket nicht annehmen will, dann tut er das auch nicht. Eine Verbindung geht über ein Two-Way- oder Three-Way-Handshake, das ist der Autausch von
TCP-Paketen mit gegenseitig abgestinnten Ack-Nummern.
Wie gesagt, wenn der Remote-Rechner die Verbindung nicht annehmen will, dann tut er es auch nicht.