Dois serviços diferentes na mesma máquina podem usar a mesma porta em IPv4 e IPv6?

1

Digamos que eu tenha dois serviços TCP A e B. A é um serviço somente IPv4 que atende em 127.0.0.1:10000 . B é um serviço somente IPv6 que atende em ::1:10000 . Posso iniciar esses serviços na mesma máquina? Ou seja, como as portas IP são atribuídas? Por máquina? Por interface? Por protocolo? Etc…

    
por levant pied 20.11.2014 / 18:36

2 respostas

1

Eu presumo que você esteja falando de portas TCP e UDP.

Say I have two TCP services A and B. A is an IPv4-only service listening on 127.0.0.1:10000. B is an IPv6-only service listening on ::1:10000. Can I start these services on the same machine?

Sim.

That is, how are IP ports assigned? Per machine? Per interface? Per protocol? Etc…

Primeiro, não existe uma "porta IP". Portas são um recurso de certos protocolos da camada de transporte. Em particular, o TCP e o UDP usam números de porta. Acredito que alguns outros protocolos também os usam, mas eu trabalhei apenas com TCP e UDP.

As portas TCP e as portas UDP são totalmente separadas. Um servidor TCP e um servidor UDP podem usar a mesma combinação IP / porta.

Os servidores podem ouvir em uma combinação específica de endereço IP / porta ou escutar em uma porta para todos os endereços. O último é especificado especificando um endereço de escuta de 0.0.0.0 para IPv4 ou :: para ipv6. Se um servidor estiver escutando em uma porta para todos os endereços, outros servidores não poderão escutar nessa porta para um endereço específico.

Finalmente, na maioria dos sistemas operacionais, é possível que um servidor que esteja atendendo on :: aceite conexões sobre IPv4 e IPv6. Existe uma opção de socket chamada "IPV6_V6ONLY" para ativar / desativar este comportamento. A configuração padrão para esta opção varia. No linux, a opção está desabilitada por padrão, mas isso pode ser alterado através do sysctl "net.ipv6.bindv6only". No windows vista e posterior IPV6_V6ONLY é ativado por padrão. Em versões mais antigas do Windows, não é possível que um único soquete aceite conexões v4 e v6, um aplicativo que queira atender às duas necessidades para abrir dois soquetes separados.

    
por 01.11.2015 / 00:12
0

Quando você diz "Portas", presumo que esteja falando de portas usadas no TCP e no UDP. Nesse caso, cada endereço IP possui portas que são executadas de 1-65.535 para TCP e 1-65,535 para UDP.

No que diz respeito ao IPv6, ele usa as mesmas portas, basta colocar colchetes ( [] ) em torno do seu endereço para diferenciar entre a parte do endereço e a parte da porta, pois os endereços IPv6 são delimitados por dois pontos de períodos.

    
por 20.11.2014 / 18:58

Tags