TCP te garantit que tu recois tous les octets ( à condition que la connexion reste établie ) , et dans l'ordre. Il ne te garantit pas que tu recevras en un seul recv tes 1000 octets, parce que de l'autre coté tu as envoyé en un seul send tes 1000 octets ( même si c'est très probable que ca soit le cas ).
en TCP on est en mode "STREAM" , il n'y a pas de notion de paquet mais juste de flux d'octet.
Si tu veux travailler par paquets , tu implémentes ta propre couche, ou tu travailles en UDP ( mais avec d'autres contraintes comme la non garantie d'ordre des paquets, ou de bonne réception du paquet ).