

[toc]

## 2.1 Bitübertragungsschicht (OSI-Schicht 1) 物理层（OSI模型第1层）

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:
物理层协议正是解决这个问题的。它们规定了使用哪种媒介，以及如何将二进制数据（比特）作为信号调制到物理媒介上。这涉及多个方面，以确保所有终端以相同的方式传输和解释数据。这些方面可以分为四组。

**Physikalische** Aspekte umfassen Eigenschaften des Mediums und der verwendeten Signale.
**物理**方面包括媒介的特性和所使用的信号。

**Mechanische** Eigenschaften spezifizieren u.A. die Bauform der Anschlüsse an das Medium.
**机械**方面指定了与媒介连接的接口的结构形式。

**Funktionale** Spezifikationen definieren die Benutzung des Mediums, z.B. Pin-Belegung und Takt.
**功能性**规范定义了媒介的使用方式，例如引脚分配和时钟。

**Prozedurale** Beschreibungen enthalten Elementarereignisse und deren Bedeutung, z.B. den genauen Ablauf zur Übertragung einer SDU.
**过程性**描述包括基本事件及其含义，例如传输一个 [SDU](#SDU) 的确切流程。

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.
如今，媒介通常是铜线、光导纤维或“空气”。信号通常被设计为明显不同，以便于区分，因为信号容易受到干扰的影响而失真。在第 1 层上，一个 SDU 不一定对应于一个比特。第 1 层协议还可以指定多个比特的并行传输。

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).
外部干扰可能会改变信号在传输过程中的幅度、频率和相位。第 1 层的组件处理信号的方式是将接收到的信号解释为符合规格的信号状态（离散化）。将信号转换为比特是另一个工作步骤，通常只有那些同时实现第 2 层的组件才需要完成此步骤。常见的第 1 层组件包括中继器、多端口中继器（集线器）和波分复用器（WDMs）。



### 2.1.1 Repeater und Hubs 中继器和集线器

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.
中继器（Repeater）通常有两个接口。当一个接口收到信号时，信号会被增强并从另一个接口输出。中继器可以用来解决信号衰减的问题，使信号传输距离超过原始发送器的功率限制。中继器的进一步发展就是集线器（Hub）。集线器具有多个接口，能够将一个接口接收到的信号增强后发送到所有其他接口。

![image-20241107104045466](https://lsky.mhrooz.xyz/2024/11/07/5aa068e89ff8d.png)

### 2.1.2 Wavelength Division Multiplexer 波分复用器

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.
在线路的另一端，一个解复用器接收组合信号。该设备将接收到的信号分离，将每个子信号调制回其原始形式，并通过独立的线路发送这些信号。

## 2.2 Sicherungsschicht (OSI-Schicht 2) 数据链路层（OSI模型第 2 层）

![image-20241107104458429](https://lsky.mhrooz.xyz/2024/11/07/cd05d8d38e6b9.png)

![image-20241107104505851](https://lsky.mhrooz.xyz/2024/11/07/2804b175d48dd.png)

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.
根据第 1 层和第 2 层的主要任务，这两层的组件特点有所不同：第 1 层包括中继器、集线器、波分复用器（WDM）等，第 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.
除了帧构建，第 2 层协议还定义了帧的传输方式。这包括控制对第 1 层或共享媒介的访问的多重访问协议，以及向第 2 层终端传输帧的方式。由于第 1 层和第 2 层组件和功能的多样性，局域网（LAN）的物理构建有多种实现方式。

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.
图 2.2 显示了桥接器两侧的总线拓扑网络。在这种拓扑结构中，多个第 2 层终端连接到一个共享媒介上。总线拓扑的一个问题是维护难度较大。一旦出现硬件故障，通常会导致整个局域网瘫痪。因为每个组件都可能是问题的根源，所以定位故障硬件相当困难。共享电缆通常跨越多个房间或楼层，更换非常耗时。

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.
另一种可以解决该问题的拓扑结构是星型拓扑。星型拓扑中使用一个中央集线器（参见图 2.3）代替共享介质。由于集线器会将接收到的信号复制到所有连接的电缆上，因此星型拓扑网络的行为类似于总线拓扑网络；信号传输仍然保持共享介质的特性。因此，可以在集线器的每个端口连接一个具有总线拓扑的子网。

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.
集线器的优点在于，连接处的电缆故障不会导致整个网络崩溃。此外，可以在中心位置轻松找到故障电缆。通常，每条连接集线器的电缆只连接一个计算机，这样可以进一步简化故障定位。电缆的故障只会切断该电缆所连接的单个设备与局域网的连接，而不会影响整个网络。即使集线器出现故障，其更换也比更换穿越多个房间或楼层的电缆更为简单。如果将集线器替换为交换机，交换机可以根据帧的特性（如头信息）来管理数据流。交换机可以通过解析接收到的信息，将数据帧仅发送到特定的端口，而不是向每个端口复制帧。

## 2.3 Ethernet

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.
由于工作站计算机本地网络的重要性日益增加，在 1972 年至 1976 年间，施乐公司帕洛阿尔托研究中心开发了高效且“防呆”的局域网技术基础。这种新型局域网被称为以太网（Ethernet），以纪念 19 世纪物理学家们苦苦追寻的“光以太”。如今，以太网已正式被定义为 IEEE 标准 802.3，它管理并发展了 CSMA/CD 协议和物理传输技术 [IEEE 802.3]。

![image-20241107110237030](https://lsky.mhrooz.xyz/2024/11/07/1d3b40ce8793d.png)

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.

以太网在其最初的形式中基于广播技术，所有组件连接到相同的媒介，如图 2.4 所示。当一个组件发送数据时，其他所有组件都能接收到。如果多个组件同时发送，则会发生数据碰撞，导致数据无法传输。在碰撞中，信号在介质中相互干扰，原始信号无法区分（参见章节 2.1）。因此，以太网使用 CSMA/CD 协议来协调共享介质的使用。大多数现代以太网网络使用星型拓扑结构，每个终端（如计算机）独立连接到一个交换机端口。

## 2.4 Virtuelle Topologien 虚拟拓扑

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.
可管理的交换机通常提供监控端口的功能。通过该功能，可以选择交换机上的一个特定端口，该端口将会复制交换机在其他端口接收到的每个数据帧。这项功能使得可以在中央位置收集交换机处理的每个数据帧。由于监控端口的传输速率通常明显低于其他所有端口的总和，当负载达到一定程度时，监控端口可能无法复制所有的数据帧。因此，监控端口通常仅用于故障分析。监控端口的概念也可以虚拟化实现。

![image-20241107123017893](https://lsky.mhrooz.xyz/2024/11/07/0a49c8a0d170d.png)

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.

图 2.5 显示了一个示例，其中计算机 rnpserver 和 rnpclient 分别通过 (rnpserver-eth1, S01-A-4) 和 (S01-D-2, rnpclient-eth1) 连接。此外，计算机 rnpmgmt 连接到交换机 S01。如果将 S01-B-4 端口配置为管理端口，则计算机 rnpmgmt 会在其接口 eth1 上接收到 rnpserver 和 rnpclient 之间交换的所有数据帧。这使得可以在不直接访问的情况下监控这两台计算机的交互。

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 设备。

### 2.5.1 Virtuelle Schnittstellen unter Linux

![image-20241107123004937](https://lsky.mhrooz.xyz/2024/11/07/148807a8522e6.png)

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.
每个虚拟接口除了可以分配独立的IP地址外，还可以分配独立的VLAN ID。这使得仅通过一个物理连接就可以将计算机连接到多个虚拟局域网（VLAN）。

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.
还可以给一个单独的接口分配多个IP地址，从而将计算机连接到多个子网（例如192.168.1/24和192.168.2/24）。虚拟接口和VLAN的主要区别在于虚拟接口在OSI模型的第2层实现，而IP层的隔离是OSI第3层的功能。

Anlegen virtueller Schnittstellen mit VLAN-ID: 
带VLAN ID的虚拟接口创建：

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.
Scapy 是一个用于数据包检查和操作的 Python 框架。它允许您记录、解码许多已实现协议的数据包，从 pcap 文件中读取或创建数据包并发送等。Scapy 还适用于快速原型设计，并使用默认值，保证基本功能可用。

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.).
许多其他工具的任务可以由 Scapy 完成，例如扫描、路由追踪、单元测试、网络检测和多种攻击。此外，您还可以发送无效的帧、创建自定义的 802.11 帧，并组合各种技术（如 VLAN 跳跃 + ARP 缓存中毒、在 WEP 加密的信道上解码 VoIP 数据包等）。

#### 2.6.1 Installation auf der Infrastruktur

`// On Debian`
`apt-get install python3-scapy`

`// On OpenWRT`
`opkg update; opkg install scapy`

#### 2.6.2 Usage

Eine kleine Übersicht:
以下是简要概述：

- Verschiedene Protokolle und Header sind als Klassen implementiert, wie IPv6 oder ICMP.
  各种协议和头部作为类实现，例如 IPv6 或 ICMP。
- Protokolle können ineinander geschachtelt werden mit dem Slash-Operator, z.B.: IPv6()/TCP() erstellt ein TCP-over-IPv6 Paket.
  可以使用斜杠操作符嵌套协议，例如 `IPv6()/TCP()` 创建一个 TCP-over-IPv6 包。
- 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().
  可以使用 `show` 和 `show2` 方法显示数据包；发送和接收请参考 `send()`、`sendp()`、`sr()`、`sr1()` 和 `srp()`。
- Die meisten Headeroptionen können verändert werden. Setzen Sie diese entweder im Konstruktor oder über Membervariablen, z.B.: p = IP(ttl=64)
  大多数头选项可以更改。可以在构造函数中或通过成员变量设置这些选项，例如：`p = IP(ttl=64)`。
- Nicht alle Optionen müssen angegeben werden, Scapy befüllt solche Werte mit Defaults.
  并非所有选项都必须指定，Scapy 会自动填充默认值。
- Eine Liste aller Funktionen bekommen Sie über die Funktion ls().
  使用 `ls()` 函数可以查看所有功能列表。
- Für weitere Informationen und eine Demonstration, siehe https://scapy.net/
  更多信息和演示，请访问 [https://scapy.net](https://scapy.net/)

## 2.7 Aufgaben

**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?**
   **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）**
   修改您的虚拟基础设施拓扑，使路由器 1、2 和 3 仅包含交换机（桥接器）。将所有接口（除了 eth0 以外）加入该桥接器。（提示：使用 `ip link`，参考文献^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.
   PC1–3 和路由器 4 是主机，根据图 2.7 的树状拓扑结构连接在同一子网中。这里只需要将冗余的链路标记为 `down`。

   ![image-20241107213435124](./assets/image-20241107213435124.png)
   
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。**
   通过 `ping` 命令测试 PC1–3 和路由器 4 之间的连接。根据桥接器的定义，路由器 1–3 不会有 IP 地址。请为它们分配 IPv4 地址。

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。**
   当前，所有主机都在同一网络中。在本任务中，将网络划分为两个逻辑上独立的 VLAN（第二层）。目标是将路由器 4 和 PC3 放在一个 VLAN 中，将 PC2 和 PC1 放在另一个 VLAN 中，使它们彼此隔离。
   第三层地址将保持不变。预期的结果是仅在 VLAN 内可以进行通信。例如，路由器 4 只能与 PC3 通信，而无法与 PC1 和 PC2 通信，即便它们在第三层的同一子网中。

   使用 `ping` 测试您的配置，并通过 `tcpdump`（在路由器 1–3 上）验证 ICMP 请求是否基于 VLAN ID 在 VLAN 内部进行通信。

   

### **A202 ARP 和 NDP 分析**

   使用与上一个任务相同的拓扑结构。如果有 VLAN，请将其移除。

   i) 解释 pc1 上的 `ip neigh` 命令输出！

   ii) 清空 pc1 和 pc2 上的 ARP 缓存！（提示：`ip neigh`）

   iii) 确保 PC 的接口拥有 Link-Local IPv6 地址。（提示：`ip link [down/up]`）

   iv) 使用 `ping` 和 `ping6` 在 pc1 和 pc2 之间生成 IP 流量。`ip neigh` 输出有何变化？

   v) 使用 `tcpdump` 观察从 IP 地址到 MAC 地址的解析。请求解析的 MAC 地址分别发送给哪些 MAC 地址？是否是广播？

   vi) 为您的 PC 添加以下网络的 IPv6 地址：`2001:db8:<组号>::/64`

   vii) 使用新添加的全局地址重复 IPv6 测试。解释这些差异！

   viii) 比较 `tcpdump` 和 `scapy` 的输出。使用 `scapy` 显示 ARP/Neighbor Solicitation (NS) 数据包的详细信息。

   ix) 使用 `scapy` 发送 ARP 和 NS 数据包从 pc1 发出。（提示：`Ether` 和 `sendp()`）

   查看 pc2 和 pc3 是否接收到这些数据包？它们如何响应这些请求？检查 pc1 收到的回复！

   x) 使用 `scapy` 发送带有新 MAC 地址的 ARP Reply 和 Neighbor Advertisement (NA) 数据包从 pc1 发给 pc2。查看 pc2 的邻居缓存在接收到数据包后有何反应？

### **A203 在 C 中实现 ARP**

任务是独立实现 ARP 协议 (参见 RFC 826)。目标是基于 TUN/TAP 设备，在网络内拦截数据流，并通过工具 `arping` 对 ARP 请求发送语义和语法正确的 ARP 响应。

i) 熟悉 TUN/TAP 设备的工作原理，并使用小应用程序 `tuntap.c` 检查您的配置是否正确。

ii) 为 ARP 请求和响应选择一个合适的接口，并在一个头文件中记录。阅读 RFC 826 以获得相关信息。

iii) 实现您指定的接口，使其能够正确响应 `arping` 请求。您可以为响应分配任意 IP 地址和 MAC 地址。

`arping` 请求示例：
```bash
$ arping -I mytap <ip>
```

## Appendix

### SDU

**SDU**（Service Data Unit，服务数据单元）是计算机网络中的一个概念，指的是在网络协议层之间传递的数据单元。在分层网络模型中，SDU 是上一层协议或服务要传递给下一层协议或服务的数据。SDU 的数据内容在传递到下一层时可能会被封装成一个新的数据单元（PDU，Protocol Data Unit，协议数据单元）。

#### SDU 的作用

在分层网络模型中，每一层协议对上一层的 SDU 进行处理，将其封装、分片或添加头信息后，传递到下一层。这一过程在数据从高层（如应用层）到低层（如物理层）时会反复发生，直到数据在物理层上被传输出去。SDU 是分层结构中数据传递的基础单位。

#### SDU 与 PDU 的关系

- **SDU（Service Data Unit）**：是传递给下一层协议的数据单元，通常包含应用层或上层协议层的数据。
- **PDU（Protocol Data Unit）**：是将 SDU 封装后，加入本层协议的控制信息（例如头部和尾部）形成的完整数据包。PDU 是每一层协议的实际传输单元。
  

在一层协议中，SDU 被处理和封装成 PDU，然后传递给下一层。例如：
1. 传输层将应用层的 SDU 封装成传输层 PDU（例如 TCP 段或 UDP 数据报）。
2. 网络层将传输层的 PDU 封装成网络层 PDU（如 IP 数据报）。
3. 链路层将网络层的 PDU 封装成链路层 PDU（如以太网帧）。

假设一个应用程序发送一个数据单元到网络中，这个数据单元会经历多个协议层的封装过程：

1. **应用层**：应用层生成一个 SDU（例如 HTTP 请求），并将其传递给传输层。
2. **传输层**：传输层将应用层的 SDU 封装为传输层的 PDU（例如 TCP 段），并将其传递给网络层。
3. **网络层**：网络层将传输层的 PDU 作为 SDU，然后封装为网络层的 PDU（例如 IP 数据报），传递给数据链路层。
4. **数据链路层**：链路层将网络层的 PDU 作为 SDU，封装为链路层 PDU（例如以太网帧），最后在物理层上传输。

### TUN and TAP

**TUN** 和 **TAP** 是 Linux 和其他操作系统中的两种虚拟网络设备，用于处理网络流量。它们分别用于 **三层（网络层）** 和 **二层（数据链路层）** 网络通信。

#### 1. TUN 接口

- **TUN** 代表 **"network TUNnel"**。
- TUN 是一个虚拟的三层（网络层）设备，模拟的是 IP 层。
- 它处理的是 **IP 数据包**（如 IPv4 或 IPv6），可以看作是虚拟的网卡，但只处理三层协议。
- 当应用程序通过 TUN 接口发送 IP 数据包时，操作系统会将这些数据包交给一个用户空间程序，该程序可以对数据包进行处理或转发。
- 常用于 **VPN**（如 OpenVPN）的三层隧道，实现私有网络之间的安全通信。

**工作方式**：
- TUN 接口会将 IP 数据包从内核空间转发到用户空间的 VPN 程序。
- VPN 程序加密或解密数据包后，再通过 TUN 接口发送到网络中，或转发到目标设备。

**示例**：OpenVPN 的 TUN 模式使用三层隧道，仅处理 IP 数据包，适用于没有广播流量需求的网络（如 Internet 流量）。

#### 2. TAP 接口

- **TAP** 代表 **"network TAP"**，意为网络接入点。
- TAP 是一个虚拟的二层（数据链路层）设备，模拟的是以太网设备。
- 它处理的是 **以太网帧**，包括 IP、ARP 等协议层的封装。
- TAP 接口允许虚拟网络设备和物理网络一样传输以太网帧，因此可以处理广播和多播流量。
- 常用于虚拟机（如 KVM、VirtualBox）和容器的二层连接，允许虚拟机像在同一个局域网内一样通信。

**工作方式**：
- TAP 接口可以在二层网络中直接传输以太网帧，包含源 MAC 地址、目标 MAC 地址和协议字段。
- 它将这些帧转发到用户空间程序进行处理，程序可以将它们转发到其他网络或应用程序。

**示例**：OpenVPN 的 TAP 模式使用二层隧道，适用于需要广播或多播的场景，如与局域网相连的虚拟网络环境。

#### 区别总结

| 特性         | TUN（网络隧道）         | TAP（接入点）                  |
| ------------ | ----------------------- | ------------------------------ |
| 层次         | 三层（网络层）          | 二层（数据链路层）             |
| 处理数据类型 | IP 数据包（IPv4、IPv6） | 以太网帧（包括 MAC 地址）      |
| 广播支持     | 不支持                  | 支持                           |
| 应用场景     | 三层 VPN（不需要广播）  | 二层 VPN、虚拟机局域网连接     |
| 常用协议     | 仅传输 IP 层协议        | 可以传输任意二层协议（如 ARP） |

#### 何时使用 TUN 和 TAP

- **使用 TUN**：如果只需要在网络层传输 IP 数据包，且不需要局域网的广播和多播功能，例如 Internet 访问的三层 VPN。
- **使用 TAP**：如果需要在二层连接多个设备，支持以太网帧级别的通信（包括广播和多播），如多个虚拟机在同一局域网内通信的二层 VPN。

#### 工具支持

- **`ip tuntap`**：可以在 Linux 上创建和管理 TUN 和 TAP 设备。
- **OpenVPN**：支持 TUN 和 TAP 两种模式，用户可以根据需求选择相应的接口类型。
- **虚拟化平台**（如 KVM、VirtualBox）：通常使用 TAP 接口来实现虚拟机与主机网络的连接。









