Willkommen

Vom Bild zum Bild


Übertragung einer E-Mail

 

Übertragung eines Bildes über das Internet mit Hilfe einer E-Mail

 

Wir (Client1) wollen eine Bilddatei im JPEG Format an eine andere Person (Client 2) versenden. Hierzu wählen wir eine herkömmliche E-Mail. Der E-Mail Client wird aufgerufen, der Empfänger und Absender wird eintragen und das Bild wird in den Anhang hochgeladen damit wir die E-Mail versenden können. Eine E-Mail folgt immer dem "selben" Weg, sie wird verfasst, abgeschickt und empfangen. Zwischen dem Abschicken und Empfangen passiert sie jedoch zwei weiter Server.

Das Erste weiterleiten ist das abschicken der E-Mail nach dem Verfassen. Sie erreicht dann, den eigene Service-Provider hier z. B. www.szut.de, welcher die E-Mail dann an den Service-Provider des Empfängers z. B: www.web.de weiterleitet, von dort kann der Empfänger als letzten Schritt auf seine E-Mails zugreifen. Die E-Mail wird also dreimal versendet, wie dies funktioniert wird im Folgenden erläutert. Grundsätzlich benötigen wir nur vier Protokolle um eine E-Mail zu versenden und zu empfangen. Es ist aber an manchen Stellen möglich verschiedene Protokolle zu nutzen, so dass wir uns sechs Protokolle ansehen werden, jedoch nur auf vier genauer eingehen und auch nur im Rahmen unseres Zieles, eine E-Mail zu versenden.

 

 

E-Mail versenden


Der Mail User Agent (MUA) ist ein Hilfsprogramm zum Verschicken von E-Mails z.B. Thunderbird. Er übernimmt das Versenden der E-Mail für den User. Man ist jedoch auch in der Lage die E-Mail per Hand zu verschicken. Hierzu wird der Befehl "telnet" in der Konsole des Computers ausgeführt. Telnet ist ein Text basiertes Kommando welches das Nutzen von dem Protokoll SMTP ermöglicht. Damit wir eine E-Mail senden können, benötigen wir das Protokoll SMTP, welches die Daten der E-Mail in Klartext versendet. Dieses Protokoll wird expliziert genutzt, um E-Mails an einen Server zu schicken. SMTP (Smart Message Transport Protokoll) nutzt den Port 25 doch zertifizierte User, z.B. bei einer sicheren HTTPS Verbindung nutzen auch den Port 578. Wir wollen unsere E-Mail jedoch per Hand verschicken und nicht per MUA, also müssen wir „telnet“ benutzen. Hier wird auch der Vorgang einer SMTP "Unterhaltung" deutlicher. Erst spricht der Client/User und daraufhin antwortet der Server mit einem dreistelligen Statuscode sowie einem kurzen Text.

 

 

Hier ein Beispiel:

Zuerst müssen wir den Server ansprechen:

telnet www.web.de 25

Wenn der Server diese Aufforderung erhält antwortet er:

220 service Ready

Anschließend müssen wir uns vorstellen:

HELO www.szut.de

Nun sollte der server posetiv bestätigen:

250 OK

Nun können wir unsere Absenderadresse nennen:

Mail From:<bsp@szut.de>

Der Server bestätigt nun wieder und wir können mit der Empfängeradresse fortfahren:

RCPT TO:<third@web.de>

Nun bestätigt der Server erneut und wir signalisieren, dass wir mit dem Eingeben der E-Mail beginnen möchten:

DATA

Der Server muss nun bestätigen dass er für einen Längeren Vorgang bereit ist:

354 start mail input

Nun sind wir bereit die eigentliche E-Mail zu versenden:

From: <info@szut,de>

To: <third@web.de>

Subject: Testmail

Date: Thu, 26 Oct 2012 13:10:50 +0200

 

Bildtext     Bildtext     Bildtext Bildtext Bildtext Bildtext          Bildtext

Bildtext     Bildtext Bildtext Bildtext Bildtext Bildtext  Bildtext

 

Der Server bestätigt nun mit "250 OK" und wir können die Verbindung beenden:

QUIT

Der Server Bestätigt nochmal und beendet die Verbindung:

221 closing channel

Es gibt jedoch ein Problem, nutzen wir das reine SMTP können wir nur Texte übermitteln, wir wollen jedoch ein Bild übertragen. Das bedeutet, dass MIME (Multipurpose Internet Mail Extensions) benutzten müssen. MIME ist in SMTP benutzbar und erlaubt uns das benutzen von Umlauten, sowie das Anhängen von Dateien, wie z.B. Bildern. Dafür müssen wir lediglich in der telnet/SMTP-Unterhaltung ein paar Änderungen im E-Mailheader vornehmen.

 

 

Unser alter Header sah so aus:

From: <info@szut,de>

To: <third@web.de>

Subject: Testmail

Date: Thu, 26 Oct 2012 13:10:50 +0200

 

Der neue Header sieht wie folgt aus:

From: info@szut.de

To: third@web.de

Subject: Testmail

MIME-Version: 1.0

Content-Type: image/jpeg; boundary="=_abgrenzung"

 

 

Der Unterschied ist, dass der Teil des Header "Date" wegfällt und die Felder "MIME-Version" und "Content-Type" hinzugefügt werden. MIME-Version gibt die Version des Protokolls an. Content-Type sagt uns wie die E-Mail aufgebaut ist, also ob alle Teile gleich sind oder unterschiedlich.

Dieser Content-Type gibt an, dass wir ein Bild im JPEG Format versenden wollen. Boundary dient als Abgrenzung der einzelnen E-Mail Teile, so ist es möglich ein Bild und einen Text zu verschicken.

Der Boundary ist frei wählbar sollte aber ein Begriff sein der nicht im Body auftauchen kann. Der Boundary hat immer ein "-" als Anfang und wenn kein weiterer Teil folgt wird der Boundary mit "-" abgeschlossen.

 

 

In unserem Fall hieße das, dass die Unterhaltung in etwa so aussähe:

From: info@szut.de

To: third@web.de

Subject: Testmail

MIME-Version: 1.0

Content-Type: image/jpeg; boundary="=_abgrenzung"

Blindtext

-=_abgenzung-

-=_abgrenzung2
Content-Type: image/gif; name=”bild.gif”
Content-Transfer-Encoding: base64
Content-ID: bild
Content-Disposition: inline; filename=”bild.gif”

// Hier das base64-kodierte Bild.

–=_abgrenzung2–

 

 

Nun ist die E-Mail verschickt und der User hat keinen Einfluss mehr darauf was geschieht. Der Service-Provider szut.de hat die E-Mail empfangen und sendet sie nun umgehend weiter an den Service-Provider web.de.

Dies geschieht über das SMTP Protokoll und stellt den zweiten wichtigen Schritt dar. Der letzte Schritt ist das Empfangen der E-Mail vom der Zielperson. Die E-Mail liegt auf dem Service-Provider von Web.de und der User muss sie nur noch "abholen". Hierzu kann er zwei Protokolle verwenden, IMAP (Internet Messege Acces Protokoll) und das POP3 (Post Office Protokoll Version 3).

Abholen der E-Mail

 

 

POP3 ist jedoch stark eingeschränkt, da es nur das Abholen, das Löschen und das Auflisten der E-Mails auf dem Server ermöglicht. Daher verwenden wir IMAP. Beide Protokolle sind wie SMTP textbasiert. IMAP belässt im Gegenteil zu POP3 die E-Mails auf dem Service-Provider, wodurch die Datenschutzrichtlinien verstärkt berücksichtigt werden müssen.

 

 

Eine IMAP Sitzung über telnet könnte so aussehen:

 

Zuerst begrüßt der Server den Client:

* OK IMAP4rev1 Service Ready

Daraufhin Meldet sich der User an:

a001 login

mrc secret

Der Server bestätigt die Anmeldung:

a001 OK LOGIN completed

Anschließend wählt der Client den Ordner "inbox" aus:

a002 select

inbox

Der Server zeigt nun den Inhalt des Ordners an:

* 18 EXISTS

* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)

* 2 Recent

* OK (UNSEEN 17) MESSAGE 17 is the first unseen message

a002 OK (READ-WRITE) SELECT complete

Danach fordert der User Informationen zu E-Mail 12:

a003 fetch

12 full

Der Server zeigt die E-Mail nun wie folgt an:

* 12 Fetch (FLAGS (\SEEN)

INTERNALDATE "17-Jul-1996 02:44:25-0700"

RFC822.SIZE 4286

ENVELOPE ("Wed 17, Jul 1996 02:23:25-0700 (PDT)"

"IMAP4rev1 WG mtg summary and minutes"

(("Terry Gray" NIL "gray" "cac.washington.edu"))

(("Terry Gray" NIL "gray" "cac.washington.edu"))

(("Terry Gray" NIL "gray" "cac.washington.edu"))

((NIL NIL "imap" "cac.washington.edu"))

(("John Klensin" NIL "KLENSIN" "MIT.EDU"))

NIL NIL

"<B27397-0100000@cac.washington.edu>")

BODY ("TEXT" "PLAIN" ("CHARSET" "US-ASCII") NIL NIL "7BIT" 302892))

a003 OK FETCH completed

Der User möchte nun den E-Mail Header lesen:

a004 fetch

12

body[header]

Der Server antwortet entsprechend:

* 12 FETCH (BODY[HEADER] {342}

Date: Wed, 17 Jul 1996 02:23:25 -0700 (PDT)

From: Info <info@szut.de>

Subject: Testmail

To: third@web.de

cc: minutes@CNRI.Reston.VA.US, John Klensin <KLENSIN@MIT.EDU>

Message-Id: <B27397-0100000@szut.de>

MIME-Version: 1.0

Content-Type: TEXT/PLAIN; CHARSET=US-ASCII

)

a004 OK FETCH completed

Nun möchte der User die Mail löschen:

a005 store

12 +flags

\delete

Der Server bestätigt nun das Löschen:

* 12 FETCH (FLAGS (\Seen \Deleted))

a005 OK +FLAGS completed

Der Client meldet sich nun ab:

a006 logout

Anschließend bestätigt der Server und beendet die Sitzung:

* BYE IMAP4rev1 server terminating connection

a006 OK LOGOUT completed


 

Dass ist der Weg einer E-Mail, aber wie gelangen die ganzen Unterhaltungen von Punkt A zu Punkt B. (Dazu muss man wissen, dass SMTP, IMAP und POP3 nicht direkt durch die Internetleitungen übertragen werden.) Drei weitere Protokolle übernehmen den Transport.

 

Der Transport der Nachricht

 

 

Diese drei Protokolle sind TCP, IP und ein dynamisches Routing-Protokoll, von denen wir nur eines betrachten. Beginnen wir in der Reihenfolge, wie die Protokolle verschachtelt sind. Das Protokoll

TCP (Transmision Control Protocol) hat die Aufgabe dafür zu sorgen, dass alle Daten das Ziel erreichen, außerdem kontrolliert das Protokoll die Größe der versendeten Datei. TCP nutzt hierzu eine feste Verbindung die durch einen Three Way Handschake aufgebaut wird. Hierzu wird erst einmal ein Socket auf beiden Rechnern eingerichtet. Die Verbindung wird durch folgende Kriterien eindeutig.

 

  • Quell-IP-Adresse

  • Quell-Port

  • Ziel-IP-Adresse

  • Ziel-Port

 

 

Der eigentliche Verbindungsaufbau findet durch, dass Austauschen von Bestätigungsnummern und weiteren Angaben statt.

Beispiel 1

Client sendet syn mit Sequenznummer X                                   (Fordert Synchrosisation)

Server antwortet syn/ack & X+1 sendet auch eigene seq Y       (Antwortetmit Sequenznummern)

Client sendet ack & X+1 (x+1+1) & Y+1                                     (Bestätigt)

 

 

 

Danach werden die Daten versandt. Ist aber das gesamt Paket zu groß, so wird es von TCP automatisch in verschieden Teile geschnitten. Mit Hilfe der Bits, welche mit ihrer Position als Markierung dienen, können diese dann genau zusammengesetzt werden. Dadurch kann auch gewährleistet werden, dass alles ankommt, denn fehlt etwas kann TCP eine neu "Kopie" des fehlenden Stückes fordern.

Ist die Übertragung abgeschlossen wird die Verbindung wieder beendet, dies geschieht wieder mit einem Three Way Handschake, dieser sieht jedoch etwas anders aus.

 

 

Beispiel 2

 

Client sendet fin & seq X      (Fordert beednigung)

Server antwortet ack X+1     (Server Bestätigt)

Server sendet fin & seq Y     (Server Fordert beendigung)

Client antwortet ack &Y+1    (Client bestötigt)

 

 

Doch auch wenn TCP ein praktischer Helfer für die Transportkontrolle ist, so ist es nur der Manager.

Das eigentliche transportieren übernimmt das IP Protokoll.

Das IP Protokoll (Internet Protokoll) ist selber nicht in der Lage eines dieser Pakete auszuliefern, doch man kann in dieser Bildlichen Darstellung bleiben und sagen das IP eine Art von Stempel mit Empfänger und Absenderadresse ist. Das IP sagt nichts anderes als dorthin solle es und daher kam es.

Erst das ermöglicht es den Router die Mail weiterzuleiten, denn jedes Gerät ob ein PC oder ein Router hat eine eigene IP-Adresse und eine Netzadresse. Da unsere Pakete nun ein Stempel haben weiß der Router (Symbolisch gesehen eine Art Verteiler), wohin er das Paket schicken muss. Doch im Internet gibt es über 1.000.000 verschiedene Wege zum selben Ziel. Also woher weiß der Router, wo er das Paket langschicken muss? Hier kommt das dynamische Routing ins Spiel. Wir wollen, aber nur eines von vielen Protokollen ansehen welche dies bewerkstelligen. BGP (Border Gateway Protokoll) ist hier für den Verkehr zwischen allen Knotenpunkten (Routern) des Internets zuständig.

 

Hierunter finden Sie eine bildliche Darstellung der Beispiele...

Beispiel 1: vom Client zum Server

Beispiel 2: Client oder Server zur Gegenstelle

 

Der Weg durch das Netz

 

 

 

Durch BGP wird das Internet "passierbar", doch wie macht es das? Durch Kommunikation! Ein jeder Router des Internets fragt seinen Nachbarn, welche Netzwerke kennst du? Und sagt ihm dann, welche er kennt und welche seine Nachbarn kennen. Dadurch legt sich jeder Router eine Tabelle mit Routen zu verschiedenen Netzwerken an. Doch BGP macht Unterschiede zwischen den Routen. Z.B. Ist es BGP wichtig, dass es die schnellste und kürzeste Wege über die Route nimmt (wenn nicht anders eingestellt ist).

 

Doch generell funktioniert das Auswählen einer Route wie folgt.

//

  1. Der Pfad mit dem größten Wert für Weight wird bevorzugt (proprietär).
  2. Wenn der Wert für Weight identisch ist, wird der Wert mit der größten Local Preference bevorzugt.
  3. Wenn die Werte für Local Preference gleich sind, wird der Pfad bevorzugt, der von BGP auf diesem Router generiert wurde.
  4. Wenn kein Pfad auf diesem Router generiert wurde, bevorzuge den Pfad mit dem kürzesten AS_PATH-Attribut.
  5. Wenn alle AS_PATH-Attribute die gleiche Länge haben, bevorzuge den niedrigsten Origin-Typ (IGP ist niedriger als EGP, EGP ist niedriger als Incomplete)
  6. Wenn alle Origin-Typen gleich sind, bevorzuge den Pfad mit dem niedrigsten MED-Attribut.
  7. Wenn alle Pfade den gleichen Wert für MED haben, bevorzuge externe Pfade gegenüber interner Pfade.
  8. Wenn immer noch alle Pfade die gleiche Priorität haben, bevorzuge den Pfad zum nächstgelegenen IGP-Nachbarn.
  9. Sollten alle Pfade gleich sein, bevorzuge den Pfad mit der niedrigsten IP Adresse des BGP-Peers bezogen auf die Router-ID.

//(Zitat von http://de.wikipedia.org/wiki/Border_Gateway_Protocol)

 

BGP schickt, wenn es eine Route gefunden hat, dass Paket zum nächsten Nachbarn, welcher auf der Route liegt. Dieser jedoch sucht dann, wiederum eine Route, da er die vom Vorgänger nicht kennt. Durch die unterschiedlichen Belastungen und Nutzungen des Internets ist es so, dass kein Paket denselben Pfad nimmt. Alle haben einen anderen Weg und können durch aus auch mehrmals um die ganze Welt reisen bevor sie das Ziel, innerhalb von Bruchteilen einer Sekunde erreichen.

 

Sind die Pakete am Ziel angekommen, so nimmt TCP sie entgegen und entpackt diese, setzt sie zusammen und gibt sie an die Konsole weiter, wo sie dann aufgerufen und angesehen werden können.

 

All dies geschieht innerhalb von wenigen Augenblicken. Wenn wir auf den Absenden Knopf drücken ohne, dass wir es merken, wird ein Bild gesendet. Das Bild ist nun komplett bei unserem Ziel angekommen.

 

Gratis Homepage von Beepworld
 
Verantwortlich für den Inhalt dieser Seite ist ausschließlich der
Autor dieser Homepage, kontaktierbar über dieses Formular!