Was ist Hardcodierung in Bezug auf IPv4 und IPv6?


0

Ich versuche, mich um IPV6-Netzwerke zu kümmern. Ich habe ein statisches IPV4 von meinem ISP und beim Erstellen von Apps verwende ich 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, muss ich eine statische IPV6-Adresse erhalten, um meine Anwendung fest zu codieren? In jedem Fall würde ich eine Methode benötigen, um eine konsistente und zuverlässige Verbindung zu meinem Server herzustellen ...

Ich kenne mich ein wenig mit DNS aus. Ist es so, dass Sie eine "Route" zum DNS fest codieren, die mit der aktuellen Adresse für Ihren IPV6-Server zurückgibt, die dynamisch sein könnte?

Hier sind die DNS IPV6-Adressen von Google:

Die öffentlichen DNS-IPv6-Adressen von Google lauten wie folgt:

2001: 4860: 4860 :: 8888

2001: 4860: 4860 :: 8844

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


1
Codieren Sie niemals eine statische Adresse fest in Ihre Programme, egal ob es sich um IPv4 oder IPv6 handelt. Machen Sie es konfigurierbar (als Befehlszeilenoption, Konfigurationsdateieintrag oder was auch immer) und lassen Sie sowohl Namen (wie www.google.com) als auch numerische Adressen zu. Dh, führen Sie zuerst eine DNS-Suche durch. Ihr Betriebssystem, was auch immer es ist, hat Bibliotheken dafür.
Dirkt

Antworten:


2

Ich verwende, was ich annehme, ist eine "fest codierte" Adresse

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

Wenn Ihre connect () -Anrufe direkt auf eine IP-Adresse verweisen - ja, Sie codieren die Adresse fest. Wenn sich die Adresse ändert, müssen Sie das Programm neu kompilieren.

Sind IPV6-Adressen immer dynamisch?

Sowohl IPv4 als auch IPv6 folgen denselben allgemeinen Regeln:

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

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

  • Wie Sie Ihren Servern und anderen Computern in Ihrem LAN Adressen zuweisen, hängt ganz von Ihnen ab. Wenn die Adresse eines Geräts statisch bleiben soll, 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. Bei IPv6 SLAAC wählt dasselbe Gerät normalerweise für immer dieselbe Adresse aus.

    Schließlich hindert nichts Sie daran, eine feste Adresse für das Gerät manuell zu konfigurieren. Dies ist in IPv6 völlig normal.

Oder um zu einem IPV6-Netzwerk zu wechseln, muss ich eine statische IPV6-Adresse erhalten, um meine Anwendung fest zu codieren?

Sie sollten bestimmte Adressen in Ihrer Anwendung nicht unbedingt fest codieren.

Ich habe mich eher gefragt, wie ich vermeiden kann, dass eine Adresse in eine Anwendung hartcodiert wird

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

  • Verwenden von DNS: Konfigurieren eines Domänennamens, der auf Ihren Server verweist.

  • Bereitstellen eines Konfigurationsmechanismus - z. B. einer INI-Datei oder der Registrierung oder einer anderen vollständigen Datei.

Ich denke, ich müsste einen Domain-Namen bekommen ... und dann einen DNS-IPV6-Namen in meine Anwendung "hart codieren"

Ja. Sie codieren immer noch etwas (den Domainnamen) fest, aber es ist weniger wahrscheinlich, dass sich der Domainname ändert - wohingegen die IP-Adresse eines Servers viele Gründe haben kann, geändert zu werden. (Beispielsweise kann der Server an einen anderen Standort verschoben oder sein gesamtes Netzwerk umstrukturiert oder zu einem anderen Internetdienstanbieter gewechselt werden.)

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

Ein gut geschriebenes Programm versucht alle gefundenen Adressen (zB mit Hilfe der Funktion getaddrinfo ()). Dies ermöglicht es, sowohl in IPv4- als auch in IPv6-Netzen sowie in gemischten Netzen zu arbeiten.


Ich muss mich mit SLAAC befassen und manuell eine feste IPV6-Adresse konfigurieren. Soweit ein gut geschriebenes Programm alle Adressen ausprobiert, findet es; Stellen die meisten Anwendungen keine Verbindung zu sehr spezifischen Diensten her und benötigen daher nur eine Adresse pro Dienst?
Pfap

Nein. Wenn Sie, wie bereits erwähnt, sowohl IPv6 als auch IPv4 anbieten möchten, sind dies bereits zwei Adressen - eine für beide Typen. Derselbe Dienst kann tatsächlich von mehreren Computern bereitgestellt werden, was zu mehreren Adressen führt. (Das ist eine rudimentäre Form des Lastausgleichs, auch bekannt als "DNS-Round-Robin".)
Grawity

1

Die Frage nach der Verfügbarkeit von statischem IPv6 ist besser an Ihren ISP gerichtet. Nicht alle ISPs unterstützen sie, während für andere eine statische IPv6-Zuweisung automatisch mit einer statischen IPv4-Zuweisung einhergeht.

Ich stelle fest, dass das statische IPv6, falls verfügbar, nur eine Präfixdelegation ist. Wenn Sie einen IPv6-kompatiblen Router haben, kann dieser die Präfix-Delegierung akzeptieren und anschließend an Ihr Netzwerk angeschlossene Geräte statischen IPv6-Adressen zuweisen oder diese zuweisen.

Wenn Sie unter "Festcodierung" einen Kurznamen anstelle der Eingabe der langen IPv6-Zeichenfolge verstehen, können Sie diesen über die Hostdatei als Alias ​​definieren. Weitere Informationen finden Sie in der StackOverflow-Post-
IPv6-Datei in der Windows-Hosts-Datei .


Richtig, denn das Bezahlen für etwas, das so zahlreich ist wie IPV6-Adressen, ist nicht intuitiv.
Pfap

Ich habe mich eher gefragt, wie ich vermeiden kann, eine Adresse fest in eine Anwendung zu codieren.
Pfap

Sie könnten ihm über die hostsDatei einen Alias ​​geben .
Harrymc

Weitere Informationen zu meiner Antwort hinzugefügt.
Harrymc
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.