Do seu comentário (o que seria melhor fazer parte da sua pergunta):
I understand that TCP inherently has to retransmit packets, but I actually need to test out a functionality on my server, where I have to observe how the server behaves when it drops a TCP packet and it does not get retransmitted. So I cannot use UDP here.
Pelo que entendi, você não precisa realmente se importar com o que o cliente envia, só é importante que os pacotes reenviados não cheguem ao servidor. Então, por que você não coloca esses pacotes no lado do servidor da mesma maneira que você soltou o pacote inicial? Eu não sei como você descartou isso, mas com o iptables ele provavelmente deveria ser o suficiente para bloquear qualquer pacote TCP sem o SYN / FIN do cliente.
Se você precisar fazer com que o cliente não se importe, você precisará falsificar os ACKs do servidor. Você pode fazer essas coisas com scapy ou ferramentas similares.