Port TCP / UDP a przekazywanie portów

-3

Jedną z rzeczy, które moim zdaniem nie są wystarczająco zrozumiałe, są protokoły sieciowe / internetowe. Więc może moje pytanie jest głupie.

Jeśli dobrze to rozumiem, porty TCP / UDP są „lokalne” dla serwera i oprogramowania klienckiego i są odpowiednie tylko na urządzeniach utrzymujących połączenie; a porty podłączone do zewnętrznych adresów IP za pomocą dwukropka są „lokalne” dla routera, ponieważ dotyczą tylko routera i mają na celu znalezienie urządzenia bez unikalnego adresu zewnętrznego.


Więc jeśli mam rację, chcę się tylko upewnić, czy masz zdefiniowaną funkcję:

TCPserver.listen(string ip, int port)

Następnie mógłbym zrobić (w zależności od realizacji kursu):

TCPserver.listen("123.456.789:18735", 1337)

A te dwa porty nie miałyby ze sobą nic wspólnego i nigdy nie mogłyby się ze sobą kolidować?


Jeśli się nie mylę, co się mylę?

Hugabor
źródło
-1 piszesz "If I understand it correctly, TCP/UDP ports are "local" to the server and client software"CO? "and are only relevant on the devices maintaining the connection"CO? "and the ports tacked on"CO? "and the ports tacked on to external IP addresses with a colon are 'local' to the router in that they are only relevant to the router "NIE i CO? "and in the interest of finding a device without a unique external address" CO? Kto próbuje znaleźć urządzenia ze zduplikowanymi adresami IP. Dlaczego mielibyście mieć urządzenia ze zduplikowanymi adresami IP? Wat on Earth ave u bin
readin
Co miałbyś na myśli, gdybyś powiedział, że porty TCP / UDP nie są lokalne dla serwera? Co byś miał na myśli, gdyby były one odpowiednie dla urządzeń „utrzymujących” połączenie. Co u licha znaczy „utrzymanie połączenia”. Napisałeś niewiarygodną ilość bełkotów, jest to dalekie od rzeczywistości. To tak, jakbyś używał swojej wyobraźni.
barlop
I ta linia TCPserver.listen("123.456.789:18735", 1337)może być błędna. Całkiem możliwe, że powinna ona wynosić 127.0.0.1 lub 0.0.0.0 i nie może zawierać numeru portu, który może być tylko adresem IP. Jaki to język? I 1337czy hacker kiddie mówi, co zwykle nie opiera się na właściwym zrozumieniu.
barlop
jak w, najprawdopodobniej pierwszym parametrem tej funkcji powinien być IP
barlop

Odpowiedzi:

0

Odbiornik znajduje się na komputerze lokalnym. Adres IP określony dla nasłuchującego informuje, jaki interfejs sprzętowy (sieciowy) należy obserwować, oczywiście na określonym porcie.

Jeśli detektor jest skonfigurowany na adres zewnętrzny (zewnętrzny do komputera, jak w localhostinnym przypadku), wówczas przychodzące żądanie może być odbierane z innych komputerów w sieci.

W większości przypadków, jak się zdaje, przypadkiem jest zainstalowany router między połączeniem internetowym a komputerem.

Zadaniem routera jest kierowanie ruchu do właściwej maszyny. Aby udostępnić usługę przez Internet, musisz więc powiedzieć routerowi, że żądanie publicznego adresu IP (WAN / Internet) musi zostać przesłane na właściwy serwer.

Odbywa się to poprzez włączenie przekierowania portów w konfiguracji routera, wybranie portu publicznego oraz docelowego prywatnego adresu IP i portu.

Oto prosty przykład konfiguracji serwera WWW, która pomija blok ISP przychodzących żądań portu 80:

WAN/public IP: 1.2.3.4
LAN: 192.168.0.0/24 (router's IP would typically be 192.168.0.1)
web server: 192.168.0.10:80

Ponieważ port 80 jest blokowany przez dostawcę usług internetowych, użyjemy zamiast tego portu 8080, więc nasz link będzie http://1.2.3.4:8080. W routerze przekierowalibyśmy port 8080 na 192.168.0.10:80.

Julie Pelletier
źródło
Jeśli więc hostuję serwer na urządzeniu podłączonym do routera z skonfigurowanym przekierowaniem portów, to co klient musi wiedzieć, aby wysłać wiadomość. Może socket.send("public.ip:port", "message")być wystarczające, czy też musieliby również określić port TCP?
hugabor
Twoje polecenie zawiera już port. Moduł obsługi połączeń klienta systemu operacyjnego przypisze port lokalny do zarządzania połączeniem wychodzącym, ale aplikacja nie musi o tym wiedzieć. Pamiętaj, że wysyłanie danych do gniazda jest operacją znacznie niższego poziomu niż na przykład wysyłanie wiadomości czatu. Aby być użytecznym, musi działać w warstwie aplikacji, a więc zgodnie z określonym protokołem, takim jak FTP, HTTP, SSH itp.
Julie Pelletier
Jeśli klient nie może celować w port TCP, a port dołączony do publicznego adresu IP jest tylko dla potencjalnego routera, który następnie przekazuje komunikat, to co osiąga „nasłuchiwanie portu”?
hugabor
Wyjaśniłem to w mojej odpowiedzi. Serwer za routerem nasłuchuje określonych portów dla tej usługi. Różne porty będą zwykle używane przez maszynę do świadczenia różnych usług.
Julie Pelletier,
Nikt „nie słucha portu” Komputer może nasłuchiwać na porcie. Oficjalna, standardowa terminologia jest wystarczająco kiepska, nie ma powodu, aby się od niej odstępować i pogarszać
barlop,