Was ist harte Kodierung in Bezug auf ipv4 und ipv6?

610
Pfap

Ich versuche, mich mit IPV6-Netzwerken zu beschäftigen. Ich habe ein statisches IPV4 von meinem ISP und wenn ich Apps baue, verwende ich eine, wie ich annehme, eine "fest codierte" Adresse. Wie die unten:

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

Sind IPV6-Adressen immer dynamisch? Oder um zu einem IPV6-Netzwerk zu wechseln, müsste ich eine statische IPV6-Adresse für den Hardcode in meine Anwendung bekommen? Auf jeden Fall würde ich eine Methode benötigen, um eine konsistente und zuverlässige Verbindung zu meinem Server herzustellen ...

Ich weiß ein bisschen über DNS. Ist es so, dass Sie eine "Route" zum DNS hart codieren, die mit der aktuellen Adresse Ihres IPV6-Servers zurückgegeben wird, die dynamisch sein könnte?

Hier sind die DNS-IPV6-Adressen von Google:

Die IPv6-Adressen von Google Public DNS lauten wie folgt:

2001: 4860: 4860 :: 8888

2001: 4860: 4860 :: 8844

Ich denke, ich müsste einen Domainnamen bekommen ... und dann einen DNS-IPV6-Namen in meine Anwendung "hard code"; das würde dann meinen Domainnamen einreichen, um in IPV6 übersetzt zu werden. Ist das richtig?

0
Schreiben Sie niemals eine statische Adresse in Ihre Programme, egal ob es sich um IPv4 oder IPv6 handelt. Machen Sie es konfigurierbar (als Befehlszeilenoption, Konfigurationsdateieintrag oder was auch immer) und erlauben Sie sowohl Namen (wie "www.google.com") als auch numerische Adressen. Dh zuerst eine DNS-Suche durchführen. Ihr Betriebssystem, egal was es ist, hat dafür Bibliotheken. dirkt vor 5 Jahren 1

2 Antworten auf die Frage

2
grawity

Ich verwende, was ich vermute, eine "hart codierte" Adresse

Ja. "Hardcoding" bedeutet, die Informationen direkt in den Code einzufügen, anstatt indirekte Mittel (wie DNS oder einfache Konfigurationsdateien) zu verwenden. Dies ist ein allgemeiner Begriff und nicht auf IP oder Netzwerk beschränkt.

Wenn Ihre connect () - Anrufe direkt auf eine IP-Adresse verweisen - dann ja, Sie verschlüsseln die Adresse. Wenn sich die Adresse ändert, müssen Sie das Programm erneut kompilieren.

Sind IPV6-Adressen immer dynamisch?

Nein. Sowohl IPv4 als auch IPv6 folgen den gleichen allgemeinen Regeln:

  • Ob Ihr ISP Ihnen statische oder dynamische Adressen zur Verfügung stellt, hängt ganz davon ab, welchen Vertrag Sie mit ihm unterschreiben (einschließlich des von Ihnen gewählten Plans usw.).

    Für private und kleinere Geschäftsverbindungen werden Adressen vom ISP gemäß den Richtlinien des ISP zugewiesen. Möglicherweise erhalten Sie eine öffentliche IPv4-Adresse oder ein Dutzend, Sie erhalten möglicherweise eine IPv6 / 64- oder eine / 48-Zuordnung. Diese Zuweisungen sind statisch oder ändern sich täglich - alles hängt von dem Vertrag ab, den Sie beim ISP unterzeichnet haben.

  • Wie Sie Ihren Servern und anderen Computern in Ihrem LAN Adressen zuweisen, hängt ganz von Ihnen ab. Wenn Sie möchten, dass die Adresse eines Geräts statisch bleibt, können Sie dies tun.

    Es stimmt, dass die dynamische Zuweisung über SLAAC in IPv6 etwas häufiger ist als DHCP in IPv4. Dynamisch bedeutet jedoch nicht, dass sich die Adresse ändert. Mit IPv6-SLAAC wählt das gleiche Gerät normalerweise immer die gleiche Adresse.

    Schließlich können Sie keine feste Adresse für das Gerät manuell konfigurieren. In IPv6 ist dies völlig normal.

Oder um zu einem IPV6-Netzwerk zu wechseln, müsste ich eine statische IPV6-Adresse für den Hardcode in meine Anwendung bekommen?

Sie sollten bestimmte Adressen in Ihrer Anwendung von vornherein nicht hartcodieren.

Ich denke, ich habe mich mehr gefragt, wie man das harte Codieren einer Adresse in eine Anwendung vermeidet

Platzieren Sie sie außerhalb der Anwendung. Die zwei häufigsten Methoden sind:

  • Verwenden von DNS - das heißt, einen Domänennamen so konfigurieren, dass er auf Ihren Server verweist;

  • Bereitstellen eines Konfigurationsmechanismus - beispielsweise eine INI-Datei, die Registry oder etwas anderes.

Ich denke, ich müsste einen Domainnamen bekommen ... und dann einen DNS-IPV6-Namen in meine Anwendung "hard code"

Ja. Sie kodieren immer noch etwas (den Domänennamen), aber zumindest ändert sich der Domänenname wahrscheinlich weniger - während die IP-Adresse eines Servers viele Gründe haben kann, geändert zu werden. (Beispielsweise kann der Server an einen anderen Standort verschoben werden, oder sein gesamtes Netzwerk wird umstrukturiert oder zu einem anderen ISP gewechselt.)

Obwohl ich sagen würde, dass es nicht so etwas gibt wie "DNS-IPv6-Namen". Ein Domänenname kann sich gleichzeitig auf IPv4- und IPv6-Adressen beziehen und kann sogar mehrere Adressen desselben Typs enthalten.

Ein gut geschriebenes Programm versucht alle gefundenen Adressen (z. B. mit Hilfe der Funktion getaddrinfo ()). Dadurch kann es sowohl in reinen IPv4- und IPv6-Netzwerken als auch in gemischten Netzwerken verwendet werden.

Ich muss mir SLAAC ansehen und manuell eine feste IPV6-Adresse konfigurieren. Ein gut geschriebenes Programm versucht alle Adressen zu finden; verbinden sich die meisten Anwendungen nicht zu sehr spezifischen Diensten und benötigen daher nur eine Adresse pro Dienst? Pfap vor 5 Jahren 0
Wie bereits erwähnt, wenn Sie sowohl IPv6 als auch IPv4 anbieten möchten, sind dies bereits zwei Adressen - eine für beide Arten. Der gleiche Dienst kann tatsächlich von mehreren Maschinen bereitgestellt werden, was zu mehreren Adressen führt. (Dies ist eine rudimentäre Form des Lastausgleichs, auch "DNS round-robin" genannt.) grawity vor 5 Jahren 0
1
harrymc

Die Frage nach der Verfügbarkeit von statischem IPv6 richtet sich besser an Ihren Internetdienstanbieter. Nicht alle ISPs unterstützen sie, während für andere eine statische IPv6-Zuweisung automatisch eine statische IPv4-Zuweisung enthält.

Ich stelle fest, dass das statische IPv6, falls verfügbar, nur eine Präfix-Delegierung ist. Wenn Sie über einen IPv6-kompatiblen Router verfügen, kann dieser Präfixdelegierung akzeptiert und anschließend den an Ihr Netzwerk angeschlossenen Geräten statische IPv6-Adressen zugewiesen werden.

Wenn Sie mit "harter Codierung" einen Kurznamen anstelle des langen IPv6-Strings verwenden wollten, können Sie ihn über die Hosts-Datei als Alias ​​definieren. Siehe die StackOverflow-Nach-
IPv6-Datei in der Windows-Hosts-Datei .

Richtig, denn das Bezahlen für etwas, das so reichhaltig ist wie IPV6-Adressen, ist nicht intuitiv. Pfap vor 5 Jahren 0
Ich denke, ich habe mich mehr gefragt, wie man das harte Codieren einer Adresse in eine Anwendung vermeidet. Pfap vor 5 Jahren 0
Sie können ihm einen Alias ​​über die `hosts'-Datei geben. harrymc vor 5 Jahren 0
Mehr Infos zu meiner Antwort hinzugefügt. harrymc vor 5 Jahren 0