Bei jeder Interaktion zwischen zwei Rechnern müssen die Daten früher oder später eine physische Distanz überbrücken. Die binären Daten eines Rechners werden für den physischen Transport aufbereitet und anschließend über ein Medium an einen anderen Rechner übertragen. Kann der andere Rechner aus dem Empfangenen die ursprünglichen Daten rekonstruieren, ist es gelungen, binäre Daten von einem Rechner an einen anderen zu übertragen.
Protokolle der Bitübertragungsschicht beschäftigen sich mit genau diesem Problem. Sie legen fest, welches **Medium** benutzt wird und wie binäre Daten (Bits) als Signale auf das physische Medium moduliert werden. Dazu gehören mehrere Aspekted, die sicherstellen, dass alle Endpunkte auf die gleiche Art und Weise Daten übermitteln und interpretieren. Diese Aspekte lassen sich in vier Gruppen unterteilen:
Heute handelt es sich bei dem Medium meist um Kupfer, Lichtwellenleiter oder "Luft". Die Signale werden in der Regel so gewählt, dass sie deutlich voneinander unterscheidbar sind, da Signale durch Störeinflüsse leicht verfälscht werden können. Eine SDU auf Schicht 1 muss nicht genau ein Bit sein. Ein Schicht 1 Protokoll kann auch die parallele Übertragung von mehreren Bits gleichzeitig spezifizieren.
Durch äußere Störeinflüsse können Amplitude, Frequenz und Phase eines Signals bei der Übertragung verändert werden. Komponenten der Schicht 1 verarbeiten Signale dahingehend, dass eingehende Signale als Signalzustände entsprechend der Spezifikation aufgefasst werden (Diskretisierung). Die Umwandlung in Bits ist ein weiterer Arbeitsschritt, der in der Regel nur von Komponenten, die auch eine Schicht 2 implementieren, durchgeführt werden muss. Gängige Schicht 1 Komponenten sind Repeater, Multiport-Repeater (Hubs) und Wavelength Division Multiplexer (WDMs).
Ein Repeater verfügt über genau zwei Anschlüsse. Ein eingehendes Signal auf einem Anschluss wird verstärkt auf dem anderen Anschluss ausgegeben. Repeater können eingesetzt werden, um das Problem der Dämpfung zu überwinden und Signale über längere Distanzen zu übertragen, als es die Sendeleistung des ursprünglichen Senders erlaubt. Die logische Weiterentwicklung des Repeaters ist der Hub. Dieser verfügt über mehrere Anschlüsse und gibt ein eingehendes Signal an allen anderen Anschlüssen verstärkt wieder aus.
Implementieren optische Sendestationen das selbe Schicht 1 Protokoll, so verwenden sie meist die selben Wellenlängen zur Signalisierung. Treffen diese Signale in einem gemeinsamen Medium aufeinander, entstehen Überlagerungen (Kollisionen), so dass kein Empfänger die ursprünglichen Daten rekonstruieren kann. Bei einem Aufbau, in dem mehrere Sender Signale auf dem selben Medium versenden, so dass Kollisionen entstehen können, spricht man von einer Kollisionsdomäne.
WDMs bilden mehrere eingehende optische Signale auf unterschiedliche, disjunkte Bereiche des Farbspektrums (Kanäle) einer ausgehenden Leitung ab (Multiplex). Dadurch können alle eingehenden Signale gleichzeitig über eine einzelne ausgehende Leitung übertragen werden, ohne Kollisionen zu erzeugen. Abbildung 2.1 zeigt einen WDM, der drei eingehende Signale A, B und C auf eine ausgehende Leitung moduliert. Diese Technik setzt man häufig ein, wenn der Aufwand zusätzliche Leitungen zu verlegen hoch ist. In Abbildung 2.1 sind A, B und C optische Signale der selben Schicht 1 Implementierung (z.B. 1 Gbps Ethernet, Monomode) und verwenden deshalb die selbe Wellenlänge für die Datenübertragung. Im WDM werden die Wellenlängen der eingehenden Signale modifiziert, so dass keine Überlagerung mehr stattfindet wenn die Signale in der ausgehenden Leitung aufeinander treffen.
波分复用器(WDMs)将多个入射光信号映射到不同的、互不重叠的色谱范围(通道)上,通过一条输出线路(复用)。所有传入的信号可以同时通过一条输出线路传输,而不会产生碰撞。图 2.1 显示了一个波分复用器(WDM),它将三个输入信号 A、B 和 C 调制到一条输出线路上。当增加额外线路的成本很高时,通常会使用这种技术。图 2.1 中的 A、B 和 C 是相同的第 1 层实现的光信号(例如 1 Gbps 以太网,单模),因此使用相同的波长进行数据传输。在 WDM 中,输入信号的波长会被调整,以避免当信号进入输出线路时产生重叠。
Am anderen Ende der Leitung empfängt ein Demultiplexer das zusammengesetzte Signal. Dieser trennt das empfangene Signal auf, moduliert die Teilsignale zurück auf ihre ursprüngliche Form und sendet die Signale auf separaten Leitungen weiter.
Zu den Hauptaufgaben der Sicherungsschicht gehört Rahmenbildung (bzw. Blockbildung). Darunter versteht man die Gruppierung von Bits zu logischen Einheiten, den PDUs der Schicht 2 (Rahmen oder Blöcke, bzw. engl. frames oder blocks). Eine Basiskomponente der Schicht 2 ist die Bridge (bzw. “Brücke”). Eine Bridge ist eine Schicht 2 Komponente, die zwei Teilnetze (mit möglicherweise verschiedenen Übertragungstechniken) miteinander verbindet, also eine Brücke dazwischen bildet. Dazu muss sie eingehende Signale interpretieren und zu Rahmen zusammensetzen. Erst der vollständige Rahmen wird in das andere Teilnetz übertragen. Diese Technik heißt “store and forward”, da die Bridge eingehende Daten (Bits) speichert (store), bis der Rahmen vollständig empfangen wurde und erst im Anschluss daran den Rahmen weiterleitet (forward). Eine Bridge mit mehr als zwei Anschlüssen heißt Switch oder Multiport-Bridge.
数据链路层的主要任务之一是帧构建(或称块构建),即将比特分组为逻辑单元,即第 2 层的 PDU(帧或块)。第 2 层的基本组件之一是桥接器(Bridge)。桥接器是第 2 层组件,它连接两个子网(可能使用不同的传输技术),因此在它们之间形成了一个桥。为此,它必须解释接收到的信号并将其组装成帧。只有完整的帧才会被传输到另一个子网。这种技术被称为“存储和转发”(store and forward),因为桥接器会先存储(store)接收到的数据(比特),直到帧完全接收后才转发(forward)该帧。具有两个以上端口的桥接器被称为交换机(Switch)或多端口桥(Multiport-Bridge)。
### 2.2.1 Vergleich von Komponenten der Schichten 1 und 2 2.2.1 第 1 层和第 2 层组件的比较
Aufgrund der Hauptaufgaben der Schichten 1 und 2 ergeben sich unterscheidende Merkmale der Komponenten dieser Schichten: Repeater, Hubs, WDM etc. auf der Schicht 1, Bridges und Switches auf der Schicht 2.
Im Gegensatz zu einem WDM verarbeitet eine Bridge nicht einzelne eingehende Signale, sondern eingehende Rahmen. Die Bridge muss demnach in der Lage sein aus gespeicherten Informationen Rahmen zu bilden. Der Einsatz von store and forward ermöglicht es der Bridge unterschiedliche Bitübertragungstechniken für die beiden LANs zu verwenden, wogegen die Anschlüsse eines WDM den Festlegungen der physikalischen Signale entsprechen. Der Aufbau in Abbildung 2.2 erlaubt es unterschiedliche Schicht 1 Implementierungen “links” und “rechts” der Bridge zu nutzen.
与波分复用器(WDM)不同,桥接器不会处理单个输入信号,而是处理输入的帧。因此,桥接器必须能够根据存储的信息构建帧。通过存储和转发(store and forward)技术,桥接器可以为两个局域网使用不同的比特传输技术,而 WDM 的接口则对应物理信号的规定。图 2.2 的结构允许桥接器左右两侧使用不同的第 1 层实现.
### 2.2.2 Topologien 拓扑结构
Neben der Rahmenbildung spezifizieren Schicht 2 Protokolle auch die Übertragung von Rahmen. Dazu gehören Vielfachzugriffsverfahren, die den Zugriff auf Schicht 1 bzw. auf gemeinsam genutzte Medien steuern, sowie die Übertragung von Rahmen zu Schicht 2 Endpunkten. Durch die vielfältigen Komponenten und Funktionen der Schichten 1 und 2 ergeben sich verschiedene Möglichkeiten einen physischen Aufbau eines Netzes (LAN) zu realisieren.
Abbildung 2.2 zeigt auf jeder Seite der Bridge ein Netz mit Bustopologie. Dabei sind mehrere Schicht 2 Endpunkte mit einem gemeinsam genutzten Medium verbunden. Ein Problem der Bustopologie ist die aufwändige Wartung. Tritt ein Hardwaredefekt auf, so kommt meistens das gesamte LAN zum Erliegen. Das Aufspüren der defekten Hardware ist schwierig, da jede Komponente für das Problem verantwortlich sein könnte. Das gemeinsam genutzte Kabel erstreckt sich meist über mehrere Räume oder auch Stockwerke und ist sehr aufwändig auszutauschen.
Eine andere Topologie, die bei diesem Problem hilft, ist die Sterntopologie. An die Stelle des gemeinsam genutzten Mediums tritt ein zentraler Hub (vgl. Abbildung 2.3). Da der Hub eingehende Signale auf alle angeschlossene Kabel repliziert, verhält sich ein Netz mit Sterntopologie genauso wie ein Netz mit Bustopologie; der Charakter des gemeinsam genutzten Mediums bleibt für die Signalübertragung erhalten. Deshalb kann an jeden Anschluss eines Hubs ein ganzes Teilnetz mit Bustopologie angeschlossen werden.
Der Vorteil des Hubs liegt darin, dass ein defektes Kabel an einem Anschluss nicht automatisch zu einem Zusammenbruch des gesamten Netzes führt. Außerdem kann an zentraler Stelle das fehlerhafte Kabel ermittelt werden. Üblicherweise ist an jeder Leitung eines Hubs ein einzelner Rechner angeschlossen, wodurch die Fehlerlokalisierung weiter vereinfacht wird. Der Defekt eines Kabels trennt so lediglich eine einzige Leitung (bzw. einen einzelnen Rechner) vom LAN, anstatt das gesamte LAN zum Erliegen zu bringen. Fällt der Hub aus, kann dieser leichter ausgetauscht werden, als ein Kabel, das durch mehrere Räume und Stockwerke verlegt wurde. Ersetzt man den Hub durch einen Switch, kann der Datenverkehr mit Bezug auf die Eigenschaften von Rahmen (Header) gesteuert werden. Ein Switch kann durch die Interpretation der eingehenden Informationen entscheiden eingehende Rahmen über wenige bestimmte Leitungen weitergeben, anstatt den Rahmen auf jedem Port zu replizieren.
Infolge der wachsenden Bedeutung der lokalen Vernetzung von Arbeitsplatzrechnern wurden zwischen 1972 und 1976 am Xerox Palo Alto Research Centre die technologischen Grundlagen für ein gleichermaßen leistungsfähiges und “idiotensicheres” Local Area Network geschaffen. Dieses neue Local Area Network nannte man Ethernet, in Anspielung auf jenen geheimnisvollen “Lichtwellenaether”, welchen die Physiker des 19. Jahrhunderts so verzweifelt gesucht haben. Heute wird Ethernet formal als IEEE-Standard 802.3, CSMA/CD: Protokoll und physische Übertragungstechniken [IEEE 802.3], verwaltet und weiterentwickelt.
Ethernet basiert in seiner ursprünglichen Form auf einer Broadcast-Technik, bei der alle Komponenten an das selbe Medium angeschlossen sind, wie in Abbildung 2.4 dargestellt. Sendet eine Komponente Daten, so werden diese von jeder anderen Komponente empfangen. Senden mehrere Komponenten gleichzeitig, entsteht eine Datenkollision, so dass letztendlich keine Daten übertragen werden können. Bei einer Kollision treffen die Signale im Medium aufeinander, wodurch Interferenzen entstehen, so dass die ursprünglichen Signale nicht mehr unterscheidbar sind (siehe Kapitel 2.1). Aus diesem Grund benutzt Ethernet CSMA/CD, ein Verfahren um die Nutzung des gemeinsamen Mediums zu koordinieren. Die meisten heutigen Ethernet-Netze sind Sterntopologien, bei denen jeder Endpunkt (z.B. Rechner) exklusiv mit einem Switch-Port verbunden ist.
Endeinrichtungen (Rechner) werden in der Praxis bestimmten Aufgaben oder Rollen einer Organisation zugeordnet, statt den Gegebenheiten der Vernetzung: Es ist z.B. wünschenswert, die Rechner nach Abteilungen bzw. Bereichen zu gruppieren. Oft entspricht dabei die physische Topologie, die durch die verlegten Medien (“Kabel”) gegeben ist, nicht den Nutzungsanforderungen eines LANs: z.B. werden Server in gemeinsam genutzten Server-Räumen untergebracht, in denen sich alle Server die selbe Leitung aus dem Raum hinaus teilen. Meist ist es jedoch so, dass sensible Daten nicht in andere LANs als dem abteilungseigenen LAN gelangen dürfen.
在实践中,终端设备(计算机)通常根据组织的特定任务或角色进行分配,而不是根据网络连接的物理位置。例如,最好按部门或区域对计算机进行分组。通常,物理拓扑(由布设的介质“电缆”决定)并不符合 LAN 的实际使用需求:例如,服务器被安置在共享的服务器房间中,在该房间内所有服务器共用一条对外连接的线路。然而,通常情况下,敏感数据不应流出部门专用的 LAN。
Hierzu können sogenannte virtuelle LANs (VLAN) benutzt werden, die eine logische LAN-Topologie auf eine physische aufbringen. VLANs können auf mehrere Arten erzeugt werden: durch die Gruppierung von Ports an einem Switch, durch Gruppierung von MAC-Adressen der zu einer Gruppe gehörenden Rechner und durch eine entsprechende Markierungen (engl. tagging) der gesendeten Rahmen. Im Praktikum liegt dabei der Schwerpunkt auf der zuletzt genannten Technik.
为此,可以使用所谓的虚拟局域网(VLAN),将逻辑局域网拓扑应用于物理局域网。 创建 VLAN 有几种方法:将交换机上的端口分组、将属于一个组的计算机的 MAC 地址分组以及对发送的帧进行标记。 在实践课程中,重点是后一种技术。
Ein wichtiger Standard in diesem Kontext ist der IEEE-Standard 802.1q [IEEE 802.1q], “Virtual LANs”. Dieser definiert das Anlegen, Betreiben und Verwalten von (mehreren) virtuellen LAN-Topologien innerhalb eines physischen LANs. Dazu wird jeder Rahmen einer virtuellen Infrastruktur mit einer für diese Infrastruktur eindeutigen Nummer (VLAN Identifier, VLAN-ID) in einem Feld (VLAN-Tag) im Ethernet-Header markiert. Netzkomponenten, die auf Schicht 2 operieren, können anhand der VLAN-ID Rahmen virtueller Topologien unterscheiden und unterschiedlich behandeln.
在此背景下,一个重要的标准是 IEEE 标准 802.1q [IEEE 802.1q],即“虚拟 LAN”。该标准定义了在一个物理 LAN 内创建、操作和管理(多个)虚拟 LAN 拓扑的方法。为此,每个帧在以太网头部的一个字段中用一个唯一的编号(VLAN 标识符,VLAN-ID)进行标记。工作在第 2 层的网络组件可以根据 VLAN-ID 区分和不同处理虚拟拓扑中的帧。
### 2.4.1 Monitoring-Port Konzept 监控端口概念
Administrierbare Switches bieten meist die Funktion eines Monitoring-Ports. Dabei wird ein bestimmter Port des Switches ausgewählt, auf dem der Switch jeden Rahmen repliziert, der auf einem der anderen Switch-Ports empfangen wird. Diese Funktion ermöglicht es, jeden Rahmen, der vom Switch verarbeitet wird, an zentraler Stelle zu sammeln. Da die Übertragungsrate eines Monitoring-Ports meist deutlich kleiner ist als die aller anderen Ports zusammen, kann ein Monitoring-Port ab einer gewissen Auslastung nicht alle Rahmen replizieren. Aus diesem Grund werden Monitoring-Ports häufig nur zur Fehleranalyse eingesetzt. Das Konzept des Monitoring-Ports kann auch virtualisiert umgesetzt werden.
Abbildung 2.5 zeigt ein Beispiel in dem die Rechner rnpserver und rnpclient über (rnpserver-eth1, S01-A-4) und (S01-D-2, rnpclient-eth1) verbunden sind. Außerdem ist der Rechner rnpmgmt mit dem Switch S01 verbunden. Wird der Switch-Port S01-B-4 als Management-Port konfiguriert, so empfängt der Rechner rnpmgmt an seiner Schnittstelle eth1 alle Rahmen, die rnpserver und rnpclient austauschen. Dies ermöglicht es die Interaktion dieser beiden Rechner zu überwachen, ohne direkten Zugang zu haben.
Das Einrichten eines Management-Ports ist eine spezielle Funktion, die von der Konfigurationssoftware der Switches bereitgestellt wird.
配置管理端口是一项特殊功能,由交换机的配置软件提供。
## 2.5 TUN/TAP Devices TUN/TAP 设备
Linux bietet seit Kernel-Version 2.2 die Möglichkeit virtueller Treiber-Schnittstellen an, sogenannte TUN/TAP Devices. TUN/TAP Devices existieren nur im Kernel und haben im Vergleich zu gewöhnlichen Schnittstellen keine physische Komponente. Falls das Betriebssystem Daten an ein TUN/TAP Device sendet, wird die Nachricht nicht an das physische Device, sondern an eine Benutzeranwendung, die über ein File-Descriptor mit dem TUN/TAP Device verbunden ist, weitergegeben. Was dann tatsächlich mit den Daten passiert, bleibt der Anwendung überlassen. Ein typisches Einsatzgebiet ist Tunneling, wie es beispielsweise in Virtual Private Networks (VPNs) der Fall ist. Durch den Einsatz von TUN Devices empfängt die VPN-Anwendung alle IP-Pakete, verschlüsselt deren Payload und umrahmt das ursprüngliche IP-Paket in ein weiteres IP-Paket mit aktualisierten Header-Informationen. Der Unterschied zwischen TUN und TAP Interfaces liegt darin, dass TAP Devices auf Schicht 2 und TUN Devices auf Schicht 3 operieren. Diese Unterscheidung ist wichtig, denn je nach Anwendungsfall ergeben sich entsprechende Anforderungen. Für VPN-Anwendungen bspw. sind TUN Devices auf Schicht 3 ausreichend. Eine ausführliche Dokumentation findet sich in der Linux-Kernel Dokumentation.
自 Linux 内核版本 2.2 起,提供了虚拟驱动接口的功能,即所谓的 TUN/TAP 设备。TUN/TAP 设备仅存在于内核中,与普通接口相比没有物理组件。如果操作系统将数据发送到 TUN/TAP 设备,该消息不会被传送到物理设备,而是传递给通过文件描述符与 TUN/TAP 设备连接的用户应用程序。之后数据的实际处理由应用程序决定。TUN/TAP 设备的一个典型应用领域是隧道技术,例如在虚拟专用网络 (VPN) 中。通过使用 TUN 设备,VPN 应用程序可以接收所有的 IP 数据包,加密其有效负载,并将原始 IP 包封装到一个新的 IP 包中,且附上更新的头信息。TUN 和 TAP 接口的区别在于,TAP 设备工作在第 2 层,而 TUN 设备工作在第 3 层。这个区别很重要,因为不同的应用场景有不同的需求。例如,对于 VPN 应用来说,TUN 设备在第 3 层就足够了。详细的文档可以在 Linux 内核文档中找到。
Im Rahmen dieses Praktikums setzen wir TUN/TAP Devices dazu ein, um unseren eigenen Netzwerk-Stack zu implementieren. Ein einfaches Beispiel findet sich in der beigelegten Mini-Anwendung. Bevor ein TUN/TAP Device genutzt werden kann, erzeugen wir zunächst ein virtuelles Device. Hierzu nutzen wir das allseits bekannte Tool iproute (ip).
在本次实习中,我们将使用 TUN/TAP 设备来实现自己的网络栈。一个简单的示例可以在附带的 Mini 应用中找到。在使用 TUN/TAP 设备之前,我们首先创建一个虚拟设备。为此,我们使用常用的 iproute 工具(ip)。
```bash
$ ip tuntap help
Usage: ip tuntap { add | del } [ dev PHYS_DEV ]
[ mode { tun | tap } ] [ user USER | group GROUP ]
[ one_queue ] [ pi ] [ vnet_hdr ]
Where: USER := { STRING | NUMBER }
GROUP := { STRING | NUMBER }
```
Nachdem ein physisches Device erzeugt wurde, setzen wir das Device zunächst auf den Status up und geben ihm anschließend ein Netz bzw. eine fixe Host-Adresse. Mit der richtigen Konfiguration wird jeglicher Datenverkehr durch das das TUN/TAP Device geleitet.
创建物理设备后,我们首先将设备设置为 up 状态,然后为其分配一个网络或固定的主机地址。通过正确的配置,所有的数据流都将通过 TUN/TAP 设备。
Allgemein kann man sagen: Virtualisierung ist die Abstraktion von starren, beschränkenden Randbedingungen eines Systems zu konfigurierbaren Eigenschaften. Im Fall von virtuellen Schnittstellen bedeutet Virtualisierung, dass man die Anzahl der Schnittstellen eines Rechners verändern kann. Freilich lassen sich dadurch nicht mehr Kabel mit einem Rechner verbinden als physische Schnittstellen vorhanden sind. Trotzdem erhöhen sich die Möglichkeiten im Management.
Im Rahmen dieses Praktikums bieten virtuelle Schnittstellen den Mehrwert, dass man über eine physische Verbindung mehrere logische Verbindungen betreiben kann (vgl. Abbildung 2.6).
在这个实践中,虚拟接口的优势在于可以通过一个物理连接运行多个逻辑连接(参见图2.6)。
Jeder virtuellen Schnittstelle kann außer eigenen IP-Adressen auch eine eigene VLAN-ID zugewiesen werden. Es ist somit möglich, mit nur einer physischen Verbindung einen Rechner in mehrere virtuelle LANs einzubinden.
Es ist möglich einer einzelnen Schnittstelle mehrere IPs zuzuweisen und so einen Rechner in mehrere Subnets (z.B. 192.168.1/24 und 192.168.2/24) einzubinden. Der wesentliche Unterschied zum Einsatz virtueller Schnittstellen und VLANs liegt darin, dass virtuelle Schnittstellen bereits auf OSI-Schicht 2 implementiert werden, eine Trennung auf IP-Ebene jedoch eine Funktion von OSI-Schicht 3 ist.
Das Anlegen von virtuellen Schnittstellen ist ebenfalls eine Funktion, die mit dem Befehl `ip` realisiert werden kann. Die Syntax zum Anlegen einer VLAN-Schnittstelle ist:
可以通过`ip`命令创建虚拟接口。创建VLAN接口的命令语法为:
```
# ip link add link <pNIC> name <vNIC> type vlan id <VLAN-ID>
```
mit
其中
-`pNIC` := Name der physischen Schnittstelle
`pNIC`:物理接口的名称
-`vNIC` := Name der virtuellen Schnittstelle
`vNIC`:虚拟接口的名称
z.B.:
```
# ip link add link eth0 name eth0.100 type vlan id 100
```
Zum Entfernen einer virtuellen Schnittstelle benutzen Sie: 删除虚拟接口的命令:
```
# ip link del dev <vNIC>
```
z.B.: 例如:
```
# ip link del dev eth0.100
```
## 2.6 Scapy
### 原文内容:
#### 图片 1:
**2.6 Scapy**
Scapy ist ein Python Framework zur Inspektion und Manipulation von Paketen. Es erlaubt Ihnen Pakete vieler bereits implementierter Protokolle zu protokollieren, zu dekodieren, aus pcap-Dateien zu lesen, zu erstellen sowie diese zu versenden und vieles mehr. Scapy wurde auch für schnelles Prototyping entwickelt und benutzt Defaultwerte, die funktionieren.
Viele Aufgaben anderer Tools können von Scapy übernommen werden, z.B. Scanning, Traceroutes, Unit-Tests, Netzwerkerkennung und verschiedene Angriffe. Außerdem können Sie auch ungültige Rahmen versenden, eigene 802.11 Rahmen einbauen und verschiedene Techniken kombinieren (VLAN hopping + ARP cache poisoning, VoIP-Dekodierung auf einem WEP-verschlüsselten Kanal, etc.).
- Pakete können mit den Methoden show und show2 angezeigt werden, für das Senden bzw. Senden und Empfangen siehe send(), sendp(), sr(), sr1() und srp().
**Hinweis**: vergessen Sie nicht Ihre Konfiguration in Netzplänen zu dokumentieren und auch die relevanten Ausgaben der verwendeten Programme zu übernehmen!
**提示**: 请不要忘记在网络图中记录您的配置,并包含所用程序的相关输出!
---
### A200 Address Resolution and Neighbor Discovery (Theorie)
Das RFC 826 definiert das Address Resolution Protocol (ARP). In RFC 4861 wird das Neighbor Discovery Protocol (NDP) spezifiziert.
RFC 826 定义了地址解析协议(ARP)。RFC 4861 规定了邻居发现协议(NDP)。
1.**Wozu wird ARP eingesetzt? Was ist der Unterschied zu NDP?**
**ARP 的用途是什么?它与 NDP 的区别是什么?**
2.**Beschreiben Sie den Aufbau einer ARP-PDU und erläutern Sie die Bedeutung der einzelnen Felder!**
**描述 ARP-PDU 的结构并解释各个字段的含义!**
3.**Welche unterschiedlichen ARP-PDUs gibt es? Welche NDP-PDUs gibt es?**
**有哪些不同的 ARP-PDU?NDP-PDU 又有哪些?**
4.**Wie lang (in Bytes) ist eine ARP-PDU in einem Netz in dem IPv4 und Ethernet eingesetzt werden?**
**在 IPv4 和以太网网络中,ARP-PDU 的长度是多少字节?**
5.**Wie lang (in Bytes) ist eine Neighbor Solicitation Nachricht?**
**Neighbor Solicitation 消息的长度是多少字节?**
6.**Das RFC 826 spricht von einer Tabelle (table), deren Implementierung meist als ARP-Cache bezeichnet wird. Was soll laut RFC mit einer Ethernet-SDU passieren, wenn kein Eintrag zur Ziel-IP-Adresse in der Tabelle gefunden wird?**
7.**RFC 826 提到了一张表(table),其实现通常称为 ARP 缓存。RFC 规定如果表中没有找到目标 IP 地址的条目,对以太网 SDU 应该怎么处理?**
### A201 VLANs nach IEEE 802.1q
Virtuelle Infrastrukturen dienen dazu Netze anzulegen und anzupassen zu können, ohne physisch an den Geräten arbeiten zu müssen. Dies ist insbesondere in großen, weniger übersichtlichen Infrastrukturen von Vorteil.
Nachdem Sie in Aufgabe A101 die Topologie der virtuellen Infrastruktur vollständig rekonstruiert haben, ändern Sie diese im Folgenden.在您完成任务**A101**中虚拟基础设施拓扑的重建之后,按照以下步骤进行修改。
1.**Modifizieren Sie die Topologie Ihrer virtuellen Infrastruktur so, dass die Router 1,2 und 3 ausschließlich Switches (Bridges) sind. Fügen Sie dieser Bridge alle Interfaces bis auf eth0 hinzu. (Hinweis: Benutzen Sie `ip link`, siehe Referenz^3)**
Die PCs 1–3 sowie Router 4 sind Hosts, die in einem (Sub-)Netz gemäß der Baum-Topologie in Abbildung 2.7 verbunden sind. Es genügt hierbei, wenn Sie überflüssige Links als `down` markieren.
2.**Testen Sie ihre Verbindungen zwischen den PCs 1–3 sowie Router 4 mittels `ping`。Router 1–3 haben per Definition von Bridges keine IP-Adresse. Vergeben Sie IPv4-Adressen aus Ihrem Adressraum。**
3.**Derzeit befinden sich alle Hosts im selben Netz. In dieser Aufgabe soll das Netz in zwei logisch getrennte VLANs (Schicht 2) aufgeteilt werden. Ziel ist es, dass Router 4 und PC3 in einem VLAN sowie PC2 und PC1 in einem anderen VLAN voneinander isoliert sind。**
iii) 实现您指定的接口,使其能够正确响应 `arping` 请求。您可以为响应分配任意 IP 地址和 MAC 地址。
`arping` 请求示例:
```bash
$ arping -I mytap <ip>
```
## Appendix
### SDU
**SDU**(Service Data Unit,服务数据单元)是计算机网络中的一个概念,指的是在网络协议层之间传递的数据单元。在分层网络模型中,SDU 是上一层协议或服务要传递给下一层协议或服务的数据。SDU 的数据内容在传递到下一层时可能会被封装成一个新的数据单元(PDU,Protocol Data Unit,协议数据单元)。
**Address Resolution module** convert the <protocoltype,targetprotocoladdress> pair to a 48.bit Ethernet address.
```
However, the 10Mbit Ethernet requires 48.bit addresses on the physical cable, yet most protocol addresses are not 48.bits long, nor do they necessarily have any relationship to the 48.bit Ethernet address of the hardware.
```
```
As a packet is sent down through the network layers, routing determines the protocol address of the next hop for the packet and on which piece of hardware it expects to find the station with the immediate target protocol address.
In the case of the 10Mbit Ethernet, address resolution is needed and some lower layer (probably the hardware driver) must consult the Address Resolution module (perhaps implemented in the Ethernet support module) to convert the <protocoltype,targetprotocoladdress> pair to a 48.bit Ethernet address.
The Address Resolution module tries to find this pair in a table. If it finds the pair, it gives the corresponding 48.bit Ethernet address back to the caller (hardware driver) which then transmits the packet.
If it does not, it probably informs the caller that it is throwing the packet away (on the assumption the packet will be retransmitted by a higher network layer), and generates an Ethernet packet with a type field of ether_type$ADDRESS_RESOLUTION.
The Address Resolution module then sets the ar$hrd field to ares_hrd$Ethernet, ar$pro to the protocol type that is being resolved, ar$hln to 6 (the number of bytes in a 48.bit Ethernet address), ar$pln to the length of an address in that protocol, ar$op to ares_op$REQUEST, ar$sha with the 48.bit ethernet address of itself, ar$spa with the protocol address of itself, and ar$tpa with the protocol address of the machine that is trying to be accessed.
It does not set ar$tha to anything in particular, because it is this value that it is trying to determine. It could set ar$tha to the broadcast address for the hardware (all ones in the case of the 10Mbit Ethernet) if that makes it convenient for some aspect of the implementation. It then causes this packet to be broadcast to all stations on the Ethernet cable originally determined by the routing mechanism.
```
```
Packet Reception:
-----------------
When an address resolution packet is received, the receiving Ethernet module gives the packet to the Address Resolution module which goes through an algorithm similar to the following.
Negative conditionals indicate an end of processing and a discarding of the packet.
?Do I have the hardware type in ar$hrd?
Yes: (almost definitely)
[optionally check the hardware length ar$hln]
?Do I speak the protocol in ar$pro?
Yes:
[optionally check the protocol length ar$pln]
Merge_flag := false
If the pair <protocoltype,senderprotocoladdress> is
already in my translation table, update the sender
hardware address field of the entry with the new
information in the packet and set Merge_flag to true.
?Am I the target protocol address?
Yes:
If Merge_flag is false, add the triplet <protocoltype,
sender protocol address, sender hardware address> to
the translation table.
?Is the opcode ares_op$REQUEST? (NOW look at the opcode!!)
Yes:
Swap hardware and protocol fields, putting the local
hardware and protocol addresses in the sender fields.
Set the ar$op field to ares_op$REPLY
Send the packet to the (new) target hardware address on
the same hardware on which the request was received.