2010-02-03 15 views
1

Je rencontre un problème avec un travail de programmation de socket. J'ai écrit un client TCP qui envoie des commandes via des sockets/networkstream. J'utilise Wireshark pour regarder les données brutes qui passent par les fils. Chaque fois que j'envoie une "commande" (c'est-à-dire je vide le réseau), l'application Wireshark me dit que la somme de contrôle dans l'en-tête TCP est incorrecte (dit "0x2440, mais 0x0000). Je ne comprends pas pourquoi au niveau de la couche d'application je devrais m'inquiéter de l'en-tête TCP Cela ne peut pas être correct Est-ce que quelqu'un sait pourquoi je reçois cette "erreur". pas au courant de ? J'utilise .NET 2.0 prises avec Tcp. Merci.Programmation TCP avec .NET

Répondre

8

regardez-vous un Wireshark de la machine à benne basculante qui envoie les données? dans ce cas, il peut être simplement que la somme de contrôle n'a pas été calculé au point de la pile où Wireshark le voit.Certaines cartes réseau ont ces jours-ci le TCP Checksum Offload, w ici la somme de contrôle est faite par le matériel, et ainsi le champ de somme de contrôle sera zéro à la sortie (Wireshark obtient le paquet juste avant qu'il soit envoyé au matériel). Puisque vous obtenez des ACK, la réception est clairement cool avec. De plus, si vous parlez à localhost, votre pile peut ne pas être dérangeante du tout (ils ne sont pas strictement nécessaires pour qu'un hôte parle à lui-même).

+0

Merci pour l'explication. Je ne le savais pas. Puisque vous êtes familier avec ce genre de choses, puis-je demander comment je peux utiliser Wireshark pour donner un sens au flux d'octets envoyé? Selon le protocole propriétaire que j'implémente, les paquets contiennent du texte. Mais quand j'essaie de décoder les paquets, je ne reçois que du charabia. Merci encore. – John

+0

@John: Sans savoir quel protocole vous regardez, nous ne pouvons pas vraiment le dire. Si vous faites "Suivre le flux TCP" dans Wireshark, ne vous montre-t-il pas des données utiles? –

+0

@Jon: c'est le streaming TCP standard. Est-ce que "Follow TCP Stream" colle les paquets de nouveau ensemble d'une manière ou d'une autre. Les données que je suis censé recevoir sont un fichier texte brut. Je vais regarder dans Wireshark plus. Merci. – John

Questions connexes