Aufbauend auf der Sicherungsschicht, die dafür zuständig ist Rahmen durch ein LAN zu transportieren, werden mit den Funktionen der Vermittlungsschicht (Schicht 3 des ISO-OSI Referenzmodells) Nachrichten von der Quelle bis zum endgültigen Ziel übertragen.
Dabei können Teilnetze durchquert werden, die unterschiedliche Schicht 2 Implemen tierungen einsetzen.
在此过程中可以跨越多个子网,**这些子网使用不同的第二层实现**。
Da die Vermittlungsschicht Datagramme bis zum endgültigen Ziel überträgt, müssen Endpunkte über alle Teilnetze hinweg eindeutig adressierbar sein.
由于网络层将数据报传输到最终目的地,因此端点必须能在所有子网中唯一寻址。
### 1.2.1 Vermittlung und Wegewahl 路由和路径选择(routing and path selection)
Innerhalb einer Broadcast-Domäne (z.B. Ethernet-Bus) können Nachrichten direkt an einen Empfänger zugestellt werden: alle Kommunikationsteilnehmer „hören” die Nachricht auf dem Broadcastmedium.
在一个广播域内消息可以直接发送给接收者:所有的通信参与者通过广播介质“听到”消息。
Der **Adressat** erkennt an der Zieladresse (es ist seine
eigene!), dass er die Nachricht **auszuwerten** hat. Soll(如果) eine Nachricht nach außerhalb der Broadcast-Domäne des Senders übertragen werden, sind **Koppelkomponenten** erforderlich, die eine *Vermittlung*(路由) der Nachricht ermöglichen.
Sie kennen bereits die Vermittlung auf der Sicherungsschicht, in geswitchten Ethernet-LANs: ein Switch entscheidet **anhand** einer ihm bekannten Ziel-MAC-Adresse eines Rahmens, an welche(n) seiner Ports der Rahmen ausgegeben werden soll.
Kennt der Switch die Zieladresse des Rahmens noch nicht, so gibt er den Rahmen auf allen Ports aus.
路由器**不知道**帧的目标地址,就会发送帧到所有的端口出去
Zwischen LANs übernimmt die Schicht 3 des ISO-OSI Modells, die Vermittlungsschicht (engl. network layer), die Weitergabe von Nachrichten.
**LAN使用OSI模型中的第三层(网络层)来转发消息**
Die Komponenten der Vermittlungsschicht heißen Router.
网络层的组件叫做Router
Ähnlich wie Switches verfügen sie über eine Anzahl **Schnittstellen(接口)**, die in verschiedene Subnetze führen.
与交换机类似,router有多个接口,这些接口通向不同的子网
Ein Router entscheidet anhand einer Routing-Tabelle und der Zieladresse des Schicht 3 Protokolls, in welches Teilnetz eine Nachricht vermittelt werden soll
Die am weitesten **verbreitete** Schicht 3 Implementierung ist das IP-Protokoll in der Version 4 (IPv4, [ RFC 791 ]).
最广泛使用的第三层实现是IPv4
IPv4 ist ein **verbindungsloses** Schicht 3 Protokoll, d.h. alle Datagramme werden **unabhängig** voneinander zugestellt.
IPv4是一个无连接的第三层协议,也就是说,所有的数据报都是**独立传送**的
Der Dienst, den IPv4 höheren Schichten zur Verfügung stellt, ist lediglich die Zustellung von Datagrammen zu einem bestimmten Endpunkt.
IPv4 为更高层提供的服务仅仅是**将数据报传送到特定的终端**。
IPv4 stellt nicht sicher, dass Datagramme in der selben Reihenfolge empfangen werden, in der sie gesendet wurden.
IPv4 并不能确保**数据报按照发送时的顺序接收**
Ebenso sieht IPv4 keine Funktionen vor, die sicherstellen, dass die Daten unverfälscht am Ziel ankommen.
同样,IPv4没有提供确保数据未被篡改而到达目标的功能。
Seine Nachfolgeversion IPv6 ist **nicht weniger relevant**, auch wenn es aktuell noch nicht in gleichem Maße **verbreitet** ist.
IPv4的后继者IPv6同样重要,现在还没有像ipv4那么广泛
#### Adressierung
Für die Adressierung in einem IPv4-Netz werden hierarchische 32-Bit Nummern verwendet.
对于在一个IPv4网络中,用一个32位的分层数字进行寻址
Das heißt IPv4-Adressen (kurz: IP-Adressen) **dienen** sowohl der **Identifizierung der Gegenstellen**, als auch der Strukturierung des Adressraums.
这意味着IPv4地址(简称IP地址)既用于标识**通信对端**,也用于组织地址空间的结构。
IP-Adressen setzen sich aus einer Netz-ID und einer Host-ID zusammen. IP-Adressen mit der selben Netz-ID gehören zum selben Subnetz.
IP地址由网络ID和主机ID组成。具有相同网络ID的IP地址属于同一子网.
Ursprünglich wurden IP-Adressen in Subnetzklassen fester Größe eingeteilt (vgl. Vorlesung RNVS), wodurch die Anzahl von IP-Adressen in einem Subnetz immer 256, 65536 oder 16777216 betrug.
In heutigen Implementierungen ist die Länge der Netz-ID variabel, um Subnetze unterschiedlicher Größe anlegen zu können.
Dadurch kann bei der Vergabe von Adressblöcken die Anzahl der IP-Adressen besser an die tatsächlich benötigte Menge angepasst werden, wodurch weniger „Verschnitt” (ungenutzte IP-Adressen) entsteht.
Dieser Ansatz ist als Classless Inter-Domain Routing (CIDR) in [RFC 1519] spezifiziert.
In jedem Subnetz sind zwei Adressen reserviert: die Netzadresse und die Broadcast-Adresse.
Die Netzadresse ist die IP-Adresse, bei der alle Bits der Host-ID 0 sind. Die Netzadresse ist die Adresse mit dem numerisch kleinsten Wert im Subnetz.
Im Gegensatz dazu sind die Bits der Host-ID in der Broadcast-Adresse alle 1.
Somit ist die Broadcast-Adresse die IP-Adresse mit dem numerisch höchsten Wert im Subnetz.
In jedem Subnetz sind zwei Adressen reserviert: die Netzadresse und die Broadcast- Adresse. Die Netzadresse ist die IP-Adresse, bei der alle Bits der Host-ID 0 sind. Die Netzadresse ist die Adresse mit dem numerisch kleinsten Wert im Subnetz. Im Gegensatz dazu sind die Bits der Host-ID in der Broadcast-Adresse alle 1. Somit ist die Broadcast- Adresse die IP-Adresse mit dem numerisch höchsten Wert im Subnetz.
Die Einträge einer Routing-Tabelle geben anhand von Zieladressen Routing-Entscheidungen vor. Aufgrund der hierarchischen Vergabe von IP-Adressen muss eine Routing-Tabelle nicht einen Eintrag pro IP-Adresse enthalten, sondern einen Eintrag pro Subnetz. So- mit benötigt der Router aus Abbildung 1.2 drei Einträge in seiner Routing-Tabelle, um Nachrichten an alle fünf dargestellten Rechner weiterleiten zu können:
Ein Eintrag besteht aus einem Ziel-Subnetz und der IP-Adresse der Komponente, die das Ziel erreichen kann (next-hop). Da der Router über eine direkte Verbindung in jedes der drei Subnetze verfügt, sind alle next-hop-Einträge auf der rechten Seite der Routing- Tabelle die eigenen IP-Adressen des Routers. Der Router kann in diesem Fall jedes Ziel *direkt*, d.h. ohne Zwischenschritte (engl. hops), erreichen.
Die Rechner in Abbildung 1.2 sind mit genau einem Subnetz direkt verbunden. Sendet einer davon eine Nachricht, muss der Router diese Nachricht zwischen Sender und Empfänger vermitteln. Sollen Nachrichten zwischen 10.0.0.3 und 10.0.1.3 ausgetauscht werden, so benötigen die Rechner (mindestens) Routing-Tabellen wie in Tabelle 1.1.
In manchen Situationen ist es nicht sinnvoll oder möglich für jedes erreichbare Subnetz einen eigenen Eintrag in der Routing-Tabelle anzulegen. Man kann z.B. auf dem Rechner zuhause kaum für jedes über das Internet erreichbare Subnetz einen Eintrag anlegen. Für diesen Fall legt man einen Standard-Eintrag in der Routing-Tabelle an, der genau dann ausgelesen wird, wenn kein anderer Eintrag für eine IP-Adresse gefunden werden kann. Dieser Eintrag wird häufig *default-Route* genannt und enthält als next-hop das *Standard-Gateway* (engl. default gateway). Umgekehrt ist es unter Umständen erwünscht Nachrichten an einen bestimmten Rechner über einen speziellen Pfad zu schicken. Solche Einträge in der Routing-Tabelle, die für genau einen Rechner gelten, heißen *Host-Routen*. Host-Routen können als Subnetz mit genau einer IP-Adresse gesehen werden, also als ein Subnetz mit 32 festen Bits (/32).
#### Wegewahl
Bei der Einteilung von IP-Adressen in Subnetzklassen ist der Algorithmus zur Auswahl einer Route vergleichsweise einfach (vgl. Folien RNVS): die ersten (bis zu vier) Bits einer IP-Adresse bestimmen die Subnetzklasse und damit die Länge der Netz-ID. Die Netz-ID wird ausgelesen und der nächste Zwischenschritt (next hop) in der Routing-Tabelle nachgeschlagen.
Mit der Einführung von CIDR ist der Entscheidungsprozess komplexer geworden. Die beiden wichtigsten Neuerungen diesbezüglich sind, dass Subnetze nicht mehr zu einer bestimmten Klasse gehören und die Länge der Netz-ID variabel ist. Die Folge dieser Veränderungen ist, dass die Länge der Netz-ID nicht mehr an der IP-Adresse selbst abgelesen werden kann, sondern durch die Einträge in der Routing-Tabelle gegeben werden muss. Anstatt einmal die Netz-ID auszulesen und einen passenden Eintrag dafür zu suchen muss nun die variable Länge berücksichtigt werden.
Empfängt ein Router ein IP-Paket, das an die Ziel-IP-Adresse 10.0.0.3 adressiert ist, so liest der Router die Ziel-IP-Adresse aus und durchsucht die Routing-Tabelle nach dem präzisesten zutreffenden Eintrag.
Die Infrastruktur, die für die Durchführung des RNP zur Verfügung steht setzt sich zusammen aus virtuellen Maschinen. Der Zugang zu den virtuellen Maschinen (VM) erfolgt über gruppeXY.rnp.lab.nm.ifi.lmu.de. Diese sind aus dem MWN, zum Beispiel den cip-Pools, erreichbar. Die VMs selbst haben standardmäßig keinen Zugang zum MWNoderdemInternet. Jeder Praktikumsgruppe stehen sieben VMs zur Verfügung, mit denen die Versuche ab OSI Schicht 3 und höher durchgeführt werden. Der Einsatz von virtuellen Maschinen erlaubt es größere Netze mit mehr Knoten zu betreiben, ohne den Management-Aufwand und Platzbedarf vieler physischer Systeme bewältigen zu müssen
Auf den VMs an denen Sie die Versuche durchführen werden, ist OpenWrt und Debian (GNU/Linux) installiert. Im Rahmen dieses Praktikums werden Sie Linux meistens über ein Terminal bedienen, auf dem ein Kommandozeileninterpreter (Shell) läuft. Nach dem erfolgreichen Anmelden am System startet Linux automatisch eine Shell. Die Standardeinstellung hierfür ist die Bourne-Again SHell (Bash)
Jeder Benutzer hat ein eigenes Verzeichnis (Home-Verzeichnis). Für den Benutzer rootist dies das Verzeichnis /root. Für alle anderen Abb. 1.7: Tux Benutzer ist das Home-Verzeichnis ein Unterverzeichnis von /home, das dem Benutzer namen entspricht (/home/). Wann immer sich ein Benutzer in seinem Home-Verzeichnis befindet, wird dieser Pfad von der Bash mit ˜ (Tilde) abgekürzt. Der Aufbau der Eingabezeile kann verändert werden, wodurch der hier beschriebene Aufbau nicht allgemein für alle Benutzer und Systeme gilt. Es hat sich jedoch durchgesetzt, dass am Ende einer Eingabezeile des Benutzers root das #-Symbol steht.
每个用户都有自己的目录(Home 目录)。对于用户 `root`,这个目录是 `/root`。对于其他用户,其 Home 目录是 `/home` 下的一个子目录,与用户名一致(`/home/<用户名>`)。当用户在 Home 目录中时,Bash 会用 `~`(波浪号)简写此路径。输入提示符的结构可以更改,因此此结构并不适用于所有用户和系统。不过已约定,用户 `root` 在命令行提示符的末尾会显示 `#` 符号。
Der wichtigste Befehl beim Arbeiten mit der Bash ist man. Bis auf wenige Ausnahmen existiert für jedes Programm eine Anleitung. Der Befehl man dient dem Lesen von Anleitungen. Ein Befehl auf der Kommandozeile ist häufig ein Programmaufruf, wie z.B. pwd, ls und man. Um die Anleitung für ein bestimmtes Programm einzusehen geben Sie man ein. So erhalten Sie z.B. die Anleitung zu man selbst mittels
Beachten Sie, dass OpenWrt optimiert ist für Router mit wenig Speicherplatz. Aus diesem Grund steht ihnen der Befehl man auf OpenWrt (router1-router3) nicht zur Verfügung. Sie können stattdessen auf die äußere Managementmaschine ausweichen. Die Verwendung der Befehle zwischen Debian und OpenWrt ist meistens identisch
Das Bash-Tutorial [Garr 08] ist ein guter Ausgangspunkt für die Einarbeitung. Insbe sondere sei auf die Abschnitte des Tutorials hingewiesen, die sich mit “Input-/Output redirection” und Bash-Programmierung beschäftigen. Mit “Output-redirection” kann man Programmausgaben in eine Datei umlenken und anschließend in Ausarbeitungen einfügen. Bash-Programmierung ermöglicht es kleine Skripte zu schreiben, die oft durch geführte Aufgaben vereinfachen.
### 1.3.2 使用虚拟基础设施
Jeder Gruppe steht eine virtuelle Infrastruktur in Form von sieben VMs zur Verfügung; drei PCs und vier Router. Alle sieben VMs sind Linux-Rechner. Der Unterschied zwi schen den VM-Arten besteht darin, dass die PCs nur eine Verbindung in die virtuelle Infrastruktur haben, während die Router mit mehreren Maschinen verbunden sind. Die Rechnernamen der VMs sind pc1, pc2, pc3, router1, router2, router3 und router4; diese Bezeichnungen tauchen vor allem in den Aufgabenstellungen auf.
每个小组都有一个由七个虚拟机(VM)组成的虚拟基础设施,包括三台 PC 和四台路由器。所有七台虚拟机都运行 Linux 系统。PC 和路由器的区别在于,PC 只有一个连接到虚拟基础设施的接口,而路由器连接了多个设备。虚拟机的名称为 `pc1`、`pc2`、`pc3`、`router1`、`router2`、`router3` 和 `router4`,这些名称将在实验任务中频繁出现。
Die Infrastrukturen sind mit 1 beginnend aufsteigend durchnummeriert (analog zu den Gruppen). Damit es bei der Adressierung zu keinen Überschneidungen kommt, ver wenden Sie nur IP-Adressen, die mit 10. Infrastrukturnummer beginnen z.B. 10.1.0.1 ist eine IP-Adresse, die nur in Infrastruktur 1 verwendet werden darf. Das heißt, jeder Infrastruktur ist ein Subnetz 10. Infrastrukturnummer .0.0/16 zugeordnet.
基础设施的编号从 1 开始,以对应实验小组编号。为了避免地址冲突,每组的 IP 地址从 10 开始,格式为 `10.<组号>.X.Y`,例如 `10.1.0.1` 表示基础设施 1 的一个 IP 地址。每个基础设施的地址范围是 `10.<组号>.0.0/16`。
Jede VM ist an ein Management-Netz angeschlossen. Zugang zu Ihren VMs erhalten Sie, über den Rechner rnp@gruppeXY.rnp.lab.nm.ifi.lmu.de Melden Sie sich zunächst per SSH an (man ssh) und ändern Sie Ihr Startpasswort. Von dort aus können Sie ihre VMs per SSH erreichen. Beispiel: SSH-Aufruf für Gruppe 1 um auf router4 zu gelangen
IProute2 ist eine Sammlung von Programmen für die Steuerung von Netzeinstellungen eines Rechners. Das prominenteste Tool aus dieser Sammlung ist ip. Die Funktionen von ip sind zahlreich und umfassen alles notwendige für die Konfiguration von (logischen) Verbindungen, IPv4-/IPv6-Adressen und Routen. Die man-page zu ip bietet einen Überblick über dessen Mächtigkeit.
| `ip address add 192.168.1.1/24 dev ethX` | 将 IP 地址 192.168.1.1 和子网掩码 255.255.255.0(CIDR 表示法)分配给接口 ethX |
| `ip route show` | 显示路由表 |
| `ip neighbor show` | 显示 ARP 表 |
使用以下命令可以在命令行上显示当前的路由表:
```bash
ip route show
```
#### 添加路由
要在路由表中添加一条路由,可以使用以下命令:
```bash
ip route add <目标> via <网关>
```
例如:
```bash
ip route add 192.168.1.0/24 via 192.168.1.1
```
这个示例命令会将所有目标为 `192.168.1.0/24` 子网的数据包发送到 `192.168.1.1`。如果省略子网掩码 `/24`,则会添加一个 Host 路由(带有32位的特定 IP 地址)。
#### 删除路由
要删除一条路由,可以使用以下命令:
```bash
ip route del <目标>
```
例如:
```bash
ip route del 192.168.1.0/24
```
注意:
Linux 内核通常不会自动转发 IP 数据包。可以通过 `/proc` 文件系统启用 IPv4 转发,将路径 `/proc/sys/net/ipv4/ip_forward` 中的值设置为 `1`(默认值为 `0`)。使用以下命令来激活 IP 转发:
```bash
echo 1 > /proc/sys/net/ipv4/ip_forward
```
### 1.3.4 `tcpdump` - 数据分析
Das Programm tcpdump zeigt Informationen aus den Protokollheadern eines jeden gesendeten oder empfangenen Pakets. Startet man tcpdump ohne Argumente, so wird der gesamte Datenverkehr aller Schnittstellen eines Rechners analysiert und optisch aufbereitet. Damit Sie auch sicher nur Ihren eigenen Datenverkehr analysieren achten Sie beim Aufruf von tcpdump darauf, dass Sie stets einen entsprechenden Filter für Ihr Subnetz benutzen. Zur optischen Aufbereitung von tcpdump gehört auch das Auflösen von IP-Adressen und Port-Nummern zu Rechner- und Port-Namen. In diesem Praktikum ist diese Anwendung von tcpdump nicht der Normalfall. Statt dessen werden meist folgende Optionen verwendet:
Zusätzlich zu Optionen implementiert tcpdump eine Filtersprache, die es ermöglicht nur bestimmte Rahmen/Pakete/Segmente zu analysieren. Alle Optionen, sowie die Filter Tastenkombination Strg sprache werden in der manpage und unter [WWW 09] erläutert. tcpdump wird mit der + c beendet.