Spuren im Netz

Einleitung

HTTP ist das zu Grunde liegende Protokoll, das verwendet wird, wenn HTML-Seiten im Internet übertragen werden. Ein Client sendet dabei eine Anforderung an einen Server. Der Server antwortet dann mit einem Statuscode und übermittelt die gewünschte Information.

Dabei werden vom Browser noch weitere Daten an den Server übermittelt, die dieser auswerten kann. Dieser Artikel erklärt, welche Daten beim Abruf von HTML-Dokumenten übertragen werden und was diese über den User verraten.

Das HTTP-Protokoll

Das HTTP-Protokoll definiert verschiedene sog. Methoden, die die Kommunikation zwischen dem Client (Browser) und dem Server regeln. Die am häufigsten verwendete HTTP-Methode ist die Methode GET, mit der ein Browser HTML-Dokumente von einem Server anfordert. Die URL-Angabe wird bei HTTP Version 1.1 aufgeteilt in eine Pfadangabe relativ zu DOCUMENT_ROOT, einem Parameter im Webserver, und den Hostnamen.

Die Eingabe von http://www.frank-opper.de/www/spuren.html in der Adresszeile des Browsers oder der Klick auf einen Link, der zu diesem Dokument führt, wird umgesetzt zu

  GET /www/spuren.html HTTP/1.1
    Host: www.frank-opper.de
  

Der Parameter bei GET ist der Pfadname relativ zu DOCUMENT_ROOT auf dem Webserver. Der Hostname wird dabei in einem sog. Header übermittelt. Neben dem Host-Header gibt es eine Vielzahl von weiteren Headern, die bei HTTP übertragen werden und zusätzliche Angaben über den Client und den Server enthalten.

Die IP-Adresse

Über die IP-Adresse kann ein Rechner im Internet eindeutig identifiziert werden. Die IP-Adresse ist entweder fest einem Computer zugeordnet oder wird dynamisch vergeben. Eine feste Vergabe der Adresse erfolgt vor allem bei Rechnern in Firmennetzwerken oder Proxy- bzw. Web-Servern. Dies ist vor allem bei Rechnern der Fall, die mehr oder weniger ständig mit dem Internet verbunden sind. Bei einer Einwahl über Modem, ISDN oder DSL dagegen wird die IP-Adresse vom jeweiligen Provider dynamisch aus einem bestimmten Bereich vergeben.

Die IP-Adresse des Rechners, der diese Seite gerade abgerufen hat, ist

  18.207.255.49
  

Anhand dieser Nummer kann man jetzt feststellen, welcher Firma dieser Rechner gehört oder über welchen Provider die Internet-Verbindung aufgebaut wurde. Eine eindeutige Identifizierung des Rechners ist nur dann möglich, wenn der Rechner ständig mit dem Internet verbunden ist. Weil viele größere Firmen aus Sicherheitsgründen Proxy-Server für den Internet-Datenverkehr verwenden, kann es sein, dass die IP-Adresse die Adresse eines solchen Proxies ist.

Bei der Verbindung über einen Provider wird die IP-Adresse dynamisch vergeben. Die Zuordnung ist nur solange gültig, wie die Verbindung ins Internet besteht. Beim nächsten Verbindungsaufbau wird i.d.R. eine andere IP-Adresse vergeben. Allein der Provider weiß, welcher Benutzer zu einem bestimmten Zeitpunkt welche IP-Adresse besaß.

Die Portnummer

Während die IP-Adresse einen Computer im Internet eindeutig identifiziert, wird die Portnummer dazu verwendet, eine Anwendung oder ein Programm auf einem Computer anzusprechen. Beim Starten eines Programms auf einem Server bindet sich das Programm an einen Port und kann anschließend Aufträge, die an diesen Port gesendet werden, entgegen nehmen und bearbeiten.

Bestimmte Dienste sind bestimmten Portnummern fest zugeordnet. Ein Webserver z.B. "lauscht" standardmäßig auf Port 80, und für ftp sind die beiden Ports 20 und 21 reserviert. Es stehen maximal 65.536 Portnummern zur Verfügung. Dabei dürfen unter UNIX Portnummern unter 1.024 nur von Programmen verwendet werden, die mit root-Rechten ablaufen.

Aus Client-Sicht ist die Sache wesentlich einfacher. Der Client nimmt sich einen freien Port und sendet über diesen eine Anfrage an den Webserver. Der Client benötigt deswegen auch eine Portnummer, damit der Server weiß, wohin er seine Antwort senden soll. Sowohl der Sender als auch der Empfänger einer Nachricht wird also durch die Kombination von IP-Adresse und Portnummer eindeutig identifiziert. Beim Abruf dieser Seite hat der Browser die Portnummer

  54616
  

verwendet. Beim nächsten Abruf dieser Seite kann die Portnummer eine ganz andere sein, weil ja - wie oben gesagt - auf Client-Seite eine freie Portnummer verwendet wird.

Besonderheiten bei Proxies und Routern

Dabei gibt es ein paar Besonderheiten zu beachten. Im Browser kann normalerweise eingestellt werden, ob die Verbindung zum Internet direkt oder über einen Proxy-Server erfolgt. Falls die Seiten über einen Proxy abgerufen werden, sind die oben aufgeführten Angaben zu IP-Adresse und Portnummer diejenigen auf dem Proxy und nicht die des Rechners, von dem der Abruf initiiert wurde. Dabei spielt es keine Rolle, ob der Rechner eine feste oder eine dynamische IP-Adresse besitzt.

Bei einer Proxy-Verbindung wird ein zusätzlicher HTTP-Header vom Client zum Server übermittelt. In diesen Header muss jeder Proxy eine Kennung eintragen, die ihn eindeitug identifiziert. Dieser Header wird dazu verwendet, um beim Weiterleiten von HTTP-Nachrichten Schleifen zu vermeiden.

Beim Aufruf dieser Seite wurde der Header

  "" (kein Via)
  

übermittelt. Falls hier ein Wert eingetragen ist, ist der Rechner über einen Proxy-Server an das Internet angebunden.

Kleinere (Heim-)Netzwerke, in denen mehrere Rechner miteinander verbunden sind, haben normalerweise feste IP-Adressen, die nur in diesem Netzwerk gelten. Für diese privaten Netze sind nach RFC 1597 die IP-Adressen aus den Bereichen

reserviert. Diese Adressen sind außerhalb des eigenen Netzwerks nicht bekannt, da Informationen über diese Rechner nicht nach außen gegeben werden. Die Verbindung zum Internet wird von einem solchen Netz über einen Router hergestellt. Der Router ist dann derjenige, der vom Provider eine dynamische IP-Adresse erhält.

Solange die Internet-Verbindung besteht, besitzt der Router 2 IP-Adressen: Mit der ersten Adresse, z.B. 192.168.0.1, ist er im internen Netzwerk bekannt. Die zweite Adresse ist die von Provider zugewiesene IP-Adresse. Durch ein Verfahren namens NAT (Network Adress Translation) verändert der Router die internen Absenderadressen, bevor die Daten ins Internet weitergeleitet werden. Auf dem Rückweg erfolgt das Ganze umgekehrt.

Bei einer Anbindung über einen Router, aber ohne zwischengeschalteten Proxy, ist die IP-Adresse diejenige des Routers. Die Portnummer wurde vom Router im Rahmen der NAT vergeben.

Referer

Die meisten Browser übermitteln beim Abruf von HTML-Dokumenten die Adresse der zuletzt besuchten Seite. Über diese Angabe kann verfolgt werden, wie sich ein Besucher im Internet bewegt. Beim Aufruf dieser Seite wurde als Referenz die Adresse

  "" (kein Referer)
  

übermittelt.

Hier ist aber nur dann ein Wert eingetragen, wenn der Abruf durch Klick auf einen Link erfolgt ist und wenn die zuletzt besuchte Seite auch im Internet verfügbar ist. Liegt die zuletzt besuchte Seite lokal auf der Festplatte des Rechners oder wird die URL direkt in die Adresszeile des Browsers eingetragen, ist der Referer leer. Auch können Filterprogramme auf dem lokalen Computer den Referer unterdrücken.

Browserkennung

Die Browserkennung ist ein Textstring, der als zusätzlicher Header im HTTP-Protokoll übermittelt wird. Aus der Browserkennung lassen sich einige Angaben über den anfordernden Client ermitteln. Beim Abruf dieser Seite hat der Browser den Text

  CCBot/2.0 (https://commoncrawl.org/faq/)
  

übermittelt. Wenn eine Browserkennung übertragen wird, kann man aus diesen Angaben den Namen des Browsers, dessen Version, das verwendete Betriebssystem und ggf. Patchstände ermitteln. Filterprogramme oder Firewalls auf dem lokalen Computer sind jedoch in der Lage, die Browserkennung zu filtern.

Der Text, der hier angezeigt wird, ist normalerweise von den Programmierern des Browsers fest eingestellt. Bei bestimmten Browsern kann aber dieser Text vom Anwender geändert werden. Der Browser Opera z.B. kann sich auch als Internet Explorer oder als Netscape Navigator ausgeben. Auch der Textbrowser Lynx und das Kommando wget erlauben es, den User-Agent-String individuell zu verändern.

Die Browserkennung wird immer von dem Rechner gesetzt, der den Seitenabruf initiiert hat. Zwischengeschaltete Proxies oder Router ändern zwar die IP-Adresse und den Port, nicht aber den User-Agent-String. So ist es zwar schwierig, aber nicht unmöglich, mehrere Rechern hinter einem Proxy oder einem Router zu unterscheiden.