Si tu reçois des valeurs random c'est que tu tapes à des endroits random du paquet.
Si tu pars du principe que chaque début de trame TCP est le début d'un paquet protocolaire. Dans ce cas tu te trompes car une trame TCP peut contenir deux paquets. Ainsi la trame A contiendra le paquet A1 et le debut du paquet A2. et la trame B contiendra la fin du paquet A2 et potentiellement une partie ou la totalité du paquet B1 etc. etc.
Ce qui veut dire que si tu essayes de lire un en-tête dans la trame B tu tomberas sur des valeurs randoms comme celles que tu obtiens (car ce que tu liras sera en fait le contenu du paquet A2)
Il faut faire attention aux tailles des paquets protocolaires et lire l'entièreté des trames TCP à chaque fois. Aucune data n'est inutile.
En espérant pouvoir t'aiguiller :)
Edit : Coquille c'est plus joli que Cou`lle.