You are here

Projekt 29 - Software Überblick

Themen:

 


ISO / OSI Modell

Nr. OSI Schicht Einordnung TCP/IP Protokolle Einheiten Hardware
7

Anwendung

(Application)

Anwendungs-

orientiert

Anwendung

DHCP

DNS

FTP

HTTP

MQTT

Daten

Gateway

Proxy

Layer 4-7 Switch

6

Darstellung

(Presentation)

5

Sitzung

(Session)

4

Transport

(Transport)

Transport-

orientiert

Transport

TCP

UDP

Segmente (TCP)

Datagramme (UDP)

3

Vermittlung

(Network)

Internet

ICMP

IGMP

IP

Pakete

Router

Layer-3 Switch

2

Sicherung

(Data Link)

Netzzugriff

IEEE 802.3 Ethernet

IEEE 802.11 WLAN

MAC

Frames

Bridge

Access Point

Layer-2 Switch

1

Bitübertragung

(Physical)

1000BASE-T

Token Ring

Bits, Symbole

Kabel

Repeater

Hub

 

1. Bitübertragungsschicht / Physical Layer (z.B.: Ethernet - 100BASE-T)

In dieser Schicht werden die mechanischen, elektrischen und physikalischen Eigenschaften definiert, um Bits über ein Transportmedium übertragen zu können. Durch die Verwendung verschiedener Modulationsverfahren können auch mehrere Bits pro Zustand in Symbolen codiert und übertragen werden.

2. Sicherungsschicht / Data Link Layer (z.B.: Ethernet - IEEE 802.3)

Diese Schicht übernimmt die Sicherstellung einer zuverlässigen und weitgehend fehlerfreien Übertragung. Meistens ist auch eine Zugriffsregelung auf das Übertragungsmedium (Media Access Control MAC), eine Datenflusskontrolle für die dynamische Steuerung der Geschwindigkeit, das Aufteilen des Datenstromes in Frames und das Hinzufügen von Prüfsummen für eine Fehlererkennung bzw. -korrektur inkludiert. Das wiederholte Senden verworfener Frames wird von höheren Schichten übernommen.

3. Vermittlungsschicht / Network Layer (z.B.: Internet Protocol)

Diese Schicht sorgt für die Vermittlung von Paketen über das gesamte Kommunikationsnetz. Bei der Vermittlung sind die Stauvermeidung (Congestion Avoidance), das Fragmentieren von Datenpaketen (Aufteilen der Pakete, falls die Größe die max. Übertragungseinheit der Netzwerkschnittstelle überschreitet), die Wegesuche (Routing) und das Bereitstellen netzwerkübergreifender Adressen inkludiert.

4. Transportschicht / Transport Layer (z.B.: TCP / UDP)

Die Aufgaben dieser Schicht ist das Segmentieren des Datenstromes (Segmentgröße wird vom Sender und Empfänger ausgehandelt), die Flusssteuerung bzw. Staukontrolle und gegebenenfalls das Sicherstellen einer fehlerfreien Übertragung (TCP mit garantierter Zustellung, UDP ohne). Die Adressierung innerhalb dieser Schicht erfolgt über Port-Nummern.

5. Sitzungsschicht / Session Layer (z.B.: FTP / HTTP / MQTT)

In dieser Schicht werden die logischen Verbindungen gesteuert und so für eine Prozesskommunikation zwischen zwei Systemen gesorgt. Somit können ausgefallene Transportverbindungen wieder synchronisiert werden, ohne bei der Übertragung von vorne beginnen zu müssen.

6. Darstellungsschicht / Presentation Layer (z.B.: FTP / HTTP / MQTT)

Diese Schicht sorgt für das Umsetzen von einer systemabhängigen Darstellung in eine unabhängige Form, sowie für die Datenkompression und Verschlüsselung. Damit wird ein syntaktisch korrekter Datenaustausch zwischen unterschiedlichen Systemen garantiert.

7. Anwendungsschicht / Application Layer

Diese Schicht stellt Funktionen für die Anwendung zur Verfügung und stellt die Verbindung zu den unteren Schichten her. Hier findet die Daten Ein- und Ausgabe für die Anwendung statt. Die Anwendung selbst ist kein Teil dieser Schicht.

 


IP Adressen

IPv4

4 Blöcke mit jeweils 8 Bit / 1 Dezimalzahl durch „.“ getrennt 192.168.0.10
Netznotation 192.168.0.0/24 entspricht 192.168.0.0 bis 192.168.0.255
Netzwerk Angabe 192.168.0.10/24 beinhaltet IPv4 Adresse 192.168.0.10 und Subnetzmaske 255.255.255.0
Die Subnetzmaske wird verwendet, um zu entscheiden, ob ein Paket an den Provider oder einen anderen Router im eigenen Netz oder überhaupt nicht weitergeleitet wird.

0.0.0.0/8 Standard Route
127.0.0.0/8 Loopback Adressen
10.0.0.0/8 Link Local Adressen - Netzklasse A
172.16.0.0/12 Link Local Adressen - Netzklasse B
192.168.0.0/16 Link Local Adressen - Netzklasse C
169.254.0.0/16 Link Local Adressen, falls DHCP fehlgeschlagen ist

 

IPv6

8 Blöcke mit jeweils 16 Bit / 4 Hexadezimalstellen durch „:“ getrennt 2001:0db8:85a3:08d3:0000:ffff:c0a8:000a
Führende Nullen innerhalb eines Blockes dürfen weggelassen werden 2001:db8:85a3:8d3:0:ffff:c0a8:a
Ein oder mehrere Blöcke mit Wert 0 dürfen vereinfacht mit „::“ dargestellt werden, aber maximal einmal 2001:db8:85a3:8d3::ffff:c0a8:a
Für die letzten beiden Blöcke darf die herkömmliche dezimale Notation verwendet werden 2001:db8:85a3:8d3::ffff:192.168.0.10
Netznotation 2001:db8:85a3:8d3::/64 entspricht 2001:0db8:85a3:08d3:0000:0000:0000:0000 bis 2001:0db8:85a3:08d3:ffff:ffff:ffff:ffff
Der Internet Service Provider ISP bekommt mit den ersten 32 Bit ein Netz zugewiesen 2001:db8::/32
Der ISP weist dem Endkunden ein Netz von typ. 2001:db8:85a3::/48 bis 2001:db8:85a3:8d3::/64 zu

::/128 bzw. 0:0:0:0:0:0:0:0/128 nicht spezifizierte Adresse / Adresse falls noch nicht initialisiert
::/0 bzw. 0:0:0:0:0:0:0:0/0 Standard Route
::1/128 bzw. 0:0:0:0:0:0:0:1/128 Loopback Adresse (entspricht bei IPv4 127.0.0.1/32)
fe80::/64 Link Local (Unicast) Adressen (LLA)
lokales Netz mit Hubs/Switches bis zum ersten Router, wird nicht weiter geroutet
fc00::/7 Unique Local (Unicast) Adressen (ULA)
fc00::/8 für global zugewiesene / zentral verwaltete Adressen
fd00::/8 für lokal zugewiesene / verwaltete Adressen
ff00::/8

Multicast Adressen
nach ff folgen 4 Bits für Flags und 4 Bits für den Gültigkeitsbereich

Flag-Kombinationen
0: Permanent definierte wohlbekannte Multicast-Adressen
1: (T-Bit gesetzt) Transient (vorübergehend) oder dynamisch zugewiesene Multicast-Adressen
3: (P-Bit gesetzt, erzwingt T) Unicast-Prefix-based Multicast-Adressen
7:
 
(R-Bit gesetzt, erzwingt P und T) Multicast-Adressen, welche die Adresse des Rendezvous-Points enthalten
 
Gültigkeitsbereiche
1: interface-lokal – diese Pakete verlassen die Schnittstelle nicht (Loopback)
2: link-lokal – werden von Routern grundsätzlich nicht weitergeleitet und können deshalb das Subnetz nicht verlassen
4: admin-lokal – der kleinste Bereich, dessen Abgrenzung in den Routern speziell administriert werden muss
5: site-lokal – dürfen zwar geroutet werden, jedoch nicht von Border-Routern
8: organisations-lokal – die Pakete dürfen auch von Border-Routern weitergeleitet werden, bleiben jedoch „im Unternehmen“
e: globaler Multicast, der überallhin geroutet werden darf
0, f: reservierte Bereiche
die restlichen Bereiche sind nicht zugewiesen und dürfen von Administratoren benutzt werden, um weitere Multicast-Regionen zu definieren
 
Beispiele für wohlbekannte Multicast-Adressen
ff01::1, ff02::1: All-Nodes Adressen, entspricht dem Broadcast in einem Bereich
ff01::2, ff02::2: All-Routers Adressen, adressiert alle Router in einem Bereich
ff01::101, ff02::101 All-NTP Adressen, adressiert alle Zeitserver
0:0:0:0:0:ffff::/96 IPv4 mapped IPv6 Adressen – letzten 32 Bit enthalten die IPv4 Adresse
2000::/3 IANA vergebene globale Unicast Adressen (GUA) – routbar, weltweit einzigartig
2001::/32 Adressen für Tunnelmechanismus Teredo
2001:db8::/32 Adressen für Dokumentationszwecken


Versionsverwaltung (SVN, GIT)

Damit man bei Software-Projekten die vergangenen Änderungen und die Übersicht nicht verliert, verwendet man gerne Versionsverwaltungssysteme wie Subversion oder Git. Bei der Verwendung solcher Systeme können sämtliche Änderungen am Source-Code nachverfolgt und auch verglichen werden. Des Weiteren können unterschiedliche Entwicklungspfade (z.B. unterschiedliche Versionen für unterschiedliche Betriebssysteme bzw. Hardware-Systeme) einfach verwaltet werden.

Das wichtigste bei der Verwendung von Subversion oder Git ist, dass beim Einpflegen eines neuen SW-Standes immer auch Kommentare eingetragen werden. Somit kann man Änderungen folgen, ohne gleich den Source Code durchsehen zu müssen. Damit Projekte mit mehreren Entwicklern tatsächlich übersichtlich bleiben, muss man sich zuvor gut überlegen, wie man die Versionsverwaltungs-Funktionen verwendet. D.h. für gewisse Vorgänge (Tagging, Branching, Submodule Handling) sollte es einen bestimmten Prozess geben.

Subversion

Bei Subversion (SVN) handelt es sich um ein zentrales Versionsverwaltungssystem. Jeder Benutzer arbeitet mit einer lokalen Kopie und muss sich beim Einpflegen von Änderungen mit dem Server verbinden. Ein lokales Einpflegen von Änderungen ist nicht möglich. Solange man offline arbeitet, gibt es keine Möglichkeit, Änderungen mit Kommentaren einzupflegen. Somit fehlt zu dieser Zeit auch die Möglichkeit bereits funktionierenden Code sicher abzulegen und gegebenenfalls wieder zurück zu holen.

  • zentrale Versionsverwaltung
  • Einpflegen, ... benötigt Verbindung zum Repository
  • jeder Benutzer arbeitet mit einer Kopie vom Repository
  • die History ist nur zentral verfügbar
  • Verzweigen und Zusammenführen ist zeitaufwändiger
  • Revisionsnr. wird für einen bestimmten Zustand des Repositorys vergeben, der sich über die Zeit nicht mehr verändert
  • Inhalte werden in Dateien abgelegt
  • Inhalt wird nicht gehashet um Datenfehler vorzubeugen
  • centralized version control
  • must be connected to commit, ...
  • each user has a copy of the repository
  • local copy doesn't contain the history
  • branching and merging is time-consuming
  • revision nr. is a snapshot of the repository at any given time
  • content is stored within files
  • doesn't have hashed content

 

 

Weitere nützliche Subversion Informationen findet man unter:

 

Git

Bei Git handelt es sich um ein verteiltes Versionsverwaltungssystem. Die Benutzer arbeiten mit einer kompletten Kopie (Klon) des Repositories, History usw. mit eingeschlossen. Somit können Repository Änderungen auch lokal und offline erfolgen. Diese Möglichkeit erfodert dadurch eine unterschiedliche Arbeitsweise. Anstelle von den Subversion Basis-Kommandos Commit und Update, gibt es Commit (lokal), Push (remote) und Pull (remote).

  • verteilte Versionsverwaltung
  • Einpflegen, ... auch lokal/offline möglich
  • jeder Benutzer arbeitet mit einem Klon des Repositorys
  • die History ist auch offline verfügbar
  • Verzweigen und Zusammenführen einfacher
  • keine globale Revisionsnr. verfügbar
  • Inhalte werden als Metadaten abgelegt
  • Inhalte werden kryptographisch mit SHA-1 Checksumme versehen
  • distributed version control
  • can work locally/offline
  • each user has a copy of the full repository
  • local copy contains the complete repository, incl. the history
  • easy to fork/branch and merge
  • no global revision nr. available
  • content is stored as metadata
  • content is cryptographically check-summed using SHA-1 hash algorithm

 

Für das Abzweigen innerhalb eines Projektes für zusätzliche Features, Bugfixing, ... gibt es unterschiedliche Ansätze. Ein möglicher Ansatz ist git-flow (siehe Grafik unterhalb). Diese Methode ist aber bereits sehr komplex und erfordert viel Disziplin bei den Software-Entwicklern. Für viele kleine Projekte bzw. kleinere Entwicklungsteams reichen vereinfachte Methoden.

 

Weitere nützliche Git Informationen findet man unter: