Netzwerkemulation
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:
-
Der Protokollstack wird nur auf der Ebene TCP und UDP emuliert,
d.h., die Ebene, auf der Anwendungsprogramme gewöhnlich aufsetzen.
-
Wird der Protokollstack auf einer niedrigeren Ebene (IP raw, MAC raw)
angesprochen, wird keine erfolgreiche Kommunikation stattfinden.
Einzige Ausnahme ist ICMP-Echo (Ping), dass simuliert wird.
-
Das Senden von Datenpaketen ist nur möglich,
wenn als Ziel eine IP-Adresse angegeben wird.
Gibt das Anwendungsprogramm dageben nur eine MAC-Adresse vor,
wird nichts gesendet.
Dadurch sind einige spezielle Anwendungsfälle,
die ohne IP-Adresse arbeiten (z.B. Wake On LAN),
nicht möglich.
-
Bei TCP und UDP können gewöhnlich keine privilegierten Ports
(Portnummern bis 1024) gebunden werden,
wodurch vorallem die Anwendung als Server eingeschränkt ist.
Mit System- bzw. Administratorrechten lässt sich diese
Einschänkung zwar umgehen,
aber das ist aus Sicherheitsgründen nicht zu empfehlen.
-
Es werden immer die IP-Adresse, die Subnetzmaske und das Gateway
des Betriebssystems verwendet, auf dem JKCEMU gerade läuft.
Das gilt auch, wenn KCNet in der Emulation anders konfiguriert
sein sollte.
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:
-
Starten Sie die Eingabeaufforderung, indem Sie in der Windows-Suche
cmd.exe eingeben.
-
Tippen Sie in der Eingabeaufforderung ipconfig /all ein
und drücken Enter.
-
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.
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.
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.