Dlaczego UDP nie wyświetla SŁUCHANIA w kolumnie stanu w netstat?

10

TCP pokazuje SŁUCHANIE w kolumnie stanu, a UDP niczego nie pokazuje:

wprowadź opis zdjęcia tutaj

Czy to dlatego, że UDP ma tylko jeden stan ( SŁUCHANIE ), więc nie trzeba go pokazywać, czy może jest inny powód?

użytkownik613132
źródło
2
UDP to protokół bezstanowy.
Patrick Seymour,
@Patrick S Czy nasłuchiwanie, że gniazdo UDP nie jest nazywane stanem?
user613132
2
Sprawdź: stackoverflow.com/questions/8194323/… -> Cytowana odpowiedź -> „TCP jest protokołem przesyłania strumieniowego między serwerem a klientami. Protokół jest niezawodny i wymaga osobnego stanu dla każdego strumienia klienta <>. Połączenie protokół, zainicjowany przez nasłuchiwanie / akceptowanie, ustawia stan połączenia klienta <> UDP jest bezpołączeniowym, zawodnym datagramem (protokołem), więc nie trzeba nasłuchiwać nowych połączeń - datagramy mogą przychodzić w dowolnej kolejności z dowolnego źródła . ”
Pimp Juice IT
@PIMP_JUICE_IT Kiedy więc mówimy, że gniazdo nasłuchuje na porcie, mamy na myśli, że nasłuchuje żądań połączenia, a ponieważ gniazdo UDP nie nasłuchuje żądań połączenia (po prostu otwiera port i czeka na datagramy), a następnie UDP gniazdo nie jest w stanie SŁUCHANIA . Mam rację?
user613132

Odpowiedzi:

9

Jak wspomniano w komentarzach, UDP jest bezpołączeniowy. W przeciwieństwie do TCP, nie ma pojęcia „nasłuchiwania”, „ustalonego”, „zamkniętego” ani czegoś takiego. Jeśli port UDP jest otwarty, pojawia się na liście; jeśli nie jest otwarte, to nie. Nie ma innego stanu do wyświetlenia. Wyświetlenie LISTENINGlub coś podobnego w tej kolumnie może sugerować, że istnieją inne możliwe stany i byłoby to fałszywe.

Ben N.
źródło
1

Pomimo twierdzeń, że netstat nie pokazują stan ponieważ UDP jest bezpaństwowcem, netstat na niż Windows systemów operacyjnych nie wykazują wartość dla kolumny State. Na przykład Solaris pokazuje „Bezczynny” lub „Bez ograniczeń”. O ile wiem, gniazda „bezczynne” to te związane z konkretnymi portami lokalnymi, podczas gdy gniazda „niezwiązane” są zawsze „*. *”, A więc prawdopodobnie jakoś otwarte, ale nie powiązane z konkretnymi portami. netstat w systemie Linux może pokazywać co najmniej „ESTABLISHED”. Ponadto nadal chciałbym wiedzieć, czy port UDP oczekuje połączeń z innego miejsca, aby zainicjować ruch, czy jest po prostu otwarty, aby mógł wysyłać rzeczy z innego miejsca.

Zwykły czytelnik
źródło
Wciąż chciałbym wiedzieć, czy port UDP oczekuje na połączenia z innego miejsca, aby zainicjować ruch, czy jest po prostu otwarty, aby mógł wysyłać rzeczy z innego miejsca. ” Ponieważ UDP jest bezpołączeniowy, nigdy nie oczekuje wysyłania ani odbierania czegokolwiek. Z radością to zrobi. Jest to aplikacja korzystająca z UDP, która oczekuje na wysyłanie, odbieranie lub jedno i drugie.
Ron Maupin,
Przypadkowemu obserwatorowi wydaje się, że mówisz, że sugestia Czytelnika jest niemożliwa. W rzeczywistości spieracie się o terminologię. Podobnie jak w przypadku potoku lub tty (w odniesieniu do read), albo istnieje albo nie ma procesu oczekującego na blokujące recv(lub powiązane) wywołanie systemowe, a jądro wie, czy istnieje taki proces (ponieważ, podobnie jak z potokiem lub tty, musi wiedzieć, jak zareagować, gdy pojawi się wejście). Dlatego powinno być możliwe netstatustalenie i zgłoszenie, czy proces oczekuje na przesłanie danych do gniazda UDP.
Scott