TCP/IP

Grundlagen

1969 machte die United Staates Defense Advanced Research Projects Agency (kurz: DARPA) Versuche, weit auseinanderliegende Computersysteme verlässlich zu vernetzen. Grundgedanke dieses Netzes war die Funktionstüchtigkeit der Netze auch nach einem teilweisen Ausfall durch Atomexplosionen.

1975 wurde der Schritt in die Praxis gemacht. Die DARPA war nicht mehr ausschliesslich für das Verteidigungsministerium tätig und wurde daher in ARPA umbenannt. Das dabei aufgebaute ARPA-NET verband die Computer der Regierungsstellen und aller amerikanischer Universitäten miteinander.

1983 wurden neue Protokolle entwickelt und eingeführt. Eines dieser Protokollfamilien hieß TCP/IP.

Durch den Erfolg von TCP/IP im ARPA-NET wurden die Protokolle für die Verwendung in lokalen Netzen implementiert.

1990 wurde ein fließender Übergang vom ARPANET ins INTERNET abgewickelt. Seitdem hat sich die ARPA ganz aus dem Netz zurückgezogen und es gibt keinen eigentlichen Eigentümer mehr. 

TCP/IP im Detail

Wichtig für die Grundlage der Protokollfamilie TCP/IP ist, daß eine Abweichung zum OSI-Schichtenmodell existiert. TCP/IP besteht, im Gegensatz zum OSI-Modell, aus vier Schichten. Die Netzzugriffsschicht enstpricht der Schicht 1 und 2 beim OSI-Modell, Vermittlungsschicht und Transportschicht sind gleich und die Schichten 6 und 7 beim OSI-Modell werden auf die Anwendungsschicht übertragen.

In der Netzzugriffsschicht werden die IEEE 802 Normen eingesetzt (siehe Netzwerktechnik). In der Vermittlungsschicht kommt das Internet-Protocol (IP) und das Internet Control Message Protocol (ICMP) zum Einsatz. Die Transportschicht bildet das User Datagram Protocol (UDP) und das Transmission Control Protocol (TCP). Die oberste Ebene besteht aus den eigentlichen Anwendungen, welchen jeweils Portnummern der daruntergelegenen Schicht zugeordnet sind.

Auf die genauen Spezifikationen gehe ich hier nicht weiter ein.

Aufbau von IP-Adressen

IP-Adressformat

Jeder Rechner im Netz hat eine (Host) oder mehrere (Gateway) eindeutige Adressen. Dabei handelt es sich um die Adressen, die in IP-Datagrammen angegeben werden. Aus der Aufteilung des IP-Datagramms geht schon hervor, daß diese Adressen 32 Bit breite Zahlen sind. In der Regel werden diese Zahlen in vier Oktetts dargestellt.

Diese IP-Adressen werden zentral vergeben. Im Prinzip ist es in reinen lokalen Netzen möglich, beliebige Adressen zu benutzen, sobald ein Anschluß ans Internet besteht, müssen aber zentral vergebene Adressen benutzt werden. Jedes Land der Erde unterhält dazu ein Network Information Center (NIC), das für die Adressvergabe zuständig ist. 

Netz- und Hostadressen

Die Aufteilung von IP-Adressen in vier Oktette hat einen wesentlichen Grund. Das Internet besteht zum großen Teil aus Computernetzen, die miteinander über das Internet kommunizieren. Die IP-Adresse ist immer aufgeteilt in eine Netz- und eine Hostadresse. Diese Eigenschaft spielt für das Routing eine wesentliche Rolle, da IP-Adressen mit der gleichen Netzadresse immer lokal sind.

Je nachdem, welcher Teil der Gesamtadresse als Netz- und welcher als Hostadresse gilt, entstehen unterschiedliche Obergrenzen für die mögliche Anzahl von Netzen bzw. Hosts pro Netz. Weil alle Adressen im Internet einmalig sein müssen, kommt es heute bereits zu Engpässen bei der Adressvergabe. Ein neuer Standard (IP6) ist derzeit in der Implementierungsphase, der dann 64 Bit breite Adressen verwenden soll.

Die Frage, welcher Teil der Adresse Netzadresse ist wird durch Adressklassen gelöst. Es existieren fünf Klassen, von denen aber nur drei relevant sind, die anderen beiden dienen der Forschung und Experimentierarbeit. Die Klassen sind:

Netzklasse A
Breite 1

  • max. Anzahl Netze 126
  • max. Anzahl Hosts 16777214
  • Start 1.0.0.0 Ende 126.0.0.0

Netzklasse B
Breite 2

  • max. Anzahl Netze 16382
  • max. Anzahl Hosts 65534
  • Start 128.0.0.0 Ende 191.255.0.0

Netzklasse C
Breite 3

  • max. Anzahl Netze 2097150
  • max. Anzahl Hosts 254
  • Start 192.0.0.0 Ende 223.255.255.0

Adressen von 224.0.0.0 bis 239.255.255.255 werden als Mulitcast-Adressen genutzt, Adressen von 240.0.0.0 bis 255.255.255.255 sind für zukünftige Verwendungen reserviert.

Um Konflikte mit lokalen TCP/IP Netzen und dem Internet zu vermeiden, gibt es für jede Klasse einige Adressen, die nicht im Internet geroutet werden (dürfen). Sie sind ausschließlich für lokale Netze gedacht. Diese Adressen sind:

Klasse A: 10.0.0.0
Klasse B: 172.16.0.0 bis 172.31.0.0
Klasse C: 192.168.0.0 bis 192.168.255.0

Die Adressen, deren Hostnummern auf 0 oder auf 255 gesetzt sind, haben eine Sonderbedeutung. Alle auf Null gesetzt meint das jeweilige Netz selbst, alle auf 255 gesetzt meint alle angeschlossenen Hosts. So bedeutet die Adresse 149.76.255.255 nicht eine bestimmte Adresse im Netz 149.76.0.0 sondern alle Rechner, die an diesem Netz hängen. Dies ist die Broadcast Adresse.

Es gibt zwei reservierte Netzadressen mit Sonderbedeutung. Das sind die Adressen 0.0.0.0 und 127.0.0.0. Die erste ist die sogenannte default route (voreingestellte Route) und die andere das sogenannte Loopback.

Das Netz 127.0.0.0 bedeutet immer das lokale Netz. Gewöhnlich steht dann die Adresse 127.0.0.1 als loopback interface des jeweiligen Hosts zur Verfügung.

Die Adresse 0.0.0.0 hat eine Bedeutung für das Routing. Jedes Datagramm, das an eine Adresse geschickt wird, die nicht im lokalen Netz liegt, wird an die default route geschickt. Diese voreingestellte Route weist zum nächsten Gateway.

Subnetz und Netmaske

Ein Teil der Host-Adresse kann intern als Subnetzadresse gewertet werden. Dadurch können große Netze getrennt werden. So kann zum Beispiel der Host mit der Nummer 160.1 im B-Klasse Netz 149.239 auch uminterpretiert werden, in den Host Nummer 1 im Subnetz 160 des Netzwerks 149.239. Welche Bits der 32 Bit Adresse als Netz- und welche als Hostadresse gewertet werden, wird in der sogenannten Netzmaske festgelegt.

Die Netzmaske (Netmask) ist eine 32 Bit Zahl, die in vier Oktetts aufgeteilt ist. Jedes Bit dieser Maske, das gesetzt ist, bestimmt daß das entsprechende Bit in der Adresse ein Teil der Netzadresse ist.

So wird die Tiefe der Netzmaske üblicherweise anhand der Anzahl der Bits angegeben:

  • Anzahl Bits 1 -> Dezimalwert 128
  • Anzahl Bits 2 -> Dezimalwert 192
  • Anzahl Bits 3 -> Dezimalwert 224
  • Anzahl Bits 4 -> Dezimalwert 240
  • Anzahl Bits 5 -> Dezimalwert 248
  • Anzahl Bits 6 -> Dezimalwert 252
  • Anzahl Bits 7 -> Dezimalwert 254
  • Anzahl Bits 8 -> Dezimalwert 255

Dementsprechend gibt es Maskierungslängen für die Subnetzmaske:

  • Länge /08 -> 255.0.0.0
  • Länge /16 -> 255.255.0.0
  • Länge /24 -> 255.255.255.0
  • Länge /25 -> 255.255.255.128
  • Länge /26 -> 255.255.255.192
  • Länge /27 -> 255.255.255.224
  • Länge /28 -> 255.255.255.240
  • Länge /29 -> 255.255.255.248
  • Länge /30 -> 255.255.255.252
  • Länge /31 -> 255.255.255.254
  • Länge /32 -> 255.255.255.254