[ Zu JKCEMU ]
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 ein spezielles Programm,
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 das spezielle Konfigurationsprogramm nicht 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 DOS-Box, indem Sie in der Windows-Suche
cmd.exe eingeben.
-
Tippen Sie in der DOS-Box ipconfig /all ein
und drücken Enter.
-
Suchen Sie in der DOS-Box 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.
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.
© 2012 Jens Müller