Inhaltsverzeichnis

Netzwerke

Netzwerktechnik

Warum benötige ich Netzwerke?

- Um Internet zur Verfügung zu stellen - Datenaustausch - Datenbestände gemeinsam zu nutzen - Gemeinsame Nutzung von Hardware (Thin Client, PowerServer) - Datensicherheit durch z.B. NAS Speicherung

Peer to Peer Netzwerke

Jeder ist selber für seine Daten verantwortlich Einfaches aufbauen, keine separate Hard- oder Software Bei kleinen Netzen geringe Adminkosten Bei Ausfall eines Pcs trotzdem noch weiterarbeiten Bei 10 PCs ist Ende bei Microsoft (z.B. können nur zehn gleichzeitig Drucken)

Client Server Netzwerke

Server defekt kann kein Mitarbeiter mehr arbeiten Brauchen separate Hard und Software Hohe Datensicherheit durch Speicherung des Admins Bei großen und mittleren Netzwerken geringe Adminkosten ⇒ Softwareaktualisierungen nur auf wenigen Systemen(Servern) Spielt keine Rolle wo der Benutzer rangeht kann sich von überall auf Server mit seinen Kontodaten anmelden

Mainframe Rechner

In einem Großrechner sind aufeinander abgestimmte, robuste und hochgradig redundante Komponenten verbaut. Üblicherweise wird die Wartung dieser Rechner im laufenden Betrieb durchgeführt, auch Hardwareaustausch und Aufrüstungen führen zu keiner Beeinträchtigung oder gar Unterbrechung des Betriebs. Ein Großrechner zeichnet sich vor allem durch seine Zuverlässigkeit und hohe Ein-Ausgabe-Leistung aus. Er kann im Online-Betrieb (Time Sharing) eine große Anzahl von Benutzern bedienen, im Batch-Betrieb aber auch komplizierte und aufwendige Aufgaben durchführen. Die Benutzer erhalten beim Online-Betrieb Zugang zu einem Großrechner über Computer-Terminals. Seit sich Personal Computer (PCs) durchgesetzt haben, werden solche Terminals meistens durch entsprechende Emulationen auf den PCs ersetzt.

HUB

Sendet Anfrage nach Mac Adresse an alle Geräte im Netzwerk

Switch Führt intern Tabelle und verteilt gezielt Daten an richtigen Empfänger

Netzwerk Topologien

Bus Topologie

BNC

Vorteile
* •	Der Ausfall eines Gerätes hat für die Funktionalität des Netzwerkes keine Konsequenzen
* •	RG 58 => 185m (30 PCs pro Segment untergebracht) 10 Base 2 => RG 58 (maximale Geschwindigkeit 10 Mbits /Base
* yellow Kabel 500m(100 PCs pro Segment) 10 Base 5 => yellow Kabel (maximale Geschwindigkeit 10 Mbits /Base/ 500 meter)
* •	Einfache Verkabelung und Netzerweiterung
* •	Es werden keine aktiven Netzwerkgeräte z.B. Switch/Hub benötigt
* Nachteile
* •	Datenübertragungen können leicht abgehört werden (Stichwort: Sniffer).
* •	Eine Störung des Übertragungsmediums an einer einzigen Stelle im Bus (defektes Kabel) blockiert den gesamten Netzstrang.
* •	Es kann zu jedem Zeitpunkt immer nur eine Station Daten senden. Währenddessen sind alle anderen Sender blockiert (müssen zu übertragende Daten intern zwischenpuffern).
* •	Bei Bussen, die Kollisionen zulassen und auf eine nachträgliche Behebung setzen, kann das Medium nur zu einem kleinen Teil ausgelastet werden, da bei höherem Datenverkehr überproportional viele Kollisionen auftreten

10 Base 2 ⇒ RG 58 (maximale Geschwindigkeit 10 Mbits /Base

5-4-3 RepeaterRegel

5 Segmente mit 4 Repeatern allerdings nur in drei Segmenten PCs unterbringen

Ring Topologie 10BASE5

RJ45 Stecker Vorteile

Nachteile

Stern Topologie 10 Base T 10 Base F (Glasfaser)

Vorteile

Nachteile

Segmentlänge 100 Meter

Theoretisch 1024 PCs an einem Switch möglich

Batchkabel verwenden wenn möglich Din Norm welche Farbe für welche Ader

Kabeltypen:

Twisted-Pair-Kabel gibt es in zwei- und vierpaariger Ausführung. Bei aktuellen Netzwerkinstallationen werden fast nur vierpaarige Kabel verwendet. Neben der Einteilung in Klassen und Kategorien bezieht man sich bei der Bezeichnung von Twisted-Pair-Kabel auf deren Zusammensetzung aus Mantel, Schirm und Adernpaaren. Hier gibt es deutliche Unterschiede, die sich direkt in der Qualität der Kabel und deren Einsatzzweck bemerkbar macht. Grundsätzlich unterschiedet man zwischen geschirmte und ungeschirmte Kabel. Im Gegensatz zu den geschirmten Kabel (STP und FTP) weisen die ungeschirmten Kabel (UTP) eine deutlich schlechtere Übertragungsqualität auf, die sich bei hohen Übertragungsraten und langen Leitungslängen negativ bemerkbar macht. Da die alten Bezeichnungen nicht einheitlich, dafür widersprüchlich waren und oft Verwirrung gestiftet haben, wurde mit der Norm ISO/IEC-11801 (2002) E ein neues Bezeichnungssystem der Form XX/YZZ eingeführt. XX steht für die Gesamtschirmung • U = ohne Schirm (ungeschirmt) • F = Folienschirm (beschichtete Kunststofffolie) • S = Geflechtschirm (Drahtgeflecht) • SF = Geflecht- und Folienschirm Y steht für die Aderpaarschirmung • U = ohne Schirm (ungeschirmt) • F = Folienschirm (beschichtete Kunststofffolie) • S = Geflechtschirm (Drahtgeflecht) ZZ steht für die Verseilungsart • TP = Twisted Pair (in der Regel) • QP = Quad Pair

UTP (Unshielded Twisted Pair) Kabel mit ungeschirmten Paaren und ohne Gesamtschirm. Einsatz vorzugsweise bei der Etagen- und Endgeräteverkabelung. Das Hauptproblem bei UTP-Kabeln ist das Übersprechen, das heißt die auf den einzelnen Aderpaaren übertragenen Signale beeinflussen sich gegenseitig (auch Alien Crosstalk genannt). Das Kabel ist jedoch wegen seines geringen Außendurchmessers und der fehlenden Schirme einfach zu verarbeiten und in der Regel preisgünstiger als andere Kabeltypen.

• STP (Shielded Twisted Pair): Die Adernpaare sind mit einem metallischem Schirm (meist eine aluminiumkaschierte Kunststofffolie) umgeben. Bei Schirmung jeweils eines Paares spricht man auch von PiMF (Paar in Metallfolie), umfasst der Schirm zwei Paare wird dies auch als ViMF (Vierer in Metallfolie) bezeichnet. Durch diese zusätzliche Schirmung besitzt das STP-Kabel einen größeren Außendurchmesser und ist dadurch schlechter zu verlegen (größerer Biegeradius) als UTP-Kabel. Das Übersprechen zwischen den einzelnen Adernpaaren kann jedoch durch die Schirmung verringert werden (siehe auch Elektromagnetische Verträglichkeit).

• S/STP (Screened Shielded Twisted Pair): Aufbau wie bei STP, jedoch mit zusätzlicher metallischer Gesamtschirmung um die Leiterbündel. Der Gesamtschirm kann als Folie oder als Drahtgeflecht oder aus beidem zusammen ausgeführt sein.

• S/UTP (Screened Unshielded Twisted Pair): Aufbau wie bei UTP, jedoch mit zusätzlicher metallischer Gesamtschirmung um die Leiterbündel. Der Gesamtschirm kann als Folie oder als Drahtgeflecht oder aus beidem zusammen ausgeführt sein. Besteht der Gesamtschirm nur aus einer Folie, wird so ein Kabel auch als FTP-Kabel bezeichnet; besteht der Gesamtschirm aus Folie + Drahtgeflecht auch als S/FTP-Kabel.

Kabeltyp Kategorien

Kat 1 : Bandbreite bis 100 kHz	
Kat 2 : Bandbreite bis 1 MHz	
Kat 3 : Bandbreite bis 16 MHz	Nicht geeignet für Geschwindigkeiten über 16 Mbit/s. Heute vor allem als Telefonkabel eingesetzt.
Kat 4 : Bandbreite bis 20 MHz	
Kat 5 : Bandbreite bis 100 MHz	In den meisten aktuellen LANs eingesetzt vier einzeln abgeschirmte Adernpaare (Screened/Foiled shielded Twisted Pair S/FTP) innerhalb eines gemeinsamen Schirms
Kat 6 : Bandbreite bis 200 MHz	
Kat 7 : Bandbreite bis 600 MHz	

ISO/IEC 11801

Die internationalen Standardisierungs-Aktivitäten für anwendungsneutrale Verkabelungssysteme begannen 1991. 1993 lag der erste Entwurf für den internationalen Standard ISO/IEC11801 vor, dessen Veröffentlichung bereits 1995 erfolgte. Der Standard 11801 und die weitestgehend identische europäische Norm EN 50173 sind für Deutschland relevant. Sie definieren einen Geltungsbereich für eine Gelände-Ausdehnung von bis zu 3 km und für eine Bürofläche von bis zu 1 Million Quadratmeter mit 50 bis 50.000 Endgeräten. Die Standards unterstützen Sprach-, Daten-, Text-, Bilder- und Video-Anwendungen und enthalten deshalb die Vorgaben für Konfiguration, Implementierung, Leistung und Konformität. Darüber hinaus beschreiben sie Empfehlungen zum generellen Aufbau eines Verkabelungssystems und klassifizieren die einzusetzenden Kabeltypen ebenso wie die Ende-zu-Ende-Verbindungen (Link-Klasse).

RJ 45

Token Ring Adernpaar 1 und 3 10BaseT Adernpaar 2 und 3 100BaseT Adernpaar 2 und 3 100BaseT4 Adernpaar 1, 2, 3 und 4 VG-AnyLAN Adernpaar 1, 2, 3 und 4 Belegung RJ45-Stecker für Ethernet nach EIA/TIA 568A (Netzwerkkabel) Belegung RJ45-Stecker für Ethernet nach EIA/TIA 568B (Netzwerkkabel) Signal Pin Farbe TX+ 1 weiß/grün TX- 2 grün RX+ 3 weiß/orange 4 blau 5 weiß/blau RX- 6 orange 7 weiß/braun 8 braun

Signal	Pin	Farbe

TX+ 1 weiß/orange TX- 2 orange RX+ 3 weiß/grün 4 blau 5 weiß/blau RX- 6 grün 7 weiß/braun 8 braun

IP

Eine IP-Adresse ist eine Adresse in Computernetzen, die – wie das Internet – auf dem Internetprotokoll (IP) basiert. Sie wird Geräten zugewiesen, die an das Netz angebunden sind, und macht die Geräte so adressierbar und damit erreichbar. Die IP-Adresse kann einen einzelnen Empfänger oder eine Gruppe von Empfängern bezeichnen (Multicast, Broadcast). Umgekehrt können einem Computer mehrere IP-Adressen zugeordnet sein. Die IP-Adresse wird verwendet, um Daten von ihrem Absender zum vorgesehenen Empfänger transportieren zu können. Ähnlich der Postanschrift auf einem Briefumschlag werden Datenpakete mit einer IP-Adresse versehen, die den Empfänger eindeutig identifiziert. Aufgrund dieser Adresse können die „Poststellen“, die Router, entscheiden, in welche Richtung das Paket weitertransportiert werden soll. Im Gegensatz zu Postadressen sind IP-Adressen nicht an einen bestimmten Ort gebunden.

DNS

Das Domain Name System (DNS) ist einer der wichtigsten Dienste in vielen IP-basierten Netzwerken. Seine Hauptaufgabe ist die Beantwortung von Anfragen zur Namensauflösung. Das DNS funktioniert ähnlich wie eine Telefonauskunft. Der Benutzer kennt die Domain (den für Menschen merkbaren Namen eines Rechners im Internet) – zum Beispiel example.org. Diese sendet er als Anfrage in das Internet. Der URL wird dann dort vom DNS in die zugehörige IP-Adresse (die „Anschlussnummer“ im Internet) umgewandelt – zum Beispiel eine IPv4-Adresse der Form 192.0.2.42 oder eine IPv6-Adresse wie 2001:db8:85a3:8d3:1319:8a2e:370:7347, und führt so zum richtigen Rechner.

Subnetzmaske

Die Aufteilung eines zusammenhängenden Adressraums von IP-Adressen in mehrere kleinere Adressräume nennt man Subnetting. Ein Subnet, Subnetz bzw. Teilnetz ist ein physikalisches Segment eines Netzwerks, in dem IP-Adressen mit der gleichen Netzwerkadresse benutzt werden. Diese Teilnetze können mit Routern miteinander verbunden werden und bilden dann ein großes zusammenhängendes Netzwerk.

	255.255.255.0

Gateway

Teilweise wird im Heimbereich ein Kombigerät aus DSL-Router und DSL-Modem als Internet-Gateway bezeichnet. Diese Geräte vereinen, vereinfacht ausgedrückt, die Funktion, Netzwerke miteinander zu verbinden (Routing), mit der Fähigkeit, hierfür unterschiedliche Protokolle zu benutzen (Gateway). So werden IP-Pakete aus dem Heimnetzwerk bei DSL-Verwendung zumeist über das PPPoE-Protokoll in das Netz des Providers übersandt.

Netzwerkklasse

Netzklasse Präfix Adressbereich Netzmaske Netzlänge (mit Präfix) Netzlänge (ohne Präfix) Hostlänge Netze Hosts pro Netz A 0… 0.0.0.0 – 127.255.255.255 255.0.0.0 8 Bit 7 Bit 24 Bit 128 16.777.214 B 10… 128.0.0.0 – 191.255.255.255 255.255.0.0 16 Bit 14 Bit 16 Bit 16.384 65.534 C 110… 192.0.0.0 – 223.255.255.255 255.255.255.0 24 Bit 21 Bit 8 Bit 2.097.152 254 D 1110… 224.0.0.0 – 239.255.255.255 Verwendung für Multicast-Anwendungen E 1111… 240.0.0.0 – 255.255.255.255 reserviert (für zukünftige Zwecke)

Private Netze

A-Klasse-Netz: 10.0.0.0- 10.255.255.255 B-Klasse-Netze: 172.16.0.0 - 172.31.255.255 C-Klasse-Netze: 192.168.0.0 - 192.168.255.255

APIPA

ist eine Abkürzung für Automatic Private IP Adressing. Eine selbst zugewiesene IP-Adresse, wenn DHCP nicht funktioniert.

Ein Rechner versucht bei einem DHCP-Server seine TCP/IP-Adresse und andere wichtige Einstellungsparameter anzufordern.

Erreicht der Rechner jedoch keinen DHCP-Server, z.B. weil aus oder Kabelbruch usw., so bekommt der Rechner automatisch eine zufällige Adresse aus dem Bereich 169.254.x.x.

Routing

die Übermittlung von Nachrichten über Nachrichtennetze. Im Unterschied zu Verteilern (Hubs und Switches) arbeitet das Routing ohne Einschränkungen auch in vermaschten Netzen. Das Routing ist ein Vorgang, der den Weg zur nächsten Station eines Datenpakets bestimmt. Im Vordergrund steht die Wahl der Route aus den verfügbaren Routen, die in einer Routing-Tabelle gespeichert sind.

Verschiedene Parameter und Kriterien können für die Wahl einer Route von Bedeutung sein: - Verbindungskosten - notwendige Bandbreite - Ziel-Adresse - Subnetz - Verbindungsart - Verbindungsinformationen - bekannte Netzwerkadressen

Mac-Adresse

Jede Station in einem Ethernet-Netzwerk hat eine eigene Adresse. Diese Adresse soll die Stationen eindeutig identifizieren. Sie werden als MAC-Adressen, Hardware-Adressen, Ethernet-Adressen oder physikalische Adresse bezeichnet. Die unterschiedlichen Bezeichnungen kommen daher, weil die MAC-Adresse den physikalischen Anschluss bzw. der Netzzugriffspunkt einer Station adressiert. Der physikalische Anschluss ist die Hardware. Zum Beispiel eine Netzwerkkarte oder Netzwerkadapter. Die Bezeichnung Ethernet-Adresse kommt daher, weil MAC-Adressen üblicherweise für Ethernet-Netzwerkkarten vergeben werden. Jede Netzwerkkarte besitzt eine eigene, individuelle MAC-Adresse. Sie wird einmalig hardwareseitig vom Hersteller konfiguriert.

NAT

– das network address translation ist ein Verfahren, dass in IP-Routern eingesetzt wird, die lokale Netzwerke mit dem Internet verbinden.

ARP

- Address Resolution setzt IP-Adressen in Hardware- und MAC-Adressen im eigenen Netzwerk um

TTL

- verstopfen des Netzes Daten wird durch Zeitvergabe verhindert

HUB

– ist dumm, gibt nur Signal weiter wird nicht analysiert

Switch

– Verteiler, der Tabelle mit Mac adressen anlegt und so verteilt, Tabelle wird alle paar Minuten zurückgesetzt

OSI – Model

“Please Do Not Throw Salami Pizza Away” Schichten – Details

Schicht 1

Bitübertragungsschicht (engl.: Physical Layer) Die Bitübertragungsschicht ist für die Übertragung der Bitströme über das Übertragungsmedium (Kabel, Funk) zuständig. Hier werden folgende Parameter festgelegt: 1. Übertragungsmedium (Kupfer, Glasfaser, Funk) 2. Die Funktion der einzelnen Leitungen (Datenleitung, Steuerleitung) 3. die Übertragungsrichtung (simplex: in eine Richtung / halb-duplex: abwechselnd in beide Richtungen / duplex: gleichzeitig in beide Richtungen 4. Übertragungsgeschwindigkeit Beispielgeräte, die dieser Schicht zugeordnet werden sind Netzwerkkarte und Hub.

Schicht 2 (MAC – Schicht)

Sicherungsschicht (engl.: Link Layer) Die Aufgabe der Sicherungsschicht ist der zuverlässige Austausch von Datenpaketen zwischen den Systemen. Sie wird in zwei Unterschichten unterteilt: in die MAC-Schicht (Medium Access Control), die an die Bitübertragungsschicht (Schicht 1) grenzt und in die LLC-Schicht (Logical Link Control), die an die Netzwerkschicht (Schicht 3) grenzt. – Die Mac-Schicht regelt die Nutzung der Übertragungsmedien und schreibt die physikalische Sende- und Empfangsadresse in das Protokoll der Datenpakete. Die LLC-Schicht teilt den Bitdatenstrom in Datenrahmen (frames) und führt eine Fehlererkennung und -korrektur durch. – Beispielgeräte, die dieser Schicht zugeordnet werden sind Bridge und Switch.

Schicht 3 (IP Schicht)

Netzwerkschicht (engl.: Network Layer) Die Netzwerkschicht steuert den Austausch von Datenpaketen, da diese nicht direkt an das Ziel vermittelt werden können und deshalb mit Zwischenzielen versehen werden müssen. Die Datenpakete werden dann von Knoten zu Knoten übertragen bis sie ihr Ziel erreicht haben. Um das umzusetzen zu können, identifiziert die Netzwerkschicht die einzelnen Netzknoten, baut Verbindungskanäle auf und wieder ab und kümmert sich um die Wegsteuerung (Routing) und die Datenflusssteuerung. – Beispielgerät, das dieser Schicht zugeordnet wird ist ein Router.

Schicht 4 (Port Schicht)

Transportschicht (engl.: Transport Layer) Segmentieren bzw zerhacken der Pakete Die Transportschicht ist die oberste Schicht des Transportsystems (Schicht 1 bis 4) und ist die Schnittstelle zum Anwendungssystem (Schicht 5 bis 7). Die Transportschicht wandelt die Datenpakete laut Protokoll-Informationen um und sorgt für die richtige Zusammensetzung der Pakete beim Empfänger. – Protokolle, die in dieser Schicht genutzt werden: TCP (nachgefordert), UDP(nicht nachgefordert), SCTP

Schicht 5

Sitzungsschicht (engl.: Session Layer) Die Sitzungsschicht ist die unterste Schicht des Anwendungssystems (Schicht 5-7) und baut logische Verbindungen zwischen Sender und Empfänger auf, kontrolliert diese und beendet sie wieder. – Folgende Dienste können in den Schichten 5-7 genutzt werden: FTP, Telnet, SMTP

Schicht 6

Präsentationsschicht (engl.: Presentation Layer) Die Präsentationsschicht fungiert als Dolmetscher, indem sie die Datenpakete in das jeweilige Format des Sender- oder Empfängerknotens übersetzt. Datenkompression- und verschlüsselung gehören auch zu ihren Aufgaben. – Formate und Codierungen dieser Schicht: ASCII, JPEG, HTML, Unicode

Schicht 7

Anwendungsschicht (engl.: Application Layer) Die Anwendungsschicht ist die Schnittstelle zur eigentlichen Benutzeranwendung. Hier werden die Netzwerkdaten in vom Benutzer verwendbare Daten umgewandelt. – Beispielanwendungen: InternetExplorer, Outlook Express

CSMA/CD – Verfahren

Reinhören ins Kabel kann ich senden - Kollisionsvermeidung Ist bei allem bis auf W-Lan (SSMA/CA – Geräte mit W-Lan checken den Router und senden 1 Paket, so kann es zu einer Kollision kommen aber nicht zu vielen, wenn Bahn frei werden 50 Pakete gesendet, dann die nächsten 50 usw)

Ports

- nur Programmzuweisung

Ad-Hoc-Netz

Netz welches keinen Router brauch und Geräte miteinander verbindet. (Kumpels sitzen im Zug und verbinden ihre Laptops miteinander über W-Lan zum zocken)

Infrastrukturnetz Bei einem Infrastruktur-Netz handelt es sich um ein Wireless LAN, bei dem die Kommunikation der einzelnen Endgeräte (Clients) über einen zentralen Knotenpunkt (Access Point) ermöglicht wird. Die Clients müssen sich jeweils mit ihrer MAC-Adresse am Knoten anmelden und bekommen eine IP-Adresse zugeteilt, falls ein DHCP-Server auf die anfragenden Clients antwortet. Der Access Point kann dabei auch Vermittler in ein weiteres (auch drahtgebundenes) Netz sein.

DHCP

ist ein Protokoll, um IP-Adressen in einem TCP/IP-Netzwerk zu verwalten und an die Stationen zu verteilen. Mit DHCP ist jede Netzwerk-Station in der Lage sich selber vollautomatisch zu konfigurieren. Warum DHCP? Um ein Netzwerk per TCP/IP aufzubauen ist es notwendig jede einzelne Station zu konfigurieren. Für ein TCP/IP-Netzwerk müssen folgende Einstellungen bei jeder Station vorgenommen werden:

Netzwerkübertragungstechnik

IEEE 802

IEEE 802.3 / Ethernet

Transportprotokolle

Subnetting

Hostanzahl Subnetzmaske 32-Bit-Wert Präfix
32 255.255.255.224 1111 1111 1111 1111 1111 1111 1110 0000 /27
8 255.255.255.248 1111 1111 1111 1111 1111 1111 1111 1000 /29

IP-Routing

MTU

Maximum Transfer Unit

MTU

MTU einstellen:

Win9x:

HKEY_LOCAL_MACHINE\System\ CurrentControlSet\Services\ Class\netTrans\„000 n“\MaxMTU

Win2000 / XP

  1. in Registry Schlüssel suchen HKEY_LOCAL_MACHINE\ SYSTEM\CurrentControlSet\ Services\Tcpip\Parameters\Interfaces
  2. IP-Adresse in Unterverzeichenisse suchen
  3. Neu-DWORD-Wert erstellen MTU,dezimal,Wert
  4. MTU ist erst nach dem Booten aktiv

Linux

Datei „/etc/network/interfaces“ konfigurieren

MTU - Werte

Netzwerktyp MTU (gesamt) MSS (Nutzdaten)
X.25 / analoge Modem-Verbindungen 576 Byte 536 Byte
IEEE 802.3 (PPPoE-Implementierung / DSL) 1492 Byte 1452 Byte
Ethernet 1500 Byte 1460 Byte
Token Ring (4 MBit/s) 4464 Byte
Token Ring (16 MBit/s) 17914 Byte
min. MTU IPv4 68 Byte
min. MTU IPv6 1280 Byte

NetBEUI - NetBIOS

Network Basic Extended User Interface

IPX/SPX

Hardware

CSMA/CD-Verfahren

Carrier Sense Multiple Access/Collision Detection bezeichnet ein asynchrones Medienzugriffsverfahren, dass den Zugriff verschiedener Stationen auf ein gemeinsames Übertragungsmedium regelt.

  1. Alle Stationen teilen sich die verfügbare Bandbreite.
  2. Mit zunehmenden Stationen mehr Kollissionen.
  3. Mehrfachzugriff mit Trägerprüfung und Kollisionserkennung.

CSMA/CD-Verfahren Ablauf

Ablauf:

  1. Horchen: Zuerst muss das Medium überwacht werden, ob es belegt ist.
  2. Senden: Informationsübertragung, zugleich wird das Medium fortwährend weiter abgehört.
  3. Bei Kollision eine zufällige Zeit abwarten, dann wieder bei Schritt 1 beginnen.

Netzwerkkarte / Netzwerkadapter (NIC Network Interface Card)

Powerline

Repeater

Hub

Bridge

Switch

Switching-Verfahren

Cut-Through =  leitet das Datenpaket sofort weiter 
  V.:kleine Verzögerungszeit 
  N.:Fehlerhafte Datenpakete werden nicht erkannt 
Store-and-Forward = speichert DP in Puffer,Prüfung 		
  V.:fehlerhafte DP aussortiert 
  N.:verursacht eine Verzögerung 
Kombination aus Cut-Through und Store-and-Forward 
  wenige Kollisionen = Cut-Through 
  Fragment-Free =	die ersten 64 Byte prüfen 
Switch-MAC-Tabellenverwaltung
Qualitätsmerkmal: wie viele Adressen er insgesamt pro Port speichern 
je größer ein Netzwerk je größer Kapazität

Problemfall: Client + 1 Hochleistungsserver

Router / Routing

Gateway

Medienkonverter

Proxy

Zwischenspeichern der Seite(Puffern) Filterung Protokollierung von Verbindungen Zählen des Datenvolumens Cachezeiten im minutentakt

Load Balancer (Lastverteiler)

Global agierende Unternehmen sind weltweit unter einer Domain erreichbar. In Spitzenzeiten mit hohem Datenverkehr geht der Web-Server irgendwann unter dem Ansturm der Besucher in die Knie.

Firewall

Eine Firewall ist eine Schutzmaßnahme vor fremden und unberechtigten Verbindungsversuchen in lokale Netze. Mit der Firewall läßt sich der kommende und gehende Datenverkehr kontrollieren, protokollieren und sperren/freigeben.

  1. Variante 1: Alles ist freigegeben.Bekannte unsichere und unerwünschte Vorgänge werden gesperrt.
  2. Variante 2: Alles ist gesperrt. Bekannte sichere und erwünschte Vorgänge werden freigegeben.

Variante 2:

TCP/IP

Können durch jedes Medium geschickt werden

Leitungsvermittelt – direkte Verbindung z.B. analoge Telefonie paketvermittelt - mehrere Nutzer möglich

TCP/IP

TCP - Transmission Control Protocol

Sender:

  1. Datenstrom der Anwendungen wird in mehrere Pakete aufgeteilt
  2. Paket wird mit Header versehen und an das IP-Protokoll übergeben
  3. im Header = Portnummer, Sequenznummer

TCP - Transmission Control Protocol

Empfänger:

  1. Datenpakete werden sortiert u. zusammengesetzt
  2. Verloren gegangene Pakete werden von TCP erkannt und erneut angefordert
  3. entspr. der Portnummer erfolgt die Weitergabe an die entsp. Anwendung (21 FTP, HTTP 80)

TCP Header

 Header (20 Byte):
 	Sender-Port (16 Bit)
	Empfänger-Port (16 Bit)
	Paket-Reihenfolge (Sequenznummer 32 Bit)
	Prüfsumme
	Quittierungsnummer

IPv4 - Internet Protocol

Findet weg zum Ziel

IP Header

Header:	IP-Version 4 Bit (IPv4 oder IPv6 "IP next Generation")
	Paketlänge 4 Bit 
              Dienstetyp-Type of Service (ToS) 8 Bit Zuverlässigkeit, Verzögerung, Durchsatz, zurzeit = 0
              Gesamtlänge 16 Bit
              Identifikationsfeld 16 Bit (bei Fragmentierung erhalten all Fragment dieselbe Kennung)
              Fragmentierung (0=nicht fragmentiert, DF=Don't Fragment, MF=More Fragments)
	Lebenszeit TTL
              Protokoll (für die Weiterleitung an Schicht 4 TCP=7, UDP=17, ICMP=1)
	Prüfsumme 16 Bit (da jeder Router die TTL verändert => neue Prüfsumme)
	Senderadresse IP
	Empfängeradresse IP
              Optionen (Security, Source Route, Time STamp)

IPv6 - Internet Protocol

UDP - User Datagram Protocol

OSI Schicht 4

UDP - User Datagram Protocol

 	Sender-Port (16 Bit)
	Empfänger-Port (16 Bit)
              Länge
	Prüfsumme

IPSec

ICMP - Internet Control Message Protocol

  Typfeld:  spezifiziert die Art der Nachricht
     0 = Echo Reply
     3 = Destination Unreachable
     4 = Source Quench (Datenpuffer voll)
     11 = TTL hat  0 erreicht
  Codefeld: Unterfunktionen des Typfeldes
  Prüfsumme
  Verschiedenes: Informationen, Sequenznummern, Internetadressen
  Nutzdaten

ARP - Adress Resolution Protocol

DNS (Domain Name System)

DNS (Domain Name System)

DNS (Domain Name System)

DHCP (Dynamic Host Configuration Protocol)

DHCP (Dynamic Host Configuration Protocol)

NAT (Network Address Translation)

TFTP – abgespeckter FTP Server zum Ausliefern von z.B. ISOs Leasttime – Gültigkeitszeit der IP - kurz bei vielen verschiedenen einloggern z.B. offene W-Lan Spots - Lang bei Firmen wo feste Plätze stehen (gut für Urlaub)

Anwendungsprotokolle

FTP

Netzwerkübgreifender Upload File Transfer Protocol

Nachteile Unsicher weil mit Benutzername und Passwort Klartext übertragen

FTP Server

FTP Server unter Windows XP einrichten:

  1. Nachinstallation des Internet-Informationsdienstes (IIS)
  2. Systemsteuerung/Verwaltung/Informationsdienste
  3. mit den Eigenschaften konfigurieren
  4. in den Sicherheitskonten legt man den Zugriff fest (anonymus/Benutzer)
  5. Registerreiter Basisverzeichnis Speicherort, Benutzerrechte und das Verzeichnisformat einstellen
  6. virtuelles Verzeichnis erstellen und den Zugriffspfad und -rechte definieren

TFTP

Trivial File Transfer Protocol

TELNET

Telecommunication Network

Nachteile Keine Sicherheitsfunktionalitäten – z. B. werden Passwörter im Klartext geschickt. Wegen des Vollzugriffs können Hacker leichtes Spiel haben.

SMTP

Simple Mail Transfer Protocol

POP3

Post Office Protocol Version 3

IMAP

Internet Message Access Protocol

HTTP

Hypertext Transfer Protocol

HTTPS

HyperText Transfer Protocol Secure

SNMP

Simple Network Management Protocol

VPN

Virtual Private Network

SSH

Secure Shell

WEBDAV

Web-based Distributed Authoring and Versioning

https://webdav.mediencenter.t-online.de

Windows

Fehlersuche Windows

fehlersuche_win.pdf

Batch

PDF kopieren

copy "C:\daten\chefkoch.pdf" "..." /y
pause

kopie a nach b immer montags

::sicherungsprogramm...


::set date
	set myDate=%DATE:~-4%-%DATE:~-7,2%-%DATE:~-10,2%
	set myDay=%DATE:~-10,2%
	set myMonth=%DATE:~-7,2%
        set myYear=%DATE:~-4%
	::echo %myDate%
	::echo %myDay%
	::echo %myMonth%
	::echo %myYear%

::find day of week
	set DOW=
	for /f %%g in ('wmic path win32_localtime get dayofweek^|findstr /v /r "^$"') do (
	set DOW=%%g)
	if %DOW%==0 set DOW=So
	if %DOW%==1 set DOW=Mo
	if %DOW%==2 set DOW=Di
	if %DOW%==3 set DOW=Mi
	if %DOW%==4 set DOW=Do
	if %DOW%==5 set DOW=Fr
	if %DOW%==6 set DOW=Sa

::save tree


::wochensicherung wenn Fr
	IF "%DOW%" == "Mo" (
		copy "\\10.0.2.5\pdf\chefkoch.pdf" "C:\users\%username%\desktop" /y	)

	
::pause

log abmeldung

@echo off

echo %username%; %computername%; %Date%; %time:~,5%; Abmeldung >> \\otto\freigabe1\bernerlog.txt

log anmeldung

log @echo off

echo %username%; %computername%; %Date%; %time:~,5%; Anmeldung >> \\otto\freigabe1\bernerlog.txt

windows sicherung

@echo off
::sicherungsprogramm...

::set pathes
	set saveWhat=C:\xampp\htdocs\dokuwiki\data\pages
	set saveDayly=C:\sicherung\dayly\
	set saveWeekly=C:\sicherung\weekly\
	set saveMonthly=C:\sicherung\monthly\
	set saveYearly=C:\sicherung\yearly\

::set date
	set myDate=%DATE:~-4%-%DATE:~-7,2%-%DATE:~-10,2%
	set myDay=%DATE:~-10,2%
	set myMonth=%DATE:~-7,2%
        set myYear=%DATE:~-4%
	::echo %myDate%
	::echo %myDay%
	::echo %myMonth%
	::echo %myYear%

::find day of week
	set DOW=
	for /f %%g in ('wmic path win32_localtime get dayofweek^|findstr /v /r "^$"') do (
	set DOW=%%g)
	if %DOW%==0 set DOW=So
	if %DOW%==1 set DOW=Mo
	if %DOW%==2 set DOW=Di
	if %DOW%==3 set DOW=Mi
	if %DOW%==4 set DOW=Do
	if %DOW%==5 set DOW=Fr
	if %DOW%==6 set DOW=Sa

::save tree
::tagessicherung
	echo tagessicherung!
	C:\sicherung\7za.exe a -r %saveDayly%sicherung_%DOW%.7z %saveWhat%

::wochensicherung wenn Fr
	IF "%DOW%" == "Fr" (
		echo wochensicherung!
		copy %saveDayly%sicherung_%DOW%.7z %saveWeekly%sicherung_%myDate%.7z
		::echo loesche wochentage!
		::del /q %saveDayly%\*.*
	)

::monatssicherung
	IF "%myMonth%" == "01" IF "%myDay%" == "31" (
		echo monatssicherung Januar!
		copy %saveDayly%sicherung_%DOW%.7z %saveMonthly%sicherung_%myDate%.7z
		echo loesche wochen!
		del /q %saveWeekly%\*.*
	)

::schaltjahrproblem!!!
	IF "%myMonth%" == "02" IF "%myDay%" == "28" (
		echo monatssicherung Februar!
		copy %saveDayly%sicherung_%DOW%.7z %saveMonthly%sicherung_%myDate%.7z
		echo loesche wochen!
		del /q %saveWeekly%\*.*
	)

	IF "%myMonth%" == "02" IF "%myDay%" == "29" (
		echo monatssicherung Februar!
		copy %saveDayly%sicherung_%DOW%.7z %saveMonthly%sicherung_%myDate%.7z
		echo loesche wochen!
		del /q %saveWeekly%\*.*
	)
	IF "%myMonth%" == "03" IF "%myDay%" == "30" (
		echo monatssicherung Maerz!
		copy %saveDayly%sicherung_%DOW%.7z %saveMonthly%sicherung_%myDate%.7z
		echo loesche wochen!
		del /q %saveWeekly%\*.*
	)
	IF "%myMonth%" == "04" IF "%myDay%" == "31" (
		echo monatssicherung April!
		copy %saveDayly%sicherung_%DOW%.7z %saveMonthly%sicherung_%myDate%.7z
		echo loesche wochen!
		del /q %saveWeekly%\*.*
	)
	IF "%myMonth%" == "05" IF "%myDay%" == "30" (
		echo monatssicherung Mai!
		copy %saveDayly%sicherung_%DOW%.7z %saveMonthly%sicherung_%myDate%.7z
		echo loesche wochen!
		del /q %saveWeekly%\*.*
	)
	IF "%myMonth%" == "06" IF "%myDay%" == "31" (
		echo monatssicherung Juni!
		copy %saveDayly%sicherung_%DOW%.7z %saveMonthly%sicherung_%myDate%.7z
		echo loesche wochen!
		del /q %saveWeekly%\*.*
	)
	IF "%myMonth%" == "07" IF "%myDay%" == "30" (
		echo monatssicherung Juli!
		copy %saveDayly%sicherung_%DOW%.7z %saveMonthly%sicherung_%myDate%.7z
		echo loesche wochen!
		del /q %saveWeekly%\*.*
	)
	IF "%myMonth%" == "08" IF "%myDay%" == "31" (
		echo monatssicherung August!
		copy %saveDayly%sicherung_%DOW%.7z %saveMonthly%sicherung_%myDate%.7z
		echo loesche wochen!
		del /q %saveWeekly%\*.*
	)
	IF "%myMonth%" == "09" IF "%myDay%" == "30" (
		echo monatssicherung September!
		copy %saveDayly%sicherung_%DOW%.7z %saveMonthly%sicherung_%myDate%.7z
		echo loesche wochen!
		del /q %saveWeekly%\*.*
	)
	IF "%myMonth%" == "10" IF "%myDay%" == "31" (
		echo monatssicherung Oktober!
		copy %saveDayly%sicherung_%DOW%.7z %saveMonthly%sicherung_%myDate%.7z
		echo loesche wochen!
		del /q %saveWeekly%\*.*
	)
	IF "%myMonth%" == "11" IF "%myDay%" == "30" (
		echo monatssicherung November!
		copy %saveDayly%sicherung_%DOW%.7z %saveMonthly%sicherung_%myDate%.7z
		echo loesche wochen!
		del /q %saveWeekly%\*.*
	)

::jahressicherung wenn monat = 12
	IF "%myMonth%" == "12" IF "%myDay%" == "31" (
		echo jahressicherung dezember %myYear%!
		copy %saveDayly%sicherung_%DOW%.7z %saveYearly%sicherung_%myDate%.7z
		echo loesche wochen!
		del /q %saveWeekly%\*.*
		echo loesche monate!
		del /q %saveMonthly%\*.*
	)

::end task
	
::pause

Linux

System

Log Dateien

In Unix werden Fehlermeldungen in Logdateien geschrieben (/var/log).

Wichtige Logfiles:

/var/log/syslog - Meldungen des Sytems
/var/log/messages - Meldungen des Systems (nicht so ausführlich) 

letzten Einträge:

tail -f /var/log/Name_der_Logdatei

f zeigt Veränderungen an

Dienste und Dämonen

Dienste sind Programme die im Hintergrund laufen und auf Arbeit warten.

alle Dienste anzeigen:

ps aux

Für jeden Dienst gibt es ein Start/Stop - Skript im Verzeichnis:

/etc/init.d

Dienste startet oder stopt man mit:

/etc/init.d/"Dienst" start (stop/...)

Runlevelnr.

Runlevel

aktuellen Runlevel:

runlevel

Jedes Skript besitzt normalerweise einen Link der mit S und einen Link, der mit K beginnt.

Nach dem S oder K folgt eine Zahl, die die Start-/Stop-Reihenfolge der Skripte festlegt.

apt allg.

(Advanced Package Tool)

Konfigurationsdateien:

/etc/apt/apt.conf (zum Einstellen einiger Optionen)
/etc/apt/sources.list (zum einstellen der Pfade zu den Paketquellen/Repositories (engl. Lager, Depot)

Paketliste aktualisieren:

apt-get update

Informationen zu einem Paket finden:

apt-cache show Paketname

apt allg.

System updaten:

apt-get upgrade

Programm installieren:

apt-get install Programmname

Programm löschen:

apt-get remove Paketname

Liste der installierten Pakete erstellen:

dpkg-query -l

Datei- Verzeichnisbefehle

ls

Die Aufgabe von ls ist die Anzeige von Dateinamen

Optionen

ls -a -l 
ls -al 
ls -al /tmp
ls -al /etc/

cp

Der Befehl cp kopiert Dateien an genau ein Ziel.

cp /etc/fstab /tmp
cp /etc/fstab /etc/host /tmp
cp /etc/*.conf /tmp

für Ordner: -R mitnehmen rekursiv alle unterverzeichnisse werden kopiert

mv

Mit dem Befehl mv kann man einer Datei einen anderen Namen geben oder mehrere Dateien in ein anderes Verzeichnis schieben.

mv /tmp/fstab /tmp/fstab_copy
mv /tmp/test.txt ~

mkdir

erzeugt ein leeres Verzeichnis

mkdir /tmp/sicherung
mkdir -p /tmp/daten/otto

cd

wechselt in Verzeichnis

wechselt in Userverzeichnis

cd ~             

relative Pfadangabe

cd ../../tmp

absolute Pfadangabe

cd /tmp

wechselt in letzte Verzeichnis

cd -

rm

löscht Dateien und Verzeichnisse

löscht Datei test.txt im aktuellen Verzeichnis

rm ./test.txt

löscht Verzeichnis x mit allen Unterverzeichnissen

rm -R /tmp/x

find

Find durchsucht eine oder mehrere Verzeichnishierarchien nach Dateien mit bestimmten Eigenschaften und führt damit bestimmte Aktionen aus.

find / -name Bericht1.txt
find /home -name "Bericht*"
find  ~  -user otto  -size +1000k
find  ~  -user otto  -size +1000k -exec ls -l {} \;
find  ~  -user root

find 1

# find / -name "core*" -ok rm {} \;
< rm ... /home/she/core > ? n
< rm ... /usr/src/util-etc-2.1/core > ? y
< rm ... /usr/openwin/include/images/core_eye.icon > ? n
< rm ... /usr/openwin/include/images/coredoc.icon > ? n

grep

Suche nach MUSTER in jeder DATEI oder der Standardeingabe.

Optionen

  1. b gibt die Position jeder gefundenen Stelle mit aus
  2. c gibt nur die Gesamtzahl der gefundenen Stellen aus
  3. h unterdrückt die Dateinamen vor jeder Fundstelle
  4. i ignoriert Groß- und Kleinschreibung
  5. l gibt nur die Dateinamen mit Fundstellen aus
  6. n gibt die Zeilennummer zu jeder Fundstelle aus

grep

sucht 'Hallo Welt' in den Dateien menu.h main.c

grep -i 'Hallo Welt' menu.h main.c
grep swap /etc/fstab
grep -n swap /etc/fstab
grep -c swap /etc/fstab
grep -i swap /etc/fstab

Aufgaben:

Finden Sie alle Dateien mit der Endung conf und dem Wort mail.

Lösung:

1. find  /  -name  '*.conf'  2>/dev/null  |  grep  -n  mail

tail

Gibt die letzten 10 Zeilen jeder DATEI auf der Standardausgabe aus.

  1. f (follow) gibt immer wieder das Dateiende aus
  2. n Anzahl gibt N Zeilen aus

Beispiel

Gibt die ersten 10 Zeilen jeder DATEI auf der Standardausgabe aus.

  1. c, gib die ersten x Bytes aus
  2. n, gib die ersten x Zeilen aus
  3. q, gib keinen Dateinamen
  4. v, gib immer Dateinamen aus

Beispiel

ln

ln [-s] vorhandeneDatei neuerDateiname

Hard Link

ln /etc/host /home/otto
ln /etc/host ~

Symbolischer Link

ln -s /etc/resolve.conf /home/otto

Dateisy//stem

Baum 1

Baum 2

fstab

Die Datei /etc/fstab enthält eine Liste aller zu mountenden Dateisysteme.

Bsp. fstab:

# Device           Mountpoint  FStype  Options         Dump    Pass#
/dev/hda2        none        swap    sw              0       0
/dev/hda3        /mnt/daten  auto    rw              1       1

Das Mounten erfolgt automatisch (auto) oder mit dem Befehl „mount“.

mount /mnt/daten

Felder:

IDE Geräte

SCSI Geräte

DNS (bind9)

Einer der wichtigsten Dienste im Internet

Installation

sudo apt-get install bind9

Datei /etc/resolv.conf ändern.

domain domainname
nameserver 127.0.0.1

named.conf

options { directory "/var/cache/bind"; query-source address * port 53; 
forwarders { 192.168.178.1; 217.237.151.51;}; auth-nxdomain no; };
zone "."                { type hint; file "/etc/bind/db.root"; };
zone "localhost"        { type master; file "/etc/bind/db.local"; };
zone "127.in-addr.arpa" { type master; file "/etc/bind/db.127"; };
zone "0.in-addr.arpa"   { type master; file "/etc/bind/db.0"; };
zone "255.in-addr.arpa" { type master; file "/etc/bind/db.255"; };
zone "baugmbh.loc" { type master; file "/etc/bind/db.baugmbh.loc"; };

db.baugmbh.loc

$TTL 86400
@    IN SOA ns.baugmbh.loc.  hostmaster.baugmbh.loc. (
                 200108300 ; Seriennummer
                 10800     ; Zeit in der sek.DNS Seriennr. prueft
                 3600      ; neuer Versuch des sek.DNS im Fehlerfall
                 604800    ; sek.DNS verwirft Cache
                 86400 )   ; Cachdauer im sek.DNS
      IN NS    ns
      IN NS    ns.provider.de.
@  IN   MX     5   mail
mail            IN      A       192.168.178.10
www             IN      A       192.168.178.20
ns              IN      A       192.168.178.13
otto            IN      A       192.168.178.55

named.conf (home.net)

options {
  directory "/etc/bind";                      # Arbeitserzeichnis von Bind 
  forwarders {62.26.136.136; 62.27.27.62 ;};  # Nameserver des Proividers
  forward first;                              #zuerst Nameserver des Proividers
  #listen-on port 53 { 127.0.0.1; };
  notify no;                                  #keine anderen Nameserver benachrichten bei Veränderungen
};

zone "." in {type hint;file "db.root";};
zone "localhost" in {type master;file "db.local";};
zone "0.0.127.in-addr.arpa" in {type master;file "db.127";};
zone "home.net" in {type master;file "home.net.zone";};
zone "10.168.192.in-addr.arpa" in {type master;file "10.168.192.zone";};

home.net.zone

$TTL 2D
home.net. IN SOA	server	otto.web.de (
			2001040501	;Seriennummer
			1D		;Zeit in der sek.DNS Seriennr. prueft
			2H		;neuer Versuch des sek.DNS im Fehlerfall
			1W		;sek.DNC verwirft Cache
			2D)		;Cachdauer im sek.DNS
		IN NS	server
#		IN MX	10 otto
server	    IN A    192.168.10.1
router	    IN CNAME    server
theresa     IN A    192.168.10.20
otto        IN A    192.168.10.21
paul        IN A    192.168.10.22
nb3         IN A    192.168.10.23
toni        IN A    192.168.10.24

10.168.192.zone

$TTL 2D
10.168.192.in-addr.arpa. IN SOA	server	otto.web.de (
			2001040501	;Seriennummer
			1D		;Zeit in der sek.DNS Seriennr. prueft
			2H		;neuer Versuch des sek.DNS im Fehlerfall
			1W		;sek.DNC verwirft Cache
			2D)		;Cachdauer im sek.DNS
		IN NS	server
		IN PTR	server	
20     		IN PTR    theresa
21         	IN PTR    otto
22        	IN PTR    paul
23          	IN PTR    nb3
24        	IN PTR    toni 

Forwarders

Datei /etc/bind/named.conf.options ändern.

# Nameserver des Proividers
forwarders {8.8.8.8; 62.27.27.62 ;};  

named.conf testen

named-checkzone  ibs.loc db.ibs.loc

IP-Adresse wechseln

ifconfig

aktuelle IP: ifconfig, ifconfig eth0
IP setzen: ifconfig eth0 192.168.10.12 netmask 255.255.255.0
Karte deaktivieren: ifconfig eth0 down
Karte aktivieren: ifconfig eth0 up

weitere config-Dateien

Einstellung: /etc/network/interfaces
locale Namensauflösung: /etc/hosts
localer Hostname: /etc/hostname oder Befehl hostname
Einstellungen in Datei: /etc/resolv.conf

/etc/network/interfaces

Legt die IP-konfiguration fest.

DHCP:

auto eth0
iface eth0 inet dhcp

Feste IP:

auto eth0
iface eth0 inet static
address 192.168.1.5
netmask 255.255.255.0
gateway 192.168.1.254
dns-nameservers 8.8.8.8

/etc/resolv.conf

Die Date /etc/resolv.conf legt die DNS-Server und den Domainnamen fest.

domain ibm.de
search ibm.de belig.org 
nameserver 217.5.115.7
nameserver 194.25.2.129

Netzwerkschnittstelle neu starten

sudo ifdown eth0
sudo ifup eth0

/etc/init.d/networking restart

config-Script

Setzt:

IP:            192.168.178.2
Netmask:       255.255.255.0
Broatcast:     192.168.178.255
Standardgw:    192.168.178.1
DNS:           192.168.178.1
ifconfig eth0 192.168.178.2 netmask 255.255.255.0 broadcast 192.168.178.255 up
route add default gw 192.168.178.1
echo "192.168.178.1" >/etc/resolv.conf

hole IP's

#! /bin/bash
i=1;
while [ $i -le 200 ];
do
	ifconfig eth0 down
	ifconfig eth0 hw ether 00:50:FC:95:$((RANDOM%10))0:6$((RANDOM%10))
	ifconfig eth0 up
	pump
	i=$[$i+1];
done

Userverwaltung

useradd

Der Befehl useradd legt einen neuen User-Account an, basierend auf den angegebenen Werten in der Befehlszeile und den Standardwerten des Systems (/etc/passwd).

useradd  -m otto 
useradd  -g users -d /home/demon -s /bin/bash -c Testuser otto1
m: Bestimmt, dass das Heimatverzeichnis des Users erstellt werden soll.
g: Die primäre Gruppe, der der User angehört.
d: Heimatverzeichnis des Users, welches ggf. neu erstellt wird.
s: Standardshell des Benutzers. 
c: Kommentar

userdel

Dieser Befehl entfernt die Einträge für den Benutzer username aus den Dateien /etc/passwd und /etc/group.

Mit der Option -r wird zusätzlich das Homeverzeichnis des Benutzers geleert und entfernt.

userdel -r otto

groupadd

Groupadd legt eine neue Gruppe im System an (/etc/group).

groupadd ftpuser

Groupdel löscht Gruppe im System (/etc/group).

groupdel ftpuser

addgroup

fügt den Benutzer otto der Gruppe ftpuser hinzu.

addgroup otto ftpuser

Sie können mit diesem Befehl einen User immer nur einer Gruppe auf einmal zuordnen.

Groups zeigt die Gruppen des Benutzers an.

groups
groups otto

wichtige Befehle

Hilfe

Mit dem Befehl man (manual) wird die Manpage des Befehles angezeigt.

zeigt die Manpage für den Befehl ls

man ls

Kurzhilfe mit –help

ls --help

tar

Schreibt mehrere Dateien in ein Archiv auf Band oder Festplatte.
tar [OPTION]... [Datei, Verzeichnis]
  1. c: neues Archiv erzeugen
  2. t: Inhalt eines Archivs anzeigen
  3. x: Dateien aus Archiv holen
  4. u: nur Dateien anhängen, die jünger sind als im Archiv
  5. v: zu bearbeitende Dateien ausführlich listen
  6. f Datei: benutzt Datei oder das damit verbundene Gerät als Archiv
  7. z: erzeugt ein mit gzip komprimiertes Archiv

tar Beisp.

# archiv.tar mit den Dateien foo.txt und bar.txt erzeugen
tar  -cf  archiv.tar  foo.txt bar.txt 
# Inhalt von archiv.tar ausführlich anzeigen
tar  -tvf  archiv.tar        
# archiviert und komprimiert Verzeichnis /home
tar  -cvzf test.tar.gz /home   
# alle Dateien aus archiv.tar extrahieren       
tar  -xf  archiv.tar          	
tar  -xzf  archiv.tar.gz       
# Systemsicherung
tar -czvf /home/otto/daten/Skubuntu0.tar.gz / --exclude=/mnt --exclude=/home/simone/daten  
--exclude=/media/ --exclude=/proc --exclude=lost+found  --exclude=/cdrom --exclude=/dev 
--exclude=/sys
tar -cvzpf /media/user/Festplattenname/Verzeichnisname/Dateiname.tar –directory=/ –exclude=proc 
–exclude=sys –exclude=dev/pts  –exclude=Pfad-zum-Mountpunkt-der-Tar-Datei 

http://dr-luthardt.de/linux.htm?tip=back

crontab

Möglichkeit Aufgaben immer zu bestimmten Zeitpunkten zu wiederholen.

crontab [-u user] { -e | -l | -r }

crontab Datei

* * * * * Befehl

crontab Bsp.

Auszuführen jede Minute
* * * * *  echo '... jede Minute' > /tmp/x.txt
Ausführung zur voller Stunde
0 * * * *  echo  '... immer zur vollen Stunde' > /tmp/x.txt
Ausführung zur vollen und halben Stunde
0,30 * * * *  echo '... zur vollen und halben Stunde'> /tmp/x.txt
Ausführung jeden Freitag um 20:00 Uhr
0 20 * * 5 echo 'Es ist Freitag, 20:00 Uhr'> /tmp/x.txt
Ausführung um 0:00 Uhr, immer wenn der 13. auf einen Freitag fällt
0 0 13 * 5 echo 'Achtung, es ist Freitag der 13.'> /tmp/x.txt
Ausführung Montag bist Freitag um 12:00 Uhr
0 12 * * 1-5 echo 'Mahlzeit'> /tmp/x.txt
Ausführung jeden Freitag um 16:00 Uhr
0 16 * * 5 echo 'Endlich Wochenende'> /tmp/x.txt

Zugriffsrechte

chmod allg.

-rw-r--r-- 1 otto users  102 2008-03-19 17:54 x.txt
Zeichen 1     = Typ (-=Datei, d=Directory, l=Link)
Zeichen 2-4   = owner
Zeichen 5-7   = group
Zeichen 8-10  = other

chmod spez.

Es gibt mehrere Arten die Rechte anzugeben, die gebräuchlichste ist mit der Hilfe von Zahlen.

Ausführen + Schreiben + Lesen = 1+2+4 = 7

chmod 754 test.txt 

Der Eigentümer hat alle Rechte, die Mitglieder der Gruppe dürfen Ausführen und Lesen und alle anderen dürfen nur lesen.

chown

Eigentümer ändern

chown username dateiname

rekursives chown, damit werden alle Dateien in dem Verzeichnis mit geändert

chown -R username ordnername

durch den Doppelpunkt wird der Besitzer und dessen (Haupt-) Gruppe gesetzt

chown username: gruppenname dateiname 

chown

Beispiel:

chown -R jan /home/jan/tuxfutter

chgrp

Datei/Ordner anderer Gruppe zuweisen

Der Befehl chgrp (change group) weist eine Datei oder ein Verzeichnis einer anderen Gruppe zu.

chgrp gruppenid dateiname

rekursives chgrp, damit werden alle Dateien in dem Verzeichnis mit geändert

chgrp -R gruppenid ordnername 

Linux Medien

bash_basic.pdf linuxfibel.pdflinuxgrundlagen.pdf

smb

apt-get update apt-get install samba nano /etc/samba/smb.conf

[global]

      security = user
      workgroup = WORKGROUP
      map to guest = bad user
      guest account = nobody

[freigabe1]

      path = /tmp
      public = yes
      guest ok = yes
      writable = yes
      comment  = Freigabe für alle
      

festplatte einbinden befehle mit formatierung

df -h
fdisk -l
cfdisk /dev/...
mkfs.ext4 /dev/...

(mit mkdir vllt Ordner anlegen - für länderfristige einbindung)

mount /dev/

/etc/fstab - verzeichnis fürs mounten beim start in linux (dev/sdb1 /mnt auto auto, users, exec 0 0)

zertifikat

root@ubuntu:/etc/apache2# ls -l /var/www/html/
insgesamt 16
-rw-r--r-- 1 root root 10918 Jun 18 09:54 index.html
-rw-r--r-- 1 root root    17 Jun 18 10:01 phpinfo.php
root@ubuntu:/etc/apache2# nano /etc/ssl/private/ssl-cert-snakeoil.key
root@ubuntu:/etc/apache2# nano /etc/ssl/certs/ssl-cert-snakeoil.pem
root@ubuntu:/etc/apache2# a2ensite default-ssl

#unter umständen alte confs deaktivieren
	a2dissite dokuwiki
	
a2enmod ssl

zertifikat zusammenbauen

privater Schlüssel eine verschlüsselungsmethode:

openssl genrsa -out /etc/ssl/private/ibs.key 2048			#2048 schlüssellänge

Zertifikat und öffentlicher Schlüssel

openssl req -new -x509 -key /etc/ssl/private/ibs.key -nodes -days 365 -sha256 -out /etc/ssl/certs/ibs.crt				#bei abfrage FQDN wichtig domainname

nano /etc/apache2/sites-enabled/default-ssl.conf

	            SSLCertificateFile      /etc/ssl/certs/ibs.crt
                SSLCertificateKeyFile /etc/ssl/private/ibs.key


systemctl restart apache2

Linux Webserver

feste IP

nano /etc/netplan/01-netcfg.yaml

network:

version: 2
renderer: networkd
ethernets:
  enp0s3:
    dhcp4: no
    addresses: [192.168.1.150/24]
    gateway4: 192.168.1.1
    nameservers:
      addresses: [8.8.8.8,8.8.4.4]
	

netplan apply

sudo apt update

sudo apt-get install apache2 libapache2-mod-php7.2 php7.2 php7.2-mysql mysql-server

IP im Browser aufrufen

php info erstellen echo „<?php phpinfo();“ > /var/www/html/phpinfo.php

Datenbank testen# mysql

db user anlegen nano /root/createDB.sh

#Skript #! /bin/bash clear echo -n Bitte Username eingeben: read userdb #echo $userdb echo -n Bitte Passwort eingeben: read passdb #echo $passdb echo CREATE USER „$userdb“@'localhost' IDENTIFIED BY „'$passdb'“„;“ > /tmp/dbc.sql echo GRANT USAGE ON '* . *' TO „$userdb“@'localhost' IDENTIFIED BY „'$passdb'“ WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONs 0 „;“ » /tmp/dbc.sql echo CREATE DATABASE IF NOT EXISTS „$userdb“ „;“ » /tmp/dbc.sql echo GRANT ALL PRIVILEGES ON „$userdb“ . '*' TO „$userdb“@'localhost'„;“ » /tmp/dbc.sql mysql < /tmp/dbc.sql

virtuelle Hosts mit PORT

nano /etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>

      ServerAdmin webmaster@localhost
      DocumentRoot /var/www/html

</VirtualHost>

um z.B. Wordpress zu installieren nano /etc/apache2/sites-available/wp.conf

<VirtualHost *:81>

      ServerAdmin webmaster@localhost
      DocumentRoot /var/www/wp

</VirtualHost>

mkdir /var/www/wp nano /var/www/wp/index.php

<?php

      echo "Wordpress"

?>

a2ensite wp #erspart das eingeben von /etc/apache2/sites-enabled/ wp steht für den dateinamen den man unter sites-available vergeben hat ohne conf

nano /etc/apache2/ports.conf

Listen 80 Listen 81 <IfModule ssl_module>

      Listen 443

</IfModule>

<IfModule mod_gnutls.c>

      Listen 443

</IfModule>

systemctl restart apache2

virtuelle Hosts mit IP (am Beispiel joomla)

nano /etc/netplan/01-netcfg.yaml network:

version: 2
renderer: networkd
ethernets:
  enp0s3:
    dhcp4: no
    addresses: [192.168.1.150/24,192.168.1.151/24]
    gateway4: 192.168.1.1
    nameservers:
      addresses: [8.8.8.8,8.8.4.4]

cp /etc/apache2/sites-available/wp.conf /etc/apache2/sites-available/joomla.conf

nano /etc/apache2/sites-available/joomla.conf

<VirtualHost 192.168.1.151:80>

      ServerAdmin webmaster@localhost
      DocumentRoot /var/www/jo

</VirtualHost>

mkdir /var/www/jo

nano /var/www/jo/index.php

<?php

      echo "Joomla"

?>

a2ensite joomla

systemctl restart apache2

virtuelle Hosts mit Namen, namensbasiert (dokuwiki)

mkdir /var/www/dw/ cp /var/www/wp/index.php /var/www/dw/ nano /var/www/dw/index.php

<?php

      echo "DokuWiki"

?>

cp /etc/apache2/sites-available/wp.conf /etc/apache2/sites-available/dokuwiki.conf

nano /etc/apache2/sites-available/dokuwiki.conf

so nimmt er alle IPs

NameVirtualHost * <VirtualHost *:80>

      ServerAdmin webmaster@localhost
      DocumentRoot /var/www/dw
      ServerName dokuwiki.ibs

</VirtualHost>

jetzt nimmt er nur die IP 192.168.1.150

NameVirtualHost 192.168.1.150

<VirtualHost 192.168.1.150:80>
      ServerAdmin webmaster@localhost
      DocumentRoot /var/www/dw
      ServerName dokuwiki.ibs

</VirtualHost>

a2ensite dokuwiki

systemctl restart apache2

Zum Testen z.B. unter Win10 Editor als Admin öffnen; darin C:\Windows\System32\drivers\etc\hosts öffnen unter ergänzen 192.168.1.150 dokuwiki.ibs # dokuwiki

PHP

MySQL

SQL Einleitung

Datenbanken

Datenbankmodelle

  1. hierarchische Modelle (Bsp. Dateisystem)
  2. Netzwerkmodell
  3. Relationsmodell (Tabellen)
  4. objektorientiertes Modell
  5. NoSQL

Datenbanksysteme

  1. Access
  2. dbase (frühe Datenbank-Applikation)
  3. Oracle Database (ORACLE zweitgrößter Softwarehersteller weltweit)
  4. DB2 (IBM)
  5. PostgreS
  6. MS SQL Datenbank
  7. MySQL

Datenbankentwurf

Relationale Datenbank

Entity-Relationship-Modell

Eigenschaften:

  1. Die Tabelle muss einen eindeutigen Namen besitzen.
  2. Die Bezeichnung der Attribute ist eindeutig.
  3. Ein Attribut identifiziert einen Datensatz eindeutig (Primärschlüssel).
  4. Die Daten eines Attributes besitzen einen vorgegebenen Wertebereich.

Datenmodellierung 1

Datenmodellierung 2

Beziehungstypen

1:1 Beziehung

… existiert wenn jedes Objekt der einen Menge mit genau einem Objekt der anderen Menge in Beziehung steht.

Beispeil:

1:n Beziehung

… existiert wenn jedes Objekt der einen Menge mit keinem,einem oder mehreren Objekten der anderen Menge in Beziehung steht.

Beispiel:

1:m Beziehung

… existiert wenn jedes Objekt der einen Menge mit einem oder mehreren Objekten der anderen Menge in Beziehung steht.

Beispiel:

m : n Beziehung

… existiert wenn jedes Objekt der einen Menge mit einem oder mehreren Objekten der anderen Menge in Beziehung steht und umgekehrt.

Beispiel:

1 : c Beziehung

… existiert wenn jedes Objekt der Menge A höchstens einem Objekt der Menge B zugeordnet wird.

Umgekehrt steht mit jedem Objekt der Menge B genau ein Objekt der Menge A in Beziehung.

Beispiel:

1 : mc Beziehung

… existiert wenn jedes Objekt der Menge A kein, ein oder mehrere Objekten der Menge B zugeordnet wird.

Umgekehrt steht mit jedem Objekt der Menge B genau ein Objekt der Menge A in Beziehung.

Beispiel:

Normalisierung

Unter Normalisierung eines relationalen Datenbankschemas versteht man die schrittweise Zerlegung von Relationen (in der Datenbank: Tabellen) in mehrere Relationen auf der Grundlage funktionaler Abhängigkeiten.
Eine Normalisierung ist notwendig, um Redundanzen der Daten zu vermeiden, die bei der Änderung von Daten zu Inkonsistenzen führen können und zudem einen erhöhten Speicherplatz benötigen.

Erste Normalform

Die erste Normalform besteht dann, wenn:

  1. es keine Duplikate in den Zeilen der Tabelle gibt (Schlüsselattribut),
  2. alle Werte pro Attribut jeweils von derselben Art sind (Fehler=Attribut Adresse),
  3. jede Zelle einen einzigen unteilbaren Wert enthält (Fehler=alle Titel eines Album in einem Attribut).

Bsp.:

ID 	Album 	           Künstler 	Titelliste
4711 	Not That Kind 	   Anastacia 	Not That Kind, I'm Outta Love, 3Cowboys & Kisses
4712 	Wish You Were Here Pink Floyd   Shine On You Crazy Diamond,...
4713 	Freak of Natur     Anastacia 	Paid my Dues,...
ID 	Album 	           Künstler 	Titelliste
4711 	Not That Kind 	   Anastacia 	Not That Kind
4711 	Not That Kind 	   Anastacia 	I'm Outta Love
4711 	Not That Kind 	   Anastacia 	Cowboys & Kisses
4712 	Wish You Were Here Pink Floyd   Shine On You Crazy Diamond
4713 	Freak of Natur     Anastacia 	Paid my Dues

Zweite Normalform

Die zweite Normalform ist dann erfüllt, wenn:

Bsp.

ID 	Album 	           Künstler 	Titel
4711 	Not That Kind 	   Anastacia 	Not That Kind
4711 	Not That Kind 	   Anastacia 	I'm Outta Love
4711 	Not That Kind 	   Anastacia 	Cowboys & Kisses
4712 	Wish You Were Here Pink Floyd   Shine On You Crazy Diamond
4713 	Freak of Natur     Anastacia 	Paid my Dues
ID    Album 	           Künstler 
ID    Titel

Dritte Normalform

Eine Tabelle befindet sich in der dritten Normalform, wenn:

(keine Redundanzen in Nicht-Schlüsselatributen).

Bsp.

ID 	Album 	             Künstler 	
4711 	Not That Kind 	     Anastacia 		
4712 	Wish You Were Here   Pink Floyd  
4713 	Freak of Natur       Anastacia 	
ID 	Album
ID 	Künstler

Vierte Normalform

Eine Tabelle ist in der vierten Normalform, wenn: sie die Bedingungen der dritten erfüllt jeder determinierende Wert einen Schlüssel bilden kann

Werden in der Praxis wenig benutzt.

Fünfte Normalform

Die fünfte Normalform ist erfüllt, wenn:

Werden in der Praxis wenig benutzt.

Fehler beim Datenbankentwurf

SQL-Geschichte

Datentypen (numerische)

Datentypen(Datum,Zeit)

Datentypen(Text)

  1. CHAR(M) = Zeichenkette fester Länge Max. 255
  2. VARCHAR = Zeichenkette variabler Länge Max. 255
  3. TINYTEXT = Maximallänge von 255
  4. TEXT = Text variabler Länge Max. 65535
  5. BLOB = Binärdaten

Verbindung 1:n

mysql> select * from firma f, mitarbeiter m where f.id=id_firma;
+----+-----------+------+-------------+------+----+---------+---------+--------+-------------+----------+
| id | name      | ort  | mail        | ma   | id | name    | vorname | tel    | mail        | id_firma |
+----+-----------+------+-------------+------+----+---------+---------+--------+-------------+----------+
|  2 | Holz Gmbh | Bonn | Holz@web.de |   10 |  1 | Schmidt | Erna    | 33333  | ES@web.de   |        2 |
|  1 | Bau Gmbh  | Bonn | Bau@web.de  |  150 |  2 | Klose   | Otto    | 3773   | ko@web.de   |        1 |
|  2 | Holz Gmbh | Bonn | Holz@web.de |   10 |  3 | Klaue   | Ines    | 344773 | k~io@web.de |        2 |
+----+-----------+------+-------------+------+----+---------+---------+--------+-------------+----------+
3 rows in set (0,00 sec)

Konfigurationsdateien

Win

  1. C:\my.cnf Globale Konfiguration
  2. C:\mysql\data\my.cnf Serverkonfiguration

Unix

  1. /etc/my.cnf Globale Konfiguration
  2. /mysql-data-dir/my.cnf Serverkonfiguration
  3. ~./my.cnf Benutzerkonfiguration

Netzfreigabe

Der MySQL Server lauscht standardmäßig nur auf der localhost IP (127.0.0.1).

  1. Datei my.cnf öffnen.
  2. bind-adresse ändern in 0.0.0.0
  3. User Netzwerkzugriff erlauben.
use mysql
update user set host='%' where user='otto'
update db set host='%' where user='otto'

Datenbank sichern

// sichert die DB "meineDB" in Textdatei.

mysqldump -u web5 -p meineDB  > c:\SmeineDB.sql

mysqldump -u root -p1234 meineDB > /tmp/SmeineDB.sql 

Tabellen sichern

// sichert die Tabelle "adressen" aus DB meineDB in Textdatei.

mysqldump -u web5 -p meineDB adressen > c:\Sadressen.sql

mysqldump -u root -p1234 meineDB adressen > /tmp/Sadressen.sql
 

mehrere Datenbanken sichern

mysqldump -u root -p1234 --databases meineDB test mysql > c:\dreiDB.sql

mysqldump -u root -p1234 --all-databases > /tmp/SalleDB.sql

Komplette Datenbanksysteme können schneller mit mysqlhotcopy gesichert werden.

Datenbank wiederherstellen

mysql -u web5 -p meineDB < /tmp/SmeineDB.sql

Dabei bezeichnet der Parameter -u den User, der Parameter -p bewirkt die Abfrage des Passwortes. Anschliessend wird der Datenbankname angegeben. Der letzte Parameter bezeichnet den Datenfile.

Datenbank prüfen

Mit mysqlcheck kann die Datenbank auf Fehler überprüft werden:

mysqlcheck -u root -p -A -e

Die Option -A prüft alle vorhandenen Datenbanken und -e führt eine ausführliche Konsistenzüberprüfung durch.

Tabellen testen

mysqlcheck -u root -p -e db_name tabll1 tabell2

Mehr Informationen zu mysqlcheck mit:

http://dev.mysql.com/doc/refman/5.1/de/mysqlcheck.html

Daten importieren

1.Tabele erstellen

create table adr1 (id int not null auto_increment primary key,
     name varchar(50) not null, ort varchar(50), geb date);

2.Textdatei erstellen

\N  Schmidt  Bonn  2003-2-25
\N  Klose Stahl  \N  2003-3-25

importieren

LOAD DATA LOCAL INFILE '/tmp/x.txt' INTO TABLE adr1;                          //Linux
LOAD DATA LOCAL INFILE 'c:\x.txt' INTO TABLE adr1 LINES TERMINATED BY '\r\n'; //Win

User mit db anlegen

CREATE USER 'paul'@'localhost' IDENTIFIED BY '****';
GRANT USAGE ON * . * TO 'paul'@'localhost' IDENTIFIED BY '****' WITH   MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE DATABASE IF NOT EXISTS `paul` ;

GRANT ALL PRIVILEGES ON `paul` . * TO 'paul'@'localhost';
#! /bin/bash
clear
echo -n Bitte Username eingeben:
read userdb
#echo $userdb

echo -n Bitte Passwort eingeben: 
read passdb                     
#echo $passdb
echo CREATE USER "$userdb"@'localhost' IDENTIFIED BY "'$passdb';" > /tmp/dbc.sql
echo GRANT USAGE ON '* . *' TO "$userdb"@'localhost' IDENTIFIED BY "'$passdb'" WITH   MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ";" >> /tmp/dbc.sql
echo CREATE DATABASE IF NOT EXISTS "$userdb;" >> /tmp/dbc.sql
echo GRANT ALL PRIVILEGES ON "$userdb" .' *' TO "$userdb"@'localhost;' >> /tmp/dbc.sql
mysql < /tmp/dbc.sql

Einfache SQL-Befehle

Anmelden an MySql

Unix / Linux

/opt/lampp/bin/mysql -u root 

Windows

c:\xampp\mysql\bin\mysql -u root

mit Passwort

/opt/lampp/bin/mysql -u root -p          //mit Passwortabfrage
/opt/lampp/bin/mysql -u root -p1234      //incl. Passwort (kein Leerzeichen)
/opt/lampp/bin/mysql -h host -u root -p  //an entfernten Server anmelden
/opt/lampp/bin/mysql -u root -p meineDB  //an meineDB anmelden

Version / Passwort

erste Abfragen

SELECT version() AS version;        //MySql Version anzeigen
SELECT CURRENT_DATE;                //akt. Datum
SELECT 22+6;
SELECT USER(), VERSION(), CURRENT_DATE;

Passwort setzen

SET PASSWORD = PASSWORD('1234');

abmelden

quit;

Eingabeaufforderung

mysql> Bereit für einen neuen Befehl.
- > Erwartet die nächste Zeile einer mehrzeiligen Befehlseingabe.
'> Erwartet die nächste Zeile und die Vervollständigung eines Strings, der mit einem einfachen Anführungszeichen ' begonnen wurde.
„> Erwartet die nächste Zeile und die Vervollständigung eines Strings, der mit einem doppelten Anführungszeichen “ begonnen wurde.
`> Erwartet die nächste Zeile und die Vervollständigung eines Bezeichners, der mit einem Backtick ` begonnen wurde.
/*> Erwartet die nächste Zeile und die Vervollständigung eines Kommentars, der mit /* begonnen wurde.

DB erstellen und anzeigen

DB erstellen

CREATE DATABASE meineDB;

DB auflisten

show databases;

Ausgabe

+--------------------+
| Database           |
+--------------------+
| information_schema |
| cdcol              |
| mysql              |
| phpmyadmin         |
| test               |
| meineDB            |
+--------------------+
6 rows in set (0,08 sec)

DB wählen

use meineDB;

Namen der aktuellen Datenbank

SELECT DATABASE();

Tabellen in DB anzeigen

show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| func                      |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| proc                      |
| user                      |
+---------------------------+

Tabelle erzeugen 1

einfache Tabelle erzeugen

CREATE TABLE adressen (id INT,name VARCHAR(35),
                       vorname VARCHAR(35));

Test ob Tabelle vorhanden

CREATE TABLE IF NOT EXISTS adr (id INT,name VARCHAR(35),
                                 vorname VARCHAR(35));

ID automatisch hochzählen

CREATE TABLE adr (id INT AUTO_INCREMENT PRIMARY KEY,
          name VARCHAR(35),vorname VARCHAR(35));

Tabelle erzeugen 1

Eingabe erforderlich

CREATE TABLE adr (id INT NOT NULL,name VARCHAR(35) NOT NULL,
                  vorname VARCHAR(35));

kompl. Beispiel

CREATE TABLE IF NOT EXISTS adr (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR( 10 ) NOT NULL ,
    geburtstag DATE,
    geschl VARCHAR( 1 ) NOT NULL DEFAULT 'w'); 

Struktur anzeigen

describe adr;
show columns from mitarbeiter;

Ausgaben

+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| firma | varchar(50) | NO   |     |         |                |
| ort   | varchar(50) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0,01 sec)

Ändern des Tabellenlayouts

Tabellen umbenennen

ALTER TABLE adressen RENAME adr;

Feld hinzufügen

ALTER TABLE adr ADD mailx VARCHAR(20);

Feldtyp und Feldname ändern

ALTER TABLE adr CHANGE mailx maily VARCHAR(50);

Ändern des Tabellenlayouts

Feldtyp ändern

ALTER TABLE adr MODIFY maily varchar(10);

Feld löschen

ALTER TABLE adr DROP maily;

Index und Primärschlüssel setzen

ALTER TABLE adr ADD INDEX (maily);
ALTER TABLE adr ADD PRIMARY KEY (id);
ALTER TABLE tabelle ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;

Tabellen mit Daten füllen

Bsp.1:

INSERT INTO adressen  VALUES (NULL , 'Otto', 'Paul','Bonn');

Bsp.2:

INSERT INTO adressen( name ) VALUES ('otto1');

Bsp.3:

INSERT INTO adressen VALUES 
    (NULL , 'Otto2', 'Paul','Bern'),
    (NULL , 'Otto3', 'Paul','Berlin'); 

Inhalt von Tabellen anzeigen

alle Daten ausgeben

select * from adressen;

Spalte name und ort ausgeben

select name, ort from adressen;

die ersten 30 DS ausgeben

SELECT * FROM adressen LIMIT 0 , 30 ;

Inhalt von Tabellen anzeigen

alle DS mit name Otto ausgeben

SELECT * FROM 'test2' WHERE name='Otto';

sortierte Ausgabe (aufsteigend)

select * from adressen ORDER BY name;

sortierte Ausgabe (absteigend)

select * from adressen ORDER BY name DESC;

sortierte Ausgabe (Zufall)

select * from adressen ORDER BY rand();

DB und Tabelle löschen

Tabelle löschen

DROP TABLE adressen;

DB löschen

DROP DATABASE meineDB;

weitere SQL Befehle

Tabelleninhalte verändern

ändert alle Datensätze

UPDATE adressen SET name='Otto';
UPDATE adressen SET name='Schmidt', vorname='Paul';

ändert nur Datensätze wo die id=5 ist

UPDATE adressen SET name='Otto' WHERE id=5;

berechnet den Wert

UPDATE artikel SET preis=preis*1.1;
UPDATE ARTIKEL As A INNER JOIN UMSATZ AS U
On A.A_NR = U.A_NR
SET U.Gesamt = A.A_PREIS * U.A_STUECK

Datensätze löschen

delete from artikel where id=4;

Wiederholungen (distinct)

Alle Dopplungen von vorname werden ausgelassen.

select  distinct vorname  from kunden;

Arithmetische Operatoren

SELECT * FROM adressen WHERE age<18;      //alle DS alter < 18

SELECT * FROM adressen WHERE age%10=0;    //alle mit runden Geb.

SELECT * FROM adressen WHERE age%10!=0;   //???

SELECT name, age*365 FROM adressen;       //errechn. Tage

erlaubte Operatoren: +, -, *, /, %

logische Operatoren: =, <, < =, >, >=, <> oder !=, AND, &&, OR, ||, NOT, !

eigene Spaltenüberschriften

SELECT name, age AS Alter FROM adressen;

SELECT name, age*365 AS Tage FROM adressen;

Operator LIKE

SELECT * FROM adressen WHERE name LIKE 'A%';

SELECT * FROM adressen WHERE strasse LIKE '%weg%';

SELECT * FROM adressen WHERE name LIKE 'M_ier';

% = steht für ein oder mehrere Zeichen

_ = steht für ein Zeichen

Zeichenverkettung

Zwei Strings lassen sich mit der Function concat() verbinden.

SELECT concat(name , '* ' , vorname)  FROM adressen;
SELECT concat(name , '* ' , vorname) AS Bezeichnung  FROM adressen;

Operatoren: IN und BETWEEN

Operator IN

SELECT * FROM adressen WHERE name='Otto' OR 
name='Klose' OR name='Schmidt';
oder
SELECT * FROM adressen  WHERE name 
IN('Otto','Klose','Schmidt');

Operator BETWEEN

SELECT * FROM adressen WHERE age>17 AND age<66;
oder
SELECT * FROM adressen  WHERE age BETWEEN 17 AND 66;

Aggregatfunktionen 1

COUNT liefert die Anzahl der Zeilen

SELECT count(*) FROM adressen WHERE age>17 
AND age<66;

// eigene Überschrift
SELECT count(*) as Arbeitsfaehig FROM adressen 
WHERE age>17 AND age<66;

SUM liefert die Summe aller Werte

SELECT SUM(age) FROM adressen;

// eigene Überschrift
SELECT SUM(age) as Alter_gesamt FROM adressen;

Aggregatfunktionen 2

AVG berechnet den Mittelwert einer Spalte

SELECT AVG(alter) FROM adressen;

MAX liefert den größten Wert

SELECT MAX(alter) FROM adressen;

MIN liefert den kleinsten Wert

SELECT MIN(alter) FROM adressen;

Tabelle mitarbeiter

+----+---------+---------+--------+-------------+----------+-------+
| id | name    | vorname | tel    | mail        | id_firma | id_KK |
+----+---------+---------+--------+-------------+----------+-------+
|  1 | Schmidt | Erna    | 33333  | ES@web.de   |        2 |     3 |
|  2 | Klose   | Otto    | 3773   | ko@web.de   |        1 |     3 |
|  3 | Klaue   | Ines    | 344773 | k~io@web.de |        2 |     2 |
+----+---------+---------+--------+-------------+----------+-------+

INNER JOIN

Der INNER JOIN führt Datensätze aus der linken und rechten Tabelle genau dann zusammen, wenn die angegebenen Kriterien alle erfüllt sind. Ist eines oder mehrere der Kriterien nicht erfüllt, so entsteht kein Datensatz in der Ergebnismenge.

Explizite Schreibweise:

select * from kunden k inner join mitarbeiter m on k.id=m.id_firma

LEFT JOIN

LEFT JOIN: Ein Datensatz aus der linken Tabelle kommt in jedem Fall in das Ergebnis. Wenn ein Datensatz der rechten Tabelle dem ON-Kriterium entspricht, so wird er entsprechend in den Spalten eingetragen, ansonsten bleiben die Spalten leer (null).

select * from kunden k left join mitarbeiter m on k.id=m.id_firmen
+----+---------------+--------+-------+---------+------+---------+---------+----------+-------------+----------+
| id | name          | ort    | plz   | strasse | id   | name    | vorname | funk     | mail        | firmenid |
+----+---------------+--------+-------+---------+------+---------+---------+----------+-------------+----------+
|  1 | Holz GmbH     | Bonn   | 88888 | Weg 44  | NULL | NULL    | NULL    | NULL     | NULL        |     NULL | 
|  2 | Bau GmbH      | Bonn   | 88888 | Weg 66  |    2 | Klose   | Erna    | 0173 888 | erna@web.de |        2 | 
|  2 | Bau GmbH      | Bonn   | 88888 | Weg 66  |    3 | Schmidt | Karl    | 0173 888 | karl@web.de |        2 | 
|  3 | Stahl GmbH    | Bern   | 7777  | Weg 66  |    4 | Maier   | Ina     | 0177 888 | Ina@web.de  |        3 | 
|  4 | Abwasser GmbH | Berlin | 44444 | Weg 44  | NULL | NULL    | NULL    | NULL     | NULL        |     NULL | 
+----+---------------+--------+-------+---------+------+---------+---------+----------+-------------+----------+

RIGHT JOIN

Der RIGHT JOIN arbeitet genau entgegengesetzt dem LEFT JOIN.

select * from kunden k RIGHT JOIN mitarbeiter m on k.id=m.id_firmen;
+------+------------+------+-------+---------+----+---------+---------+----------+-------------+----------+
| id   | name       | ort  | plz   | strasse | id | name    | vorname | funk     | mail        | firmenid |
+------+------------+------+-------+---------+----+---------+---------+----------+-------------+----------+
| NULL | NULL       | NULL | NULL  | NULL    |  1 | Klose   | Paul    | 0173 999 | paul@web.de |     NULL | 
|    2 | Bau GmbH   | Bonn | 88888 | Weg 66  |  2 | Klose   | Erna    | 0173 888 | erna@web.de |        2 | 
|    2 | Bau GmbH   | Bonn | 88888 | Weg 66  |  3 | Schmidt | Karl    | 0173 888 | karl@web.de |        2 | 
|    3 | Stahl GmbH | Bern | 7777  | Weg 66  |  4 | Maier   | Ina     | 0177 888 | Ina@web.de  |        3 | 
+------+------------+------+-------+---------+----+---------+---------+----------+-------------+----------+

FULL OUTER JOIN

Die Logik für diesen Join: Jeder Datensatz der rechten und der linken Tabelle kommt in die Ergebnismenge.

Er ist gewissermaßen die Kombination aus LEFT und RIGHT-JOIN.

MYSQL Befehle Anwendungen

select artikelnr,kat.artikelname, beschreibung, lieferant.lieferanten from artikel inner join lieferant inner join kat on artikel.lieferanten=lieferant.id and artikel.artikelname=kat.id;

select artikelnr,kat.artikelname, beschreibung, lieferant.lieferanten from artikel inner join lieferant inner join kat on artikel.lieferanten=lieferant.id and artikel.artikelname=kat.id;

select Artikelnr,Beschreibung,artikelname,lieferanten from artikel left join kat on id=kat_id left join lieferant on lief_id=idl

select name,vor,ort from kunde left join kat on id=kat_id left join lieferant on lief_id=idl

select distinct(leistungkd.svnr), name, vor, ort from kunde inner join leistungkd on leistungkd.svnr=kunde.svnr where renr=0;

select svnr, def, preis, ust from leistungkd left join leistung on leistung.svnr=leistungkd.svnr;

select def, preis, ust from leistungkd left join leistung on leistung.idl=leistungkd.idl where svnr=555444;

SQL User und Name anlegen skript

#! /bin/bash
clear
echo -n Bitte Username eingeben:
read userdb
#echo $userdb

echo -n Bitte Passwort eingeben: 
read passdb                     
#echo $passdb
echo CREATE USER "$userdb"@'localhost' IDENTIFIED BY "'$passdb';" > /tmp/dbc.sql
echo GRANT USAGE ON '*.*' TO "$userdb"@'localhost' IDENTIFIED BY "'$passdb'" WITH   MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ";" >> /tmp/dbc.sql
echo CREATE DATABASE IF NOT EXISTS "$userdb;" >> /tmp/dbc.sql
echo GRANT ALL PRIVILEGES ON "$userdb" .' *' TO "$userdb"@'localhost;' >> /tmp/dbc.sql
mysql < /tmp/dbc.sql

Java