Kapitel 8
IN DIESEM KAPITEL
Ein Server ohne Netzwerk ist wie ein Fahrrad ohne Räder. Insofern sind einige Grundkenntnisse über Computernetzwerke und insbesondere über TCP/IP erforderlich. Sie werden auch die ersten Server sehen. Diese helfen bei der Administration und verteilen IP-Adressen und Domain-Namen.
Die Verbindung eines Computers mit dem lokalen Netzwerk erfolgt in heutigen Zeiten oft durch ein Kabel, das wie ein Telefonkabel mit Übergewicht aussieht (siehe Abbildung 8.1). Aus historischen Gründen spricht man oft vom Ethernet, obwohl das ein Koaxialkabel war.
Abbildung 8.1: Switch mit Kabeln
Die Ethernet-Kabel werden über Switches oder Hubs verbunden. In Abbildung 8.1 sehen Sie einen Switch mit angeschlossenen Kabeln. Sie funktionieren als Mehrfachsteckdosen für Western-Stecker. Alle angeschlossenen Geräte, auch über weitere Switches oder Hubs verbundenen Geräte, gehören zu einem lokalen Netzwerk, auf plattdeutsch auch LAN (Local Area Network) genannt.
Einige Geräte haben keinen Netzwerkkabelanschluss mehr. Diese müssen dann in die Luft gehen und per WLAN (Wireless Local Area Network) Kontakt suchen. Als Kontaktpunkt bietet sich hoffentlich ein Access Points an.
Damit auf dem Draht jeder weiß, wer wer ist, haben die Netzwerkkarten weltweit eindeutige Kennnummern, die MAC-Nummer (Media Access Control) genannt werden. Gleiche Rechte für alle: Auch WLAN-Adapter haben solche MAC-Nummern.
Auf der Basis dieser MAC-Adressen werden in einem lokalen Netzwerk die Pakete versendet. Allerdings kommen Sie damit nicht an einen Internet-Server, denn Sie können nicht wissen, welche Netzwerkkarte der Computer von Wikipedia hat. Das mag merkwürdig klingen, aber Autos werden ja auch nicht über die Fahrgestellnummer identifiziert, obwohl diese auch eindeutig ist.
Für den Transport von Paketen weltweit wird inzwischen unangefochten TCP/IP (Transmission Control Protocol/Internet Protocol) als Standardprotokoll verwendet. Und das hat noch einmal eigene Nummern, die als IP-Nummern bezeichnet werden.
MAC-Adresse | 2c:d4:44:bc:3e:66 brd ff:ff:ff:ff:ff:ff |
IP-Adresse | 192.168.109.221 |
Tabelle 8.1: MAC- und IP-Adresse meines Laptops
Derzeit ist die Version IPv4 in den meisten Netzwerken gängig. Die Adresse besteht aus vier Bytes, die der leichten Lesbarkeit halber durch Punkte getrennt werden. Tabelle 8.1 zeigt die MAC- und die IP-Adresse meines Laptops.
Inzwischen gibt es Mobiltelefone und Laptops. Und so wird es langsam eng. Über kurz oder lang wird es einen Umstieg auf IPv6 geben. Hier darf ich ein Buch aus dem Jahre 2002 zitieren: »So liest man heute überall, dass die nächste Generation von IP-Nummern vor der Tür stehe. Nur wie weit sie von der Tür entfernt ist, scheint noch nicht ganz klar zu sein.«1 Dieser Satz gilt immer noch. Es wäre aber boshaft zu behaupten, dass es keine Fortschritte gäbe.
In den lokalen Netzwerken könnte IPv4 aber selbst nach allgemeiner Einführung von IPv6 noch recht lange erhalten bleiben. Da wohl niemand mit der Einführung in den nächsten Wochen und Monaten rechnet und die IPv4-Adressen etwas leichter verständlich sind, werden wir in diesem Buch dabei bleiben.
Netzwerk-Pakete werden im lokalen Netzwerk von MAC-Adresse zu MAC-Adresse versandt. Das sind die Adressen, die die Netzwerk-Controller und ihre Treiber verwenden. Man spricht auch von Ethernet-Paketen. Damit ein Computer feststellen kann, ob das Paket für ihn ist, ist die MAC-Adresse des Empfängers gleich zu Anfang im Paket enthalten. Um später eine Antwort senden zu können, wird die MAC-Adresse des Empfängers gleich dahinter gesetzt. Der Rest des Pakets steht für die eigentlichen Daten zur Verfügung.
Die Anwendungen und Server arbeiten aber nicht mit MAC-Adressen, sondern verwenden IP-Adressen, um ihre Partner anzusprechen. Also muss ein Paket auch die IP-Adresse des Empfängers und des Absenders enthalten. Erst dann folgen die eigentlichen Daten. Damit das funktioniert, wird das IP-Paket in den Datenbereich eines Ethernet-Pakets gesetzt, wie in Abbildung 8.2 zu sehen. Es ist also so, als ob in den einen Karton ein anderer Karton hineingesteckt wird.
Abbildung 8.2: TCP/IP-Paket im Ethernet-Paket
Das Umsetzen von IP-Adressen in Ethernet-Adressen übernehmen die Computer im lokalen Netzwerk automatisch. Das erledigt das ARP (Address Resolution Protocol). Wie das genau funktioniert, ist für den Server-Administrator nicht so interessant. Falls Sie neugierig sind, schauen Sie hier nach:
Die IP-Adresse ist eine Zahlenkombination, die jeden Internet-Teilnehmer weltweit eindeutig ansprechbar macht. Die ersten Bits einer IP-Adresse sind die Adresse des Netzwerks, zu dem der Computer gehört, und der restliche Teil ist die Adresse des Computers selbst. Die Grenze zwischen Netzwerk- und Hostadresse kann an jeder Stelle der IP-Adresse erfolgen, und zwar nicht nur auf der Byte-Grenze, sondern sogar bitweise.
Wie viele Bits für die Netzwerkadresse verwendet werden, gibt man in der CIDR-Schreibweise nach einem Schrägstrich hinter der IP-Adresse an. Die IP-Adresse 192.168.109.199/24 sagt also aus, dass die ersten 24 Bits die Netzwerkadresse sind. 24 Bits sind 3 Bytes, also ist 192.168.109 der Netzwerkanteil und 199 die Hostadresse, also die Nummer des Computers innerhalb des Netzwerks.
Alternativ kann auch eine Subnetzmaske verwendet werden. Sie finden diese vor allem bei älteren Systemen. Die Maske sieht aus wie eine IP-Adresse. Dabei wird der Anteil der Bits der Netzwerkadresse auf 1 und alle anderen auf 0 gesetzt. Im Beispiel wären die ersten 24 Bits 1 und der Rest 0. Damit ist die Subnetzmaske 255.255.255.0.
Netzwerkadresse | Hostadresse |
|
IPv4-Darstellung | 192.168.109 | 199 |
binär |
|
|
Subnetzmaske |
|
|
Da IPv4-Adressen inzwischen knapp bemessen sind, vergibt ein Provider pro Vertrag höchstens eine Adresse, und selbst die nicht exklusiv. Damit der Kunde auch mit mehreren Computern ins Internet kann, wird hinter dem Router ein lokales Netzwerk aufgebaut, in dem dann private IP-Adressen verwendet werden. Will der Kunde mit einem seiner Computer ins Internet, leiht sich dieser die IP-Adresse des Routers aus.
Die privaten Adressen kommen also im Internet nicht vor und werden dort auch nicht weitergeleitet. Dadurch kann dieselbe private IP-Adresse von mir und meinem Nachbarn verwendet werden, ohne das wir uns in die Haare bekommen. So wird beispielsweise die Netzwerk-Adresse 192.168.1.0/24 von fast allen Telekom-Kunden verwendet. Die privaten Adressräume sind in Tabelle 8.2 zusammengefasst.
Netzwerkadressen |
CIDR |
Subnetmask |
---|---|---|
10.0.0.0 | /8 | 255.0.0.0 |
172.16.0.0 bis 172.31.0.0 | /16 | 255.255.0.0 |
192.168.0.0 bis 192.168.255.0 | /24 | 255.255.255.0 |
Tabelle 8.2: Die privaten IP-Adressen für lokale Netzwerke
Der Befehl ip a
kann als Kürzel für die ausführliche Form ip address show
verwendet werden. Sie zeigt den Status aller Netzwerkadapter des Computers an.
$ ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel
state UP group default qlen 1000
link/ether 2c:d4:44:bc:3e:66 brd ff:ff:ff:ff:ff:ff
inet 192.168.109.122/24 brd 192.168.109.255 scope global dynamic
noprefixroute enp0s25
valid_lft 694016sec preferred_lft 694016sec
inet6 fd80:730c:74fe::3ac/128 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 2a01:41e1:22b3:da00:b754:212e:ffd8:a7b4/64 scope global dynamic
noprefixroute
valid_lft 6982sec preferred_lft 3382sec
inet6 fd80:730c:74fe:0:f3d:c78f:2958:bdb3/64 scope global
deprecated dynamic noprefixroute
valid_lft 6982sec preferred_lft 0sec
inet6 fe80::f20d:230:cad3:2347/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: wlp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq
state DOWN group default qlen 1000
link/ether 60:67:20:31:d5:bc brd ff:ff:ff:ff:ff:ff
4: wwan0: <BROADCAST,MULTICAST,NOARP> mtu 1500 qdisc noop
state DOWN group default qlen 1000
link/ether d6:a6:87:53:ef:8e brd ff:ff:ff:ff:ff:ff
Es wurden vier Adapter angezeigt, die durchnummeriert wurden.
lo
verwendet wird. Als Adresse wird localhost oder die IPv4-Adresse 127.0.0.1 verwendet. Diese Adresse ist auch interessant, wenn bei Experimenten Client und Server auf dem gleichen Computer liegen.Computer haben nach dem Start bereits eine IP-Adresse, wissen, wo der Router steht, und können ermitteln, wie die IP-Adresse von Wikipedia oder tagesschau.de ist. Diese Schlauheiten erfähren sie vom Router, in den im Allgemeinen ein DHCP-Server eingebaut ist. Wie man so etwas selber bauen kann, werden wir uns noch anschauen.
Normalerweise sind Linux-Systeme so eingestellt, dass sie ihre IP-Adresse beim Hochfahren automatisch über einen DHCP-Server holen.
Die mehr oder weniger zufälligen IP-Adressen des DHCP-Servers sind für einen Server nicht hilfreich. Ein Server sollte immer wieder unter derselben Adresse erreichbar sein. Sie können dies über einen DHCP-Server zentral konfigurieren. An dieser Stelle sehen Sie, wie Ihr Computer auch ohne fremde Hilfe erfährt, wer er ist.
Zur Zeit gibt es dafür zwei Verfahren: Network-Interfaces oder Netplan. Schauen wir beides kurz an.
Wie die Netzwerkadapter an ihre Adresse kommen, wird bei Linux-Rechnern meist in der Datei /etc/network/interfaces festgelegt. Das geschieht bei vielen Distributionen immer noch. Ubuntu und Linux Mint verwenden Netplan. Das ist im nächsten Abschnitt beschrieben.
Standardmäßig werden die IP-Adressen von Arbeitsplatzrechnern nicht festgelegt, sondern dynamisch per DHCP vergeben. Eine solche Konfiguration stellt sich in der Datei /etc/network/interfaces etwa folgendermaßen dar und befindet sich so ähnlich vermutlich auch auf Ihrem Computer.
# /etc/network/interfaces
auto lo
iface lo inet loopback
auto enp0s25
iface enp0s25 inet dhcp
Wenn Sie einem Server eine feste IP-Adresse geben wollen, legen Sie die Eigenschaften des Adapters enp0s25 fest. Dazu tauschen Sie das Schlüsselwort dhcp
gegen static
. In den Folgezeilen beschreiben Sie die Adressen.
# /etc/network/interfaces
auto lo
iface lo inet loopback
auto enp0s25
iface enp0s25 inet static
address 192.168.109.10
netmask 255.255.255.0
gateway 192.168.109.1
dns-nameserver 8.8.8.8
Sie sehen, dass dort die IP-Adresse, die Subnetmask, das Gateway und der Namensserver festgelegt werden. Das Gateway ist übrigens der Router. Und als Namensserver steht hier 8.8.8.8, der Namensserver von Google. Die Nummer ist zwar leicht zu merken, aber vielleicht sollte man Google nicht unbedingt mit mehr Informationen füttern als unbedingt nötig.
Ihr Netzwerkadapter heißt vermutlich nicht enp0s25. Schauen Sie mit dem Befehl ip a
nach, wie er bei Ihnen heißt. Die Datei interfaces wird beim nächsten Booten ausgewertet.
Es gibt eine eigene Manpage namens interfaces
für die Einstellungen dieser Datei:
$ man interfaces
Die Konfiguration der Netzwerke erfolgt seit Ubuntu 18.04 LTS in /etc/netplan. Entsprechend findet man dies auch in den darauf basierenden Linux Mint-Versionen vor. Netplan befindet sich in dem Paket netplan.io und wird bei den Genannten standardmäßig installiert. Die Syntax der Konfigurationsdatei folgt YAML (Yet Another Markup Language), weshalb die Konfigurationsdateien die Endung .yaml haben.
Die Konfigurationsdateien im Verzeichnis /etc/netplan werden nacheinander in alphabethischer Reihenfolge abgearbeitet, weshalb sie gern durchnummeriert werden. Typischerweise heißt die erste Datei 1-network-manager-all.yaml. Die Standardkonfiguration sieht in der Regel so aus:
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
Will man nun eine feste Adresse festlegen, werden die entsprechenden Netzwerkadapter aufgezählt und konfiguriert.
network:
version: 2
renderer: NetworkManager
ethernets:
enp0s8:
dhcp4: no
addresses:
- 192.168.1.50/24
nameservers:
addresses: [192.168.1.1]
routes:
- to: default
via: 192.168.1.1
Sobald die Konfiguration steht, kann sie mit dem folgenden Befehl aktiviert werden. Hier wird für die Ethernetschnittstelle das DHCP deaktiviert und die Adresse 192.168.1.50 festgelegt. Darüber hinaus werden das Gateway und der Namensserver auf 192.168.1.1 gesetzt.
# netplan apply
Wenn Sie weitere Details erfahren wollen, hilft Ihnen die Manpage von netplan.
Sie können die Netzwerkadapter eines Linux-Systems auch über die grafische Oberfläche konfigurieren. Dazu stehen unter den verschiedenen Desktops unterschiedliche Programme zur Verfügung.
Wenn Sie Ihre Netzwerkkarte allerdings in der Datei /etc/network/interfaces konfiguriert haben, kann es passieren, dass das grafische Programm meldet, dass es keine Möglichkeit besitzt, den Adapter zu verwalten. Bei einem Server sollte man die Konsolenvariante vorziehen, weil sich diese zur Not auch per ssh bearbeiten lässt.
Um festzustellen, ob ein anderer Computer über das Netzwerk erreichbar ist, gibt es den Befehl ping
. Als Argument übergibt man den Hostnamen oder die IP-Adresse. Das folgende Beispiel führt zu einem Selbstgespräch. 127.0.0.1 verweist nämlich immer auf den eigenen Rechner.
$ ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_req=1 ttl=64 time=0.036 ms
64 bytes from 127.0.0.1: icmp_req=2 ttl=64 time=0.055 ms
64 bytes from 127.0.0.1: icmp_req=3 ttl=64 time=0.055 ms
64 bytes from 127.0.0.1: icmp_req=4 ttl=64 time=0.057 ms
^C
--- 127.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.036/0.050/0.057/0.012 ms
$
In der ersten Zeile nennt Ping sein Ziel und dass die Pakete 56 Byte groß sind. In den Folgezeilen treffen die Rückmeldungen des Adressaten ein. Wenn keine Meldungen kommen, gibt es keine Verbindung. Der Wert icmp_req
gibt die durchgängige Nummerierung an. Daran kann man erkennen, wenn Pakete verloren gehen. Interessant ist der Wert hinter time
, der die Dauer der Übertragung angibt.
Der Zähler ttl
steht für time to live. Dieser Zähler wird immer um 1 heruntergezählt, wenn das Paket das Netzwerk wechselt. So können Sie feststellen, wie viele Router zwischen Ihnen und dem Ziel stehen.
Typischerweise laufen die Meldungen von ping
durch, bis sie durch einen Stromausfall oder die Tastenkombination +
unterbrochen werden. Anschließend erzeugt Ping eine Statistik, die besagt, wie viele von den Paketen zurückgekehrt sind und wie lange die Pakete unterwegs waren.
Die kleinen Paketchen eines Pings schummeln sich leicht überall durch. Wenn Sie aber richtige Netzwerklast erzeugen wollen, benötigen Sie größere Pakete. Das können Sie mit der Option -s
erreichen. Dann erwartet Ping als weitere Angabe die Größe der Pakete.
Das Internet ist eigentlich eine Verbindung von ganz vielen Netzwerken. Für den normalen Benutzer gibt es erst einmal zwei Netzwerke: das lokale Netzwerk, das sich auf dieser Seite des Routers befindet, und das Internet auf der anderen Seite. Das Verbindungselement zwischen zwei Netzwerken nennt man einen Router und für seine Vermittlung muss er natürlich zwei Anschlüsse haben.
Für unsere Zwecke ist es eigentlich nur interessant, wie ein Computer ins Internet kommt. Dazu muss er seinen Router kennen, der manchmal unter dem Künstlernamen »Gateway« auftritt. So gehen alle Pakete, die nicht im lokalen Netzwerk einen Empfänger finden, an den Router, der sie ins große, weite Internet sendet. Dort finden sie magisch ihren Weg, ohne dass wir uns damit belasten müssen.
Gibt es nur einen Router im lokalen Netzwerk, dann nennt man den Verweis dorthin die Default-Route. Die Adresse des Gateways erfährt jeder Host des Netzwerks in der Regel durch das DHCP.
Sollten Sie doch plötzlich eine komplexere Netzwerksituation vorfinden, versuchen Sie, die Arbeit entweder auf einen Netzwerktechniker abzuschieben oder lesen Sie die folgende Seite:
http://willemer.de/informatik/net/router.htm
Ein praktisches Beispiel für statische Routen finden Sie hier:
Ihr Computer bezieht mit großer Wahrscheinlichkeit seine Identität von einem DHCP-Server, obwohl Sie vielleicht diese Abkürzung nie gehört haben. Das DHCP (Dynamic Host Configuration Protocol) dient der zentralen Konfiguration der Netzwerkeinstellungen und ist typischerweise in jedem Router aktiv.
Dieser sorgt dafür, dass alle angeschlossene Computer, Smartphones und sonstigen Geräte im lokalen Netzwerk eine gültige IP-Adresse bekommen. Dabei unterscheiden sich die Anforderungen an die IP-Adressen.
Über das DHCP erfahren die Geräte nicht nur ihre eigene IP-Adresse, sondern auch die Netzwerkadresse des Routers und des Nameservers (DNS).
Heutzutage sind fast alle Computer und Smartphones so vorkonfiguriert, dass sie ihre Netzwerkkonfiguration per DHCP erfragen. Der Ablauf der Identitätsfindung läuft etwa so ab:
Der Computer ruft bei seinem Start laut ins Netzwerk: »Ist hier jemand, der mir sagen kann, wer ich bin?«
Eine solche Frage an alle nennt man netzwerktechnisch Broadcast. Sie richtet sich nicht nur an die Broadcast-Adresse des lokalen Netzes, da ja auch diese Adresse dem Rechner unbekannt ist. Nein, es wird die globale Broadcast-Adresse 255.255.255.255 als Zieladresse verwendet.
Die Fragestellung nach dem eigenen Ich wird im DHCP-Protokoll DHCPDISCOVER genannt.
Nun antwortet der DHCP-Server mit dem Angebot, die gewünschten Informationen zu verteilen.
Auch diese DHCPOFFER
-Nachricht wird per Broadcast verteilt, da der Anfrager bislang ja noch keine IP-Adresse besitzt.
In diesem Paket findet der Anfrager eine gültige IP-Adresse, die ihm angeboten wird, und die IP-Adresse des Absenders. Ob der freundliche Server von einem verantwortungsbewussten Systemadministrator eingerichtet wurde oder von einem heimlich eingeschleusten Notebook stammt, kann der Anfrager nicht feststellen.
DHCPREQUEST
-Anfrage zu erbitten.DHCPACK
. Damit hat der Anfrager alle Informationen, die er braucht, und kann als normaler Teilnehmer im Netzwerk arbeiten.DHCPRELEASE
, sodass der Server die Adresse anderen Anfragern wieder zur Verfügung stellen kann.Um einen DHCP-Server zu installieren, rufen Sie den folgenden Befehl auf:
# apt install isc-dhcp-server
Zur Konfiguration verwendet der DHCP-Server die Konfigurationsdatei /etc/dhcp/dhcpd.conf. Das folgende Beispiel zeigt eine einfache Konfiguration für einen DHCP-Server, der die Domäne willemer.edu verwaltet.
option domain-name "willemer.edu";
option domain-name-servers 213.73.91.35;
default-lease-time 86400;
max-lease-time 86400;
authoritative;
subnet 192.168.109.0 netmask 255.255.255.0 {
range 192.168.109.10 192.168.109.99;
option routers 192.168.109.1;
host meinserver {
hardware ethernet 08:00:27:60:e8:3c;
fixed-address 192.168.109.200;
}
Die Kommandos werden durch ein Semikolon abgeschlossen. Blöcke werden durch geschweifte Klammern begrenzt.
option domain-name
Dies ist der Name der Domäne.
option domain-name-servers
Hier werden die für die Domäne zuständigen DNS-Server aufgezählt. In diesem Fall wurde die Adresse eines freien DNS-Servers aus dem Internet angegeben.
default-lease-time
Dieser Wert gibt die Zeit in Sekunden an, für die die Ressourcen vergeben werden. Die Ressourcen, die der DHCP-Server vergibt, sind nur geliehen. Ist der vorgegebene Zeitrahmen überschritten, muss sich der Client um eine Verlängerung bemühen. So wird gewährleistet, dass nicht Ressourcen an Rechner vergeben sind, die sich längst nicht mehr im Netz befinden.
authoritative
Die gesetzte Option authoritative
besagt, dass dieser Server der offizielle DHCP-Server des Netzes ist.
subnet
Mit der Definition subnet
können Teilnetze zusammengefasst werden, die gemeinsame Eigenschaften haben. Insbesondere wird der Pool von Adressen angegeben, der bei Anfragen verteilt werden kann.
Die subnet
-Definition des Beispiels beschreibt, dass für das Netzwerk 192.168.109.0 mit der Netzwerkmaske 255.255.255.0 der Bereich der IP-Adressen zwischen 10 und 99 verteilt werden kann. Der Router dieses Subnetzes hat die Hostnummer 1.
host
Durch eine host
-Definition können einzelnen Geräten feste IP-Adressen vergeben werden.
hardware ethernet
angegeben. Diese Adresse erfahren Sie durch den Befehl ip a
. Bei Netzwerkgeräten wie Druckern oder Routern ist diese häufig auf einem Aufkleber am Gerät zu finden.fixed-address
wird die IP-Adresse für das Gerät geschrieben.Für jedes Gerät kann der Router gesondert eingestellt werden.
Der Server dhcpd
wird mit dem Befehl systemctl
gestartet.
# systemctl start isc-dhcp-server
Sie können den Server wieder stoppen, indem Sie statt start
das Argument stop
übergeben. Mit restart
können Sie den Dienst neu starten, wenn Sie die Konfiguration geändert haben.
Da es nicht mehr als einen DHCP-Server geben sollte, ist es besonders hilfreich, dass Sie mit disable
den Dienst nach dem nächsten Reboot ausgeschaltet lassen können. Mit enable
wird er wieder aktiviert.
Mit 4 Milliarden Adressen schien die Anzahl der IP-Adressen großzügig dimensioniert. Das hätte bedeutet, dass jeder Mensch eine eigene IP-Adresse haben könnte. Das war zu Zeiten, wo jeder Computer so groß war wie ein Kühlschrank und so teuer wie eine Segelyacht. Heutzutage ist der Gedanke nicht mehr absurd, dass jeder Mensch ein Smartphone hat. Hinzu kommen die Server im Internet. Viele Menschen haben zwei oder drei Laptops. Autos erfragen im Internet die Verkehrssituation. Die USA und Europa hatten sich zuerst bedient und so wurde es vor allem in Asien eng. Es müssen neue Adressen her und dafür steht IPv6.
Die Größe der Adressen wurde von 4 Bytes auf 16 Bytes vervierfacht. Damit gibt es eine 38-stellige Anzahl von Adressen, was erst einmal reichen sollte. Spaßvögel oder Wissenschaftler haben errechnet, dass dies eine 24-stellige Anzahl Adressen pro Quadratmeter ergibt.
Abbildung 8.3: Aufbau einer IPv6-Adresse
Bei der nun 128 Bit langen Adresse stehen immer 45 Bits für die Netzwerkkennung, 16 Bits für die Subnetzwerkbildung und 64 Bits für die Hostadresse innerhalb des Netzwerks zur Verfügung (siehe Abbildung 8.3). Da fehlen noch 3 Bits? Stimmt. Die werden der Adresse vorangestellt und bestimmen den Adresstyp.
Da ja nun Platz genug ist, kann man die MAC der Hardware gerade noch in den 64 Bits der Hostadresse unterbringen.
IPv6-Adressen werden nur noch hexadezimal dargestellt. Es werden also die Ziffern 0 bis 9 und die Buchstaben a bis f verwendet. Eine IPv6-Adresse könnte also so aussehen:
20010db80100f1010000000000000001
Das ist etwas schwierig zu lesen, also werden jeweils 16 Bits durch einen Doppelpunkt abgetrennt.
2001:0db8:0100:f101:0000:0000:0000:0001
Um die Zahl zu komprimieren, werden führende Nullen in den 16-Bit-Gruppen weggelassen.
2001:db8:100:f101:0:0:0:1
Innerhalb der Adresse können mehrere Blöcke von Nullen durch einen doppelten Doppelpunkt abgekürzt werden. Um eine Eindeutigkeit zu gewährleisten, darf dies nur einmal in der Adresse auftreten.
2001:db8:100:f101::1
Die Adresse localhost, die den eigenen Rechner bezeichnet, ist bei IPv6 eine 1, die demzufolge wie folgt dargestellt wird:
::1
Noch kürzer ist nur noch die Nummer 0, die beispielsweise in Routentabellen für die Defaultroute steht. Unter IPv4 ist sie 0.0.0.0, unter IPv6 sind es zwei Doppelpunkte (::
).
Über seine IP-Adresse erreichen Sie einen anderen Computer im Netzwerk. Tatsächlich benötigen Sie aber eine Netzwerkverbindung immer zwischen zwei Prozessen, also gestarteten Programmen. Schließlich wollen Sie über einen von Ihnen gestarteten Browser Firefox eine Verbindung zu dem Webserver-Prozess Apache bei Wikipedia bekommen. Es kommunizieren keine Computer miteinander, sondern Prozesse.
Damit ein Programm Verbindung zu einem anderen Programm aufnehmen kann, öffnet es einen Socket. Diese sind durchnummeriert und werden Port genannt.
Ein Client fordert einen Socket an und will dann beispielsweise den Webserver aufrufen. Damit er weiß, wie er diesen erreichen kann, sind die Standarddienste festgelegt. Beispielsweise wartet der Webserver auf dem Port 80 auf Anfragen. Ein Mailserver nimmt Ihre ausgehende Mail auf dem Port 25 entgegen und unter der Portnummer 110 können Sie mit dem virtuellen Postboten sprechen, der Ihnen Ihre E-Mails liefert. Diese Nummern werden als well known port, wörtlich übersetzt also »wohlbekannter Hafen« bezeichnet.
Die Serverprozesse bedienen sich solcher bekannter Adressen. Ein Client dagegen benötigt nur irgendeinen Socket, dessen Nummer sich oberhalb der für Server reservierten Nummern tummelt.
In einer URL finden Sie den Port manchmal am Ende, durch einen Doppelpunkt abgetrennt, allerdings nur dann, wenn er nicht dem Standardport entspricht.
Die Datei /etc/services ordnet diesen Nummern ihre Namen zu. Als Administrator dürften Sie diese Datei im Regelfall nicht ändern müssen. Wenn Sie in die Datei hineinschauen, sehen Sie auf der linken Seite den Namen des Protokolls. Es folgt die Nummer des Ports und durch einen Schrägstrich getrennt die Kennzeichnung, nach welchem Transportprotokoll vorgegangen wird. Zur Auswahl stehen tcp
und udp
.
Die Protokollfamilien tcp
und udp
unterscheiden sich im Kommunikationsablauf. Das TCP (Transmission Control Protocol) sichert den Datentransport und die Reihenfolge der Pakete zu. Verloren gegangene Pakete werden erneut versendet. Dagegen sendet UDP (User Datagram Protocol) die Pakete an den Empfänger ohne Kontrolle. Der Empfänger soll sich beklagen, wenn es nicht klappt. Aufgrund des mangelnden Komforts ist UDP in der Regel schneller als TCP. UDP wird vor allem für alle Arten des Streamings verwendet.
IP-Adressen sind knapp, zumindest soweit es IPv4 betrifft. Aus diesem Grund ist es nicht nur der pure Geiz, der dazu führt, dass Ihnen Ihr Internet-Provider nicht mehr als eine solche IP-Adresse zur Verfügung stellt. Und selbst diese IP-Adresse steht Ihnen nicht dauerhaft zur Verfügung. Von Zeit zu Zeit wird Ihnen diese entzogen und einem anderen Kunden zugeteilt.
Wie aber kommen Sie mit Ihren drei PCs, fünf Smartphones, Ihrem Fernseher, Ihrer Küchenmaschine und Ihrer Überwachungskamera für das Kinderzimmer ins Internet? Alle diese Geräte müssen sich für die Internet-Zugriffe die IP-Adresse des Routers ausleihen. Damit die Geräte untereinander kommunizieren können, benötigen sie eine private IP-Adresse, die sie per DHCP von ihrem Router bekommen.
Network Address Translation (NAT) wird verwendet, um die Computer, Smartphones und sonstigen Geräten eines lokalen Netzwerks über die eine IP-Adresse mit dem Internet zu verbinden, die Ihnen Ihr Provider zugesteht.
Während der Router also auf der einen Seite die internetfähige IP-Adresse des Providers besitzt, stellt er, typischerweise mittels DHCP, dem lokalen Netzwerk eine private Netzwerkadresse zur Verfügung, die auf keinen Fall im Internet vorkommen darf. Ansonsten wären diese Adressen im Internet nämlich für die Teilnehmer des lokalen Netzwerks nicht erreichbar. Diese Adressen bezeichnet man als »private IP-Adressen«, und sie beginnen meist mit 192.168 oder auch mit 10 und sind in der Tabelle 8.2 bereits einmal aufgeführt worden.
Der Router ersetzt die Absenderadresse einer Anfrage aus dem lokalen Netzwerk durch seine internetfähige IP-Adresse. Unter dem Port, unter dem der Router das Paket absendet, speichert er in einer Tabelle die IP-Adresse und den Port des Original-Absenders im lokalen Netzwerk.
Sobald auf diesem Port eine Antwort des Adressaten hereinkommt, setzt er als Adresse wieder die des ursprünglichen Absenders hinein und sendet das Paket an den ursprünglichen Auftraggeber.
Da dabei die Adressen umgesetzt werden, spricht man von Network Address Translation oder NAT.
Abbildung 8.4 zeigt, wie ein Client im lokalen Netzwerk ein Paket an einen Webserver sendet. Er verwendet dabei den Standardport 80. Als Absender verwendet er seine lokale IP-Adresse (beispielsweise 192.168.109.3) Als Port verwendet er einen dynamisch zugeteilten, nicht reservierten Port. Hier wird als Beispiel 1111 genannt.
Abbildung 8.4: Network Address Translation (NAT)
Für den Auftraggeber ist das Zwischenschalten des NATs völlig transparent, also nicht erkennbar. Er hat an den Port 80 einer IP-Adresse ein Paket gesendet und genau von dort eine Antwort bekommen.
Aus Sicht des Webservers und damit aus Sicht des Internets gibt es nur das Gateway als Auftraggeber. Die lokale IP-Adresse wird nicht außerhalb des lokalen Netzwerks sichtbar. Das hat zwei Vorteile.
Eine Umsetzung eines NAT wird in Kapitel 20 durchgeführt.
Computer finden Zahlen als Adressen im Internet ganz toll. Bei den meisten Menschen sieht das etwas anders aus. Und darum verwenden wir für die PCs im Netzwerk meist Namen. Das finden die Computer wieder nicht so einfach. Aus diesem Grund muss es Verfahren geben, eines ins andere zu übersetzen.
Bei der Erstinstallation eines Computers werden Sie gefragt, welchen Namen der Computer tragen soll. Dieser Name wird als Hostname bezeichnet. Er erhält seine besondere Bedeutung, wenn die Maschine ins Netz geht, da sie dann unter diesem Namen angesprochen werden kann. Die Namensgebung eines Linux-Rechners erfolgt durch den Befehl hostname
. Diese Taufe ist allerdings nicht sehr dauerhaft. Schon beim nächsten Reboot wird sich der Computer nur noch an den Namen erinnern, der in der Datei /etc/hostname steht.
https://wiki.ubuntuusers.de/Avahi
Damit ist der Vorname des Computers geklärt. Allerdings gehören die Computer eines lokalen Netzwerks alle einer großen Familie an. Diese Familie nennt man unter Computern Domäne, und die besitzt einen Domänennamen.
Der Domänenname ist mehrgliedrig und wird von hinten nach vorn gelesen. Zuletzt kommt die Top-Level-Domain, die für Deutschland de ist. Dänemark verwendet dk und die Niederlande nl. Die scheinbar staatenunabhängigen TLDs, wie man Top-Level-Domains manchmal liebevoll nennt, wie com (für Kommerz), gov (für Government, also Regierung) und edu (für Education, also Bildungseinrichtungen) gehören allerdings meist zu den USA.
Für Ihr lokales Netzwerk können Sie Ihren Domänennamen völlig frei festlegen, solange Sie nicht die Absicht haben, mit diesem Domänennamen ins Internet zu gehen. Sie können den Domänennamen mit dem Befehl domainname
auslesen und setzen:
# domainname
(none)
# domainname willemer.edu
# domainname
willemer.edu
#
Wie Sie feststellen, ist der Domänenname standardmäßig gar nicht gesetzt. Dauerhaft ändern können Sie ihn nur über einen Namensdienst.
Die grundlegendste Art, IP-Adressen mit Namen zu verbinden, erfolgt in der Datei /etc/hosts. Darin stehen links die IP-Adressen und rechts die zugehörigen Namen, gefolgt von den Spitznamen dieses Rechners. Als Trennzeichen sind Leerzeichen oder Tabulatoren möglich. Sucht ein Programm einen Namen für die IP-Adresse, wird es immer den ersten Namen verwenden. Also ist das der wichtigste Name. Das Doppelkreuz (#) wird als Kommentarzeichen verwendet.
127.0.0.1 localhost
192.168.109.1 dsl router1
192.168.109.4 lte router2
192.168.109.56 laser fax
192.168.109.142 obelix
192.168.109.123 dbox
192.168.109.221 nas
192.168.109.199 server www mail
Nach der Erstinstallation wird zur Namensauflösung zunächst in der Datei /etc/hosts nachgesehen. In einem Netzwerk wäre es allerdings etwas umständlich, alle Änderungen in allen Hosts-Dateien des gesamten Netzwerks nachzupflegen. Dafür gibt es zentrale Namensdienste.
Die Namen des gesamten Internets lassen sich nicht einfach in Dateien pflegen. Aus diesem Grund setzt das Internet eine Netzwerklösung dafür ein und die nennt sich Domain Name Service (DNS).
Die Computer eines lokalen Netzwerks benötigen im Allgemeinen nur einen DNS-Server, um alle IP-Adressen des Internets anzusprechen. Die IP-Adresse dieses DNS-Servers wird vom DHCP an die Rechner verteilt. Der DNS-Server wird im Allgemeinen vom Provider gestellt.
Für einen eigenen DNS-Server benötigen Sie das Paket bind9. BIND (Berkeley Internet Name Domain) ist die wichtigste Implementierung des DNS. Die 9 steht für die Version. Diese hat sich aber seit Jahrzehnten nicht mehr geändert.
# apt install bind9
Direkt nach der Installation startet bereits das Serverprogramm named
. Die Konfigurationsdateien befinden sich im Verzeichnis /etc/bind, darum ist es sinnvoll, dorthin zu wechseln.
# cd /etc/bind
# vi named.conf
Im Verzeichnis /etc/bind befindet sich die zentrale Datei named.conf. Sie enthält zwar nur ein paar include
-Befehle, aber dadurch wissen wir nun, wo die Musik spielt.
// named.conf
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
Die Datei named.conf.options enthält allgemeine Optionen, die vor allem die Weiterleitung und das Caching von DNS-Anfragen an das Internet betrifft. Interessant sind die folgenden Einträge:
Der Eintrag forwarders
ist standardmäßig auskommentiert und steht auf 0.0.0.0. Wenn Sie hier die IP-Adresse eines anderen DNS-Servers eintragen, wird dieser all die Anfragen bearbeiten, die der lokale DNS-Server nicht beantworten kann. Die folgende Konfiguration tut alles, was Sie benötigen.
// named.conf.options
options {
directory "/var/cache/bind";
forwarders {
80.241.218.68;
};
dnssec-validation auto;
listen-on-v6 { any; };
};
Hier bewirkt der Eintrag für forwarder
, dass Anfragen, die der lokale Server nicht beantworten kann, vom DNS-Server 80.241.218.68 beantwortet werden. Diese Adresse ist ein frei verwendbarer DNS-Server. Leicht zu merken ist der DNS-Server von Google mit 8.8.8.8. Allerdings möchte man Google nicht noch mehr Daten zukommen lassen, als sie eh schon haben.
Für die Konfiguration des lokalen Netzwerks enthält die Datei named.conf.local zwei Zonen. Die eine macht aus Namen Zahlen und die andere aus Zahlen Adressen. Die tatsächliche Konfiguration erfolgt in Dateien, auf die mit dem Schlüsselwort file
verwiesen wird.
Die Beispielkonfiguration verwaltet die Zone willemer.edu
und die IP-Adressen von 192.168.1.0/24. Es ist Konvention, die Dateien mit db beginnen zu lassen und dann den Domain-Namen beziehungsweise die IP-Adresse anzuhängen.
// named.conf.local
zone "willemer.edu" {
type master;
file "/etc/bind/db.willemer.edu";
};
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192.168.1";
};
Beachten Sie die umgekehrte Darstellung der IP-Adresse in der Angabe der Zone! Der Hintergrundgedanke ist, dass DNS hierarchisch aufgebaut ist und die Aufgaben einer Unterzone delegiert werden können.
In der Datei db.willemer.edu wird festgelegt, welche IP-Adresse geliefert wird, wenn ein Client nach einem Namen eines Computers aus der Domäne fragt. Als Basis kann man die Datei db.empty nach db.willemer.edu kopieren und dann aufmotzen.
; # db.willemer.edu
$TTL 86400
@ IN SOA admin.willemer.edu. root.localhost. (
8 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
;
@ IN NS localhost.
idefix IN A 192.168.1.1
Am Anfang der Datei steht der TTL-Wert (Time To Live; engl. Lebenszeit). Dieser Wert gibt an, nach wie vielen Sekunden die Daten von einem anderen Server erneut gelesen werden müssen.
Das Zeichen @ steht für den lokalen Domänennamen. Die Abkürzung SOA ist der »Start of Zone Authority« und bezeichnet den Standard-Namensserver. Es folgt direkt die E-Mail-Adresse für die Beschwerden. Es fehlt hier natürlich das typische @ einer normalen E-Mail-Adresse, da das Zeichen ja schon zuvor eingesetzt wurde. Stattdessen wird ein Punkt verwendet.
Innerhalb der Klammer folgt die Seriennummer, die man immer hochzählen sollte, wenn man die Konfiguration ändert. Die anderen Werte innerhalb der Klammer bestimmen die Gültigkeitsdauern. In der Regel kann man diese Werte so stehen lassen.
In den Zeilen darunter stehen die Definitionen der Namen, die ihren IP-Adressen zugeordnet werden. Dabei gibt es den A-Record IN A
für die Adressauflösung. Hier haben wir den Namen idefix
für den Router definiert. Zum Testen soll das erst einmal reichen. Es gibt noch ein paar andere Einträge, die interessant sind:
IN NS
Hier wird der zuständige Namensserver für die Domäne festgelegt.
IN MX
Nummer
Dies ist der Mailserver. Gibt es mehrere Mailserver, gibt die Nummer hinter MX die Rangfolge an. Eine kleine Nummer ist natürlich höherwertiger. Aber das haben Sie sich sicher schon gedacht.
IN A
Hier beginnt nun endlich die Definition der Adressen. Auf der linken Seite steht der Name und hinter IN A
die IP-Adresse. Grundsätzlich sollte nur ein Hostname auf eine IP-Adresse abgebildet werden.
IN CNAME
Wollen Sie mehrere Namen auf die gleiche IP-Adresse erlauben, legen Sie mit CNAME
Spitznamen an. Hier wird debian eben auch server genannt.
Der Namensserver soll aus einer IP-Adresse einen Namen bilden können. Darum ist die Datei 192.168.1.zone das Gegenstück zur Namenstabelle. Hier können Sie erst einmal die Datei db.127
nach db.192.168.1
kopieren und passen diese etwas an.
$TTL 604800
@ IN SOA mintmate.willemer.edu. root.localhost. (
4 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
1 IN PTR idefix.willemer.edu.
Die SOA-Zeile habe ich einfach aus der Datei db.willemer.edu kopiert. Ansonsten wurde ein IN PTR-Eintrag für idefix
eingetragen, der im Netzwerk 192.168.1 die Nummer 1 hat.
Die restlichen Dateien müssen Sie nicht weiter beachten.
Nach der Konfiguration muss der Namensdienst die neuen Dateieinträge zur Kenntnis nehmen. Das geschieht auf jeden Fall bei einem Neustart des Dienstes.
# systemctl restart named
Wenden Sie sich nun Ihrem Client zu. Bei dem sollte alles auf Anhieb funktionieren. Sicherheitshalber können Sie den Netzwerkadapter noch einmal trennen und wieder einstecken.
idefix
sollte 192.168.1.1 liefern, sonst ist an der Datei db.willemer.edu etwas faul.netstat -r
durchführen. Der zeigt den Namen des Routers, sollte also aus der Nummer 192.168.1.1 nun den Namen idefix.willemer.edu
ausgeben. Ansonsten ist Ihre Datei db.192.168.1 nicht ganz dicht.Das Programm dig
ist wie nslookup
ein Programm, um DNS-Server abzufragen. Dazu übergeben Sie ihm den Namen des gesuchten Rechners.
$ dig www.willemer.de
; ≫≪ DiG 9.18.1-1ubuntu1.3-Ubuntu ≫≪ www.willemer.de
;; global options: +cmd
;; Got answer:
;; -≫HEADER≪- opcode: QUERY, status: NOERROR, id: 37561
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.willemer.de. IN A
;; ANSWER SECTION:
www.willemer.de. 3600 IN A 217.160.0.27
;; Query time: 40 msec
;; SERVER: 193.175.191.132#53(193.175.191.132) (UDP)
;; WHEN: Fri Mar 03 08:30:11 CET 2023
;; MSG SIZE rcvd: 49
Die Domänendefinition legt auch fest, welcher Rechner der Mailserver der Domäne ist. Dabei geht es um den SMTP-Server, der die Mails für die Domäne entgegennimmt und sie an die Anwender der Domäne verteilt. Hintergrund ist, dass die E-Mail-Adresse user@domaene.de nur den Domänenname enthält, aber nicht den Server, der die Mails entgegen nimmt. Die Information, welcher Computer als Mail-Server der Domäne arbeitet, wird in dieser Zeile des DNS-Servers der Domäne definiert:
@ IN MX 10 debian.willemer.edu. ; MX Mailserver
Das Zeichen @ steht für die Domäne selbst. Es wird also für die Domäne willemer.edu
festgelegt, dass der Computer debian
den Mailserver darstellt. Es können mehrere Mailserver aufgezählt werden.
@ IN MX 10 debian.willemer.edu. ; MX Mailserver
@ IN MX 20 obelix.willemer.edu. ; MX Mailserver
Die Zahl hinter dem MX bezeichnet die Rangfolge. Zunächst wird versucht, den Computer debian
zu kontaktieren. Gelingt das nicht, weil dieser gerade andere Hobbys hat oder im Garten grillt, so übernimmt obelix
diese Aufgabe. Natürlich müssen die benannten Rechner auch im weiteren Verlauf der Definition mit einer IP-Adresse versehen werden.
Wird eine Mail an arnold@willemer.edu
von einem Mail Transfer Agent aus versandt, wird dieser vor dem Versenden eine Anfrage an den DNS-Server richten, welche IP-Adresse zu kontaktieren ist, und mit dieser Adresse eine SMTP-Verbindung über den Port 25 herzustellen versuchen. Sie können dies mit dem Befehl nslookup
nachvollziehen. Mit Angabe des Typs MX
erfragen Sie die Einträge der Mailserver:
$ nslookup
> set type=MX
> willemer.edu
Server: 192.168.1.199
Address: 192.168.1.199#53
willemer.edu mail exchanger = 10 debian.willemer.edu.
willemer.edu mail exchanger = 20 obelix.willemer.edu.
>
Der korrekte Eintrag für einen Mailserver ist vor allem deshalb wichtig, weil die großen Mail-Provider im Zuge der Spam-Bekämpfung den Absender der Mails genau prüfen. Dazu wird auch das DNS immer mehr herangezogen. Sollte Ihr System nicht sauber konfiguriert sein, landen Sie schnell auf einer Blacklist, und das führt dazu, dass alle Mails Ihres Systems von den Spamfiltern aussortiert werden. Darum sollten Sie auf folgende Dinge achten:
CNAME
sein.Sie können DNS auch verwenden, um die Last eines Servers auf mehrere Server zu verteilen. Dazu teilen Sie einigen IP-Adressen den gleichen Namen zu. Der DNS-Server wird diese IP-Nummern immer im Wechsel zurückgeben. Nun benötigen Sie noch für jede IP-Adresse einen eigenen Server, und schon werden die Adressen im Wechsel vergeben.
Im folgenden Beispiel ist der Name lastsrv in der Datei db.willemer.edu zweimal belegt, einmal mit 192.168.1.144 und einmal mit 192.168.1.143.
lastsrv IN A 192.168.1.144
lastsrv IN A 192.168.1.143
Und tatsächlich zeigt der Test mit nslookup
, dass bei Anfragen die Server immer im Wechsel die IP-Adresse zurückgeben:
# nslookup lastsrv
Server: 192.168.1.199
Address: 192.168.1.199#53
Name: lastsrv.willemer.edu
Address: 192.168.1.144
Name: lastsrv.willemer.edu
Address: 192.168.1.143
# nslookup lastsrv
Server: 192.168.1.199
Address: 192.168.1.199#53
Name: lastsrv.willemer.edu
Address: 192.168.1.143
Name: lastsrv.willemer.edu
Address: 192.168.1.144
# nslookup lastsrv
Server: 192.168.1.199
Address: 192.168.1.199#53
Name: lastsrv.willemer.edu
Address: 192.168.1.144
Name: lastsrv.willemer.edu
Address: 192.168.1.143
Sie können auch mehr als zwei Einträge für den gleichen Namen einrichten. Die verschiedenen IP-Adressen werden dann vom Server durchrotiert.
Mehrere Computer hinter einem Namen einzusetzen, ist weniger kritisch, als es auf den ersten Blick erscheinen mag. Eine normale Netzwerksitzung wird eingeleitet, indem das Clientprogramm durch die Systemfunktion gethostbyname()
nach der IP-Adresse eines Namens fragt. Danach wird die Verbindung über die IP-Adresse aufgebaut. Bis zum Ende der Sitzung wird normalerweise kein weiteres Mal nach dem Namen gefragt.
Bei den sogenannten statuslosen Servern wird für jede Anfrage eine neue Verbindung aufgebaut. Dort kann es dann leicht passieren, dass der Client bei aufeinanderfolgenden Anfragen unterschiedliche Server erreicht. Das ist aber nicht tragisch, da die Statuslosigkeit ja besagt, dass die Anfragen unabhängig voneinander sind.
Eine Besonderheit sind Webserver. Vom Protokoll her sind sie eigentlich statuslos. Und sofern die Anfragen nur statische Seiten erfragen, kann auch nichts schiefgehen. Bei interaktiven Websites wie beispielsweise Online-Shops wird mit programmtechnischen Mitteln aus den statuslosen Einzelabfragen eine Session gemacht. Die einzelnen Anfragen werden aber typischerweise in gemeinsam genutzten Datenbanken abgelegt, sodass es unerheblich ist, welcher Server die Session weiterbearbeitet.