O que é hard coding em referência ao ipv4 e ipv6?

0

Estou tentando envolver minha cabeça em redes IPV6. Eu tenho um IPV4 estático do meu isp e quando eu estou construindo aplicativos eu uso o que eu estou supondo que é um endereço "codificado". Como o 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, precisaria obter um endereço IPV6 estático para codificar em meu aplicativo? De qualquer forma, eu precisaria de algum método para se conectar de forma consistente e confiável ao meu servidor ...

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

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

The Google Public DNS IPv6 addresses are as follows:

2001:4860:4860::8888

2001:4860:4860::8844

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

    
por Pfap 18.09.2018 / 11:44

2 respostas

2

I use what I am assuming is a "hard coded" address

Sim. "Hardcoding" significa colocar as informações diretamente em 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 se limita ao IP, ou mesmo à rede.

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

Are IPV6 addresses always dynamic?

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

  • Se o seu ISP fornece endereços estáticos ou dinâmicos depende inteiramente do contrato que você assina com eles (incluindo o plano que você escolher, etc.)

    Para conexões empresariais residenciais e 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, você pode obter um IPv6 / 64 ou um / 48, essas alocações podem ser estáticas ou podem mudar todos os dias - tudo depende do contrato que você assinou com o ISP. / p>

  • Como você atribui endereços a seus servidores e outros computadores dentro de sua LAN depende inteiramente de você. Se você quiser 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 SLAAC do IPv6, 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.

Or to switch to an IPV6 network would I need to get a static IPV6 address to hardcode into my application?

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

I guess I was more asking about how to avoid hard coding an address into an application

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

  • usando o DNS - ou seja, configurando um nome de domínio para apontar para o seu servidor;

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

I'm thinking I would need to get a domain name... and then "hard code" a DNS IPV6 name into my application

Sim. Você ainda está codificando alguma coisa (o nome de domínio), mas pelo menos o nome do domínio é muito menos provável de mudar - enquanto o endereço IP de um servidor pode ter muitas razões 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 possa dizer que não existe uma "DNS IPv6 names". Um nome de domínio pode se referir a 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 addreses encontrados (por exemplo, com a ajuda da função getaddrinfo ()). Isso permite que ele funcione em redes somente IPv4 e somente IPv6, bem como mistas.

    
por 18.09.2018 / 12:24
1

A questão da disponibilidade de IPv6 estático é melhor endereçada ao seu ISP. Nem todos os ISPs os suportam, enquanto que para outros um atribuição estática de IPv6 é automaticamente fornecida com uma atribuição estática de IPv4.

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

Se por "codificação fixa" você quis dizer usar um nome curto em vez de digitar a cadeia longa do IPv6, você pode defini-la como um alias através do arquivo de hosts. Veja o post do StackOverflow para IPv6 no arquivo de hosts do Windows .

    
por 18.09.2018 / 11:53