RAID-Level

Was ist RAID, was sind die RAID Levels? Dieser Bericht gibt Auskunft.

Einführung

RAID ist die Abkürzung für "Redundant Array of Inexpensive Disks", neuerdings wird es auch als "Redundant Array of Independent Disks" bezeichnet, da die Bezeichnung "inexpensive" heutzutage etwas undeutlich geworden ist; damit meinte man früher nämlich dass man auch herkömmliche Festplatten nehmen konnte, im Gegensatz zu den riesigen Datenspeichern in Mainframe Rechnern, die eine schöne Villa am See "günstig" erschienen liessen und auf die Juwelen und Smaragde "billig" wirkten.

Heute verwendet man im allgemeinen eher die "billigen" SCSI oder IDE Festplatten und auf fast jedem neuen Mainboard ist ein RAID Controller (oder so was in der Art g) schon drauf.
Das "Independent" bezeichnet hier die Speicherung auf zwei voneinander unabhängigen Festplatten, die an eigenen IDE Kanälen, Kabeln und manchmal sogar an zwei verschiedenen Controllern hängen. Die macht durchaus sinn, vor allem in einer Zeit wo es Festplatten schon fast im Terrabyte Bereich zu unter 1.- / MB gibt und die Produktionsqualität Platten z.T. schon nach wenigen Jahren zerstören kann. Auch die Performance dürfte insgesamt besser werden, wenn jede Platte separat angesteuert wird.

Allerdings gibt es einige verschiedene RAID Konfigurationen, im allgemeinen "Levels" genannt:

RAID Levels

Die gebräuchlichsten RAID-Level sind RAID 0, RAID 1 und RAID 5; die anderen Levels dagegen sind relativ bedeutungslos, werden aber der vollständigkeitshalber ebenfalls aufgeführt.

RAID 0

{IMG(fileId="48",thumb="y",rel="box[g]",imalign="left",align="left")}{IMG} RAID 0, auch "striping" genannt, bezeichnet das Verfahren indem die Daten jeweils über zwei Festplatten aufgeteilt werden, dadurch wird bei einer Datei (nennen wir sie z.B. "my_document.doc") zur Hälfe auf der einen und zur anderen Hälfte auf der anderen Platte gespeichert; dies erfordert dann pro Platte nur noch die hälfte des Schreibzugriffes und verdoppelt so theoretisch die Datenrate einer Festplatte.
Der (grosse) Nachteil dieses Systems ist jedoch, dass wenn nur eine Festplatte ausfällt, die Daten auf der anderen Platte ebenfalls gleich weg sind; denn es sind ja auf jeder Platte nur Datenfragmente vorhanden, mit denen man im Falle eines System-Crashs nicht mehr viel anfangen kann.
RAID 0 alleine ist der einzige Level, der nichts zur Datensicherheit beiträgt und man deshalb so nicht verwenden sollte.

Streng genommen ist dies auch gar kein RAID, da es keine Redundanz gibt.

RAID 1

{IMG(fileId="49",thumb="y",rel="box[g]",imalign="left",align="left")}{IMG} Bei RAID 1, oder "mirroring" werden die genau gleichen Daten parallel auf zwei Festplatten geschrieben; speichert man also die Datei "my_document.doc", ist die automatisch auf Festplatte 1 und Festplatte 2 gespeichert; das System merkt davon jedoch nichts und stellt den Verbund als 1 Festplatte dar. Fällt jedoch eine Festplatte aus, sind die Daten immer noch auf der anderen vorhanden. So kann man nach einem gefürchteten "Platten-Crash" die defekte Festplatte einfach austauschen und normal weiter Arbeiten.

RAID 1 bietet die volle Redundanz der gespeicherten Daten, während die Kapazität des Arrays höchstens so groß ist, wie die kleinste beteiligte Festplatte.

<EM>Hinweis: </EM>Ein RAID 1 sollte keine falschen Sicherheiten geben; ein RAID 1 schützt zwar von Datenverlust infolge von Festplatten-defekten, es ist aber <B>kein</B> Ersatz für ein regelmässiges Backup! Es schützt weder vor versehentlichen Lösch-Aktionen des Benutzers, noch von Schäden durch Viren, Würmer, oder Angriffen von aussen.

RAID 2

RAID 2 spielt in der Praxis keine Rolle mehr. Das Verfahren wurde nur bei Großrechnern verwendet. Die Daten werden hierbei in Bitfolgen fester Größe zerlegt und mittels eines Hamming-Codes auf größere Bitfolgen abgebildet (8 Bit für Daten noch 2 Bit für den ECC-Code). Die einzelnen Bits des Hamming-Codeworts werden dann über einzelne Platten aufgeteilt, was prinzipiell einen hohen Durchsatz erlaubt. Ein Nachteil ist jedoch, dass die Anzahl der Platten ein Vielfaches der Hamming-Codewortlänge sein muss.

Ein RAID 2 Verbund benötigt mindestens zehn Festplatten.

RAID 3

RAID 3 ist der Vorläufer des RAID 5. Im RAID 3 wird die Redundanz auf einer zusätzlichen Festplatte gespeichert. Als Redundanz bezeichnet man hier die bitweise Addition der einzelnen Bits der anderen Festplatten. Die bitweise Addition berechnet Summen von Einzelbits, die den Wert 0 und 1 enthalten können, und befolgt die Rechenregeln des mathematischen Zahlkörpers, welcher nur die Elemente 0 und 1 enthält, und bei dem die folgenden Rechenregeln gelten: 1+1=0, 0+1=1, 1+0=1, 0+0=0, und Subtraktion = Addition. In der Mikroelektronik ist dies identisch mit der XOR-Verknüpfung.

Der Gewinn durch ein RAID 3 ist folgender: Angenommen der RAID 3-Verbund besteht aus n datentragenden Festplatten und einer dedizierten Parity-Disk mit Hausnummer n+1. Bei einem Ausfall einer der ersten n Festplatten werden, nach Austausch dieser Festplatte, alle Daten auf die neue n-te Festplatte zurück synchronisiert, ausgehend von den Parity-Informationen der n+1-ten Festplatte und den übrigen, unversehrten n-1 Daten-Festplatten. Der Ausfall der Parity-Disk selbst wird, nach Ersetzen der Festplatte, repariert durch einfache Neuberechnung der Parity-Bits.

RAID 3 ist inzwischen vom Markt verschwunden, da durch RAID 5 verbessert, bei dem die Parität gleichmässig über alle Disks verteilt wird. Die dedizierte Paritätenfestplatte stellte einen Flaschenhals dar (performance bottleneck). Vor dem Übergang zu RAID 5 wurde RAID 3 zudem partiell durch RAID 4 verbessert, bei dem Ein-/Ausgabe-Operationen mit größeren Blockgrößen aus Performance-Gründen standardisiert wurden.

Zusätzlich sei hier bemerkt, dass ein RAID 3-Verbund aus lediglich zwei Festplatten identisch ist mit einem RAID 1 aus zwei Festplatten – per Definition.

RAID 4

Es werden ebenfalls Paritätsinformationen berechnet, die auf eine dedizierte Festplatte geschrieben werden. Allerdings sind die Einheiten, die geschrieben werden, größere Chunks und nicht einzelne Bytes, was die Gemeinsamkeit zu RAID 5 ausmacht.

Ein Vorteil von RAID 4 besteht darin, dass bei einem Ausfall einer Datenplatte eine "vorgenullte" Datenplatte eingesetzt werden kann. Dadurch wird eine zeit- und rechenintensive Wiederherstellung vermieden, dass RAID-4-System kann ohne Einschränkungen weiterbetrieben werden.

Ein Nachteil bei RAID 4 besteht darin, dass die Parity-Platte bei allen Schreib- und Leseoperationen beteiligt ist. Dadurch ist die maximal mögliche Performance durch die Performance der Parity-Disk begrenzt. Da bei jeder Operation immer eine der Daten-Disks und die Parity-Disk verwendet werden, fällt die Parity-Disk häufiger aus.

Wegen der fest definierten Paritätsplatte wird statt RAID 4 fast immer RAID 5 bevorzugt.

Eine Ausnahme bildet ein Systemdesign, bei dem die Lese- und Schreiboperationen auf ein NVRAM erfolgen. Das NVRAM bildet einen Puffer, der die Performance kurzfristig erhöht und die Lese- und Schreiboperationen sammelt und in Abschnitten auf das RAID 4 Plattensystem schreibt. Dadurch werden die Nachteile von RAID 4 vermieden.

RAID 5

{IMG(fileId="50",thumb="y",rel="box[g]",imalign="left",align="left")}{IMG} RAID 5 bietet sowohl gesteigerte Performance als auch Redundanz und ist damit die beliebteste RAID-Variante. Darüber hinaus ist es die kostengünstigste Möglichkeit, Daten auf mehr als 2 Festplatten mit Redundanz zu speichern. Es werden mindestens 3 Platten benötigt. Bei n Platten sind (n-1)/n der Gesamtkapazität nutzbar; das restliche 1/n wird für die Paritätsdaten (Redundanz) benötigt. Zum Vergleich: bei RAID 1 lassen sich nur ½ der realen Kapazität wirklich verwenden.

Die Nutzdaten werden wie bei RAID 0 auf alle Festplatten verteilt. Die Paritätsinformationen werden jedoch nicht wie bei RAID 4 auf einer Platte konzentriert, sondern ebenfalls verteilt. Die Berechnung der Parität erfordert leistungsfähige RAID-Controller und führt beim Schreiben zu leichter bis erheblicher Verminderung der Datentransferrate im Vergleich zu RAID 0. Da die Paritätsinformationen beim Lesen nicht benötigt werden, stehen alle Platten zum parallelen Zugriff zur Verfügung. Bei RAID 5 ist die Datensicherheit beim Ausfall einer Platte gewährleistet! Allerdings lässt nach Ausfall einer Festplatte oder während des Rebuilds auf die Hotspare-Platte (bzw. nach Austausch der defekten Festplatte) die Performance deutlich nach. Der Rebuild dauert länger als bei RAID 1, da bei RAID 5 zusätzlich Parity Informationen rekonstruiert werden müssen. Je mehr Festplatten in einem RAID 5 Verbund sind, desto länger dauert der Rebuild bzw. desto schlechter ist die Performance während eines Defekts einer Festplatte.

Kombinationen

Die RAID Level lassen sich zum Teil auch kombinieren:

RAID 0+1

Ein RAID 01 Verbund ist ein RAID 1 von mehreren RAID 0. Es werden dabei die Eigenschaften der beiden RAIDs kombiniert: Sicherheit und gesteigerte Performance.

Ein RAID 01 Verbund benötigt mindestens vier Festplatten.

RAID 0+5

Ein RAID 0+5 Verbund besteht aus einem RAID 5 Array, das aus mehreren gestripten RAID 0 besteht.

Ein RAID 0+5 Verbund benötigt mindestens sechs Festplatten.

Beispielsweise zwei Raid 0 Hardware Stripes über ein Raid 5 Block findet kaum Verwendung, da der Performancegewinn im vergleich zu RAID 5 marginal ist.

RAID 5+1

Der RAID 5+1 Verbund wird ähnlich wie RAID 1+5 gebildet, indem man die gesamte Reihe eines RAID 5 spiegelt und ist ähnlich zu RAID 0+1 ausgenommen beim Paritäts Schutz, dass die Sätze RAID 5 anstelle von RAID 0 sind.

Bei einem acht Festplatten RAID 51 können bis zu drei beliebige gleichzeitig ausfallen. Darüber hinaus können fünf Festplatten ausfallen solange keine aus dem gespiegelten RAID 5 Verbund betroffen sind.

Ein RAID 5+1 Verbund benötigt mindestens sechs Festplatten.

Die Performance ist gut, aber nicht sehr hoch. Die Kosten sind mit den anderen RAID Systemen nicht direkt vergleichbar.

RAID 5+5

Der RAID 5+5 Verbund wird ähnlich wie RAID 5+1 gebildet, indem mehrere RAID 5 Systeme zu einem RAID 5 zusammen geschaltet werden. Im Gegensatz zu RAID 5+1 ist der Overhead geringer und es ist möglich schneller die Daten zu lesen.

Die Performance ist sehr gut, aber nicht sehr hoch. Die Kosten sind mit den anderen RAID Systemen nicht direkt vergleichbar.

Bei einem neun Festplatten RAID 5+5 können bis zu drei beliebige gleichzeitig ausfallen. Darüber hinaus können fünf Festplatten ausfallen.

Ein RAID 5+5 Verbund benötigt mindestens neun Festplatten.

RAID Controller

Auch bei den Controllern gibt es grosse Unterschiede. Angefangen von reinen Software RAIDs, die keinen speziellen Controller brauchen über "halb Software" RAIDs, die über einen einfachen BIOS Controller (erhältlich ab ca. 50.- bis 100.-) verfügen, über Professionelle Controller, die völlig systemunabhängig arbeiten bis hin zu ganzen Rack-Systemen, bei denen man die Festplatten in eine Controller-Box einbauen kann und die mehrere 1000.- kosten.

Nachfolgend eine kleine Auflistung der RAID Controller:

Software RAID

Von Software-RAID spricht man, wenn das Zusammenwirken der Festplatten komplett softwareseitig organisiert wird; etwa können viele moderne Betriebssysteme, wie Microsoft Windows XP oder Linux, so die gängigsten RAID-Level zur Verfügung stellen. Die einzelnen Festplatten sind in diesem Fall über einfache Festplattencontroller am Computer angeschlossen.

Der Vorteil von Software-RAID ist die kostengünstige Einrichtung. Allerdings kann die Abhängigkeit von einem bestimmten Betriebssystem bzw. einer bestimmten Plattform auch ein Nachteil sein, und nicht zuletzt wird der Hauptprozessor (CPU) des Computers bei Festplattenzugriffen relativ stark belastet.

Die betreffende Softwarekomponente wird als Volume Management Software bezeichnet.

Hardware RAID

Von Hardware-RAID spricht man, wenn das Zusammenwirken der Festplatten von einem speziell dafür entwickelten Hardware-Baustein, dem RAID-Controller, organisiert wird.

Der Hardware-RAID-Controller befindet sich physikalisch in der Nähe der Festplatten. Er kann im Gehäuse des Computers enthalten sein. Häufiger befindet er sich aber in einem eigenen Gehäuse, einem Storage Array, in dem auch die Festplatten untergebracht sind. Vermehrt werden in den letzten Jahren auch RAID-Controller auf Mainboards für den Heimcomputer- bzw. Personal Computer-Bereich verbaut. Üblicherweise sind diese häufig auf RAID 0 und RAID 1 beschränkt.

Hybrid Software RAID (mit Controller)

Als solches "Hybrid Software RAID" oder auch bezeichnet man es, wenn es zwar ein RAID Controller auf dem Mainboard gibt, dieser aber mittels Treiber, also im prinzip auch mit Software und mit normalen IDE/SCSI befehlen gesteuert wird.

Mit der zunehmenden Verbreitung von solchen billig-RAID Controllern auf zahlreichen Mainboards wird diese Form von RAID immer häufiger, vor allem im Privat und KMU Bereich benutzt.

Lesbare URLs

__Der Trend zur Dynamischen Webseitenprogrammierung hat eines ganz vergessen lassen: Die Lesbarkeit von Internetadressen (URLs).

Hier besprechen wir den Wandel und geben Tips zur effektiven Seitenprogrammierung.

Diesen Artikel sollten sich alle durchlesen, die dynamische Webseiten Programmieren und mit URL Parametern arbeiten.__

Worum geht es hier?

Sicher hast du schon Internetadressen wie: http://members.freepage.de/~kunz gesehen, auch wenn die durch steigende sog. kurz-URL dienste wie http://www.nic.de.vu/ langsam "aussterben." Auch diese Kurz URLs wie: http://www.kunz.ch.vu/ oder http://kunz.home.pages.de/ werden dir wahrscheinlich bekannt sein.
Auch haben immer mehrer Leute eine eigene Domain, wie z.B. http://www.meine-homepage.de/ da ja es solche Domains und zugehörigen Webspace bereits für wenige Euro gibt.

Klar ist auch, dass man sich eine Seite wie www.meine-homepage.de wesentlich besser merken kann, als z.B. www.provider.de/meine_homepage.

Aber wie sieht es mit den sog. "Unterseiten" aus? -Also z.B. http://www.meine-homepage.de/privat/uber_mich.htm? Auch diese sind noch einfach zu merken.

Nun erfreuen sich einfach zu erlernende Scriptsprachen wie ASP oder PHP zunehmender Beliebtheit und mancher fängt an seine Seiten dynamisch zu Programmieren, d.h. dass die Seiten in einer Datenbank wie Access oder mySQL gespeichert sind. -Solche Seiten erkennst du an den kryptischen Adressen wie: http://www.meine-homepage.de/page.php?getpage=true&print=no&id=12345 oder solche von Programmierern, die sich die Adresse mittels mod_rewrite etwas übersichtlicher gemacht haben: www.meine-homepage.de/view/12345/ – Und genau darum geht es hier. Die Übersichtlichkeit von Internet Adressen.

Wieso müssen Internetadressen "übersichtlich" sein?

Dies werde ich oft gefragt, wenn ich das Thema anspreche. Hier deswegen einige Gründe:

Die Homepage sieht übersichtlicher aus

Man erkennt sofort die Struktur der Webseite und kann auch ohne links darauf navigieren. z.B. durch das "blinde erraten einer URL".

Der Besucher weiss schon vor dem Laden der Seite um was es geht

Und dies erhöht deine Chancen wesentlich, dass der Besucher deine Seite auch anschaut. -Denn ein durchschnittlicher Websurfer nimmt sich nur einige Sekunden Zeit um zu bestimmen ob die Seite sehenswert ist – Zu kurz um ein etwas langatmigeres Intro zu lesen.

Du kannst jemandem URLs weitergeben, ohne immer nachschauen zu müssen

Bei einer Webseite in der du alle Seiten und Verzeichnisse von Hand erstellt und raufgeladen hast, kannst du jemandem schnell sagen, wo auf deiner Seite er eine bestimmte Information findet: "Geh auf: www.meine-homepage.de/uber_mich/meine_bilder.htm um einige Bilder von mir zu sehen!" -Aber was ist, wenn die Seite mit den Bildern in einer Datenbank gespeichert ist und nur noch eine sog. ID-Nummer als Identifikation besitzt? Willst du dir für jede deiner Seiten eine Nummer auswendig lernen? Und wie soll jemand, der gerade nicht online ist, du also die Adresse z.B. im Zug oder in der Schule gibst merken, dass er deine Bilder unter www.meine-homepage.de/view/3452/ oder noch schlimmer www.meine-homepage.de/page.php?mod=gallery&view=3455 findet?

Viel vorteilhafter wäre es doch, wenn du auch deine dynamischen Seiten weiterhin unter einer gut zu merkenden Adresse wie: www.meine-homepage.de/uber_mich/meine_bilder/ weitergeben könntest…

Suchmaschinen bewerten die URL relativ hoch

Ein ebenfalls nicht zu vernachlässigbarer Punkt sind wieder mal die Suchmaschinen, über diese doch fast 90% der Besucher zu deiner Seite finden. Und die Suchmaschinen (und nicht zuletzt auch die Benutzer dieser!) bewerten die Adresse der Internetseite relativ hoch; sie gibt den eindeutigsten Hinweis auf den Inhalt der Seite; mehr als irgendwelche META-KEYWORDS oder evtl. sogar Seitentitel.

Man sieht so ja auch sofort, was auf der Seite das Hauptthema sein wird.

Müssen die dynamischen Seiten also wieder auf altmodische Art von Hand erstellt werden?

Nein! Zumindest unter dem populären Apache Webserver der unter Linux und Windows erhältlich ist, besitzt da so ein "Wundermittel" das sich mod_rewrite nennt.

Was ist mod_rewrite

mod_rewrite ist ein Apache Modul um Internetadressen beliebig umzuwandeln, d.h. du kannst z.B. irgendwelche fiktiven Pfade auf ein Script lenken und von Aussen merkt man nicht, dass das Verzeichnis nicht "echt" existiert.

Ein Beispiel:

Du möchtest dass deine Seite: meine-homepage.de/page.php?mod=gallery&view=3455 von nun an über meine_homepage.de/bilder/ aufgerufen werden kann.
In der .htaccess Datei fügst du dann folgende zwei Zeilen ein:

RewriteEngine on
RewriteRule ^bilder/    /page.php?mod=gallery&view=3455/

Von nun an sind deine Bilder unter meine-homepage.de/bilder/ erreichbar -Ohne Umleiten, ohne, dass irgendjemand jemals die "richtige" Adresse deiner Seite zu sehen bekommt.

Wie funktioniert das?

Sobald der Apache Webserver, bzw. das mod_rewrite Modul den Pfad bilder/ afängt, wandelt es im Hintergrund die Adresse um in ‚page.php?mod=gallery&view=3455‘, sendet aber jeweils nur den "virtuellen Pfad" (bilder/) zum Browser.

Cool, was kann man damit noch alles machen?

Eine Menge! Nachfolgend nur zwei Beispiele:

Du möchtest generell Adressen wie: meine-homepage.de/page.php?id=x in meine-homepage.de/seiten/x umwandeln lassen:

RewriteEngine on
RewriteRule ^seiten/(.*)/ /page.php?id=$1

Das ‚$1‘ ganz rechts stellt hierbei eine Variable dar und steht jeweils für das was in ‚(.*)‘ auf der linken Seite steht. -Das heisst alles was nach: ’seiten/x/‘ kommt wird nach /page.php??id=x umgeleitet

Es soll <B>alles</B> was hinter meine-homepage.de/ steht auf ein PHP Script verweisen:

RewriteEngine on
RewriteRule ^(.*)$    /page.php?pfad=$1

Das macht aus einer Adresse wie: meine-homepage.de/uber_mich/lebenslauf/bilder/ -> meine-homepage.de/page.php?pfad=/uber_mich/lebenslauf/bilder/

<EM>Achtung:</EM> Damit würdest du auch Seiten, die real auf dem Webserver existieren weiterleiten lassen und könntest diese nicht mehr abrufen. Selbstverständlich kennt mod_rewrite aber auch sog. "conditions", das heisst regeln nach denen es umleitet.
Folgender Code leitet, wie oben alles weiter, <I>ausser</I>, der Pfad oder die Datei existiert wirklich auf dem Server:

RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^(.*)$    /page.php?pfad=$1

Die Zeile: <I>RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f</I> sorgt dafür, dass nur umgewnadlet wird wenn eine solche Datei nicht existiert und <I>RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d</I> stellt dies analog für Verzeichnisse sicher.

Damit sollte eigentlich auch schon klar sein, wie man seine Pfade auch bei grossen Datenbankbasierten Webseiten übersichtlich halten kann.
Nachfolgend Hinweise, wie man eine solche Seite realisiert.

Dynamische Webseiten übersichtlich

Alles was du nun tun musst, ist jedem Datensatz deiner Seite ein zusätzliches Feld mit dem gewünschten Pfad hinzuzufügen, also dass deine Datenbank-Tabelle etwa so erweitert wird:
<PRE>
ID Title Content Pfad
==============================­=======
0 / … /

    1 Technet … /technet

2 Tipps … /technet/tipps
3 Internet … /technet/tipps/internet
4 Downloads … /downloads
5 Internet … /downloads/internet
6 Treiber … /downloads/treiber
7 Win9x … /downloads/treiber/win9x
8 Win2k … /downloads/treiber/win2k
9 OS/2 … /downloads/treiber/oshalbe

    10 Tools … /downloads/tools

</PRE>

Das Feld Pfad stellt dann die gewünschte Adresse der Seite dar, etwa so wie du früher die Dateien und Verzeichnisse benamst hast, tust du dies jetzt halt in der Datenbank.

Jetzt erstellst du eine Datei mit dem Namen .htaccess in deinem Homepage-Verzeichnis und schreibst darin etwas wie:

#Aktiviert das mod-rewrite-modul
RewriteEngine on
 
#Dateien und Verzeichnisse die existieren sollen normal abrufbar sein
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
 
#Falls es sich um die Startseite handelt wird auch nicht umgewandelt
RewriteCond %{REQUEST_URI} !^/$
 
#Alles andere wird auf /page.php?pfad= gemappt
RewriteRule ^(.*)$    /page.php?pfad=$1

Und in der Datei page.php, in der du bis jetzt die ID mittels page.php?id= abgefragt hast, musst du nun nur noch umändern damit du die pfad-variable anstatt die ID zum abfragen brauchst.
Wenn es dir bequemer ist mit der ID anstatt dem Pfad zu arbeiten, kannst du auch gleich zu Begin der Seite kurz die ID anhand des Pfades abfragen, z.B. SQL:

SELECT id FROM tblSeite WHERE pfad = '$pfad'

Du hast so ganz normal die Seiten-ID zur Weiterverarbeitung zur Verfügung und jede deiner Seiten ist ab sofort unter einem übersichtlichen Pfad abrufbar.

Weitere Möglichkeiten

Selbstverständlich lässt sich mit dem mod_rewrite-modul noch viel mehr machen! Dieser Artikel konnte dir diesbezüglich nur eine ganz kleine Auswahl an Möglichkeiten aufzeigen. Wenn du dich daher tiefergehend für solche URL-Manipulationen interessiertst, ist dass lesen der Modulbeschreibung zu mod_rewrite und die Recherche bei Google unumgänglich.

Eine weitere kleine Möglichkeit möchte ich dir aber nicht vorenthalten, sie eignet sich insbesondere, wenn du auch sog. "Print-Versionen", also für den Drucker optimierte Seiten anbieten willst und diese bis anhin z.B. mittels print.php?id=[ID] aufriefst.

Folgende mod_rewrite-regel ist hier empfehlenswert:

#leitet alls nach /print/ weiter
RewriteRule ^print/(.*)/    /print.php?pfad=$1/
 
#Sorgt dafür, dass /pint/ nicht auf die page.php umgewandelt wird
RewriteCond %{REQUEST_URI} !^/print/(.*)$

Damit kannst du nun eine Printversion aller deiner Seiten über meine-homepage/print/pfad_zur_seite/ abrufen; in der print.php verfährst du ähnlich wie in page.php.

Schlusswort

Ich hoffe, dieses Tutorial hat dir geholfen und konnte dich animieren selbst mal mit mod_rewrite rumzuspielen… 😉
Bei weiteren Fragen stehe ich dir im Forum jederzeit zur Verfügung! g

Rekursiv Programmieren mit PHP

__Was ist rekursives Programmieren ?

Um dies zu verdeutlichen, fang ich mal mit einem einfachen Problem an:

Es sollen alle Dateien eines Verzeichnisse ausgelesen werden inklusive aller Unterverzeichnisse und allen Dateien in diesen Unterverzeichnissen usw..

Das "Problem" liegt auf der Hand, denn dies lässt sich durch einen streng chronologischen Programmablauf nicht realisieren, denn es ist natürlich nicht bekannt, wie viele und welche Unter und Unter-Unterverzeichnisse das auszulesende Verzeichnis besitzt.__

Die folgende Funtion "get_dir()" z.B. gibt lediglich alle Dateien und Verzeichnisse im Verzeichnis $dir aus, jedoch werden die Unterverzeichnisse nicht ausgelesen.

function get_dir ($dir) {
 $fp=opendir($dir);
 while($datei=readdir($fp)) {
  if (is_dir("$dir/$datei") && $datei!="." && $datei!="..") {echo "$datei (dir)<br>";}
  else {echo $datei."<br>";}
 }
closedir($fp);
}

Die Aufruf der Funktion get_dir("./") ergibt dann z.B.:

bla.txt
index.html
bilder (dir)
nix.exe

Wie bekommt man es nun hin, dass das Unterverzeichnis "bilder" und alle Unterverzeichnisse von "bilder" auch noch ausgelesen werden ?
Indem man natürlich die Funktion get_dir() wiederum auf das Verzeichnis "bilder" anwendet und anschliessend auf alle Unterverzeichnisse von "bilder".
Da man dies aber natürlich nicht "per Hand" machen möchte und kann, gibt es nur eine Lösung: Die Fubnktion get_dir() muss sich bei Bedarf, d.h. wenn sie auf ein weiteres Verzeichnis stösst, selber wieder aufrufen und dieses Unterverzeichnis auch auslesen. Trifft sie dann wieder auf Unterverzeichnisse, soll sie sich wiederum selbst aufrufen und auch diese Verzeichnisse auslesen usw..

In unserem Beispiel von oben sähe das dann so aus:

function get_dir ($dir) {
  $fp=opendir($dir);
  while($datei=readdir($fp)) {
   if (is_dir("$dir/$datei") && $datei!="." && $datei!="..") {echo "$datei (dir)<br>";                                                                                         get_dir("$dir/$datei"); }
   else {echo $datei."<br>";}
  }
 closedir($fp);
}

Liegen in unserem Beispiel im Verzeichnis "bilder" nun z.B. die Dateien pic1.gif und pic2.gif und auch noch das Verzeichnis "weitere_bilder" mit den Dateien pic3.gif und pic4.gif, ergibt der Funktionsaufruf get_dir("./") in unserem Beispiel nun:

bla.txt
index.html
bilder (dir)
pic1.gif
pic2.gif
weitere_bilder (dir)
pic3.gif
pic4.gif
nix.exe

Es werden jetzt also wirklich alle Verzeichnisse und Unterverzeichnisse ausgelesen, egal wieviele Unterverzeichnisse, Unter-Unter-Verzeichnisse etc. es gibt.

Diesen "Trick", eine Funktion sich selbst aufrufen zu lassen, nennt man "rekursives Programmieren" oder auch "rekursive Funktionen". Rekursive Funktionen werden in Programmen der verschiedensten Programmiersprachen oft dazu verwendet, um mathematische Funktionen auszuführen und mathematische Probleme zu lösen ("Urbeispiel": Fakultät einer Zahl).
Gerade mit PHP lassen sich aber auch ganz andere (interessantere) Dinge durch rekursive Funktionen realisieren.

Z.B. ist es möglich, eine Suchmaschiene bzw. einen "Crawler" zu programmieren.
Dieser soll z.B. eine Seite auslesen und allen (internen) Links auf dieser Seite folgen und auch diese Seiten wiederum auslesen und vorhandenen Links auf diesen Seiten folgen. Das Prinzip bei der Programmierung und Realisierung eines solchen "Crawlers" ist dasselbe wie bei dem obigen Beispiel.

Die stark vereinfachte Struktur der rekursiven Funtion hierfür würde ungefähr so aussehen:

function crawl($link) {
 - Lese Seite aus
 - Suche (interne) Links
 - Wenn Link gefunden --> crawl (gefundener Link);
}

Die gefundenen Seiten könnten nun nach Stichwörtern indiziert werden oder die meta-tags könnten ausgelesen werden oder ähnliches, so dass im Prinzip eine komplette, klassische Suchmaschiene realisierbar ist.

Ebenfalls können durch rekursive Programmierung komplette "Baumstrukturen" in z.B. Datenbanktabellen festgehalten werden. Eine Tabelle, in der z.B. eine Familienstammbaum erfasst wird, könnte so aussehen (MySql-Tabelle):

Tabelle "Stammbaum"
<PRE>
Id name nachfahre_von

    1 Opa August 0

2 Onkle Karl 1
3 Tante Ute 1
4 Cousin Maik 2
5 Cousine Inge 3
6 Mutter 1
7 Ich 6
8 Mein Bruder 6
9 Sohn meines Bruders 8
</PRE>

Möchte man nun z.B. diese Baumstruktur geordnet uns strukturiert ausgeben lassen, geht dies wiederum mit einer rekursiven Funktion:

function get_tree($who,$ebene) {
 $res=mysql_query ("select * from stammbaum where nachfahre_von=$who;");
  while ($verwandter=mysql_fetch_array($res)) {
    echo $ebene.$verwandter[name]."<br>";
    get_tree($verwandter[id],$ebene."    ");
  }
}

Dies ausgabe der Funktion get_tree(0,"") ergibt nun den (hässlichen) Stammbaum:
<PRE>
Opa August
Onkel Karl
Cousin Maik
Tante Ute
Cousine Inge
Mutter
Ich
Mein Bruder
Sohn meines Bruders
</PRE>
Diese Struktur dürfte Vielen aus diversen Foren bekannt vorkommen.
In der obigen Tabelle kann man nun beliebig "Äste" hinzufügen, z.B. den Datensatz id=9, name=’Sohn von Cousin Maik‘ und nachfahre_von=4.
Die Funktion get_tree wird immer den kompletten Satmmbaum, egal wieviele "Ebenen" und "Äste" es gibt, ausgeben.

Was man beachten sollte.

Der grösste Vorteil rekursiver Funtionen, nämlich das zu erfassende Strukturen bis zum bitteren Ende ausgelesen bzw. erfasst werden, kann auch gleichzeitig eine "Falle" darstellen. Wenn man sich z.B. vorstellt, man wendet die hier zuerst besprochene Funktion get_dir() zum Auslesen von Verzeichnissen auf das Root-Verzeichnis "/"eines vollgepackten Rechners an, so kann man sich vorstellen, das dies zum Scheitern verurteilt ist.
Deswegen ist es ratsam, bei solchen Vorhaben eine Abruchbedingung in die Funktion eintufügen.
Dies kann z.B. ein "Timeout" sein, d.h. eine Funktion soll sich nur innerhalb eines bestimmten Zeitrahmens immer wieder selbst aufraufen, oder aber man beschränkt die rekursive Funktion auf eine bestimmte "Ebenentiefe".

Ein Programm mit der Funktion get_dir() und 10 Sekunden-Timeout-Bedingung könnte z.B. so aussehen:

function get_dir ($dir,$startzeit) {
 $fp=opendir($dir);
 while($datei=readdir($fp)) {
   if (is_dir("$dir/$datei") && $datei!="." && $datei!="..")
   {
     echo "$datei (dir)<br>";
     if (time()-$starttime > 10) get_dir("$dir/$datei",$startzeit);
   }
   else {echo $datei."";}
 }
  closedir($fp);
}
 
// Hauptprogramm
$start=time();
get_dir("./",$start);

Eine Ebenenbeschränkung, d.h. es sollen nur das Verzeichnis "./" und alle Unterverzeichnisse ausgelesen werden, jedoch Unter-Unterverzeichnisse und alles was darunter liegt, nicht mehr, könnte so aussehen:

function get_dir ($dir,$ebene) {
  $fp=opendir($dir);
  while($datei=readdir($fp)) {
    if (is_dir("$dir/$datei") && $datei!="." && $datei!="..")
    {
     echo "$datei (dir)<br>";
     if ($ebene<3) get_dir("$dir/$datei",$ebene+1);
    }
   else {echo $datei."<br>";}
  }
 closedir($fp);
}
 
//Hauptprogramm
get_dir ("./",1);

Ein weiterer "Nachteil" des rekursiven Programmierens ist natürlich auch, dass komplexere Funktionen als die hier angedeuteten schnell "unberechenbar" werden und es nicht mehr so einfach nachzuvollziehen ist, an welcher Stelle die Funktion was macht, vor allen Dingen in den Situationen, wo man die zu erfassende Struktur nicht schon im Vorraus kennt.

Ebenfalls ist teilweise sehr schwer herauszufinden, warum rekursive Funktionen in bestimmten Situationen sich in einer Art "Endlosschleife" immer wieder selbst aufrufen.
Ein Beispiel dazu ist der oben angesprochene "Crawler". Lässt man diesen ohne Kontrolle einfach auf eine Webseite los, so werden bestimmte Seiten, auf die von mehreren anderen Seiten gelinkt wird, natürlich auch mehrfach durchsucht und die gefundenen Links auf dieser Seite auch immer wieder ausgelesen und durchsucht usw., so dass es quasi kein eine Ende in dieser Prozedur gibt.
Eine Lösung hierzu ist z.B., dass bereits durchsuchte Seiten in einem Array festgehalten werden und vor jedem Selbstaufruf der Funktion überprüft wird, ob die entsprechende Webseite nicht schon durchsucht worden ist.

Auf jeden Fall kann rekursives Programmieren sehr nützlich sein und auch viel Spass machen und ich hoffe, dass der eine oder andere etwas mit diesem Artikel etwas anfangen kann.

Cookies unter der Lupe

__Netscape hat seinerzeit bei der Erfindung der Cookies den einzig
sinnvollen Weg gewählt, um Cookie-Informationen zwischen Client und
Server auszutauschen, nämlich die HTTP-Header, die bei jeder Anfrage
hin und her geschickt werden:__

    1. Ein Client fordert vom Server über eine der HTTP-Request-Methoden

eine Ressource an. Dummerweise sendet er dabei keinerlei Informationen
darüber, ob er gewillt ist Cookies zu akzeptieren, d.h. der Server
bekommt lediglich einen ‚gewöhnlichen‘ HTTP-Request

2. Der Server verarbeitet den empfangenen Request, rödelt auf die eine
oder andere Weise rum und sendet dann eine Antwort (HTTP-Response),
der mind. aus HTTP-Response-Headern besteht, i.d.R. aber auch einen
HTTP-Response-Body beinhaltet.
Will der Server Cookies an den Client übermitteln, geschieht dies
durch einen entsprechenden HTTP-Response-Header (Set-Cookie), der die
Cookie-Parameter enthält. Zu diesem Zeitpunkt weiß er nicht (s. 1.),
ob die Cookies überhaupt auf Gegenliebe stoßen werden. Aus diesem
Grund versorgt er vorsorglich alle Links, Formulare etc. mit
session-IDs, sofern session.use_trans_sid aktiviert wurde.

3. Der Client empfängt den HTTP-Response und wertet seinerseits die
Response-Header aus. Stößt er dabei auf einen Set-Cookie-Header, fragt
er je nach Einstellung den User, ob er diese(n) Cookie(s) annehmen
soll oder speichert bzw. verwirft diese(n) automagisch.

4a. Wurde(n) der/die Cookie(s) von 3. angenommen, sendet der Client
bei einer erneuten Anfrage an den selben Server anders als bei 1.
zusätzlich noch die gespeicherten Cookie-Werte an den Server,
ebenfalls als Teil der HTTP-(Request-)Header. Dies geschieht immer
automatisch und läßt sich nicht fallweise unterbinden.

4b. Hat der User keine Cookies akzeptiert, geht es bei 1. wieder los
und wiederholt sich solange, bis der User Cookies akzeptiert, sich die
Kugel gibt oder der Client von sich aus erkennt, daß der User diese
Cookies von dieser Site nicht annehmen möchte (s. Mozilla).

5. Erst jetzt erhält der Server die Information, daß die Cookies
akzeptiert wurden und gibt diese Informationen an PHP weiter ($_COOKIE
wird gefüllt). PHP seinerseits weiß nun, daß Cookies akzeptiert werden
und verzichtet von nun an auf die Nutzung von trans_sid. Dieses
Verhalten bleibt solange bestehen, bis die Cookies auf dem Client
gelöscht werden, sei es durch schließen des Browsers oder durch
explizites löschen der Cookies (s. Mozilla Cookie Manager).

Tunneling

Sperrt der proxy der Firma gewisse Protokolle, wie z.B. HTTP? Oder möchte man sich sicher in ein anderes Netzwerk anmelden, z.B. in das eines Geschäftspartners? -Bei beiden Varianten kommt man um den Begriff "Tunneling" nicht herum. Doch was genau ist das?

Das Tunneling

{img fileId="47" thumb="y" alt="" rel="box[g]"}Ein Tunnel bezeichnet in der EDV das Übertragen der Daten eines Netzwerkprotokolls, eingebettet in ein anderes Netzwerkprotokoll. Tunnel werden verwendet um gesicherte, verschlüsselte Verbindungen über ungesicherte Computernetze aufzubauen (siehe VPN) oder um Firewalls und andere Sicherheitsmassnamen zu umgehen.

HTTP-Tunneling

Meistens möchte man in der Firma gewisse Protokolle, wie FTP, POP3, usw. verwenden, die von der Firewall geblockt werden. Die Lösung dieses "Problems" besteht in der Verwendung eines sogenannten HTTP-Tunnels.
Ein "Tunnel" kann man sich in etwa so vorstellen, dass z.B. der PC der Firma die Daten ganz nomral über den HTTP Port 80 sendet; die Firewall denkt also es handelt sich um eine ganz normale WWW-Anfrage und lässt die Daten durch. Tatsächlich werden diese aber an einen Tunneling Server gesendet, wo dann die Daten an das ursprüngliche Protokoll weitergeleitet werden; die antwort wird wieder an den Tunnel-Server geleitet und dort über den Port 80 wieder über die Firewall der Firma (diese denkt wiederum, es sei eine ganz normale Antwort auf eine Webanfrage) zum Firmen-PC zurück. Dort werden dann die Daten wieder an das Ursprungsprotokoll gesendet. Also quasi wie ein "Tunnel" unter der Firewall hindurch.

Voraussetzungen um ein HTTP-Tunnel zu "bauen"

  • Ein HTTP-Server muss irgendwo auf einem, ständig mit dem Internet verbunden PC ausserhalb des Firmen Netzwerks laufen/installiert sein (dies kann z.B. der eigene PC zuhause mit Kabel/DSL sein)
  • Auf dem Frimane PC muss ein Tunnel-Client installiert werden
  • Die IP des Tunnel-Servers muss auf dem PC als Proxy-Server angegeben werden

Dann kann man im Tunnel Client für jedes Protokoll ein "Ersatz-Protokoll" angeben, dass dann über den Port 80 zum Tunnel-Server geleitet wird und wieder zurück.
Dazu eignet sich HTTPHost ganz gut.

Fragen rund um das Tunneling

Ist Vorsicht geboten bei der Benutzung eines Tunnels

Ja. Denn offenbar will der admin deiner Firma eben genau nicht, dass du andere Protokolle als die freigegebenen nutzt… 😉
Manchmal ist es aber auch so, dass deine Firma es schlicht nicht für nötig hält Protokolle, die fürs Geschäft nicht gebraucht werden (wie z.B. FTP) in der Firewall freizugeben. In einem solchen Fall bestehen gute Chancen, dass man dir verzeiht. Ist aber die private Nutzung des Internets generell untersagt, würde ich mir gut überlegen so was zu tun… Immerhin kann ein nicht befolgen des Arbeitsvertrages ein Kündigungsgrund sein.

Kann der Firmen-Proxy tracken, was ich tue?

Ja und er wird das sehr wahrscheinlich auch. Obwohl die Anfragen sehr ähnlich wie normale Webanfragen aussehen, wird der Admin mit etwas freier Zeit, oder so ein Typ im Anzug die Logfiles "entschlüsseln" können.

Gefärdet das Tunneling die Sicherheit des Firmen Netzwerk?

Jein; bzw. nur indirekt. Im Prinzip werden ja nur normale Daten übers WWW gesendet, also genauso wie wenn du im Internet surfst und Seiten abrufst. Allerdings kannst du ja dann Programme wie ICQ, Outlook, Kazaa, usw. benutzen. Über diese wird es möglich von aussen Viren auf deinen Firmen PC zu schleusen, ganz wie bei dir zuhause. Es sind also bestimmte Sicherheitsvorkehrungen deinerseits geboten, damit dies nicht passiert.

Related Links

|| Link | Beschreibung
[http://www.htthost.com/|HTTHost] | Die Seite, die gleichzeitig ein excelenter Tunneling-Server und Client zur Verfügung stellt, bietet auch einige Informatiionen über das Tunneling an und für sich
||

Google Techniken

__Google hat sich in den letzten Jahren nicht umsonst zur besten Suchmaschine aller Zeiten gemacht. Die Suchmaschine, die jetzt auch im Deutschen Duden erfasst wurde kann weit mehr als nur nach Webseiten, Bildern und Newsbeiträgen suchen.
Viele kennen einige Tricks, aber praktisch niemand kennt _alle_ Möglichkeiten der Suchmaschine.

Dies hat mich auf den Plan gebracht diesen Bericht zu schreiben und alles mir bekannte zusammenzufassen. -Es werden sicher auch Profis noch das eine oder andere Tool finden, dass sie bisher noch nicht kannten.__

Google als Universal-Suschmaschine

Google kann, einigen bekannt sein dürfte neben Bildern und News auch das Usenet durchsuchen. -Was aber viele nicht wissen: Google kann noch einiges mehr. -Manchmal handelt sich um mehr oder weniger bekannte Techniken, manchmal aber um echt praktische Erweiterungen, die fast niemand kennt und nutzt…
Dies hat mich dazu getrieben diesen Bericht zu verfassen mit allen mir bekannten google suchtechniken.

Google kann Rechnen

{IMG(fileId="42",thumb="y",rel="box[g]",imalign="left",align="left")}{IMG} Und zwar nicht einfach nur banale Rechnungen a la ‚1+2=3‘, sondern auch komplexe arithmetische operationen. -Es reicht die Rechung einfach ins Suchfeld einzugeben, also z.B. {CODE{}}’2(5+3)cos(4)13/7′

. -Google liefert dann das Ergebnis beim klick auf "suchen".

Google als Dolmetscher

{IMG(fileId="43",thumb="y",rel="box[g]",imalign="left",align="left")}{IMG} Einen Text in eine andere Sprache übersetzen lässt sich ganz eifach durch Eingabe des Textes, gefolgt von den Kürzeln der Sprache. Also um z.B. ein deutsches wort ins englische Übersetzen zu lassen genügt die eingabe: {CODE{}}wort de-en

; google zeigt dann als erstes das suchergebnis der Wörterbuchseite www.leo.org an.

Fachbegriffe Nachschlagen

Mal schnell wissen was ein bestimmter Fachjbegriff, oder eine Abkürzung bedeutet?
Mittels vorgehängtem <I>define:</I> kann dies nachgeschlagen werden.
Z.b.: {CODE{}}define:LOL

– Liefert die Erklärung zum Akronym: "LOL".

Film-Infos

Rechtzeitig zur Oscar-Verleihung brachte google ein neues "Film-Tool" heraus, mit denen sich umfassende Infos zu Filmen finden lassen. Der Operator dafür ist <I>movie:</I>
So kann man z.B. über die Eingabe von: {CODE{}}movie:Titanic

reviews zum Film Titanic bekommen; das ist aber noch lange nicht alles was das Tool zu bieten hat, denn man kann auch nach Schauspielern suchen. Die Eingabe von {CODE{}}movie:Johnny Depp

liefert eine Liste mit Filmen in denen Johnny Depp mitgespielt hat.
Google hilft hier sogar das Erinnerungsvermögen wieder aufzufrischen; möchte man Beispielsweise den Film wissen in dem eine rote und eine blaue pille vorkam, tippt man einfach: {CODE{}}movie:red pill blue pill

ein und erhält den Namen des Filmes!
Für die USA gib es sogar noch ein weiteres Feature: Die Eingabe einer Ortschaft, beispielsweise: {CODE{}}movie:New York

liefert die Kinos und Spielzieten für New Yorker Kinos.

Die neue Google Funktion ist im Google Blog vom 23. Februar genau beschrieben unter: http://www.google.com/googleblog/2005/02/google-movies-now-playing.html

Auf Reisen mit google

{IMG(fileId="44",thumb="y",rel="box[g]",imalign="left",align="left")}{IMG} Ja, sogar aktuelle Zugfahrpläne lassen sich mit google suchen, meistens sogar schneller als wenn man zuerst die Seite der Bahn ansurft.
Die eingabe von: {CODE{}}Frankfurt München 13:30

werden alle Zugverbindungen von Frankfurt nach München angezeigt, die ab 13:30 fahren; lässt man die Zeit weg, wird die aktuelle genommen.

Google hilft auch beim Auto Reisen

{IMG(fileId="45",thumb="y",rel="box[g]",imalign="left",align="left")}{IMG} Die Eingabe einer Ortschaft führt zum Stadtplan.

Billig Telefonieren

{IMG(fileId="46",thumb="y",rel="box[g]",imalign="left",align="left")}{IMG} Durch die Eingabe einer Telefon- oder Handy-Nr. kommt man zum aktuell günstigsten call-by-call anbieter.

Nach News suchen

{IMG(fileId="47",thumb="y",rel="box[g]",imalign="left",align="left")}{IMG} Nein, nicht das Usenet, dass man über den Link "groups" bei google erreicht ist hier gemeint, sondern Schlagzeilen aus vielen Weltweiten Zeitungen. -Es reicht das Schlagwort einzugeben, der oberste Treffer beinhaltet die gefunden Schlagzeilen

Sendungs-Verfolgung

{IMG(fileId="48",thumb="y",rel="box[g]",imalign="left",align="left")}{IMG} Man hat ein Packet mit UPS oder FedEX versendet und möchte dieses Tracken. -Ist es nicht mühsam extra zur ups/fedex Seite zu gehen und die Nr. einzugben? -Es reicht diese bei google einzugeben und den obersten Link anzuklicken.

Aktienkurse abfragen

{IMG(fileId="49",thumb="y",rel="box[g]",imalign="left",align="left")}{IMG} Ja, auch das kann google: Durch eingeben der ISIN oder WKN Nummer

Nummernbereiche suchen

Zum Abschluss noch etwas hacking… 😉
Google kann auch bestimmte nummernbereiche durchsuchen, nämlich durch trennen der Start- und Endnummer mit zwei punkten ‚..‘ -Zb. {CODE{}}1..100

sucht nach allen Nummern zwischen 1 und 100.
Dies kann man auch brauchen, wenn man z.B. seine Kreditkartennummer verloren hat und diese mit google wieder finden möchte… g
Die Eingabe von {CODE{}}visa 4356000000000000..4356999999999999

bringt alle Visa-Kreditkartennummern im gültigen Nummern Bereich hervor die sich auf Webseiten befinden.

Nach MP3 Web-Archiven suchen

Immer noch gibt es zahlreiche (versteckte) MP3 Archive. Sofern diese nicht passwortgeschützt sind, lassen sich diese mit Google konfortabel durchsuchen.
Die Suchabfrage:

-inurl:htm -inurl:html intitle:"index of" mp3

liefert immerhin einige 100 Seiten mit MP3s zum Download.
Es lässt sich aber auch gezielt nach einem Titel oder Namen suchen, indem man diesen einfach hinten anhängt:

-inurl:htm -inurl:html intitle:"index of" mp3 "pearl jam"

Übrigens lassen sich anstatt MP3s natürlich auch irgendwelche anderen Dateien, wie z.B. Filme oder Bilder suchen, einfach anstatt "mp3" die Dateiart und anschliessend optional einen Titel mitgeben.

Wenn Mobiltelefone die Melodie erkennen

Hinter dem praktischen Handydienst "Musicfinder" steckt eine ausgeklügelte Technologie.

Von Simone Luchetta

Neulich in einer Bar erregte mitten im Gespräch ein Musikstück, das uns berieselte, meine gesamte Aufmerksamkeit: Wie hiess der Song schon wieder? Es wollte mir einfach nicht einfallen. In schierer Verzweiflung fragte ich meinen Begleiter. Wortlos zückte dieser sein Handy, tippte darauf herum und hielt das Telefon in Richtung Boxen. Was tut der Mensch da? Wenige Sekunden später erhielt er ein SMS: «Das war ‹Loulou› von Stéphane Pompougnac.» Er lächelte triumphierend. Ich war beeindruckt.

Zauberei? Fast. Mein Gegenüber nutzte eine Dienstleistung namens Musicfinder, die Sunrise seit ein paar Monaten mit Directmedia zusammen anbietet. Wer ein Stück, das er oder sie gerade hört, nicht kennt, aber gerne würde, wählt 076 333 66 33, fängt die Musik rund 20 Sekunden mit dem Handy in Richtung Musikquelle auf, bis der Anruf abbricht, und erhält im Nu ein SMS mit den gewünschten Angaben. Eine Abfrage kostet 1 Franken plus Verbindungsgebühr.

Der Dienst ist laut Sunrise «ein durchschlagender Erfolg», Nutzungszahlen bleiben jedoch unter Verschluss. Orange überlegt, ebenfalls einen solchen Service anzubieten, bei Swisscom ist kurzfristig nichts Derartiges geplant. Macht nichts: Auch Swisscom- und Orangekunden können Musicfinder beanspruchen, der übrigens mit allen Handys funktioniert.

Das Erstaunliche ist, dass die Hexerei fast immer klappt. Ob Autechre, Lambchop oder Saint Etienne, Musicfinder erkennt den Song. Passen musste er hingegen bei Franz Ferdinand, an Konzerten, bei Ländlern und Klassiktiteln. Auch selbst gesungene Lieder erkennt er nicht.

Digitale Fingerabdrücke

Was steckt hinter dem Spuk? Hält sich Sunrise irgendwo in Bangalore ein paar Tausend Musik liebende Inder am Fliessband, die für ein Taschengeld die Anfragen per SMS beantworten? Falsch. Die Musikerkennung per Handy basiert auf einer Technologie der britischen Firma Shazam. Diese hat im Londoner Untergrund ein Netz von 80 Rechnern, das rund um die Uhr Anrufe aus der ganzen Welt empfängt. In Deutschland und England bietet die Swisscom-Teilhaberin Vodafone den Dienst an, weiter gibts ihn in Österreich, Griechenland, Italien, Australien und Japan. Während wir die Handys in die Luft halten, schneidet London mit, erstellt einen so genannten digitalen Fingerabdruck des Titels und vergleicht ihn mit einer Datenbank. Eine halbe Minute später kommt das SMS mit der Antwort. Die laufend wachsende Datenbank umfasst momentan 1,7 Millionen Stücke. Ziel ist es, jeden verfügbaren Titel aufzunehmen, von neuen CDs wird der Fingerprint noch vor dem Erscheinen genommen, versichert Shazam.

Das Prinzip des digitalen Fingerabdrucks ist rasch erklärt: Das Programm analysiert das Frequenzspektrum der Musik. Für die Identifizierung zählt nicht nur der zeitliche Ablauf, sondern auch Klangfarbe, Instrumentierung, Tempo und Dynamik eines Stücks. Damit liefert das Programm den einzigartigen Fingerabdruck.

Die Datenbank ist das Kapital von Shazam. Ohne sie ist ein Fingerprint so viel wert wie ein echter Fingerabdruck ohne Verbrecherkartei. Die Firma Gracenote, die mit Philips zusammen in der Musikerkennung forscht, soll laut Website gar über vier Millionen Abdrücke verfügen.

Übrigens: Erkennt Musicfinder einmal ein Stück nicht, ist das ein Frust, das erhaltene SMS ist dafür gratis.

Firewalls

Eine Firewall ist eine logische Vorrichtung, die ein privates Netz vor dem öffentlichen Teil, dem Internet oder aber auch verschiedenen Segmenten im in-ternen Netz voreinander schützt.
Meistens ist so eine Firewall ein eigenständiger PC, der zwischen zwei Netze gestellt wird, demzufolge braucht er auch zwei Netzwerkschnittstellen.

_
                                                |------|_| PC 1
                  <b>_</b><b>_              </b>      |    _
                 /             ___    |--|     |---|_| PC 2
                ( Internet o---|___|---|  |-----|      _
                 <b>_</b><b>_/    Modem   |</b>|     |-----|_| PC 3
                                     Firewall   lokales Netzwerk

Der einzige PC im LAN, der über alle Informationen und Zugang zum Internet verfügt ist die Firewall. Wenn z.B. PC1 ein File aus dem Internet downloaden möchte, wird es immer zuerst auf die Firewall geladen, erst dann kann PC1 auf das File zugreifen. Ein direkter Download auf PC1 ist nicht möglich.

Zwei der meistgebrauchten Firewalls ist die Paketfilter-Firewall und die Pro-xy-Firewall. Eine Filter-Firewall überprüft pausenlos den Netzwerkverkehr und filtert nach definierten Regeln Pakete. Die Regeln werden in einem Konfigura-tionsfile definiert. Je nach dem, wie die Regeln definiert wurden, wird das Paket angenommen oder abgewiesen.

Ist ein Proxy Server in einem Netzwerk angebracht, so dient er zur Verwaltung der herausgehenden Pakete. Dabei wird das sogenannte IP-Masqerading ange-wandt. Es bewirkt, dass jede Workstation, die über den Proxy geht, die IP des Proxys erhält. Somit sind die Workstaions direkt mit dem Proxyserver verbun-den, jedoch nicht mit dem Netz, mit dem der Proxy verbunden ist.

Nicht nur die Funktionalität der Firewall wird unterschieden, auch das Pro-dukt selber. So gibt es Firewalls für Windows wie auch für Linux. Die Windows Produkte heissen Dektop- oder Personal-Firewalls und dienen eher dazu, Nor-malanwender vor Gefahren aus dem Internet zu schützen.
Eigenständige Rechner, die mit einer Linuxfirewall arbeiten, sind schon eher für professionellen Gebrauch geeignet.

Will man sein Computernetzwerk abschotten, muss man sich überlegen, was genau abgeschottet werden muss und wie sicher es sein soll. Dazu gibt es verschie-dene Firewall Strukturen, die zeigen, wo eine Firewall angebracht werden muss und wie z.B. eine Kombination aus zwei Firewalls aussieht.
Der grösste Schwachpunkt bei Filter-Firewalls ist jedoch die ungenaue Defini-tion der Filterregeln. Ist nur eine Regel fehlerhaft definiert, entsteht schon eine Sicherheitslücke, die möglicherweise ausgenutzt werden könnte.

Ein kurzes Wort zum "unsichtbar" Machen von Rechnern

Viele Leute denken, wenn sie eingehende pinq-requests verwerfen, sei der Rechner quasi "unsichtbar". Dies stimmt so nicht, wie folgendes Beispiel zeigen soll:

    1) dein router ist online und reagiert auf pings:

ich pinge dich an -> ein ICMP-echo-request-paket läuft übers internet -> dein router empfängt es und antwortet mit einem ICMP-echo-reply-paket -> das paket wandert über netz zurück zu mir -> ich weiß dein router ist online und wie lange es dauert pakete zwischen den 2 geräten auszutauschen.

2) dein router ist offline:
ich pinge dich an -> ein ICMP-echo-request-paket läuft übers internet -> der router deines providers bemerkt dass du offline bist und sendet mir ein ICMP-destination-unreachable-paket -> ich weiß dass du offline bist

3) dein router ist online, reagiert aber nicht auf pings
ich pinge dich an -> ein ICMP-echo-request-paket läuft übers internet -> dein router empfängt, aber verwirft es -> ich bekomme gar keine antwort -> ich weiß, dass du online bist, aber pings unterdrückst 😉

Hinweis: Dieses Beispiel stammt von: http://www.pcwelt.de/forum/windows-nt-2000/219687-icmp-ping.html

IT Security

Da das Thema IT Security sehr wichtig ist, hab ich ihm einen eigenen Bereich gewidmet.
<---TOC--->

Was versteht man unter IT Security?

In den letzten Jahrzehnten hat die Nutzung von Computern stetig zugenommen. Begonnen von us-amerikanischen Militäreinrichtungen über Universitäten und öffentlichen Behörden ist heute jedem in den Industrieländern die Welt der Computer offen. Doch damit hat sich auch der Bedarf an Sicherheit erhöht, der v.a. mit der Nutzung des Internets, und damit die weltweite Vernetzung, drastisch gestiegen ist.

Unter IT-Security versteht man nicht nur Hacker-Angriffe und Virenversand sondern allgemein die Forderung alle Massnahmen zur Garantie der Vertraulichkeit (Zugriff und Manipulation nur für Berechtigte), Verfügbarkeit (Sicherung der berechtigten Zugriffsmöglichkeit auf Datenverarbeitungssysteme), Integrität (Garantie von korrekten und vollständigen Daten, vor unberechtigtem Zugriff schützen) und Originalität (Authentizität des Absenders sicherstellen) von Daten.

SSL – Sicherheit im Internet

Einleitung

Secure Sockets Layer (SSL) stellt eine Entwicklung dar, die privacy auf dem Internet sicherstellt. Es erlaubt einer Client-Server Verbindung sicher zu kommunizieren.
Es wurde entwickelt, um
privacy zwischen 2 kommunizierenden Partnern (client-server) sicherzustellen den Server und eventuell den Client zu authentifizieren

Das SSL-Protokoll ist unabhängig von der Applikation, was eine Flexibilität und gute Akzeptanz sicherstellt. Sogenannte higher level -Protokolle (HTTP, FTP, TELNET) können über dem SSL-Protokoll stehen, SSL fungiert dann als Interface zwischen Applikation und Übertragung, das die Daten verschlüsselt. Einerseits erlaubt SSL das Aushandeln eines Verschlüsselungsalgorithmus, andererseits kann das Protokoll einen Server authentifizieren bevor die Daten gesendet oder empfangen werden können. SSL bietet eine sogenannte channel security an, die 3 wesentliche Möglichkeiten haben:
<UL><LI>Der Übertragungskanal ist private: Mittels Handshake wird ein secret key ausgehandelt, der dann für die Übertragung aller Nachrichten verwendet wird.</LI><LI>Der Übertragungskanal ist authentifiztiert: Während der Server immer authentifiziert ist, ist dies beim Client nicht immer der Fall </LI><LI>Der Übertragungskanal ist Verlässlich: Die Übertragung beinhaltet eine Überprüfung</LI></UL>

Handshake

Hier geschieht das Aushandeln der Kommunikation und der Verschlüsselung. Dies geschieht in 2 Phasen

Phase 1

Hier wird die Kommunikation zwischen dem Client und dem Server ausgehandelt. Dies geschieht über das Senden und Empfangen von sogenannten Hello-Nachrichten. Der Client initiert den Verbindungsaufbau mittels Senden von CLIENT-HELLO. Der Server empfängt diese Nachricht und sendet seinerseits ein SERVER-HELLO. Aus dieser Information wissen die Partner nun, ob ein neuer Master Key für die Verschlüsselung gebraucht wird oder ob für die beiden Partner schon einer besteht.
Ist der Master Key schon vorhanden, so kann mit der 2. Phase begonnen werden, andernfalls wird dieser Key vom Server generiert (nur dieser kennt zusammen mit dem Public Key den Master Key) und der Client mittels SERVER-VERIFY davon verständigt.

Phase 2

Hier geschieht die Authentification des Clients (Der Server wurde ja schon in der ersten Phase vom Client authentifiziert).
Möchte der Server etwas von einem Client, so sendet er ein request. Hat der Client die benötigte Information, so sendet er diese an den Server; andernfalls kommt es zu einem Fehler, den an den Server gesendet wird. Für die Authentifikation eines Partners durch einen anderen wird eine spezielle Nachricht (finished) gesendet. Nun muss der sendende Partner seinerseits auf eine finished Nachricht warten, bevor das Handshake Protokoll fertig ist. Die Daten der Applikationen können jetzt übertragen werden.