Home / LinuxUser / 2002 / 06 / Volkers Editorial

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

War doch klar...
(243 Punkte bei 15 Stimmen)
Re: War doch klar...
(179 Punkte bei 5 Stimmen)
Re: Skype für 64-Bit-Prozessor u. Suse 12.1
(161 Punkte bei 4 Stimmen)
Kubuntu verliert Finanzierung
(130 Punkte bei 4 Stimmen)
Offen fürs Geschäft
(80 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Das perfekte Versprechen

Volkers Editorial

01.06.2002 Manchmal kommen Dateien bei der Übertragung am anderen Ende anders an, als sie ursprünglich verschickt wurden. Das hat viele Ursachen – oft historisch gewachsene, unterschiedliche Konventionen verschiedener Systeme. So ist ein häufiger Fehler die falsche Übertragung von Textdateien mit FTP.

Sicher sehr bekannt ist das Werkzeug ftp. Weniger bekannt sind die sechs spezifizierten Übertragungsarten, die FTP unterstützt – nur zwei davon sind brauchbar: ASCII und binär. Wenn nun z. B. eine Textdatei im binären Modus von einem Unix- auf ein Windows-System übertragen wird, erscheinen die einzelnen Ursprungszeilen wie aneinandergehängt. Das liegt an den unterschiedlichen Konventionen des Zeilenumbruchs auf den beiden Systemen. Im ASCII-Modus wäre die Datei für die Zielmaschine durch das FTP-Programm passend konvertiert worden. Wird umgekehrt eine binäre Datei, z. B. ein Programm oder eine Bilddatei, nicht im binären Modus übertragen, glaubt das Übertragungsprogramm, einen Text vor sich zu haben, und konvertiert ihn munter in einen Haufen Müll; jedenfalls ist das Endergebnis als binäre Datei nicht mehr verwendbar.

Um den FTP-Client anzuweisen, binäre oder ASCII-Übertragung zu verwenden, werden die Befehle binary und ascii verwendet, die auch abgekürzt werden dürfen (bin und asc):

ftp> binary
200 Type set to I.
ftp> ascii
200 Type set to A.

Dies ist nur ein Beispiel dafür, wie eine Datei bei der Übertragung zerstört werden kann. Ein weiteres ist die Benutzung von Steuersignalen, die viele Programme früher verwendeten. So wurden verschiedene Bytes mit besonders kleinen oder besonders hohen numerischen Werten (kleiner als 0x20 oder größer als 0x80) zur Steuerung übertragen. Ergebnis: Man kann sich heute nicht darauf verlassen, dass alle Rechner, die zwischen einem Quell- und Zielrechner liegen, alle Bytes unverstümmelt durchlassen. Eine der ersten Lösungen für dieses Problem waren die Unix-Kommandos uuencode und uudecode. (Der Name der Kommandos sollte klar machen, dass uuencode für die Vorbereitung einer binären Datei zur Übersendung dient und uudecode diese wieder rückgängig machen kann.)

Bit-Schnitzer

Das Programm uuencode verwandelt eine binäre Datei so, dass sie nur druckbare Zeichen enthält. So kann die entstandene Datei auch mit simplen Mail-Programmen wie mail verschickt werden. Dafür werden die Bits in der Ursprungsdatei ein wenig verschoben und umformatiert. Außerdem werden noch ein Dateiname und die Berechtigungsmodi mit ausgegeben, damit beim Wiederherstellen das Programm uudecode weiß, wie die Datei heißt und welche Berechtigungen sie haben soll. Das Ganze wird noch in einen "begin-end"-Block gepackt und in die Ergebnisdatei geschrieben. Eine typische mit uuencode behandelte Datei hat das folgende Aussehen:

begin 644 bild.jpg
M`P($`P4%!`0```%]`0(#``01!1(A,4$&$U%A!R)Q%#*!D:$((T*QP152T?`D
M,V)R@@D*%A<8&1HE)BAH*2HT-38W.#DZ0T1%1D=(24I35%565UA96F-D969G
…
end

Was beim uu-Kodieren mit den Bits selbst passiert, ist leicht beschrieben: Das Kommando uuencode liest je drei Bytes (also 24 Bits) der Binärdatei ein und splittet diese in vier Päckchen zu je sechs Bits auf. Diesen vier Päckchen wird dann noch 0x20 (dezimal: 32) hinzugefügt und dann jedes als eigenes Byte (führende Bits mit 0 aufgefüllt) ausgegeben. Dieser Algorithmus stellt sicher, dass sich die Ausgabe-Bytes im Bereich von 0x20 bis 0x5f (0x5f = 0x3f + 0x20 bei sechs gesetzten Bits im Päckchen) bewegen.

Abbildung 1: Dieses Schema beschreibt den uuencode-Algorithmus

Es ist daher nicht verwunderlich, dass die Größe einer mit uuencode behandelten Datei um 36% bis 37% wächst. Kasten 1 zeigt, wie ein C-Programm an diese Aufgabe heranginge.

Kasten 1:

uuencode

-Bit-Schnitzen mit C

Zielbyte1 = 0x20 + ((A >> 2) & 0x3f)
Zielbyte2 = 0x20 + (((A << 4 ) | ((B >> 4) & 0x0f)) & 0x3f
Zielbyte3 = 0x20 + (((B << 2 ) | ((C >> 6) & 0x03)) & 0x3f
Zielbyte4 = 0x20 + (C & 0x3f)

Tabelle 1: eine 6 Byte große Datei

Ursprungs-Bytes
0000 0001 0000 0010 0000 0011   0000 0100 0000 0101 0000 0110
Päckchen
000000 010000 001000 000011 000001 000000 010100 110000
Päckchen + 0x20 = Ausgabe-Bytes
00100000 00110000 00101000 00100011 00100001 00100000 00110100 00100110

Tabelle 1 zeigt die uuencode-Verarbeitung einer 6 Byte großen Datei, deren Bytes den ASCII-Codes 1 bis 6 entsprechen. In der Praxis sieht das so aus:

$ uuencode 123456.txt 123456.txt
begin 644 123456.txt
&`0(#!`4&
`
end

Bei der Benutzung von uuencode ist der zweite Parameter der Text, der in das Endergebnis hinter die Angabe der Modi geschrieben wird; er dient beim späteren Dekodieren als Dateiname.

Der Stand der Dinge

Nun ist uuencode nicht die einzige Möglichkeit, binäre Dateien über das Internet durch "Nur-Text-Kanäle" zu verschicken. Die drei wichtigsten Möglichkeiten beherrscht heute bereits standardmäßig der Netscape Messenger (aber auch viele andere Mailprogramme); so braucht sich der mausklickende Anwender eigentlich keine große Gedanken mehr darüber zu machen, was denn nun wie verschickt wird. Dass uuencode auch heute noch nützlich ist, sehen wir später. Die drei wichtigsten Varianten sind BinHex, MIME (auch Base64 genannt) und das bereits besprochene uuencode.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

321 Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 03/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Duden Korrektor unter 64-Bit
Duden Korrektor unter 64-Bit
Tim Schürmann, 06.02.2012 10:36, 0 Kommentare

Der Duden Korrektor bietet eine äußerst nützliche Rechtschreib- und Grammatikkorrektur für LibreOffice und bringt in der aktuellen Version 8 e...

Aktuelle Fragen

Ubuntu 11.10 Compiz 3D Cube flackern
Moritz Obenauer, 12.02.2012 12:25, 0 Antworten
Hallo! Ich habe Ubuntu 11.10 mit Unity und den Compiz 3D Cube ein gerichtet. Er funktioniert...
Suse 12.1 Bootvorgang bleibt seit Update stehen
Wimpy *, 12.02.2012 09:22, 2 Antworten
Seit Update auf Kernel 3.1.9-1.4-desktop i686 bleibt der Bootvorgang stehen. Es erscheint der gr...
N24 Stick (Huawei E173) und Ubuntu 11.04
Patrick Obenauer, 11.02.2012 11:54, 1 Antworten
Hallo zusammen! Ich benutze einen alten Laptop, der mit Ubuntu 11.04 flott und problemlos läuft....
Wie kann man beim Einsatz von Compiz die Fenster-Dekoration einstellen?
GoaSkin , 10.02.2012 20:12, 0 Antworten
Hallo, ich nutze Linux Mint mit dem Gnome-Derivat Mate. Da die Distribution Compiz nicht autom...
rndc reload zone - failed bad zone
Ludwig jun. B., 06.02.2012 16:08, 2 Antworten
Schönen guten Tag, ich habe folgendes Problem. Immer wenn ich folgendes Kommando ausführen bek...