O que é codificação embutida em referência ao ipv4 e ipv6?

0

Estou tentando entender as redes IPV6. Eu tenho um IPV4 estático do meu provedor e, quando estou criando aplicativos, uso o que suponho ser um endereço "codificado". Como abaixo:

//The * are replaced with my static IPV4 address
network_connect_raw(client, "**.**.**.***", 8000);

Os endereços IPV6 são sempre dinâmicos? Ou para mudar para uma rede IPV6, seria necessário obter um endereço IPV6 estático para codificar no meu aplicativo? De qualquer maneira, eu precisaria de algum método para conectar-me de forma consistente e confiável ao meu servidor ...

Eu sei um pouco sobre DNS. Você codifica uma "rota" para o DNS que retorna com o endereço atual do servidor IPV6 que pode ser dinâmico?

Aqui estão os endereços IPV6 do DNS do Google:

Os endereços IPv6 do DNS público do Google são os seguintes:

2001: 4860: 4860 :: 8888

2001: 4860: 4860 :: 8844

Estou pensando que precisaria obter um nome de domínio ... e, em seguida, "codificar" um nome DNS IPV6 no meu aplicativo; que enviaria meu nome de domínio para ser traduzido para IPV6. Isso está correto?

Pfap
fonte
1
Nunca codifique um endereço estático nos seus programas, independentemente de ser IPv4 ou IPv6. Torne-o configurável (como opção de linha de comando, entrada do arquivo de configuração ou o que for) e permita nomes (como www.google.com) e endereços numéricos. Ou seja, faça uma pesquisa de DNS primeiro. Seu sistema operacional, seja o que for, tem bibliotecas para isso.
dirkt 18/09/18

Respostas:

2

Uso o que estou assumindo como um endereço "codificado"

Sim. "Codificação" significa colocar as informações diretamente no seu código, em vez de usar alguns meios indiretos (como DNS ou arquivo de configuração simples). Este é um termo geral e não limitado a IP ou mesmo a redes.

Se suas chamadas connect () se referirem diretamente a um endereço IP - sim, você está codificando o endereço. Se o endereço mudar, você terá que recompilar o programa.

Os endereços IPV6 são sempre dinâmicos?

Não. O IPv4 e o IPv6 seguem as mesmas regras gerais:

  • Se o seu provedor de serviços de Internet fornece endereços estáticos ou dinâmicos depende inteiramente do contrato que você assina com eles (incluindo o plano escolhido etc.)

    Para conexões residenciais e de negócios menores, os endereços são alocados pelo ISP de acordo com as políticas do ISP. Você pode obter um endereço IPv4 público ou uma dúzia, pode obter um IPv6 / 64 ou a / 48, essas alocações podem ser estáticas ou podem mudar todos os dias - tudo depende do contrato que você assinou com o ISP.

  • Como você atribui endereços aos seus servidores e outros computadores na sua LAN depende inteiramente de você. Se você deseja que o endereço de um dispositivo permaneça estático, você pode fazer isso.

    É verdade que a atribuição dinâmica via SLAAC no IPv6 é um pouco mais comum que o DHCP no IPv4. No entanto, 'dinâmico' não significa que o endereço será alterado. De fato, com o IPv6 SLAAC, o mesmo dispositivo geralmente continuará escolhendo o mesmo endereço para sempre.

    Por fim, nada impede que você configure manualmente um endereço fixo para o dispositivo. Fazer isso é perfeitamente normal no IPv6.

Ou para mudar para uma rede IPV6, seria necessário obter um endereço IPV6 estático para codificar no meu aplicativo?

Você não deve codificar endereços específicos em seu aplicativo em primeiro lugar.

Eu acho que estava mais perguntando sobre como evitar a codificação embutida de um endereço em um aplicativo

Coloque-os em algum lugar fora do aplicativo. Os dois métodos mais comuns são:

  • usando DNS - isto é, configurando um nome de domínio para apontar para o servidor;

  • fornecendo um mecanismo de configuração - como um arquivo .ini ou o Registro ou algo completamente diferente.

Estou pensando que precisaria obter um nome de domínio ... e depois "codificar" um nome IPV6 DNS no meu aplicativo

Sim. Você ainda está codificando alguma coisa (o nome do domínio), mas pelo menos é muito menos provável que o nome do domínio mude - enquanto o endereço IP de um servidor pode ter muitos motivos para ser alterado. (Por exemplo, o servidor pode ser movido para outro local ou toda a rede pode ser reestruturada ou alternada para um ISP diferente.)

Embora eu diria que não existe algo como "nomes IPv6 DNS". Um nome de domínio pode se referir aos endereços IPv4 e IPv6 ao mesmo tempo e pode até ter vários endereços do mesmo tipo.

Um programa bem escrito tentará todos os endereços que encontrar (por exemplo, com a ajuda da função getaddrinfo ()). Isso permite que ele funcione em redes somente IPv4 e somente IPv6, bem como em redes mistas.

gravidade
fonte
Vou ter que procurar no SLAAC e configurar manualmente um endereço IPV6 fixo. Quanto a um programa bem escrito, tentando todos os endereços que encontrar; a maioria dos aplicativos não se conecta a serviços muito específicos e, portanto, precisaria de apenas 1 endereço por serviço?
Pfap # 18/18
Não. Novamente, como mencionei, se você deseja oferecer IPv6 e IPv4, já são dois endereços - um para cada tipo. O mesmo serviço pode realmente ser fornecido por várias máquinas, resultando em vários endereços. (Isso é uma forma rudimentar de, aka "round-robin DNS" de balanceamento de carga.)
grawity
1

A questão da disponibilidade do IPv6 estático é melhor abordada ao seu ISP. Nem todos os ISPs os suportam, enquanto para outros uma atribuição IPv6 estática vem automaticamente com uma atribuição IPv4 estática.

Observo que, se disponível, o IPv6 estático é apenas uma delegação de prefixo. Se você tiver um roteador compatível com IPv6, poderá aceitar essa delegação de prefixo e subsequentemente atribuir ou permitir que você atribua endereços IPv6 estáticos aos dispositivos conectados à sua rede.

Se, por "codificação codificada", você quis dizer usar um nome abreviado em vez de digitar a cadeia longa do IPv6, poderá defini-la como um alias por meio do arquivo hosts. Veja o StackOverflow postar o
IPv6 no arquivo hosts do Windows .

harrymc
fonte
Certo, porque pagar por algo que é tão abundante quanto os endereços IPV6 é contra-intuitivo.
Pfap # 18/18
Acho que estava mais perguntando sobre como evitar a codificação embutida de um endereço em um aplicativo.
Pfap # 18/18
Você pode atribuir um alias através do hostsarquivo
precisa saber é
Adicionou mais informações à minha resposta.
precisa saber é