2010-12-02 23 views
0

Quelle est la meilleure façon de conserver le tampon de données non acquitté (tampon de l'expéditeur) dans TCP?Représentation TCP pour les données non acquittées dans le tampon de l'expéditeur

Je pense entre garder les données et conserver les paquets (en-tête + données)?

Il semble que la retransmission de paquets serait difficile si je ne conservais que des octets de données plutôt que de conserver des paquets.

Langue: C

+0

Vous écrivez votre propre implémentation TCP? Ambitieux ... et cool! –

+0

c'est l'attribution de cours en réseau. Et ce n'est pas aussi compliqué qu'un vrai TCP avec toutes ses optimisations et ses trucs, juste du bone TCP. – Asterisk

Répondre

1

limites de paquets sont sans signification dans TCP: il est possible pour la moitié d'être reconnu les données d'un paquet (par exemple en raison de la fragmentation) et vous auriez à réémettre la moitié restante. Donc, la réponse est: vous devriez conserver les données brutes, pas les paquets. La vraie question que vous devriez poser est la suivante: comment puis-je savoir quelles données ont été reconnues. Vous avez besoin d'un masque de bits pour chaque octet de données dans votre fenêtre, et vous pouvez marquer les données acquittées comme 1 et le reste comme 0. Chaque fois que vous trouvez qu'un bloc de données contigu depuis le début de votre fenêtre a été reconnu, cette partie peut être retiré.