Stand: 08.12.97
Dieser Text beschreibt die Grundlagen des TCP/IP-Konzeptes.
Schicht |
Funktion |
Protokoll |
|||
7 | Application | Telnet | FTP | SMTP | ... |
6 | Presentation | ||||
5 | Session | TCP | ... | ||
4 | Transport | ||||
3 | Network | IP | ... | ||
2 | Data-Link | Ethernet | ... | ||
1 | Physical |
Applikationsprogramme, die für TCP/IP entwickelt worden sind, benutzen meist mehrere Protokolle. Die Summe der Schichten der Protokolle nennt man den Protocol-Stack. Benutzerprogramme kommunizieren mit der obersten Schicht des Protokoll-Stacks. Die oberste Schicht reicht die Informationen an untere Schichten weiter, bis sie schließlich vom physikalischen Netzwerk übertragen werden. Beim Empfänger verläuft der Prozeß umgekehrt von den unteren zu den oberen Schichten.
Im Einzelnen sieht das so aus:
Die physikalische Adresse eines Computers ist seine
Media-Access-Controll-Adresse, die sogenannte MAC-Adresse. Sie ist
6 Byte lang und in drei Byte für den Hersteller und in drei Byte für
eine fortlaufende Nummer aufgeteilt. Jede MAC-Adresse ist weltweit eindeutig.
In der Regel ist diese in der Hardware der Netzwerkkarte enthalten.
(Beispiel: 80 00 1B 3f 24 7A hex)
[Theoretisch ergeben sich für die Adressen 00 00 00 00 00 00 bis FF FF FF FF FF FF 1612, also etwa 2.8*1014 Adressen, was etwa 50000 pro Mensch ergibt.]
Im Gegensatz dazu ist die IP-Adresse hardware-unabhängig und 4 Byte lang, aber auch weltweit eindeutig. Leider gibt es hier nur 168, also etwa 4,3*109, d.h. nur etwa eine pro Erdenbewohner. Da diese IP-Nummern knapp werden, ist eine Erweiterung auf 6 Byte in Planung (IPv6). Dann sollen etwa 1000 IP-Adressen pro Quadratmeter zur Verfügung stehen.
Wenn ein IP-Paket über das Netzwerk gesendet wird, wird es zuvor in ein physikalisches Paket eingekapselt. Die folgende Darstellung zeigt ein IP-Paket, gekapselt in einem Ethernet-Rahmen:
IP-Paket | |||||
"Vorwort" | Ziel-Adresse | Quell-Adresse | Paket-Typ | Paket-Daten | Ethernet CRC |
Rahmen-Kopf |
Rahmen-Daten | ||||
Ethernet-Rahmen |
Eine IP-Adresse und eine MAC-Adresse sind ziemlich verschieden und haben
wenig mit einander zu tun.
Eine IP-Adresse wird auf eine MAC-Adresse abgebildet. Dazu wird das
ARP-Protokoll (address resolution-protocol) benutzt. Sendet ein Knoten
(Computer, Router,...) ein Paket mittels IP, dann muß die physikalische
Adresse ermittelt werden, die zur Ziel-IP-Adresse passt, die im IP-Paket
angegeben ist. Um diese physikalische Adresse herauszufinden, sendet der
Knoten ein ARP-Signal (Broadcast), das die Ziel-IP-Adresse enthält.
Der Knoten mit dieser IP-Adresse sendet seine physikalische Adresse zum
anfragenden Knoten zurück.
Die IP-Adresse besteht (zur Zeit) aus 4 Bytes (also jeweils Zahlen zwischen 0 und 255). Jede solche 4-Byte-IP-Adresse ist in zwei Teile zerlegt, den Netzwerk-Teil und den Host-Teil. Der Netzwerkteil identifiziert das Netzwerk, der Hostteil den Knoten.
Außerdem wird diese Teilung noch in (meist) drei Kategorien eingeteilt: Class-A, Class-B, Class-C.
1 Byte |
3 Byte |
|
0 | Netzwerk-Adresse | Host-Teil |
Das höchstwertige Bit der 32-Bit (=4 Byte) ist 0. Eine Bit-Darstellung mit n=Netzwerk-Bit und h=Host-Bit sieht so aus:
0nnnnnnn.hhhhhhhh.hhhhhhhh.hhhhhhhh
Anzahl der Class-A-Netzwerke: 126 (1-126, 127 ist reserviert) 7 Bits
Anzahl der Knoten pro Netzwerk: 16.777.215 24 Bits = 11111111.11111111.11111111 = FF.FF.FF hex
2 Byte |
2 Byte |
|
10 | Netzwerk-Adresse | Host-Teil |
Die zwei höchstwertigen Bits sind 10. Eine Bit-Darstellung mit n=Netzwerk-Bit und h=Host-Bit sieht so aus:
10nnnnnn.nnnnnnnn.hhhhhhhh.hhhhhhhh
Anzahl der Class-B-Netzwerke: 16383 (128.x-191.x) 14 Bits = (10) 111111.11111111 = 3FFF hex
Anzahl der Knoten pro Netzwerk: 65535 16 Bits = 11111111.11111111 = FFFF hex
3 Byte |
1 Byte |
|
110 | Netzwerk-Adresse | Host-Teil |
Die drei höchstwertigen Bits sind 110. Eine Bit-Darstellung mit n=Netzwerk-Bit und h=Host-Bit sieht so aus:
110nnnnn.nnnnnnnn.nnnnnnnn.hhhhhhhh
Anzahl der Class-C-Netzwerke: 2.097.151 (192.x.x-223.x.x) 21 Bits = (110) 11111.11111111.11111111= 1F.FF.FF hex
Anzahl der Knoten pro Netzwerk: 254 (255 ist reserviert) 8 Bits = 11111111 = FF hex
(Die angegebenen Anzahlen sind in Wirklichkeit geringfügig kleiner, da einige Adressen für Spezialzwecke reserviert sind).
Mit Hilfe des ersten Bytes der IP-Adresse lassen sich die Klassen unterscheiden:
1-126 | 1.h.h.h - 126.h.h.h | Class A |
128-191 | 128.n.h.h - 191.n.h.h | Class B |
192-223 | 192.n.n.h - 223.n.n.h | Class C |
Adressen im Bereich 224.0.0.0 bis 254.0.0.0 (die ersten drei Bits sind 111) sind entweder experimentelle Adressen oder für zukünftigen Gebrauch reserviert. Sie spezifizieren keine Netzwerke.
Ein Netzwerk läßt sich intern weiter in Subnetze zerlegen. Dabei sieht es nach außen weiter wie ein Netzwerk aus. So wissen z.B. externe Router nicht von einer Segmentierung, wohl aber interne Router.
Um ein Netzwerk mit gegebener Netzwerkadresse weiter zu unterteilen, wird der Hostteil der IP-Adresse zerlegt:
Netzwerk-Adresse | Host - Adressteil | |
Subnetz-Adresse | Host-Adresse |
Betrachen wir als Beispiel eine Class-B-Adresse 129.47.0.0. Die 2 Bytes=16 Bits des Hostteil zerlegen wir in z.B. 4 Bits für eine Subnetzadressierung und 12 Bits für die Hostadressierung. Dies erlaubt also 15 Subnetze und 4094 Knoten.
Eine andere Aufteilung in z.B. 8 und 8 Bits würde 254 Netzwerke mit je 254 Knoten erlauben.
Es muß nun einen Mechanismus geben, mit dem die Aufteilung in Netz- und Hostteil der Adresse sichtbar wird. Dazu wird die sogenannte Subnetzmaske (subnetwork mask) verwendet. Sie besteht ebenfalls aus 4 Bytes und wird bei Adressberechnungen über eine logische UND-Verknüpfung mit der IP-Adresse undiert. Dabei entsteht der vollständige Netzwerk-Adressanteil. Zwei Beispiele mögen dies verdeutlichen:
IP-Adresse: 129.47.27.14 = 10000010.00111001.00011011.00001110
Subnetmask: 255.255.0.0 = 11111111.11111111.00000000.00000000 ------------------------------------- 10000010.00111001.00000000.00000000 = 129.47.0.0 eine Subnetzadressierung mit 4 Bits:
IP-Adresse: 129.47.27.14 = 10000010.00111001.00011011.00001110
Subnetmask: 255.255.240.0 = 11111111.11111111.11110000.00000000 ------------------------------------- 10000010.00111001.00010000.00000000 = 129.47.(16).0
Ein Beispiel eines in zwei Segmente zerlegtes Netz, bei der die Subadressierung 4 Bits verwendet:
129.47.192.254 129.47.192.253 | | ------------------------------------------ | | Subnetz 192 (1100) 129.47.193.1 | --------- | | 129.47.192.1 Subnetmask: 255.255.240.0 | Router | | | 129.47.128.1 --------- | 129.47.129.1 | Subnetz 128 (1000) ------------------------------------------ | | 129.47.128.254 129.47.128.253
Aufgeschlüsselte IP-Adressen und Subnetzmaske:
Subnetzadr. | | | Netzadresse | |lok.Hostadr| Subnetmask: 11111111.11111111.11110000.00000000 ---------------------------------------------------------------------------- 129.47.128.254: 10000010.00111001.10000000.11111110 IP-Adr. auf Subnetz 128 129.47.129.1 : 10000010.00111001.10000001.00000001 IP-Adr. auf Subnetz 128 129.47.192.254: 10000010.00111001.11000000.11111110 IP-Adr. auf Subnetz 192 129.47.193.1 : 10000010.00111001.11000001.00000001 IP-Adr. auf Subnetz 192
Hier gibt es unterschiedliche Ansichten. In vielen Fällen ist das Subnetz 0000 verboten und wohl auch das Subnetz 1111. Im allgemeinen sollte man also bei Subnetzen, die nur Nullen oder nur Einsen haben, vorsichtig sein, bzw. diese meiden.
Eine ausführliche Beschreibung eines segmentierten Class-C-Netzes, bei dem die zur Verfügung stehenden 8 Bits in 2 Bits für die Netzsegmentierung und 6 Bits für die Knoten aufgeteilt sind, findet sich im Text segment.htm.
Man sollte die Subnetzadressen binär von links nach rechts mit Einsen und die Hostadressen von rechts nach links mit Einsen auffüllen. Dies läßt einen Puffer zwischen dem Subnetz- und dem Hostteil für spätere Änderungen. Z.B.:
1000 xxxx . xxxx xxxx Subnetz 128 0100 xxxx . xxxx xxxx Subnetz 64 1100 xxxx . xxxx xxxx Subnetz 192 ... 1000 0000 . 0000 0001 Host 1 im Subnetz 128 1000 0000 . 0000 0010 Host 2 im Subnetz 128 1000 0000 . 0000 0011 Host 3 im Subnetz 128 ...
Es ist üblich, Routern, Gateways, usw. die höchstmöglichen Hostadressen zu geben, also z.B. 129.47.64.127 im Subnetz 64 des obigen Beispiels.
Es gibt davon drei Typen: Netzwerk-Broadcasts, Subnetzwerk-Broadcasts und Broadcast Adressen. Ein Netzwerk-Broadcast hat im Netzwerkteil der Adresse eben den Netzwerkteil der IP-Adresse, im Hostteil nur Einsen. Z.B. 129.47.255.255 im Netz 129.47.
Ein Subnetzwerk-Broadcast enthält ebenfalls den Netzteil der IP-Adresse, den Subnetzteil und sonst nur Einsen. Z.B. 129.47.79.255 (=129.47.0100 1111. 11111111) im Subnetz 64.
Ein bißchen Literatur zum Thema:
TCP/IP Referenz - Handbuch von Netware 4.1
Linux Network Administrator Guide, Olaf Kirch, O'Reilly&Associates
Linux, Kofler, Addison-Wessley
uvm...