Uma das coisas que sinto falta de compreensão é protocolos de rede / internet. Então, talvez minha pergunta seja burra.
Se bem entendi, as portas TCP / UDP são "locais" para o servidor e o software cliente e são relevantes somente nos dispositivos que mantêm a conexão; e as portas inseridas em endereços IP externos com dois pontos são "locais" para o roteador, pois são relevantes apenas para o roteador e no interesse de encontrar um dispositivo sem um endereço externo exclusivo.
Então, se eu estiver correto, eu só quero ter certeza, se você tem uma função definida:
TCPserver.listen(string ip, int port)
Então eu poderia fazer (dependendo da implementação do curso):
TCPserver.listen("123.456.789:18735", 1337)
E os dois portos não teriam nada a ver um com o outro e nunca poderiam interferir um com o outro?
Se não estou certo, o que estou errado?
fonte
"If I understand it correctly, TCP/UDP ports are "local" to the server and client software"
QUE?"and are only relevant on the devices maintaining the connection"
O QUE?"and the ports tacked on"
O QUE?"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 "
NÃO e o quê?"and in the interest of finding a device without a unique external address"
O QUE? Quem está tentando encontrar dispositivos com endereços IP duplicados. Por que você teria dispositivos com endereços IP duplicados? Wat na terra ave u bin readinTCPserver.listen("123.456.789:18735", 1337)
pode muito bem estar errada .. muito possivelmente deveria ser 127.0.0.1 ou 0.0.0.0 e não ter um número de porta dentro do que talvez deveria ser apenas o IP. Que língua é essa? E1337
é o hacker infantil, que normalmente não é baseado em uma compreensão adequada.Respostas:
O ouvinte está na máquina local. O IP especificado para o ouvinte informa qual interface de hardware (rede) deve ser observada, obviamente na porta especificada.
Se o ouvinte estiver configurado em um endereço externo (externo à máquina, como em não
localhost
), a solicitação de entrada poderá ser recebida de outras máquinas na rede.Na maioria dos casos, como parece ser o seu caso, haveria um roteador instalado entre a conexão à Internet e o computador.
O trabalho do roteador é direcionar o tráfego para a máquina apropriada. Para disponibilizar seu serviço a partir da Internet, você precisaria informar ao seu roteador que uma solicitação no IP público (WAN / Internet) deve ser encaminhada ao servidor correto.
Isso é feito ativando o encaminhamento de porta na configuração do roteador, escolhendo a porta pública e o IP e a porta privados de destino.
Aqui está um exemplo simples de uma configuração de servidor da Web que contornaria um bloco ISP de solicitações da porta 80 de entrada:
Como a porta 80 é bloqueada pelo ISP, usaremos a porta 8080, então nosso link seria
http://1.2.3.4:8080
. No roteador nós encaminharíamos a porta 8080 para192.168.0.10:80
.fonte
socket.send("public.ip:port", "message")
ser suficiente ou precisariam especificar uma porta TCP também?