lorsque le drapeau est réglé de poussée dans le segment de tcp
-
20-09-2019 - |
Question
J'ai demandé ici cette question précédente:
TCP deux côtés qui tentent de se connecter simultanément
i essayé la méthode donnée dans la solution et tout en envoyant tout en utilisant netcat et renifler des paquets avec i observé éthérée que lorsque i envoyé une chaîne « bonjour » d'un côté à l'autre, il a été envoyé dans un segment avec l'ensemble poussoir du pavillon .
qui décide de fixer le bouton drapeau? quelles sont les règles de fixation du poussoir ou drapeau d'urgence dans un segment de tcp? est-il possible de le faire en utilisant l'api sockets?
La solution
Le drapeau PUSH est utilisé par la pile de tcp dire essentiellement « Je suis fait pour l'instant ». Il est juste indiquant le segment de données est entièrement transmis par la source.
Il n'y a pas moyen d'indiquer ou de contrôler en userland (votre prise api), car cela est juste la pile tcp / mise en œuvre pour le faire. Comme le drapeau URGENT.
(Source: Richard Stevens - Tcp / ip illustré vol 1 , chapitre 20)
Autres conseils
Vous pouvez définir le drapeau URGENT en utilisant send()
avec le drapeau de MSG_OOB
. Comme cela implique, les données envoyées seront hors bande, ce qui signifie qu'il ne sera pas normalement reçu par le côté appelant simplement appeler read()
. Le côté réception obtiendra une indication de données hors bande comme le signal SIGURG
, ou la prise deviendra exceptionnelle et peut être vérifié en tant que telle en utilisant select()
.
La plupart du temps vous ne voulez pas mettre le drapeau URGENT.