Morsen über das Internet?

Transcrição

Morsen über das Internet?
53. UKW-Tagung Weinheim
Morsen über das Internet?
Dipl.-Ing. Erich H. Franke, DK6II
[email protected]
In diesem Beitrag werden wir uns Echtzeit-Übertragungsprotokolle im Internet und den technischen Hintergrund im Blick auf eine eher ungewöhnliche Applikation anschauen. Der tiefere Sinn? Nun, ich denke,
dass moderne Technik ruhig auch einmal sinnfrei sein kann, so wie manches mit dem wir uns in unserer
Freizeit beschäftigen. Ein Reiter beispielsweise denkt gemeinhin nicht darüber nach, dass Pferde heutzutage als Verkehrsmittel nur noch eine geringe Bedeutung haben. Kaum ein Musiker würde sein handbespieltes Instrument gegen einen MP3-Player eintauschen und Funkamateure fahren im Zeitalter von Internet und Mobiltelefonen noch immer mit Begeisterung QSO in Morsetelegraphie, obgleich letztere im kommerziellen Funkverkehr gar nicht mehr angewandt wird. Deshalb lassen Sie uns hier über ein Thema
sprechen, ohne die Spock’sche Logik über Gebühr zu strapazieren.
Königsbach-Stein, im Juli 2008
Motivation
Eigentlich wurden die Grundlagen zu diesem Beitrag schon vor ungefähr acht Jahre gelegt. Da saßen
DL1KHD, DL2FCQ, meine XYL DF6IV und ich am Rand einer Party zusammen und diskutierten zu
vorgerückter Stunde eher unernst über „over-IP“-Dienste, sinnvolle und exotische. Ich weiß leider nicht
mehr, wer letztendlich auf die Idee kam, Morsezeichen über das Internet zu übertragen und damit –
wer weiß - dem Amateurfunk vielleicht einen kleinen Schub zu versetzen. Wie gesagt, an ernster Forschung war zu diesem Zeitpunkt keinem von uns gelegen.
Doch selbst im grauen Licht des darauffolgenden Tags blieb die Idee prinzipiell umsetzbar. Selbst
sinnvolle Anwendungen in der Tastfunkausbildung, in der Jugendarbeit und der Einsatz auf Veranstaltungen schienen denkbar. Also ging ich mit niederer Priorität an die Umsetzung. Seit 2002 sind Server
im Internet „QRV“ und werden sogar dann und wann benutzt.
Lassen Sie uns einmal anschauen, was es mit den Details auf sich hat.
Die Mathematik der Morsezeichen
„Morsezeichen sind aus nur wenigen rhythmischen Zeichenelementen aufgebaut, den kurzen Grundelementen (dit) und den drei Mal so langen (dah) sowie den dazu gehörenden Abständen…“
So ähnlich erklärte die Stimme der unbekannten Sprecherin zu Beginn des „Morsekursus des Deutschen Amateur Radio Clubs“, dessen Schallplatten- und Kassettenversion zahlreichen Funkamateuren geholfen hat, die damals noch notwendige Morseprüfung zu bestehen [MKURS].
Für alle diejenigen unter Ihnen, welche des Morsens nicht mächtig sind, hierzu eine kurze Erklärung:
Normalbürger sagen, Morsezeichen bestünden aus Punkten und Strichen. Insider hingegen sprechen
von den „(dit)“ und den „(dah)“.
Die Übertragung der Morsezeichen selbst beruht auf einem festen Zeitraster.
Buchstabe
Codierung
Anzahl Elemente
gesamt
E
1
1
T
3
3
N
3+1+1
5
Y
3+1+1+1+3+1+3
13
Der „Punkt“, also das „(dit)“ hat dabei die
(Norm)-Länge eins. Der „Strich“, „(dah)“
genannt, erstreckt sich über drei Normlängen.
Anders als beispielsweise ASCII besitzt
der Morsecode Codewörter mit variabler
Länge.
Codes variabler Länge kennen wir aus dem Alltag. Beispielsweise wir der Hufman-Code bei der FaxÜbertragung angewandt. Ein anderer prominenter Vertreter ist der UTF-8-Code für internationale Zeichensätze.
Der Trick bei diesen Codes besteht nun darin, häufig auftretende Codewörter mit kurzen Codes zu
belegen, seltenere hingegen mit längeren. Überträgt man so einen Text mit der passenden Statistik,
so kann man gegenüber festen Codewortlängen Zeit sparen.
In unserem Fall hatten die Erfinder englischsprachige Telegrammtexte analysiert, deren Buchstaben
nach der relativen Häufigkeit ihres Auftretens sortiert und daraus die Zeichencodes festgelegt.
E
I
N
T
E
S
T
10001010001110100000001110001000101010001110000000
= Elementabstand
= Taste gedrückt (Ton)
= Zeichenabstand
= Taste losgelassen
= Wortabstand
Der Buchstabe „E“ besteht demnach
lediglich aus einem kurzen Element (dit).
Ein „T“ hingegen aus einem drei Elementlängen umfassenden (dah). Bei
einem „N“ wird ein (dah) von einem (dit)
gefolgt.
Die beiden Grundelemente trennt der so
genannte „Elementabstand“ der Länge
eins.
Zum nächsten Buchstaben wird eine Pause von drei Elementlängen eingeführt. Diese nennt man –
wie könnte es anders sein - Zeichenabstand. Worte untereinander werden durch den sieben Elementlängen umfassenden Wortabstand getrennt.
Die Morse-Geschwindigkeit misst man ein Europa in „Buchstaben pro Minute“ (BpM). In den U.S.A.
und anderen Ländern gibt man den Wert gerne in „Wörter pro Minute“ (WpM) an.
Doch wie soll man diese Übertragungsrate in der Praxis denn messen? Wie man sofort erkennen
kann, würde die Übertragung einer Folge von „Y“ rund dreizehn Mal länger dauern als eine Folge von
„E“ gleicher Anzahl!
Um dieses Problem zu lösen wurde das Normwort „PARIS“ festgelegt. Es besteht aus exakt 50 Elementen. Probieren Sie es ruhig einmal aus1.
Also gut: Mit 50 Elementen verteilt auf 5 Buchstaben erhält man im Schnitt 10 Elemente pro Buchstaben.
Bei einer Rate von 60 BpM, also 60 Buchstaben pro Minute sind das 600 Elemente pro Minute oder
10 Elemente pro Sekunde. Jedes Element hat demnach eine Länge von 100 msec.
Programmiertechnisch gesprochen können wir die Zeit für ein Element in Millisekunden aus der Rate
in BpM mit folgender einfacher Beziehung ermitteln: t EL
6000
. Bei 60 BpM erhalten wir 100 msec.
R
Echte CW-Hardliner, die 300 BpM hören, müssen demnach mit Elementlängen von 20 msec auskommen. Das ist praktisch Fernschreibgeschwindigkeit!
Handschriftliches
Ein wichtiger Unterschied zwischen der Morseübertragung und Computer-Computer-Kommunikation
ist, dass Morsen für Menschen gemacht ist.
Die Grundidee ist, Morsen wie eine neue Sprache zu lernen. Auch das wird in der Literatur [DJ2PJ]
und in Kursen oft gelehrt.
Betätigt ein Mensch eine Hand-Morsetaste, so wird er im Alltag das ideale Tastverhältnis zwischen
(dit) und (dah) von 1:3 nicht sklavisch einhalten wollen und können. Wie ein Musiker, der den Rhythmus variiert, wird ein Operator die Zeichen und Pausen nach seinem individuellen Befinden unbewusst geringfügig abändern.
Es ist sogar so, dass diese Variationen von Person zu Person unterschiedlich ausfallen. Geübte Hörer
können sogar unterschiedliche Sendestationen an dieser subtilen Normabweichungen, also ihrer
„Handschrift“, erkennen und unterscheiden. In der elektronischen Aufklärung (EloKa) spricht man vom
„Fingerprinting“, das helfen kann, Funknetze zu identifizieren.
In unserer Aufgabe Morsezeichen über Internet zu übertragen wollen wir diese wertvolle und interessante Eigenschaft beibehalten.
Dazu müssen wir eigentlich nur die Zeitdauer messen, für die die Morsetaste am Sender gedrückt ist,
also der Ton hörbar ist bzw. die Zeit, in der sie losgelassen ist, also die Pausenzeit.
Zeichnen wir diese beiden Zeiten in der Art eines Oszillographen auf, so erhalten wir ein Streifenmuster, welches den Zustand der Morsetaste über die Zeit darstellt.
1
Falls Sie auf einen anderen Wert kommen, so haben Sie vermutlich den Wortabstand vergessen, der gedanklich an das Ende
des Worts gehört.
Die durchgezogene Linie charakterisiert den Ton bei gedrückter Taste. Dort wo keine Linie gezeichnet
wird, ist die Taste in Ruhestellung.
Mit einer Handtaste gegebener Morsetext auf Streifenschreiber mit ca. 67 BpM. Zeitachse in Sekunden.
Solche Diagramme werden im Übrigen in der Tastfunkausbildung benutzt, um die „Qualität“ der gegebenen Zeichen zu bestimmen. Diese ist umso höher, je besser es dem Sendenden gelingt, das ideale
Verhältnis 1:3 einzuhalten.
Die Handschrift steckt in der Variation der Zeit. Also müssen wir lediglich die Zeitdauer von Ton und
Pause übertragen, dann können wir die Handschrift auch dann noch erkennen, wenn wir die Morsezeichen über das Internet übertragen haben.
Funktypisches
Funkamateure besitzen ein heute schier unglaubliches Privileg, nämlich sich die Betriebsfrequenz auf
der die Übertragung stattfinden soll, in den zugewiesenen Frequenzbändern selbst auszuwählen. Für
die klassischen Betriebsarten SSB und CW und auf Kurzwelle gilt zudem kein „Raster“, es gibt keine
„Kanäle“ auf denen sie Senden müssten.
Die Frequenzabstimmung erfolgt kontinuierlich bzw. in sehr feinen Schritten mit in der Praxis vernachlässigbarer Stufung.
Je moderner die Übertragungsverfahren sind, umso mehr wird der Bediener von der physikalischen
Schicht – dem Funkkanal – entkoppelt. D-Star beispielsweise ist bereits eher verwandt mit Betriebsarten des kommerziellen und militärischen Funks. In modernen Geräten sitzen zwischen Funkkanal und
Bediener Komponenten der digitalen Signalverarbeitung.
Da die Telegraphieübertragung noch zum funktechnischen Urgestein gehört, haben wir hier im Wesentlichen lediglich einen analogen Mischer, der das HF-Signal in den hörbaren Bereich linear heruntermischt.
„Nähert“ man sich mit einem solchen Überlagerungsempfänger einem Telegraphiesignal, so wird man
ein mehr oder weniger hohes Überlagerungspfeifen hören. Es entsteht – ganz grob gesprochen - aus
der Differenz des HF-Signals mit dem VFO des Empfängers. Würde man den Oszillator genau auf die
Empfangsfrequenz abstimmen, so wäre die Differenz null. Je weiter der Abstand, desto höher der
Betrag der (Differenz-)Frequenz. In der Praxis stellt man eine Differenz von ca. 600 Hz ein. Dort hat
das menschliche Ohr eine gute Empfindlichkeit. Wie gesagt: Morsen ist etwas für Menschen.
Es gibt noch einen Effekt, welcher durch das Filter im Empfangszweig hervorgerufen wird. Morsezeichen belegen aufgrund der geringen Modulationsfrequenz2 eine geringe Bandbreite von, sagen wir
einmal 500Hz. Sprachübertragung erfordert hingegen Bandbreiten von ca. 3 KHz.
Kurzwellenempfänger besitzen daher – häufig auch umschaltbare – Filter, mit deren Hilfe Störsignale,
welche in der Frequenz weiter entfernt liegen, gedämpft und unterdrückt werden.
Beim Abstimmen erscheinen Signale also erst leise, wenn sie sich am Rand des Empfängerfilters
befinden und werden in Filtermitte am lautesten.
Insgesamt wäre es doch schön und erstrebenswert, wenn diese „analogen“ Eigenschaften auch bei
Morseübertragung im Internet erhalten blieben.
Nachrichten aus dem Internet
Die Übertragung von Daten im Internet gehört heutzutage bereits fast zur ingenieurmäßigen Allgemeinbildung.
Lassen Sie uns trotzdem kurz die wesentlichen Eckpunkte rekapitulieren:
Unter dem Sammelbegriff „Internet Protocol“ (IP) sind eine ganze Reihe von Übertragungsvorschriften
zusammengefasst, die letztendlich die Kommunikation im Netz sicherstellen. Eine Reihe davon steu2
Diese ist abhängig von der Morse-Geschwindigkeit. Jedoch existieren nicht vernachlässigbare Frequenzanteile durch die
Anstiegszeit bei der Tastung des Trägersignals.
ern untergeordnete Eigenschaften und dienen der Verwaltung, beispielsweise der Teilnehmeradressen.
Zu diesen untergeordneten Protokollen gehört beispielsweise das IMCP (Internet Management
Control Protocol), zu dem das bekannte PING gehört.
In die Klasse der Datenübertragungsprotokolle gehören UDP und TCP.
Jeder Teilnehmer im Internet benötigt eine eindeutige Adresse, die so genannte IP-Adresse. Sie besteht momentan aus vier 8-Bit-Zahlen, welche durch Punkte getrennt sind. Dies wäre das Adressierungsschema der Version 4 (IP v4).
Hiermit sind (256)4 unterschiedliche Adressen zu formen, eine Zahl, welche groß erscheint, heutzutage jedoch nicht mehr ausreicht. Daher wird Zug um Zug das Internet auf die Adressierung der Version
6 (IP v6) umgestellt, bei der vier 16-Bit-Felder und damit (65536)4 Adressen möglich sind.
Ein Trick bei IP v4 ist es, innerhalb geschlossener Netze „private“ Adressen zu verwenden, beispielsweise den Block 192.168.XXX.XXX. Diese können, beispielsweise innerhalb von Firmennetzen, mehrfach verwendet werden [IPADR]. Nur im „öffentlichen“ Internet müssen die Adressen fest zugeordnet
sein. Teilnehmer mit „privaten“ Adressen werden in den „Gateways“ temporär auf feste Adressen umgesetzt. Nur dadurch funktioniert das Internet heute überhaupt noch, sonst wären IP v4-Adressen
schon längst nicht mehr verfügbar!
Neben der Adresse gibt es noch eine 16-Bit umfassende Port-Nummer. Diese implementiert logische
Kanäle, welche von der gleichen IP-Adresse genutzt werden können.
Das „User Datagram Protocol“ ist sehr einfach zu implementieren und zu verstehen. Hier wird ein
Datensatz quasi en bloc von der Quelle zur Senke übertragen. Der Nutzdatenblock bleibt im Regelfall
immer zusammen. Allerdings besteht keinerlei Garantie dass der Block auch wirklich ankommt.
Schlimmer noch: Es könnte sein, dass der Block versehentlich gleich zwei Mal ankommt.
Sendet man zwei Blöcke hintereinander ab, so könnten sich die beiden sogar überholen, so dass der
zweite Block vor dem ersten eintrifft. Nichts ist hier unmöglich…!
UDP hat überall dort seine Bedeutung, wo übergeordnete Systemanteile dafür sorgen, dass die Datenintegrität trotz dieser scheinbaren Einschränkungen sichergestellt wird.
Auch können UDP Datagramme übertragen werden, ohne dass zuvor eine logische Verbindung zwischen Quelle und Senke hergestellt wird. Die Angabe der IP-Adresse und des Ports genügen. Man
spricht daher auch von einer „verbindungslosen“ Übertragung.
Im Gegensatz dazu ist das „Transmission Control Protocol“ (TCP) verbindungsorientiert. Vor der eigentlichen Datenübertragung wird eine logische Verbindung zwischen Quelle und Senke aufgebaut
(„connect“). Diese Verbindung wird für die Dauer der Verbindung („session“) beibehalten und zum
Schluss wieder ausgelöst („disconnect“). Der Aufwand zur Steuerung der Verbindung, also der „Protocol Overhead“, ist nicht ganz unerheblich.
Dafür verhält sich eine TCP-Verbindung im Betrieb wie ein Stück Draht. Jedes Stückchen an Information, welches man auf der Quellenseite in den logischen Kanal steckt, kommt in der gleichen Reihenfolge an der Senke wieder heraus. TCP setzt also nicht wie UDP auf Datagrammen (Datenblöcken)
auf, sondern ist eher mit einer Fernschreibverbindung zu vergleichen. Die Daten werden Byte für Byte
übertragen. Der Kanal ist automatisch bidirektional, das heißt, er verhält sich wie eine VollduplexVerbindung.
Die Verbindung wird dabei völlig selbständig gehalten. Übertragungsprobleme werden durch Wiederholungen unsichtbar für den Nutzer ausgeführt. Dies bedeutet, dass gesendete Daten bei der Senke
unter allen Umständen ankommen, es sei denn, die Verbindung bricht dauerhaft zusammen. Doch
selbst dann erhält die Quelle darüber Nachricht.
TCP und UDP sind aus der Datenübertragung nicht mehr wegzudenken. Jede UNIX-Implementierung,
jedes WINDOWS sowie zahlreiche Betriebssysteme für Echtzeit- und „Embedded“-Anwendungen
implementieren diese Netzwerk-Protokolle. Diese sind durch Schnittstellen häufig sehr einfach anzusprechen, so dass die Implementierungsdetails auf der Betriebssystemsschicht bzw. im so genannten
Protokoll-Stapel („Protocol Stack“) gekapselt sind und dem Programmierer kein Detailwissen abverlangt!
Eine Frage des Protokolls
Bei der Definition der Morseübertragung hatte ich auf TCP gesetzt, da mir dies zum damaligen Zeitpunkt einfacher erschien. Doch auch UDP hätte wegen des deutlich geringeren Overheads seinen
Charme gehabt.
Eigenschaft
UDP
TCP
„Framing“
Ist bereits rahmenorientiert und benötigt daher
keine Rahmensynchronisation.
Ist „zeichenorientiert“ und benötigt daher eine Rahmensynchronisation.
Integrität
Benötigt Maßnahmen zum Schutz der Datenintegrität
Datenintegrität durch Protokoll gewährleistet
Laufzeit
Erzielt vergleichsweise kurze Laufzeiten, da
deutlich geringerer Overhead.
Durchlaufzeiten durch das System länger und bei
schlechten Verbindungen wegen der inherenten
Datenwiederholung eher undefiniert.
In der täglichen Praxis, vor allem innerhalb eines Netzes in einem Gebäude ist die Datenintegrität
gewöhnlich exzellent. In diesem Fall ist zeigt sich auch das TCP in seinem Zeitverhalten von seiner
besten Seite.
Jedoch implementiert TCP aus Sicht des Nutzers einen kontinuierlichen Datenstrom, vergleichbar
einer seriellen Schnittstelle. Es gibt auf Anwenderebene keine erkennbare Blockung, obgleich auf den
tieferen Schichten selbstverständlich Daten als Datagramme – mithin geblockt – transportiert werden.
Dies gibt, wie wir gleich sehen werden, beim Zeitverhalten ein paar unschöne Nebeneffekte.
FRM
DATEN (optional)
CHK
FRM
FRM: Rahmen-Begrenzungszeichen
CHK: Prüfinformation
Doch erst einmal müssen wir als Programmierer
alt bekannte Tricks anwenden und eine eigene
Rahmenstruktur schaffen. Das ist normalerweise
nicht weiter schwer.
Man führt sogenannte Rahmen-Begrenzungszeichen ein. Der Empfänger wartet einfach auf das Begrenzungszeichen, übernimmt die Daten und hört am Begrenzungszeichen am Ende des Blocks wieder auf. Folgen Blöcke unmittelbar aufeinander, so genügt in manchen Fällen auch nur ein derartiges
Begrenzungszeichen.
Das Problem ist meistens, dass die Begrenzungszeichen nicht durch Daten innerhalb des Blocks imitiert werden dürfen. Sonst kommt der Empfänger durcheinander.
Man kann dieses Problem auf zwei Arten lösen:
a) Man sorgt durch Einfügen von Erweiterungszeichen („Escape“) oder –Bits dafür, dass alle zufällig im Datenblock vorkommenden Begrenzungszeichen so verändert werden, dass sie nicht
mehr stören.
Beispiele hierfür sind die ESC-Folgen im Point-to-Point Protocol (PPP) und die Zero-BitInsertion im HDLC-Protokoll.
b) Man wählt die Codierung des Datenblocks so, dass die Begrenzungszeichen codefremd sind.
Ein sehr simples Beispiel hierfür ist der „Wagenrücklauf“ (Carriage Return, CR) im Fernschreiben. Dieser Code bildet ein nicht-druckbares „Steuerzeichen“ das weder zu Buchstaben
noch zu Ziffern oder Satzzeichen gehört. Die Datenblöcke, d.h. die Zeilen sind durch CR voneinander getrennt.
Ich gebe zu, letzteres Beispiel klingt etwas weit hergeholt, ist aber völlig zutreffend. Es ist simpel, extrem leicht zu implementieren und zu verstehen. Deswegen habe ich mich für einen ähnlichen Ansatz
entschieden.
Es gibt bei der Blockung jedoch noch eine Kleinigkeit zu beachten: Gewöhnlich fügt man den Daten
eine Prüfinformation hinzu. Diese dient zur Versicherung, dass der Dateninhalt korrekt ist und zeigt
damit gleichzeitig auch an, dass die Rahmenerkennung korrekt verlaufen ist.
Dieses Vorgehen wird gerne auf allen Ebenen der Datenübertragung angewandt und ist generell anzustreben. Für die Versuche mit der CW-Übertragung hatte ich allerdings eher Occams Grundsatz der
Einfachheit und weniger Murphys Gesetz beachtet.
Da wir als unterliegendes Protokoll TCP benutzen werden Datenverfälschungen bereits durch die
tiefere Protokollebene verhindert, bzw. sind als unwahrscheinlich zu betrachten. Auch Verfälschungen
durch „Character Insertion“ oder „-Deletion“ können in erster Nährung ausgeschlossen werden.
Der Faktor Zeit
Ein Wort noch zur möglichen Blocklänge.
Je länger wir die Datenblöcke wählen, desto „effizienter“ wird die Übertragung, denn TCP wird versuchen, diese in einem Rutsch auszusenden. Obgleich TCP an der Oberfläche „datenstrom-orientiert“
ist, tickt im Untergrund eine Maschine, welche den Datenstrom wiederum in Pakete zerhackt, da das
Internet eben nur paketorientierte Übertragungen zulässt.
TCP wird daher immer „ein wenig“ warten, ob vom Datenstrom noch Nutzdaten kommen, bis es den
Block abschließt und losschickt.
Im Ernstfall könnte solch ein Paket auf der untersten Ebene nur ein einziges Nutzbyte enthalten, umrahmt von Adressierungs- und Steuerinformation. Das ist zwar nicht effizient, jedoch manchmal unvermeidlich.
Letztendlich wollen wir ja eine „quasi-Echtzeit“-Übertragung erreichen, und da wir nicht wissen wie der
menschliche Benutzer seine Morsetaste betätigt, müssen wir mit diesem Effekt eben leben.
Die Wartezeit ist systemabhängig und gemeinhin sehr kurz.
Das kommt uns entgegen, denn wenn wir einen bk-Betrieb3 simulieren wollen, so würden lange Speicherzeiten stören.
In der Telephonie kennen wir den „Apollo-Effekt“. Durch die Laufzeit der Funksignale zum Mond von
ca. 1,3 Sekunden ist Gegensprechen in Duplex praktisch nicht mehr möglich. Daher hatte die NASA
seinerzeit den „Roger-Pip“ eingeführt um die QSO-Führung im Wechselsprechen zu vereinfachen.
Selbst hier auf der Erde macht sich die begrenzte Ausbreitungsgeschwindigkeit bei Ferngesprächen
über Satellit bemerkbar. Selbst Laufzeiten von 200 ms stören den Gesprächsfluss bereits erheblich.
Bei „Voice-over-IP“ (VoIP) ist es nicht die Signallaufzeit, sondern wie in unserem Fall die „Speicherzeit“ welche durch die paketorientierte Übertragung zwingend auftritt.
Infrastruktur
Die vorliegende Implementierung geht von einer Client-Server-Struktur aus, bei der die „Clients“ die
Teilnehmer darstellen. Der Server im Internet simuliert so etwas Ähnliches wie den Funkkanal.
Der Betriebsablauf stellt sich recht einfach dar: Will ein Teilnehmer sich an einem QSO beteiligen, so
verbindet er sich über TCP mit dem Server. Dadurch entsteht eine logische Zwei-Wege-Verbindung
zwischen dem Server und dem Client.
Nun übermittelt der Client dem Server ein paar Daten zur Verwaltung: Den Namen oder das Rufzeichen des Teilnehmers und die „Frequenz“ auf der man senden möchte.
TEILTEILNEHMNER
TEILNEHMNER
TEILNEHMNER
NEHMNER
SERVER
Erstere Angabe dient ein Wenig der Höflichkeit
und der Statistik. Der Name wird im QSO nicht
verwendet. Romantiker brauchen sich diese
Information von ihrem Client-Programm also
nicht anzeigen lassen und können, wie im der
funktechnischen Alltag, auf den Inhalt der Morsesendung hören.
Die „Frequenz“ ist einfach ein Zahlenwert, den der Server sich merkt.
Liegen diese simulierte Sendefrequenz einer Station „in der Nähe“ der – ebenfalls simulierten - Empfangsfrequenz einer anderen, so wird der Server die Ton/Pause-Zeiten an den Empfänger weiterleiten.
Dazu wird die Differenzfrequenz errechnet und auf Empfangsseite mit einem „Filter“ bewertet. Wäre
diese Differenzfrequenz hörbar, so gibt die Software die Töne in der passenden Tonhöhe frei. Liegen
die Frequenzen jedoch weiter auseinander, so hört man eben nichts. Ich habe zur Demonstration
probehalber eine Lautstärkeabhängigkeit als Funktion der Differenzfrequenz ausprobiert um ein Empfangsfilter zu simulieren. Das hörte sich recht ordentlich an.
Ruft also eine Station auf einer simulierten Frequenz CQ, so kann ein Empfänger „über das Band“
drehen, bis er eine passende Station hört. Jede Veränderung der Betriebsfrequenz muss dem Server
gemeldet werden, so dass dieser entscheiden kann, ob ein anderer das Signal hören kann oder nicht.
3
bk (break). In dieser Betriebsart wird häufig die Übertragungsrichtung gewechselt, ähnlich wie in einem lebhaften Gespräch.
Sind mehrere Teilnehmer am Server angemeldet, so wird der Server die Daten einfach an alle Teilnehmer weiterleiten, die sich zu dem gegebenen Zeitpunkt hören können. Unter LINUX können selbst
einfache Rechner eine große Anzahl derartiger Weiterleitungen völlig problemlos abhandeln.
In unserer Implementierung wird der Server eine Reihe von Verbindungen erlauben, danach den Verbindungswunsch ablehnen
Codierungsfragen
Wie bereits gesagt: Das Verfahren ist bereits recht alt, hat sich aber in der Praxis bewährt, mögen
Telegrammaufbau und Codierung dem einen oder andren auch ein Wenig exotisch erscheinen.
Telegrammstruktur
Alle Telegramme haben folgende prinzipielle Struktur.
CC
CC:
CHK:
BS:
U
DATA
BS
Command Code
User Address
Block Separator
CC steht hierbei für ein aus zwei alphanumerischen Zeichen bestehendes Befehlskürzel. Das erste
dieser Zeichen muss als Großbuchstabe aus dem 7-bit-ASCII-Zeichensatz stammen. Das zweite kann
aus einem Großbuchstaben oder einer Ziffer bestehen. Satzzeichen, nicht druckbare Zeichen oder
Zeichen mit Codierung >127 sind nicht zulässig und führen zum Verwerfen des Telegramms.
Der Server ignoriert alle Telegramme, deren Codierung er nicht kennt. Eine Fehlermeldung erfolgt
nicht. Ein Client sollte ebenfalls so handeln.
U kennzeichnet eine aus einem Zeichen bestehende Benutzeradresse im komprimierten Datenformat
zur Basis 80d (siehe unten!). Dieses wird später näher erläutert. Codefremde Zeichen sind nicht zulässig und führen dazu, dass das Telegramm verworfen wird.
Die Adresse 0 kennzeichnet den Server selbst.
Adresse 1d..79d kennzeichnet einen der am Server angemeldeten Benutzer.
Der Server vergibt diese Adressen selbsttätig. Ein Benutzerprogramm kann die Adressvergabe nicht
steuern. Die Adressen sind während einer gesamten Session konstant. Nach einem Disconnect und
einem späteren erneuten Connect kann der Client eine andere Adresse erhalten.
Das Feld DATA hat eine je nach Befehl variable Länge und kann in Einzelfällen auch ganz entfallen.
Das Datenfeld darf beliebige Zeichen aus dem Vorrat 0x20 >= c >= 0xFF, sowie 0x09 (Tab) enthalten.
Letzteres Zeichen kann bedarfsweise als Feldtrennzeichen dienen. Die Länge des Datenfeldes darf
250 Zeichen nicht überschreiten. Andernfalls wird das Telegramm verworfen.
Diese Begrenzung wurde willkürlich gewählt. Wie wir gleich sehen würde ein Block mit einer Länge
von 250 Byte bereits vier durchschnittliche Fünfergruppen fassen. Das ist bereits das praktisch Limit
für die Durchlaufverzögerung des Systems („Apollo-Effekt“). Die Limitierung dient auch dazu, den
Programmierern von „embedded systems“ das Leben zu erleichtern.
TCP, als datenstrom-orientiertes Protokoll kennt eine derartige Begrenzung nicht. Eventuelle Blockungen auf der Übertragungsstrecke werden durch die so genannte Fragmentierung abgehandelt.
Aus Gründen der Sicherheit gegen Angriffe sollten sowohl auf Server- als auch auf Client-Seite Blockgrenzen sorgfältig überprüft werden.
Jedes Telegramm wird durch den Rahmenbegrenzer BS abgeschlossen. Hierzu dient das newlineZeichen (0x0A, line feed).
Codierung numerischer Werte
Numerische Werte, wie z.B. die Benutzeradresse oder die Ton- und Pauseninformation werden komprimiert als druckbare Zeichen übertragen.
Verwendet wird ein Zahlensystem zur Basis 80 (dezimal), das auf die ASCII-Zeichen 0x21 (‚!‘) bis
0x71 (‚p‘) abgebildet wird. Dem Zeichen ‚!‘ ist hierbei die 0d, dem Zeichen ‚p‘ die 79d zugeordnet. Aus
diesem Zahlensystem können, wie sollte es auch anders sein mit n Stellen 80n unterschiedliche Werte
codiert werden.
Zur Anwendung kommt „big endian“, d. h. die Dezimalzahl 123 würde in die Stellen 801 + 43 zerlegt
und „high digit first“ mit den ‚Ziffernfolge’ 0x22 0x4C bzw. “ L dargestellt.
In vorliegendem Protokoll besitzen derartige „Zahlen“ meist eine implizite, feste Länge von zwei oder
drei Stellen.
Die ASCII-Codes von Leerzeichen, Steuercodes und Sonderzeichen 0x20 sowie ASCIIZeichencodes 0x72 größer gelten als codefremd. Wie gesagt, das mutet exotisch an, ist jedoch sehr
praktisch, da das Rahmen-Begrenzungszeichen 0x0A (oder newline) in den Nutzdaten nicht vorkommen kann uns keine Maßnahmen zur Verhinderung von Imitationen getroffen werden müssen.
Frequenzinformationen
Die Angabe einer Betriebsfrequenz erfolgt in Hertz relativ zum ‚Bandanfang‘. Die niederste Frequenz
ist also 0.0 kHz. Die Frequenzangabe wird als numerischer Wert codiert. Eine Frequenzinformation
besteht aus drei Zeichen. Der Bereich beträgt somit ! ! ! für den Bandanfang 0 kHz, sowie 15d
49d 79d , also 0x30 0x52 0x70 bzw. 0 Z p für die - willkürlich gewählte – Frequenz 99,999 kHz.
Dem größtmöglichen dreistellig codierten Wert p p p ist der dezimale Zahlenwert 511999d zugeordnet. Unser „Frequenzband“ ist also ein wenig mehr als 500 kHz breit und ist dabei frei von QRM, was
jedem Freund der Telegraphie das Herz höher schlagen lässt.
Ton/Pause-Paare
Die Morseelemente werden in Form von „Ton-Pause-Paaren“ in Form zweier aufeinanderfolgender
Zahlenwerte codiert. Das erste Element enthält dabei die Zeit in Millisekunden, in der ein Ton ausgegeben werden soll. Es definiert also die Zeit, in der auf der Sendeseite die Morsetaste gedrückt gehalten wurde.
Der zweite Wert ist die auf den Ton folgende Pause, ebenfalls in Millisekunden.
Die Werte werden als numerische Werte codiert, wobei jedes Element (Ton oder Pause) mit zwei
Zeichen codiert wird. Ein ganzes Ton/Pause-Paar ist demnach vier ASCII-Zeichen lang.
Töne bzw. Pausen sind können also zwischen Null (Codewort ! ! ) und dem codierten Wert p p ,
also dem dezimalen Zahlenwert 6399d Millisekunden lang sein. Der Wertebereich ist mehr als ausreichend und würde sogar die Codierung exotischer 1BpM erlauben.
Hier gibt es zwei Dinge zu beachten:
Ein Datenblock muss zwingend mit einem Pausencode enden. Ggf. wird der Empfangsprozess diesen
„synthetisch“ einfügen, damit bei Übertragungsstörungen der Ton auch wirklich abgeschaltet wird.
Bei Pausen, die länger als 6,4 Sekunden dauern wird einfach kein neues Ton-Pause-Paar nachgesendet. Bleibt die Morsetaste unbenutzt, so wird der Sender einfach keine neuen Daten senden.
Bricht die TCP-Verbindung also zusammen, so kommen einfach keine neuen Morsezeichen mehr an
– genau wie im täglichen Leben.
Es ist zulässig, Ton- und Pausenlängen mit dem Wert Null zu senden. Eine Pause der Länge Null
unterbricht den Ton einfach nicht. Er wird einfach mit einem Ton der Länge des folgenden TonPausen-Paars weiter geführt. Für Pausen gilt dies sinngemäß, jedoch ist das Verfahren nach (2) die
bevorzugte Implementierung.
Telegrammtypen
Der Befehlscode (CC) besteht aus zwei alphanumerischen Zeichen, die die Art der folgenden Daten
beschreiben. Wieder wurde eine sehr einfache Codierung gewählt.
Die Bedeutung der Codes erschließt sich später bei der Beschreibung des Betriebsablaufs.
Mnemonic
Befehl
Richtung
Bedeutung
UC
User Clear
S -> C
Löscht auf dem Rechner des Teilnehmers (Client) die gesamt Liste, in der die auf
dem Server angemeldeten Benutzer (User List) gespiegelt sind.
Kommt in der Regel als Antwort auf US und wird normalerweise durch eine Reihe
von UA-Telegrammen gefolgt.
UD
User Delete
S –> C
Meldet dem Rechner des Teilnehmers, dass sich der bezeichnete Benutzer vom
Server abgemeldet hat
UX
User Reject
S -> C
Der Server kann keine weiteren Clients akzeptieren
US
Get Serverside User
List
C -> S
Veranlasst den Server, dem Client die Liste der momentan angemeldeten Benutzer
zu senden.
Freundlicherweise sendet der Server zunächst ein UC um beim Client die Liste zu
löschen.
Danach folgen eine Reihe aufeinanderfolgender UA-Telegramme, um die momentan
am Server bekannten Teilnehmer beim Client anzumelden.
UA
User Add
beide
Der Client meldet seine Daten mit diesem Telegramm dem Server.
Der Server meldet dem Client, dass ein neuer Benutzer auf dem Server hinzugekommen ist oder dass sich die Daten eines Benutzers auf dem Server geändert
haben.
Der Server sendet dieses Telegramm als Antwort auf die Frage US, bzw. auf ein UA
eines anderen Clients.
FC
Frequency
Change
beide
Der Client informiert den Server über die Veränderung der ‚Betriebsfrequenz‘.
Der Server spiegelt diese Meldung an alle angemeldeten Benutzer zurück.
TP
Tone/Pause
Beide
Der Client schickt einen String mit den Zeiten für Töne und Pausen.
Der Server leitet diese an alle anderen Clients ‚auf dieser Frequenz‘ weiter.
User Code
Der der User Code (U) identifiziert den Benutzer. Der Server kann eine bestimmte Anzahl von Benutzern verwalten, die in der Folge auf dem simulierten Frequenzband zu hören sind. Für den Test habe
ich die Zahl auf MAXUSER gelegt (s. u.).
Jedem Benutzer wird beim Verbindungsaufbau ein Platz in der „Benutzerliste“ zugewiesen, den er so
lange behält, wie er eingebucht ist. Ein Client sollte diesen Listenplatz daher nicht anzeigen, sondern
nur den „Nick-Name“ des Benutzers. Dieser Name, Rufzeichen usw. dient der unverbindlichen Anzeige. Eine Authentisierung ist nicht vorgesehen.
Usercode 0 (Null) kennzeichnet den Server, User Codes 1 bis MAXUSER kennzeichnet die „Listenplätze“ der User auf dem Server.
Betriebsablauf
Will ein Teilnehmer auf einem simulierten Frequenzband teilnehmen, so meldet er sich mit einem
TCP-Connect an dem entsprechenden Server an.
Dieser Verbindungsaufbau besitzt keinerlei Besonderheiten. Hierdurch wird der Stream installiert.
Nach erfolgtem Verbindungsaufbau sollte der neu eingetretene Benutzer gleich zwei Telegramme
senden: Die Detaildefinitionen stehen im Anhang.
1) „User-Add“ (UA) mit einem provisorischen Usercode 1. Der Server ignoriert den User-Code
und weist dem Benutzer einen Platz in der Liste zu.
Sollte der Server bereits die größtmögliche Zahl an Benutzern unter Arbeit haben, so weist er
den Wunsch mit einem „User Reject“ (UX) ab.
Parameter: Der User-Type wird auf UT_USER gesetzt, Frequency und Nickname können
nach Belieben innerhalb der Grenzen gewählt werden.
2) „Get Server-side User List“ (US), ebenfalls mit dem provisorischen Usercode 1. Der Server
gibt nun die Liste allen bereits eingeloggten Users aus.
Genauer gesagt, er sendet erst ein „User Clear“ (UC), gefolgt von einer Reihe aufeinanderfolgender „User Add“ (UA) Telegrammen.
Die Idee dahinter ist, dass es eigentlich gar kein Protokoll gibt. Der Client reagiert einfach auf
UC und UA und muss nicht an irgendeine Vorgeschichte denken. Simple logic is the best4.
In der Server-Liste tauchen nun alle Objekte auf, die sich in dem Frequenzband tummeln können: Bakensender, andere Benutzer und natürlich auch der Neuankömmling selbst. Der Server gibt diesem seinen Status als UT_YOURSELF zu erkennen.
Andere Benutzer werden mit UT_USER, Baken mit UT_BEACON gekennzeichnet. Auf diese
Weise erhält der Client Kenntnis darüber, was sich im Frequenzband so tummelt.
Nun steht dem Datenaustausch nichts mehr im Wege.
Sendet der Client eine Folge von Ton-Pause-Paaren (TP), so werden diese vom Server entgegen
genommen und an alle anderen Benutzer weiter verteilt, sofern diese in der Betriebsfrequenz „nahe
genug“ an dem Client liegen, dass sie auch überhaupt „gehört“ werden können.
4
Mr. Spock u. Capt. Kirk in “Startrek - The Voyage Home”
Der Sender übergibt als User-Code wieder die provisorische 1. Der Server setzt dann den Tatsächlichen User-Code ein. An den sendenden Client (UT_YOURSELF) verteilt der Server die Daten nicht,
damit eine digitale Rückkopplung vermieden wird. Es gibt wieder der Grundsatz: So einfach als möglich.
Ein Ton-Pausen-Paar endet definitionsgemäß mit einer Pause. Wäre das nicht der Fall, so sollte sowohl der Server als auch jeder Client diese „Protokollverletzung“ sinngemäß auflösen.
Ändert ein Teilnehmer seine Betriebsfrequenz, so zeigt er dies dem Server durch „Frequency Change“
(FC) an. Der Server verteilt diese Information wiederum an alle Clients, die bitte reagieren sollen.
Das Vorgehen sollte synchron erfolgen. Ein client-seitiges Fifo wirkt da Wunder…
Verlässt ein Benutzer das Band, so sendet er ein „User Deleted“ (UD) oder er baut einfach die TCPVerbindung ab.
Der Server sendet an die verbleibende Gemeinde das passende UD–Telegramm mit dem korrekten
Index des Verschollenen. Jeder Client muss daraufhin seine Liste wieder aktualisieren.
Das war’s auch schon.
Ausblick
Wir haben hier weder eine neue Betriebsart noch eine neuartige Technologie. Das wäre viel zu weit
gegriffen! Es ist nicht einmal ein Projekt. Mit Augenzwinkern aufgesetzt, sollte Programmierung und
Benutzung vor allem Spaß machen.
Jedenfalls schlägt es den Bogen von Marconi und Morse hin zum Internet.
Und zur Urheberschaft: Wir haben momentan mehr als sechs Milliarden Menschen auf diesem Planeten, da wird „jeder denkbare Gedanke eben schon einmal gedacht“5, oft an vielen Orten gleichzeitig.
Ob ein anderer vor 2001 bereits die gleiche Idee hatte, tja, dann war es eben so. Gerne werde ich
Referenzen auf andere Arbeiten in das Quellenverzeichnis aufnehmen, das gebietet ja die wissenschaftliche Etikette.
Den Servercode habe ich jedenfalls unter GPL gestellt. Vielleicht motiviert dieser Beitrag den einen
oder anderen meiner Leser, wieder selbst einmal Hand anzulegen.
Jedenfalls würde ich mich freuen, wenn jemand einen Client für LINUX oder für MAC schreiben würde
oder einfach einmal Kontakt aufnehmen würde zu einem Gedankenaustauch unter Funkamateuren.
Anhang
Einzelbeschreibung der Datagramme
Telegramm UC
-
User Clear
Richtung:
Server -> Client
Wirkung auf Client:
Löscht die Liste der die auf dem Server angemeldeten Benutzer (User List).
Wirkung auf Server:
Ignoriert
Hinweis:
Der Usercode-Eintrag ist ohne Bedeutung.
Der Server meldet hier Adresse 0 (Quelle ist Server), d.h. 0x21
Befehl
Usercode
Telegrammende
2
1
1
UC
!
0x0A
Telegramm UD
-
Bemerkung
4 Byte
User Delete
Richtung:
Server -> Client
Wirkung auf Client:
Löscht den Eintrag auf Platz <usercode> und sagt so dem Client, dass sich der betreffende User vom
Server verabschiedet hat.
Wirkung auf Server:
Ignoriert
5
frei aus Friedrich Dürrenmatts lesenswertem Werk „Die Physiker“ zitiert
Hinweis:
Befehl
2
UD
Der <Usercode> Eintrag zeigt den Platz des verschwundenen Users an.
0x22 kennzeichnet den ersten Benutzereintrag.
Usercode
1
2
Telegrammende
1
0x0A
Telegramm UX
-
Bemerkung
4 Byte
User 17 ist gerade verschwunden
User Reject
Richtung:
Server -> Client
Wirkung auf Client:
weist diese Anmeldung ab. Der Server kann die Anmeldung nicht akzeptieren.
Wirkung auf Server:
Ignoriert
Hinweis:
Der Usercode-Eintrag ist ohne Bedeutung.
Der Server meldet 0, (Quelle ist Server) d.h. codiert als 0x21.
Befehl
2
UX
Usercode
1
!
Telegrammende
1
0x0A
Telegramm US
-
Bemerkung
4 Byte
Satz mit X, war wohl nix…
Get Server-side User List
Richtung:
Client -> Server
Wirkung auf Client:
Ignoriert
Wirkung auf Server:
Veranlasst den Server, die User-Liste auszugeben
Hinweis:
Der Usercode-Eintrag ist ohne Bedeutung.
Der Client trägt hier normalerweise die provisorische Adresse 1 d.h. 0x22 ein.
Befehl
2
UL
Usercode
1
“
Telegrammende
1
0x0A
Telegramm UA
-
Bemerkung
4 Byte
User Add
Richtung:
beide
Wirkung auf Client:
Trägt die gemeldeten Daten an den durch <usercode> bezeichneten Platz in die client-seitige User-Liste
ein.
Wirkung auf Server:
Meldet die Daten des Clients beim Server an. Der Client schickt das Telegramm unter dem provisorischen Usercode 1 codiert als 0x22.
Bemerkungen:
Die Frequenzinformation enthält die aktuelle Betriebsfrequenz des Users.
Der Wert <type> definiert den User-Type (siehe oben). Ein Client sollte auf den Eintrag UT_YOURSELF
achten. Damit nennt der Server den Listenplatz (Adresse) des Clients am Server.
Schickt der Client diese Meldung, so wird der Eintrag <user-type> vom Server ignoriert.
Der Name kann bis zu MAXNICKNAME Zeichen enthalten. Die Zeichen müssen ‚druckbar‘ sein.
Befehl
2
Usercode
1
Freq.
Parameter
3+1+n
Type
Name
Telegrammende
1
UA
“
!!!
“
HUGO
0x0A
UA
2
!“5
#
ANTON
0x0A
Telegramm FC
-
Bemerkung
8+n Byte
Meldet User-Daten des Benutzers HUGO auf
Frequenz 0 Hz (Bandanfang) an den Server
(von Adresse 1)
Der Server meldet, dass User 17mit dem Namen ANTON auf der relativen Frequenz 100Hz
QRV ist.
Frequency Change
Richtung:
beide
Wirkung auf Client:
Zeigt dem Client die neue ‚Betriebsfrequenz‘ des durch <usercode> bezeichneten Users an.
Wirkung auf Server:
Meldet die geänderte Betriebsfrequenz des Clients beim Server an. Der Client schickt das Telegramm
unter dem provisorischen Usercode 1 codiert als 0x22.
Befehl
2
Usercode
1
Parameter
3
Telegrammende
1
FC
“
!!!
0x0A
Telegramm TP
-
Bemerkung
7 Byte
Meldet neue Frequenz (0 kHz) an den Server (provisorischer Usercode 1)
Tone/Pause
Richtung:
beide
Wirkung auf Client:
Trägt die gemeldeten Daten an den durch <usercode> bezeichneten Platz in die client-seitige User-Liste
ein.
Wirkung auf Server:
Meldet die Daten des Clients beim Server an. Der Client schickt das Telegramm unter dem provisorischen Usercode 1 codiert als 0x22.
Befehl
Usercode
Telegrammende
Telegrammende
2
1
4*n
1
Bemerkung
4 + 4*n Byte für n Ton/Pause-Paare
Ton/Pause-Paar
TP
“
Ton
Pause
“$
4%
0x0A
User-Type
Die Codes werden im Verlauf der Verbindung zur Beschreibung benutzt, von wem die Daten stammen
bzw. wozu sie bestimmt sind.
Codierung
Code
Bemerkung
UT_NONE
0
Ungültig, nicht benutzt
UT_YOURSELF
1
Der Datensatz ist für Dich selbst, lieber Client
UT_USER
2
Der Datensatz kennzeichnet einen anderen ‚normalen‘ Benutzer
UT_BEACON
3
Das ist eine server-seitige Bakensendung
UT_BULLETIN
4
Das ist ein server-seitig simuliertes ‚Bulletin-Board‘
Parameter
Die Codes werden im Verlauf der Verbindung zur Beschreibung benutzt, von wem die Daten stammen
bzw. wozu sie bestimmt sind.
Parameter
MAXNICKNAME
MAXSOCKETBUFFER
Default
16
1024
Bedeutung
max. Anzahl Zeichen im „Nick-Name“, d.h. dem Benutzer-Rufzeichen oder NAmen
max. Anzahl Bytes in einem Datagramm
MAXUSER
30
max. Anzahl gleichzeitig aktiver Benutzer (willkürlich festgelegt)
MAXBEACON
5
max. Anzahl gleichzeitig aktiver Bakensender
Abkürzungen und Begriffe
ASCII
American Standard Code for Intermation Interchange. Wohl der bekannteste 7-Bit-Code aus der
Urzeit amerikanischen Fernschreibens. Er ist einfach (gottlob) nicht umzubringen! Es gibt zahlreiche
nationale 8-Bit Erweiterungen, sowie die recht intelligent gemachte Fortführung durch UTF-8.
BpM
Buchstaben Pro Minute: WpM*5
CQ
Allgemeiner Anruf („An Alle“, „Seek You“) in der Morsetelegraphie
CW
Continous Wave. Aussendung eines konstanten Trägersignals. Oft synonym für Morsetelegraphie
benutzt. In der Morsetelegraphie erfolgt die Aussendung des Trägers im Rhythmus der Zeichen.
EloKa
Elektronische Kampfführung
GPL
(GNU) General Public License.
HF
High Frequency. Hochfrequenz
IP
Internet Protocol. Unterstes Übertragungsprotokoll für Daten im Internet. Höhere Protokolle wie TCP
und UDP bauen darauf auf.
QRM
internationale Q-Gruppe für „Störung durch Fremdsender“ (Man-made interferences)
QRN
internationale Q-Gruppe für „Atmosphärische Störung“ (Natural interferences)
QSO
internationale Q-Gruppe für „Funkverbindung“
SSB
Single Side Band (Modulation). Einseitenbandmodulation. Wird häufig zur Sprachübertragung auf
Kurzwelle benutzt.
TCP
„Transmission Control Protocol“. Es ist ein verbindungsorientiertes Protokoll des IP-Stacks. Die
beiden Endpunkte sind wie durch eine Leitung miteinander (logisch) verbunden. Es besteht Schutz
gegen Datenverlust. Keine kryptologische Funktion. Größerer Overhead.
UDP
„User Datagram Protocol“. Es ist ein verbindungsloses Protokoll des IP-Stacks. Kein Schutz gegen
Datenverlust. Keine kryptologische Funktion. Geringer Overhead.
UTF-8
8-bit Unicode Transformation Format. Codierungsvorschrift für UNICODE-Zeichen, die neben den
lateinischen auch kyrillische, hebräische, arabische, koreanische etc. Schriftzeichen enthält. UTF-8
codierte Zeichen können bis zu 4 Byte umfassen und können durch das trickreiche Codeschema bis
zu 1.114.112 Bedeutungen besitzen.
WpM
Wörter Pro Minute: Bpm/5
VFO
Variable Frequency Oscillator. An diesem stellt man am Empfänger die Betriebsfrequenz ein.
VoIP
„Voice over IP“; Technik zur Übertragung von Sprache über das Internet
AJAX
Asynchronous Javascript and XML. Eine „Technologie“ aus dem Bereich WebseitenProgrammierung die unter Anwendung dieser Sprachen Webseiten nur an den notwendigen Stellen
„asynchron“ aufdatiert.
DNS
„Domain Name Service“; Internet-Dienst, der Domain-Namen in IP-Adressen umschlüsselt.
HTML
Hypertext Markup Language. Sprache zur Beschreibung von Inhalten im Internet.
HTTP
Hypertext Transfer Protocol. Protokoll oderhalb von TCP. Meist genutzt zur Übertragung von HTMLInhalten.
LAMP
Linux, Apache, MySQL, PHP. Eine „Technologie“ aus der LINUX-Welt, die Web-Seiten unter Anwendung eben dieser Programmpakete dynamisch macht.
XML
Extensible Markup Language. HTML-ähnliche Codierung strukturierter Daten.
Private IP-Adressen
Private IP-Adressen können folgenden Bereichen entnommen werden. [IPADR]
Adressbereich
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
Quellen
[MKURS]
Müller, Alfred, DL1FL; „Morsekursus des Deutschen Amateur Radio Club e.V.“; 6. Auflage; DARC e.
V., Baunatal
[DJ2PJ]
Teichmann, H.J.; „Morsen“; ehemals Frack-Kosmos, Stuttgart. Häufig zitiert.
[IPADR]
http://de.wikipedia.org/wiki/Private_IP-Adresse

Documentos relacionados