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ę?
źródło
"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 binTCPserver.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? I1337
czy hacker kiddie mówi, co zwykle nie opiera się na właściwym zrozumieniu.Odpowiedzi:
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
localhost
innym 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:
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 na192.168.0.10:80
.źródło
socket.send("public.ip:port", "message")
być wystarczające, czy też musieliby również określić port TCP?