Como funcionam as portas de rede? Posso configurar as portas que o cliente e o servidor usam?

2

Digamos que eu tenha um programa "servidor" escutando no endereço 1.2.3.4:69 (por exemplo, porta remota 69)

Quando eu me conecto de um programa "cliente" para ele, normalmente eu especifico o endereço IP + porta do sistema de destino ou servidor;

Mas qual porta o cliente estaria usando? E como o servidor sabe qual porta se conectar de volta ao cliente?

Eu entendo que essa pergunta é muito geral, mas apenas quer ter uma ideia geral de como as coisas funcionam.

Em seguida, estendendo isso para um protocolo específico, digamos FTP (porta típica 21), posso alterá-lo de tal forma que o servidor use a porta 69, mas o cliente usa a porta 100?

E, da mesma forma, para a Área de Trabalho Remota no WinXP (porta típica 3389), sei como alterar a porta do servidor para algo diferente de 3389, mas como alterar a porta usada pelo cliente (se possível)?

    
por joedotnot 20.03.2011 / 16:26

1 resposta

3

When i connect from a "client" program to it, typically i would specify the Ip address + port of the target or server system;

Sim, correto.

But what port would the client be using ?

O cliente geralmente usa uma porta aleatória. Mais precisamente: Para que o TCP funcione, o único requisito é que a combinação de endereço de destino, porta de destino, endereço de origem, porta de origem seja exclusiva - porque isso é usado para rastrear as conexões TCP. Assim, em princípio, o sistema operacional poderia apenas incrementar o número da porta de origem para cada nova conexão. Na verdade, muitos sistemas operacionais costumavam fazer isso, mas tornavam certos tipos de ataques mais fáceis, porque um invasor poderia prever o próximo número de porta. Portanto, a maioria dos sistemas operacionais modernos agora usa portas de origem aleatórias.

And how does the server know which port to connect back to the client on?

Um pacote TCP contém o destino e a porta de origem, portanto, cada lado conhece os dois números de porta. Veja por exemplo o diagrama para os dados dentro de um pacote TCP no link .

Then extending this to a specific protocol, say Ftp (typical port 21), can i change it such that the server uses port 69, but the client uses port 100?

Geralmente, você pode configurar um servidor para usar qualquer porta escolhida (embora isso dependa do aplicativo de servidor individual). Então você pode configurar o servidor FTP para usar a porta 69. A porta do cliente não pode ser configurada até onde eu sei. O mesmo vale para qualquer outro protocolo, como o RDP.

De qualquer forma, por que você deseja alterar a porta do cliente?

    
por 20.03.2011 / 16:33