Czy gniazda TCP i UDP mogą używać tego samego portu?

Po pierwsze, czy jest jakiś problem z używaniem UDP i TCP na tym samym serwerze?

Po drugie, czy mogę użyć tego samego numeru portu?

Author: Nicholas Wilson, 2011-06-22

2 answers

Tak, możesz użyć tego samego numeru portu zarówno dla TCP, jak i UDP. Wiele protokołów już to robi, na przykład DNS działa na udp/53 i tcp/53.

Technicznie pule portów dla każdego protokołu są całkowicie niezależne, ale dla protokołów wyższego poziomu, które mogą używać TCP lub UDP, zgodnie z konwencją domyślną jest ten sam portNumer .

Podczas pisania serwera należy pamiętać, że kolejność zdarzeń dla gniazda TCP jest znacznie trudniejsza niż dla UDP socket, ponieważ oprócz zwykłych wywołań socket i bind musisz również listen i accept.

Ponadto, że accept zwróci nowe gniazdo i jest to to gniazdo, które następnie będziesz musiał również przepytywać o zdarzenia odbioru. Twój serwer powinien być przygotowany do kontynuowania acceptpołączeń na oryginalnym gnieździe, jednocześnie obsługując wielu klientów, z których każdy będzie wyzwalał zdarzenia odbioru na własnych gniazdach.

 77
Author: Alnitak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-08 09:09:17

Po pierwsze, nie ma problemu z użyciem zarówno TCP, jak i udp na serwerze.

Po drugie, możemy mieć zarówno żądania UDP, jak i TCP na tym samym porcie, ponieważ każde żądanie jest identyfikowane pięciokrotnie przez source IP ,Destination IP, Source Port, Destination Port, PROTOCOL (jako protokół może być TCP lub UDP).

 4
Author: aMooly,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-01 09:37:30