Pourquoi UDP ne montre pas LISTENING dans la colonne d'état de Netstat?


10

TCP affiche LISTENING dans la colonne d’état alors que UDP n’affiche rien:

entrez la description de l'image ici

Est-ce parce que UDP n'a qu'un seul état (qui est à l' écoute ) et qu'il n'est donc pas nécessaire de le montrer, ou y a-t-il une autre raison?


2
UDP est un protocole sans état.
Patrick Seymour

@Patrick S Donc, l'écoute d'un socket UDP ne s'appelle pas un état?
user613132

2
Découvrez: stackoverflow.com/questions/8194323/… -> Réponse entre guillemets -> "TCP est un protocole de transmission en continu entre un serveur et des clients. Ce protocole est fiable et nécessite un état distinct pour chaque flux de clients <> du client. La connexion Le protocole, initié avec écoute / acceptation, configure ce serveur <> état de connexion client. UDP est un protocole (message) datagramme non fiable et sans connexion, il est donc inutile d'écouter les nouvelles connexions - les datagrammes peuvent entrer dans n'importe quel ordre, de n'importe quelle source. . "
Pimp Juice IT

@PIMP_JUICE_IT Ainsi, quand nous disons qu'un socket écoute sur un port, nous entendons qu'il écoute les demandes de connexion, et parce qu'un socket UDP n'écoute pas les demandes de connexion (il ouvre simplement un port et attend les datagrammes), puis un UDP socket n'est pas dit être dans un état d' écoute . Ai-je raison?
user613132

Réponses:


9

Comme mentionné dans les commentaires, UDP est sans connexion. Contrairement à TCP, il n’a pas de concept "à l’écoute", "établi", "fermé" ou quelque chose du genre. Si un port UDP est ouvert, il apparaît dans la liste. si ce n'est pas ouvert, ce n'est pas. Il n'y a pas d'autre état à afficher. Afficher LISTENINGou quelque chose de similaire dans cette colonne pourrait impliquer qu'il existe d'autres états possibles, ce qui serait faux.


1

Malgré des affirmations selon lesquelles netstat ne montre pas l' état car UDP est apatride, netstat sur son OS non-Windows ne montre une valeur pour la colonne Etat. Par exemple, Solaris affiche "Idle" ou "Unbound". Autant que je sache, les sockets "inactifs" sont ceux liés à des ports locaux particuliers, alors que les sockets "non liés" sont toujours "*. *" Et sont donc probablement ouverts mais non liés à des ports particuliers. netstat sur Linux peut afficher au moins "ESTABLISHED". De plus, j'aimerais quand même savoir si un port UDP attend des connexions en provenance d'autres sources pour initier du trafic ou s'il est simplement ouvert pour pouvoir envoyer des éléments ailleurs.


" J'aimerais toujours savoir si un port UDP attend des connexions en provenance d'autres sources pour initier du trafic ou s'il est simplement ouvert afin de pouvoir envoyer des éléments ailleurs. " UDP étant sans connexion, il n'attend ni rien envoyer ni recevoir. Il fera volontiers l'un ou l'autre. C'est l'application utilisant UDP qui s'attend à envoyer, recevoir ou les deux.
Ron Maupin

Pour l'observateur occasionnel, vous semblez dire que la suggestion de Casual Reader est impossible. En fait, vous vous contentez de la terminologie. Tout comme pour un tube ou un terminal (en ce qui concerne read), il existe ou non un processus en attente d'un recvappel système bloquant (ou lié), et le noyau sait s'il existe un tel processus (car, tout comme avec un tuyau ou un tty, il doit savoir comment réagir lorsque l’entrée apparaît). Il devrait donc être possible netstatde déterminer et de signaler si un processus attend de recevoir des données sur un socket UDP.
Scott
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.