Conectando-se ao servidor no host local com a mesma porta de origem e destino

2

Aqui está um servidor simples ouvindo a porta 80 de localhost :

nc -4 --listen 127.0.0.1 80

Aqui está o cliente para se conectar ao servidor em localhost usando a porta de origem da mesma forma que a porta de destino do servidor:

nc -4 --source-port 80 --source 127.0.0.1 127.0.0.1 80

Eu recebo erro:

libnsock mksock_bind_addr(): Bind to 127.0.0.1:80 failed (IOD #1): Address already in use (98)

De acordo com a regra que afirma: { SRC-IP, SRC-PORT, DST-IP, DST-PORT, PROTO } deve ser exclusivo, a criação dessa conexão deve ser permitida. Não houve essa tupla antes de tentar criar a conexão pela primeira vez. Por que isso não é permitido? Estou executando o Fedora 23 com o kernel 4.4.6.

    
por Majid Azimi 17.04.2016 / 21:33

1 resposta

4

O que você está tentando fazer não faz sentido. Você está tentando criar dois soquetes TCP com o mesmo 5-tuple { SRC-IP, SRC-PORT, DST-IP, DST-PORT, PROTO } , portanto os dois soquetes seriam indistinguíveis um do outro.

Pense nisso desta maneira: se isso fosse permitido, então, quando um pacote TCP chegasse de 127.0.0.1:80 e destinado a 127.0.0.1:80, qual soquete o recebe? Ambos?

    
por 17.04.2016 / 22:46

Tags