Kategorie: Technik

Darstellung von IP-Adressen 👍 👎

Vorweg sei erwähnt, dass ich mich im weiteren Verlauf des Artikels der Übersicht wegen auf IPv4 beschränken werde. Das vorgestellte Konzept funktioniert prinzipiell jedoch auch bei IPv6 in ähnlicher Form.

Jeder hat bestimmt schon einmal IP-Adressen der Form "127.0.0.1" (lokale Adresse), "192.168.1.1" (private Adresse) oder "80.78.81.19" (öffentliche Adresse) gesehen. Das ist eine für den Menschen bequeme Schreibweise, jedoch nur bedingt zur automatisierten Verarbeitung (z. B. für Vergleiche bei Sortierungen) geeignet.

Eine IPv4-Adresse besteht aus vier Segmenten, die jeweils 8 Bit (≙ 4 * 1 Byte = 32 Bit, bzw. 4 Byte) umfassen. Insofern verwendet eine IPv4-Adresse dieser Schreibweise ("dotted decimal") eine Art Stellenwertsystem wie unser gebräuchliches Dezimalsystem, wobei die einzelnen Stellen jedoch mehrere Ziffern umfassen und daher durch ein Trennzeichen (in diesem Fall ein ".") getrennt werden.

Die Wertigkeit der Stelle einer Zahl unseres Dezimalsystems ergibt sich bekanntermaßen aus dessen Position:
Stellenwertsystem von Dezimalzahlen
01020304050607
  1 =                     1 * 100  5 =                     5 * 100
10 = 1 * 101 + 0 * 100 15 = 1 * 101 + 5 * 100
123 = 1 * 102 + 2 * 101 + 3 * 100
Ähnlich verhält es sich nun bei einer IPv4-Adresse, jedoch mit entsprechend anderen Wertigkeiten:
Stellenwertsystem von IP-Adressen
0102030405
127.  0.  0.  1 = 127 * 224 +   0 * 216 +   0 * 28 +   1 * 20 = 2 130 706 433
192.168. 1. 1 = 192 * 224 + 168 * 216 + 1 * 28 + 1 * 20 = 3 232 235 777
82.165. 40.206 = 82 * 224 + 165 * 216 + 40 * 28 + 206 * 20 = 1 386 555 598
In Anbetracht dieser Tatsache können wir einer IPv4-Adresse also einen ein-eindeutigen ganzzahligen Wert zuordnen, indem wir – analog zu unserem Dezimalsystem – die Summe der einzelnen Stellen bilden. Durch diese Darstellungsweise sind nun beispielsweise sehr einfach "größer"- und "kleiner"-Relationen zu ermitteln.

Die zu dieser Thematik passende Eigenschaft Address der IPAddress-Klasse des .NET-Frameworks ist als veraltet gekennzeichnet. Solltet ihr diese Funktionalität dennoch benötigen, so lässt sich dies selbstverständlich auch schnell selbst schreiben – wobei zu berücksichtigen gilt, dass das nur für IPv4-Adressen in dieser Form verwendet werden kann:
Vorgehensweise zur ganzzahligen Darstellung von IPv4-Adressen
010203040506
IPAddress ipAddress = IPAddress.Parse("80.78.81.19");byte[] segmentList = ipAddress.GetAddressBytes();
long ip2long = Convert.ToInt64((segmentList[0] * Math.Pow(2, 24)) + (segmentList[1] * Math.Pow(2, 16)) + (segmentList[2] * Math.Pow(2, 8)) + segmentList[3]); // – oder auch -long ip2long = (((long) segmentList[0] << 24) | ((long) segmentList[1] << 16) | ((long) segmentList[2] << 8) | (long) segmentList[3]);
PHP bietet hier beispielsweise die Funktion ip2long (und deren Gegenstück long2ip) an.

Suchmaschinenoptimierung 👍 👎

Vor einer Weile habe ich ein Angebot zur Suchmaschinenoptimierung (SEO, Search Engine Optimization) meiner Projektseite für die dt. Übersetzung der Lua-Referenz erhalten. Daran wird eigentlich schon recht klar, dass es hier nur wenig um die eigentlichen Inhalte der Seite geht. Die meisten Besucher kommen nämlich – naheliegenderweise – über den offiziellen Link der Lua-Webpräsenz und ebenfalls sehr viele bereits über Suchmaschinen. Für die breite Masse dürfte das Angebot dieser Seite nicht interessant sein, so dass eine weitere Verbreitung gar nicht notwendig ist. Werbung soll es dort selbstverständlich ebenfalls auch zukünftig nicht geben.

Es gibt auf jeden Fall sinnvolle Methoden zur "Suchmaschinenoptimierung" (wobei ich hier breiter fassen würde auf "Optimierung zur automatisierten Verarbeitung der Inhalte"). Dazu gehören Metadaten und eine semantische Struktur des Quelltextes der Webpräsenz. Dies können Suchmaschinen beispielsweise zur Darstellung eines passenden Titels und einer treffenden Kurzbeschreibung verwenden.

Ein nicht unerheblicher Anteil der Branche beschäftigt sich jedoch damit, zweifelhafte "Linkfarmen" aufzubauen, nicht im Zusammenhang mit dem eigentlichen Thema des Auftritts stehende Verknüpfungen herzustellen oder gleich direkt schlichten Spam zu betreiben, was trotz der Bemühungen großer Suchmaschinen-Anbieter dennoch ab und an zu völlig unpassenden Ergebnissen zu einer Recherche führt. Leider scheint man davon mit praktisch keinem technischen Fachwissen und wenig Aufwand sogar recht gut leben zu können, wenn man sich die Angebote einmal genauer ansieht. Die tatsächliche Auswirkung derartiger Angebote ist teilweise ebenfalls fragwürdig. Zudem finde ich es schade, dass es dadurch inhaltlich wirklich interessante Seiten schwerer haben, gefunden zu werden.

Mein einfacher, kostenloser Tipp an alle Betreiber von Webpräsenzen: Sorgt für ansprechend und sorgfältig aufbereitete Themen, dezente und vor allem passende Werbung (wenn ihr ein Thema toll auf euren Seiten beschreibt, dürft ihr darauf sicherlich bei den meisten Blogs oder Foren verweisen, wenn es um dieses Thema geht Smiley: smiling) und der Rest ergibt sich meist von alleine, insbesondere in Zeiten von Facebook, Twitter und ähnlichen Plattformen dauert das auch gar nicht mehr so lange.

TLDs ohne Ende 👍 👎

Ich möchte mich an dieser Stelle gar nicht groß über die neuen TLDs auslassen, deren Nutzen mir großteils ohnehin fraglich erscheint – wahrscheinlich wird das zu großen Teilen lediglich in Geldmacherei münden.

Aber auch die bestehenden TLDs haben bereits ihre Tücken und davon nicht zu knapp. Wie einige von euch sicher bereits wissen werden (→ zu meiner Person), arbeite ich als Softwareentwickler bei einem ISP. Das bedeutet wir gehören zu denen, die Endkunden und auch Unternehmen Domains zur Registrierung anbieten und deren Betreuung übernehmen.

Natürlich bleibt es da nicht aus, dass man auch Anwendungen entwickelt, die auf die Systeme anderer Registrare und Registrierungsstellen (z. B. DENIC für .de-Domains) zugreifen müssen. Nun befindet man sich im IT-Sektor ja eigentlich in einer – zumindest sollte man das meinen – strukturierten Umgebung und das trifft auch auf vieles zu, leider aber nicht auf die Schnittstellen und Formate bei Domain-bezogenen Abfragen.

Wenn man sich beispielsweise daran machen möchte, Whois-Abfragen für diverse Top-Level-Domains ("TLD", z. B. "net") zu implementieren, so hat man es tatsächlich bei den meisten Domainendungen mit völlig unterschiedlichen Ausgaben zu tun, die es anschließend zur eigenen Verarbeitung erst einmal auf ein einheitliches Format zu bringen gilt. Zugegebenermaßen hätte ich von ICANN und Co. an dieser Stelle deutlich mehr Initiative für ein einheitliches Format erwartet, da der aktuelle Zustand die Wart- und Verarbeitbarkeit der Daten außerordentlich und wie ich finde auch völlig unnötig erschwert.

Zu allem Überfluss sind auch noch die Anforderungen und Formalien bei verschiedenen TLDs teilweise völlig unterschiedlich. Das bedeutet, dass man je nach Domainendung auch noch zusätzliche (meist länderspezifische) Daten benötigt. Das beginnt bei der Angabe von Nameservern, geht über Einschränkungen im Domainnamen und endet (nicht wirklich) bei den Angaben zur Person des Inhabers einer Domain.

Domaingrabbing 👍 👎

Wer schon einmal eine Domain für ein neues Projekt gesucht hat, kennt das Problem natürlich: Die gewünschte Domain ist leider bereits vergeben. Dann denkt man sich, da war wohl – offensichtlich – jemand schneller, möchte es sich mal ansehen und sieht, was irgendwie klar war: Die Domain ist "geparkt", mit zumindest gefühlten 500 Links versehen und steht zum Verkauf.

D. h. es schaltet sich hier ohne Not und Auftrag jemand zwischen Registrar und Kunde, um auch noch daran mitzuverdienen. Wobei "verdienen" hier mehr als fraglich ist, es wird schließlich keinerlei Mehrwert erbracht, sondern im Gegenteil völlig unnötiger Umstand verursacht.

Letztlich nichts Neues, aber das nervt mich immer wieder und wollte mal hier festgehalten werden. Leider habe ich auch bisher keine praktikable Idee, wie sich das verhindern lässt. Nicht zuletzt ist natürlich problematisch, dass man als Domain-Anbieter schließlich erst einmal daran verdient, wenn hunderte oder gar tausende Domains "einfach nur so" registriert werden.

Linux oder Windows 👍 👎

Vorweg sei erwähnt, dass ich mit diesem Beitrag nicht vorhabe, eine hitzige Debatte zu (Un-)Gunsten eines bestimmten Systems zu starten. Davon gibt es mit gewisser Regelmäßigkeit wohl bereits genug im Internet. Dennoch stellt sich in meinem Beruf natürlich oft die Frage, was denn nun zum Einsatz kommen soll. Nicht zuletzt sorgen auch häufige Fragen von Bekannten und Freunden oftmals für entsprechende Diskussionen. Grund für diesen Beitrag ist hauptsächlich der, dass ich mit meist verwundertem Blick gefragt werde, warum ich denn einen Windows-Server für meine Projekte einsetze und kein Linux, wie das so "üblich" sei.

Ich hatte vor einigen Jahren tatsächlich sogar einen dedizierten Debian-Server. Ich war mit diesem auch durchaus zufrieden, bin jedoch primär Softwareentwickler und kein Systemadministrator. Wer sich praktisch täglich mit Linux-Distributionen beschäftigt, wird also sicherlich anderer Meinung als ich sein und das finde ich auch völlig legitim. Ich persönlich konnte mich jedoch nie damit anfreunden, zur Einrichtung einer neuen Webpräsenz einige Konfigurationsdateien bearbeiten und Pakete installieren zu müssen, was bei mir mit gewisser Häufigkeit auch mit Neukompilierungen verbunden war. Wenn man dann ein System nicht genau kennt, kann so etwas durchaus frustrierend werden. Und nicht zuletzt gefährlich, wenn es um die Sicherheitsaspekte geht.

Ich verwende meinen Server hauptsächlich zur Veröffentlichung eigener Projekte, definitiv aber nicht für Massenhosting. IIS unter Windows Server bietet mir hierfür eine äußerst komfortable Oberfläche zur Konfiguration dieser Anwendungen, die ich meist direkt aus Visual Studio veröffentliche ("Web Deploy") oder aus NetBeans per FTP übertragen lasse. Entsprechende Konten und Berechtigungen kann ich mit wenigen Mausklicks und ein paar Eingaben einrichten. Sicherlich gibt es unter Linux entsprechende Befehlsketten, um so etwas ähnlich schnell zu erledigen. Ich persönlich möchte mich damit aber ehrlichgesagt nicht ganz so weit beschäftigen. Ich möchte meine Anwendungen auf einer soliden Basis veröffentlichen können und genau das bietet mir Windows Server in jeglicher Hinsicht. Weitere PHP-Versionen, unabhängig für jedes Projekt zu konfigurieren, sind dabei ebenso unkompliziert einzurichten, wie ein FTP-Account oder eine komplett neue Webpräsenz. Da ich sehr viel mit C# (auch in Verbindung mit ASP.NET) arbeite, ist die Wahl eines Windows-Servers ebenfalls naheliegend.

Ich setze privat Windows 7 ein und kann glücklicherweise auch im Büro mit Windows arbeiten. Wir hatten dort ein längeres "Experiment" mit Debian und Fedora für die Arbeitsplatzrechner durchgeführt, welches jedoch eher mäßig verlief. Kleinigkeiten, bei denen ich unter Windows sofort die Lösung weiß, sind mir unter Linux-basierten Systemen einfach nicht geläufig. Natürlich könnte ich mir dieses Wissen aneignen, aber wie bereits erwähnt ist das nicht unbedingt mein Interessensbereich. Die Produktivität war dementsprechend eher gering, da wir uns vor diversen Arbeiten erst einmal um das System selbst kümmern mussten, statt um die eigentlichen Projekte.

Sicherlich ist das nun kein Eintrag, der zur allgemeinen Erleuchtung beiträgt. Ich wollte jedoch einmal meine Motivation erläutern, wieso ich persönlich Windows anderen Systemen vorziehe. Das liegt selbstverständlich nicht daran, dass ich diese schlecht finde oder es gar tatsächlich wären. Ich bin jedoch mit Windows aufgewachsen und bin sehr gerne bereit, einen gewissen Betrag dafür zu investieren, wenn ich dafür stundenlange Zusatzarbeit vermeiden kann. Sicherlich ist Windows auch nicht für jeden Bereich zweckdienlich, das muss es aber ja auch gar nicht. Es gilt wie so oft die Situation zu analysieren und das für den Zweck beste Mittel zu wählen. So wird man vielleicht Kunden, die oft auch entsprechende Umgebungen gewohnt sind, möglicherweise auf einen Debian-Server legen, wogegen die eigene Firmenanwendung für Reseller oder ein bestimmtes Portal auf einem Windows-Server veröffentlicht wird. Man hat schließlich die Wahl.

Ich persönlich verfolge natürlich entsprechende Diskussionen in Foren des Öfteren (sofern sie nicht zu sehr in Unsinn ausarten). Mir fällt dabei oft auf, dass manche Teilnehmer mit Sachen argumentieren, die mir zuletzt aus Windows XP bekannt sind. Nicht jedoch unter Windows 7 oder Windows Server 2008 R2, die ich einsetze. Insbesondere ein ehemaliger Arbeitskollege, der einige Jahre Weiterbildungen für Administratoren in Microsoft-basierten Netzwerkumgebungen durchgeführt hat, konnte mir einige Details näher bringen, die man als durchschnittlicher Anwender von Windows meist gar nicht weiß und vermissen könnte, wenn man sie nicht findet.

Ich denke also, dass die meisten Systeme ihre spezifischen Stärken (und Schwächen) haben, die es für jedes Vorhaben abzuwägen gilt. Um Gerüchten vorzubeugen: Dass ich nichts zu Mac geschrieben habe liegt im Übrigen hauptsächlich daran, dass ich damit noch deutlich weniger Erfahrung als mit Linux habe und dementsprechend nicht sehr viel dazu sagen kann.

12

Projektverweise

Kategorien / Archiv  |  Übersicht RSS-Feed

Schlagworte

Suche