Netzwerkemulation


1. Allgemeines

Ralf Kästner hat eine TCP/IP-fähige Lösung zum Anschluss der KC85-Computer aus Mühlhausen an ein Ethernet-Netzwerk entwickelt. Diese Lösung nennt sich KCNet und findet sich in dem Modul M052. Für andere 8-Bit-Computer steht KCNet in Form einer separaten Netzwerkkarte zur Verfügung.

Basis von KCNet ist der Chip WIZnet W5100, der einen vollständigen TCP/IPv4-Protokollstack enthält. JKCEMU emuliert diese Netzwerklösung, wobei der Protokollstack des Betriebssystems verwendet wird, auf dem der Emulator läuft. Dieses Prinzip, insbesondere das Berechtigungskonzept des Betriebssystems, bedingen allerdings einige Einschränkungen:

2. Konfiguration

KCNet muss nach dem Start des Computers erst konfiguriert werden, bevor es verwendet werden kann. Dafür gibt es spezielle Programme, mit dem man die Werte für IP-Adresse, Subnetzmaske, Gateway und DNS-Server im Netzwerkmodul eintragen kann. In der Emulation werden aber die im KCNet eingestellten Werte für IP-Adresse, Subnetzmaske und Gateway gar nicht verwendet, da das ja Sache des Betriebssystems ist, auf dem JKCEMU läuft. Sie müssen aber trotzdem mindestens die IP-Adresse und die Subnetzmaske im KCNet konfigurieren, da sonst die entsprechenden Anwendungsprogramme ein nicht konfiguriertes Netzwerk erkennen und somit ihren Dienst verweigern. Das Gateway kann dagegen leer bleiben. Es hat in der Emulation sowieso keine Bedeutung.

Anders sieht es beim DNS-Server aus. Hier ist das Betriebssystem des Emulatorrechners nicht involviert. Die im Emulator laufenden Netzwerkprogramme nehmen die Namensauflösung selbst vor und verwenden dazu den im KCNet eingestellten DNS-Server.

JKCEMU bietet die Möglichkeit, KCNet vorzukonfigurieren, d.h., beim Start der Emulation ist das Netzwerk bereits konfiguriert, und sie brauchen kein spezielles Konfigurationsprogramm mehr starten. Die vier einzelnen Werte für die Netzwerkkonfiguration können Sie in den Einstellungen, Bereich Netzwerk, festlegen. Das ist aber i.d.R. nicht notwendig, da nämlich standardmäßig eine Option eingeschaltet ist, die die IP-Adresse, die Subnetzmaske und den DNS-Server automatisch ermittelt und in das emulierte KCNet-Modul eingeträgt.

Auf manchen Systemen kann JKCEMU den DNS-Server nicht ermitteln. Ist das bei Ihnen der Fall, müssen Sie selbst die IP-Adresse des DNS-Servers herausfinden. Auf einem Windows-Betriebssystem geht das folgendermaßen:
  1. Starten Sie die Eingabeaufforderung, indem Sie in der Windows-Suche cmd.exe eingeben.
  2. Tippen Sie in der Eingabeaufforderung ipconfig /all ein und drücken Enter.
  3. Suchen Sie in der Eingabeaufforderung in den Programmausgaben die Zeile mit dem DNS-Server heraus und tragen die dort angegebene IP-Adresse im Emulator in das Feld DNS-Server ein.

2.1. DHCP

Wenn Sie auf die Möglichkeit der Vorkonfiguration verzichten, ist KCNet nach dem Start von JKCEMU erst einmal nicht konfiguriert. Nun könnten Sie, wie üblicherweise auf einem realen System auch, ein Programm starten, welches KCNet mittels DHCP konfiguriert. Da aber im Fall der Emulation das Netzwerk von dem darunter liegenden Betriebssystem verwaltet wird und der Emulator normalerweise auch in einer Umgebung ohne Systemberechtigungen läuft, würde dieses DHCP-Konfigurationsprogramm (DHCP-Client) auf einen Fehler laufen. Damit aber trotzdem in der Emulation ein DHCP-Prozess fehlerfrei durchlaufen kann, wird durch JKCEMU ein DHCP-Server simuliert. Der Emulator fängt dazu alle DHCP-Anfragen ab und beantwortet sie so, wie es auch ein realer DHCP-Server tun würde.

Achtung! Die vom simulierten DHCP-Server gelieferten Werte für die Server-IP-Adresse sowie für die Lease-, Renew- und Rebind-Zeit der Client-IP-Adresse haben keinen realen Bezug! Diese Werte dienen nur dazu, den in der Emulation laufenden DHCP-Client zufieden zu stellen. Des Weiteren sollte beachtet werden, dass kein DHCP-Server simuliert wird, wenn JKCEMU keine IP-Adresse ermitteln kann und in den Einstellungen auch keine angegeben wurde.

3. Hinweise zu IPv6

Die emulierte Netzwerklösung KCNet verwendet ausschließlich die alte TCP/IP-Version IPv4 mit den 4 Byte langen IP-Adressen, die in Form von vier mit einem Punkt getrennten Dezimalzahlen geschrieben werden. Inzwischen ist jedoch immer häufiger auch das neue IPv6 mit 16 Byte langen IP-Adressen anzutreffen, meistens in Form einer gemischten IPv4/IPv6-Umgebung. Anhand der IP-Adresse wird dann unterschieden, ob IPv4 oder IPv6 verwendet wird.

Wenn nun in einer solchen Umgebung JKCEMU Datenpakete im IPv6-Format empfängt, kann es die dort eingetragene IPv6-Adresse nicht in Form einer IPv4-Adresse dem emulierten KCNet mitteilen, d.h., das im Emulator laufende Programm sieht die Gegenstelle mit der IP-Adresse 0.0.0.0, was für eine fehlende IP-Adresse steht. Damit kann aber das Programm nichts anfangen. Sie müssen deshalb sicherstellen, dass die Netzwerkkommunikation immer mit IPv4 abläuft.

Ist das im Emulator laufende Programm eine Client-Anwendung und somit der Initiator einer Netzwerkkommunikation, gibt es kein Problem, da JKCEMU die Kommunikation mit IPv4 beginnt, woraufhin ein Server auch mit IPv4 antworten wird.

Problematisch wird es aber, wenn das im Emulator laufende Programm eine Server-Anwendung ist und die Netzwerkkommunikation somit außerhalb von JKCEMU initiiert wird. Hier müssen Sie sicherstellen, dass beim Verbindungsaufbau zum Emulatorrechner hin die IPv4-Adresse angegeben wird. Bei Verwendung von logischen Rechnernamen, die über DNS aufgelöst werden, liegt es an der DNS-Konfiguration, ob nun eine IPv4- oder IPv6-Adresse genommen wird. Liefert das DNS eine IPv6-Adresse, bleibt Ihnen nichts anderes übrig, als auf den logischen Rechnernamen zu verzichten und die IPv4-Adresse des Emulatorrechners direkt anzugeben.