Verbindungen
Wir alle wissen, wie es ist, im Internet zu surfen, E-Mails zu empfangen und zu senden etc. Aber wie funktioniert das eigentlich genau? Was passiert „unter der Haube“? Wir werden versuchen, das hier so weit wie nötig zu erklären, um die Begriffe und Konzepte von Little Snitch verstehen zu können.
Was ist eine Verbindung?
Wir sprechen immer wieder über Netzwerkverbindungen, daher ist es an der Zeit, den Begriff zu erklären. Wir verwenden dazu als Analogie den Telefonanruf. Stell dir vor, du möchtest einem Freund etwas erzählen und du entscheidest dich, ihn anzurufen. Was passiert dann?
- Du suchst den Namen deines Freundes in deinem Adressbuch. Neben dem Namen steht dort eine Nummer. Nehmen wir an, du rufst deinen Freund bei der Arbeit in einem großen Unternehmen an. Das Unternehmen hat eine Telefonnummer und jeder Mitarbeiter ist über eine Durchwahl erreichbar. In deinem Adressbuch findest sich sowohl die Telefonnummer als auch die Durchwahl.
- Du rufst mit deinem Telefon diese Nummer an.
- Das Telefon deines Freundes klingelt und dein Freund nimmt den Anruf entgegen.
- Nach einem kurzen Gruß erzählst du deinem Freund die wichtigen Neuigkeiten. Dein Freund antwortet und ihr redet eine Weile.
- Eine der Seiten beendet den Anruf.
Eine Netzwerkverbindung funktioniert ganz ähnlich, nur dass Daten anstelle von Sprache ausgetauscht werden. Stell dir eine Anwendung auf Computer A vor, die Daten an eine Anwendung auf Computer B senden möchte:
- Die Anwendung sucht den Namen des Computers B in einer globalen Datenbank (dem „Adressbuch“ des Internets, dem Domain Name System (DNS)) und erhält eine Internetadresse (ähnlich der Telefonnummer eines großen Unternehmens. Die Anwendung findet außerdem die Portnummer heraus, die von der Anwendung auf Computer B verwendet wird (ähnlich der Durchwahl in unserem Telefonbeispiel). Die Portnummer kann bekannt sein (so wie viele Unternehmen die gleiche Durchwahl für FAX verwenden), oder sie kann aus einer anderen Datenbank bezogen oder in einer früheren Kommunikation ausgehandelt worden sein.
- Die Anwendung baut die Verbindung zu dieser Internetadresse und diesem Port auf.
- Computer B erhält die Portnummer und prüft, ob ein Programm auf Daten auf diesem Port wartet. Er findet den gewünschten Empfänger und leitet den Verbindungsversuch an die richtige Anwendung weiter.
- Die Anwendung auf Computer B akzeptiert die Verbindung.
- Die Anwendungen tauschen in der Regel Begrüßungen und dann Daten aus. Es gibt keine Regeln dafür, wer das Gespräch beginnt und wer es beendet.
- Eine der beiden Anwendungen beendet die Verbindung.
Wie können wir eine Verbindung identifizieren?
Die wichtigsten Parameter eines Telefonats sind die Nummer desjenigen, der wählt, die angerufene Nummer (einschließlich aller Nebenstellen) und wer den Anruf initiiert hat (zu Abrechnungszwecken). Die für Netzwerkverbindungen relevanten Informationen bestehen aus den beiden Internetadressen mit den entsprechenden Portnummern und wer die Verbindung hergestellt hat.
Aus Sicht des Netzwerkes reichen diese Informationen bereits aus. Little Snitch will allerdings mehr wissen und beschreibt Verbindungsversuche daher mit folgenden Parametern:
- Ob dein Computer die Verbindung hergestellt hat (ausgehend) oder der andere Computer (eingehend).
- Der Prozess (Anwendungs- oder Systemdienst), der kommuniziert. Dieser wird anstelle der lokalen Internetadresse und Portnummer gespeichert, da er für den Benutzer mehr Bedeutung hat.
- Die Internetadresse des entfernten Computers.
- Das verwendeteProtokoll.
- Die Portnummer auf dem entfernten Computer für ausgehende Verbindungen oder die Portnummer auf deinem eigenen Computer für eingehende Verbindungen. Portnummern sind in der Regel für den Benutzer unsichtbar und werden nur auf Anfrage angezeigt.
- Der Name des entfernten Computers, wenn er eindeutig bestimmt werden kann.
Ist das gesamte Internet verbindungsbasiert?
Nein. Es gibt verbindungsbasierte und verbindungslose Protokolle. Im Folgenden wird eine Liste der Protokolle gezeigt, denen du wahrscheinlich begegnen wirst:
- TCP (Transmission Control Protocol) — Der größte Teil des Internets verwendet dieses Protokoll. Es ist verbindungsbasiert und unterstützt Portnummern. Tatsächlich erklärt unser obiges Beispiel TCP. TCP wird für Webseiten (http und https), E-Mails und vieles mehr verwendet.
- UDP (User Datagram Protocol) — Dieses Protokoll wird häufig für Echtzeit-Multimediadaten wie Videos oder Voice-Over-IP (Internettelefonie) verwendet. Es kennt keine Verbindungen wie TCP, unterstützt aber Portnummern. In unserer Telefonanalogie kann man es mit dem Versenden von SMS vergleichen. UDP wird für die Suche nach Computernamen, für einige Datenaustausch-Protokolle wie Bittorrent, für Uhrensynchronisation, Internettelefonie und vieles mehr verwendet.
- ICMP (Internet Control Message Protocol) — Dieses Protokoll ist verbindungslos und unterstützt keine Ports. Es wird selten von Anwendungen genutzt. Der größte Teil davon wird vom Betriebssystem des Computers verwendet, um andere Protokolle wie TCP und UDP zu verwalten. Es gibt jedoch eine Ausnahme: Der Befehl
ping
im Terminal verwendet ICMP um zu testen, ob ein bestimmter Computer erreichbar ist. Die meisten ICMP-Daten, die du in Little Snitch siehst, stammen von Ping-Anfragen.
Obwohl nicht alle im Internet verwendeten Protokolle verbindungsbasiert sind, kann Little Snitch den gleichen Parametersatz für alle oben genannten Protokolle verwenden. Da ICMP keine Ports verwendet, werden die Portnummern für dieses Protokoll auf null gesetzt.
Ein praktisches Beispiel
Mit den oben angeführten Informationen können wir nun einem realen Beispiel folgen: Was passiert, wenn eine Webseite in einem Browser geöffnet wird?
- Du gibst
http://www.obdev.at/index.html
in das Adressfeld eines Webbrowsers ein und drückst Enter. - Der Browser zerlegt die URL in ein Schema (
http://
), einen Hostnamen (www.obdev.at
) und einen Dokumentenpfad (index.html
). - Der Browser löst den Hostnamen
www.obdev.at
zu einer Internetadresse auf. Es verwendet dazu das Domain Name System (DNS) und erhält die numerische Adresse78.46.114.187
. - Aus dem Schema weiß der Webbrowser, dass wir uns zu Port 80 verbinden wollen. Die Internet Assigned Numbers Authority (IANA) hat nämlich für
http
die Portnummer 80 vorgesehen. - Der Webbrowser hat nun eine entfernte IP-Adresse und eine entfernte Portnummer erhalten. Das reicht, um eine Verbindung herzustellen. Das Betriebssystem ergänzt diese Informationen um die IP-Adresse deines Computers sowie eine zufällige lokale Portnummer und stellt eine TCP-Verbindung her.
- Der entfernte Computer (Server) akzeptiert die Verbindung.
- Der Webbrowser sendet die Zeichenkette
GET /index.html HTTP/1.0
an den Server. (In unserem Beispiel wird zur Vereinfachung ein sehr alter Webbrowser verwendet. Heutige Webbrowser verwenden HTTP 1.1 Anfragen.) - Der Server antwortet mit dem Seiteninhalt über die gleiche Verbindung.
- Der Server beendet die Verbindung.
- Dein Webbrowser kann nun die Seite darstellen und den Vorgang für Ressourcen, auf die die Seite verweist, wie z.B. Bilder, wiederholen.
War dieser Eintrag hilfreich? Hinterlass uns Feedback.
© 2016-2024 Objective Development Software GmbH