Dank RIPE NCC finden Ihre IP-Pakete ihr Ziel

Das RIPE NCC, eine von weltweit fünf RIRs, verwaltet die IP-Adressen hauptsächlich im eurasischen Raum. Dazu gehören beispielsweise Länder der ehemaligen Sowjetunion und des mittleren Ostens. Damit erfüllt das RIPE NCC ähnliche Aufgaben wie die IANA und erhält auch von dort IP-Adressbereiche zugeteilt. Anders als die ICANN ist es nicht für Domain-Registrierung und DNS Server zuständig.

Was ist das RIPE NCC genau?

Das RIPE NCC erfüllt die Funktion einer „Regional Internet Registry“, abgekürzt RIR. Die IANA delegiert seit Anfang der 1990er-Jahre die Verwaltung von IP-Adressbereichen an unabhängige Organisationen, jeweils für einen bestimmten geographischen Raum, grob orientiert an den Kontinenten. Wenn Sie etwa als ISP in Deutschland ganze Netze öffentlich zugänglicher IP-Adressen benötigen, ist nicht ICANN/IANA sondern das RIPE NCC der richtige Ansprechpartner. Das gilt aber auch für Grönland, obwohl es zum amerikanischen Kontinent gehört. Die Zuständigkeit bezüglich der Tätigkeit leichter zu erfassen.

Ist das RIPE NCC nur für IP-Adressen zuständig?

RIRs befassen sich primär mit der IP-Adresse und der damit verwandten Autonomous System Number (ASN), nicht aber mit einem Domain-Namen, obwohl dieser über den DNS Server mit einer IP-Adresse verknüpft ist. Als entscheidender Unterschied sind IP-Adresse und ASN für das Routing im Internet nötig. Das heißt, sie regeln den Transport von Datenpaketen. Sie geben Aufschluss, welcher Weg über welche Router ein IP-Paket ans Ziel führt. Dagegen ist der Name einer Domain für den menschlichen Nutzer gedacht. Ein FQDN wie www.biteno.de ist leichter zu merken als ein numerischer Wert. Letztendlich ist es gerade der Zweck des Domain Name Systems, Domain-Namen über DNS Server mit der zugehörigen IP-Adresse zu verknüpfen, die der Router benötigt.

Diese Nebenaufgaben erfüllt das RIPE NCC

Neben seiner Hauptaufgabe bietet das RIPE NCC, wie die anderen RIRs, Information und Weiterbildungsgangebote für seine Mitglieder. Das sind vor allem ISPs, Organisationen der Telekommunikationsbranche, Regierungs-, Forschungs- und Bildungseinrichtungen sowie größere Unternehmen. Prinzipiell können Sie aber auch als Privatperson Mitglied werden, wenn Sie sich an der Weiterentwicklung des Internets beteiligen wollen. Als weitere Nebenaufgabe leistet das RIPE NCC technische und administrative Unterstützung für RIPE.

Wie ist das RIPE NCC organisiert?

Ähnlich wie beim Duo ICANN/IANA gibt es beim RIPE NCC ebenfalls eine Zweiteilung. RIPE ist ein europäisches, nicht institutionalisiertes, offenes Forum für die technische Entwicklung des Internets. Dieses hat 1992 das RIPE NCC als Organisation nach niederländischem Recht gegründet, die als RIR fungiert. Dieser Zusammenhang macht auch den Namen RIPE NCC verständlicher, der sich aus einem französischen und einem englischen Teil zusammen setzt: die Abkürzung steht für Réseaux IP Européens Network Coordination Centre. Anders als bei ICANN und IANA ist aber das institutionalisierte RIPE NCC die verantwortliche Stelle für die Vergabe von IP-Adressblöcken und ASNs. Im Gegensatz zur ICANN sind weder RIPE noch RIPE NCC für Domain Registrierung und DNS Server verantwortlich. Hier wird ausschließlich die Funktion des Internets als Datentransportmittel gesichert. Warum sind dafür Registraturen wie das RIPE NCC notwendig?

IP-Adresse und ASN, Domain und DNS Server, wofür brauchen Sie was?

Wenn Sie beispielsweise für den Abruf einer Webseite die Domain der URL über einen DNS Server nach der IP-Adresse auflösen, erhalten Sie eine eindeutige Adresse im Internet, an die Sie Ihre Anfrage schicken können. Für die effiziente Verarbeitung setzt sich diese aus einer Netzwerk- und einer Host-Adresse zusammen. Letztere ist nur im LAN mit der gegebenen Netzwerkadresse interessant, denn sie identifiziert genau eine Netzwerkschnittstelle darin. Im Beispiel ist das der DNS Server für die Adressauflösung der Domain und der Webserver für den Seitenaufruf. Für das Routing im WAN, das die Start- und Zielnetze verbindet, reicht die Netzwerkadresse. Das reduziert den Aufwand bei den Routern.

Was sind Netzwerk- und Host-Teil einer IP-Adresse?

Bei der Einführung des Internet Protokolls besteht die Netzwerkadresse aus den acht höchstwertigen Bits der IP-Adresse. Damit sind aber nur 256 Netze möglich, mit jeweils über 16 Millionen Hosts. Viel zu wenige, aber auch zu große Netze für ein wachsendes Internet aus zunehmend kleineren Organisationen. Die IANA teilt daher den IP-Adressraum zunächst in Klasse A, B, und C auf, mit 8, 16 und 24 Bit langen Netzwerkadressen. Die damit möglichen über 500 Millionen Class-C-Netze bieten jeweils 254 Hostadressen. Das ist für viele Organisationen zu wenig und die 65.534 der Klasse B zuviel. Daher gibt es vor der Einführung von IPv6 drei weitere, sich ergänzende Lösungsansätze, um die Erschöpfung des IP-Adressraums hinauszuzögern: Subnetting, Classless Inter-Domain Routing (CIDR) und Autonomous Systems (AS). Letztere fassen IP-Adressbereiche für das WAN-Routing zusammen. Die betroffenen Router informieren sich darüber eigenständig mittels Border-Gateway-Protokoll (BGP). Wie beim DNS Server ist damit eine Software für die automatische Verteilung der Daten zuständig.

Warum delegiert die ICANN die Verwaltung des IP-Adressraums an RIRs?

Grund für die Einführung der RIRs ist, neben dem zunehmende Verwaltungsaufwand für IANA und später ICANN, die größere Nähe zu den Nutzern des IP-Adressraums, das Fehlen einer internationalen Finanzierung der IANA, die im Gegensatz zur ICANN keine Organisation ist.

Das Internet funktioniert durch ICANN und IANA

ICANN und IANA legen die Namen und Nummern fest, die den Datenreisenden ans Ziel bringen. Gibt es zwei Organisationen? Nein, die IANA ist eine Funktion, die ICANN eine gemeinnützige Organisation, die seit 1999 diese Funktion erfüllt. Bis 2016 im Auftrag und unter Aufsicht der US-Regierung. Lesen Sie hier, was genau sich hinter den Begriffen ICANN und IANA verbirgt.

Wer und was ist die IANA?

Die IANA ist für die Zuordnung grundlegend wichtiger Bezeichner im Internet verantwortlich, aber keine Organisation. Den Grund dafür finden Sie tief in der Internethistorie. Die Geschichte der IANA beginnt mit Jon Postel, einem der bedeutendsten Internetpioniere. Am Informatikinstitut der University of South California in Los Angeles (USC-ISI), mit Internetforschung beschäftigt, stellt Postel 1972 eine Liste der Portnummern zusammen. Durch die Pflege dieser und ähnlicher Datenbanken wird Postel zur Internet Assigned Numbers Authority und auch als solche im Netz bekannt. Die zunehmende Bedeutung des Internets führt 1988 zur Formalisierung der IANA-Funktion. Das geschieht in Form eines Staatsvertrags zwischen der DARPA, der Forschungs- und Entwicklungseinrichtung des amerikanischen Verteidigungsministeriums, und dem USC-ISI. Gut zehn Jahre später, zum Jahresbeginn 1999 wird die ICANN als gemeinnützige Gesellschaft mit der IANA-Funktion betraut, bis 2016 noch unter der Kontrolle der US-Regierung.

Wer und was ist die ICANN?

Seit dem 1. Oktober 2016 ist die ICANN eine internationale gemeinnützige Gesellschaft aus mehreren Interessengruppen. Die Entscheidungsfindung erfolgt von unten nach oben, auf Konsensbasis. Das entspricht der üblichen Vorgehensweise im Internet, vor allem bei der technischen Entwicklung. Die Gründung der ICANN geht auf einen Vorstoß der US-Regierung zurück. Diese gab Anfang 1998 ihre Absicht bekannt, die IANA-Funktion zu privatisieren. Inkorporiert ist die ICANN seit dem 30. September 1998, mit Jon Postel als erstem CTO, der aber bereits im darauffolgenden Oktober verstarb.

 Ist die ICANN/IANA für den Internetnutzer wichtig?

Die Bedeutung der IANA, respektive ICANN zeigt sich gerade darin, dass Sie als einfacher Internetnutzer kaum mit dem in Berührung kommen, was sie verwaltet. Ein Beispiel. Wenn Sie eine Webseite aufrufen ist es technisch notwendig, die IP-Adresse und die Portnummer desjenigen Webservers zu kennen, der diese Seite vorhält. Dabei identifiziert die IP-Adresse einen einzelnen Netzwerkknoten im Internet. Im Beispiel kann das eine Netzwerkschnittstelle in einem Server des betreffenden Webhosters sein. Die Portnummer benennt nun einen spezifischen Dienst auf diesem Computersystem, hier den Webserver-Prozess.

Wie hilft die ICANN/IANA beim Surfen im Internet?

Weil das Hypertext Transport Protokoll HTTP bei der IANA mit der Standardportnummer 80 registriert ist, brauchen Sie diese in der URL normalerweise nicht angeben. Sie können es aber, indem Sie einen Doppelpunkt, gefolgt von der Portnummer, hinter dem FQDN (Fully Qualified Domain Name) beziehungsweise der IP-Adresse in der URL notieren, zum Beispiel http://www.biteno.de:80/. Auch die IP-Adresse brauchen Sie dank IANA/ICANN nicht zu kennen. Sie liefert der DNS Server, der für die Domain zuständig ist. Diese Information ermitteln Sie über eine rekursive Suche, die am rechten Ende des FQDN beginnt, der Top-Level Domain. Ein DNS Server der Rootzone liefert beispielsweise die DNS Server des DENIC als zuständig für die Domain „de“. Wie das RIPE NCC für die IP-Adresse ist das DENIC in Deutschland dafür verantwortlich, der Sie jede hier registrierte Domain über einen DNS Server mit einer IP-Adresse verknüpfen können.

Wofür sind IANA und ICANN im Einzelnen verantwortlich?

Die IANA koordiniert zunächst die Verwendung dreier Einheiten, die für das Funktionieren des Internets elementar wichtig sind: die IP-Adresse, die Domain und das Protokoll, gegebenenfalls mit der zugehörigen Portnummer. Seit 2011 pflegt sie auch die globale Zeitzonen-Tabelle. Bei der IP-Adresse beschränkt sich die IANA vornehmlich auf die Festlegung der Adressbereiche und der Zwecke, für die sie verwendet werden. Die weitere Verwaltung delegiert sie im Wesentlichen an Regionale Internet Registrare (RiR) wie das RIPE NCC. Im Bereich des DNS beschränkt sich die Zuständigkeit der IANA auf die Daten der Root-Zone. Für die entsprechenden DNS Server ist seit 1998 die ICANN zuständig, nachdem die Kontrolle seit 1993 beim InterNIC und dem Privatunternehmn Network Solutions lag. Da die ICANN seit 1999 die IANA-Funktion ausübt, sind die Aufgaben der IANA ebenfalls ihre eigenen.

Eine Domain registrieren

Als normaler Internetnutzer brauchen Sie keinen direkten Kontakt, außer wenn Sie sich über das Programm ICANN-at-Large an dieser Internet-Verwaltung beteiligen wollen. Die IP-Adresse, die Sie für Ihren Internetzugang benötigen, teilt Ihnen Ihr Provider zu. Auch den DNS Server, der die Daten Ihrer Domain vorhält, verwaltet nicht die ICANN sondern Ihr Webhoster. Die delegiert weitgehend die Verantwortung, beispielsweise an das RIPE NCC oder an nationale Institutionen, die für die DNS Server der jeweiligen länderspezifischen Top-Level Domain (ccTLD) zuständig sind. Auch die IP-Adressblöcke, die Provider oder größere Firmen in Deutschland eigenverantwortlich nutzen, teilt das RIPE NCC zu. Weitere Informationen zum RIPE NCC finden Sie in einem eigenständigen Artikel.

Kritik – was ist dran?

Ein gängiger Kritikpunkt an IANA und ICANN ist seit 2016 ausgeräumt, die Abhängigkeit von der amerikanischen Regierung. Sie war aber auch für die IANA ein Streitobjekt und eine Ursache der DNS Wars in den 1990er Jahren. Das Domain Name System ist eine globale, verteilte Datenbank, das über die DNS Server vor allem die Zuordnung einer Domain zu einer IP-Adresse ermöglicht. Auch der ebenfalls kritisierte Vorstoß der IANA zur Einführung neuer Top-Level Domain (TLD) Einträge diente dazu, die Kontrolle über die zentralen DNS Server auf eine breitere Basis zu stellen.

VLAN – Vom Nutzen der Segmentierung im lokalen Netzwerk

VLAN ist ein Begriff aus der modernen IT Technologie. Ein VLAN ist ein Virtual Local Area Network, also die virtuelle – bzw. logische, im Gegensatz zur physikalischen – Umsetzung eines lokalen Netzwerks. VLANs dienen hauptsächlich der Segmentierung von lokalen Netzwerken. Die Segmentierung kann aus verschiedenen Gründen notwendig werden und wird technisch auf den Switches, die für die Vernetzung eingesetzt werden, umgesetzt. Im Gegensatz zum herkömmlichen geswitchten Netzwerk können beim Einsatz von VLANs nicht alle Geräte an allen Switchports direkt miteinander kommunizieren. Aus diesem Grund ist der Einsatz eines Routers bzw. einer Firewall zur Verbindung von VLANs erforderlich.

Welche Gründe sprechen für den Einsatz von VLANs?

Ein LAN, zum Beispiel in Unternehmen oder Behörden, kann in seiner modernen Ausprägung sehr groß werden und eine Vielzahl verschiedener Dienste auf Basis von Netzwerkpaketen ermöglichen. Bei der Konzeptionierung und beim Ausbau eines lokalen Netzwerks müssen verschiedene Aspekte berücksichtigt werden. Besonderen Wert wird auf die Sicherheit und die Stabilität gelegt.

Zu Beginn der Zeiten des Ethernets wurden sensible Teile eines Netzwerkes physisch voneinander getrennt. Dieses Verfahren erhöhte die Sicherheit zwischen den Netzwerkteilen und die Netzwerklast der einzelnen Teile war niedriger als in einem alles umspannenden Netzwerk. Die Trennung erfolgte durch den Einsatz mehrerer, meist unmanaged Switches für die einzelnen Segmente.

In modernen Unternehmensnetzwerken und zunehmend beim Einsatz im Heimnetz kommen managed Switches zum Einsatz. Diese sind geringfügig teurer, ermöglichen im Gegenzug eine Vielzahl an Konfigurationsoptionen. Mittels Webinterface im Browser oder über die Kommandozeile (CLI – Command Line Interface) stehen viele Funktionen zur Verfügung.

Sicherheit

Die logische Trennung von lokalen Netzwerken kommt aus verschiedenen Gründen zum Einsatz. Hauptgrund war die Erhöhung der Netzwerksicherheit, was heute durch verbesserte Angriffstechniken weniger zutrifft. Angreifern wird der Zugriff auf Daten und Geräte in unterschiedlichen Subnetzen zumindest erschwert. Durch eine Firewall zwischen den Segmenten lässt sich der Zugriff gut steuern.

 

Performance

Durch die Segmentierung mittels VLAN lassen sich zeitkritische Daten vom Rest des Datenverkehrs trennen. In einem VLAN können Daten für Telefonie, Videostreaming oder Steuerungsdaten für Maschinen unabhängig vom gesamten Datenaufkommen mit garantierten Lauf- und Antwortzeiten übertragen werden. Mittels QoS (Quality of Services – Priorisierung bestimmter Datentypen) kann die Perfomance auch über geroutete Verbindungen in andere VLANs oder über das Internet garantiert werden.

Lastverringerung

Durch die Segmentierung eines großen Netzwerkes in VLANs wird das gesamte Datenaufkommen im Netzwerk reduziert, da Broadcasts nur jeweils in ihrem Subnetz verbreitet werden. In einem großen Netzwerk würden alle Broadcasts der Geräte über das gesamte Netzwerk geflutet werden, durch die Segmentierung bleiben sie innerhalb des VLANs.

Flexibilität

Weil VLANs einfach konfiguriert und geändert werden können, erhöht sich die Flexibilität im Netz. Zieht ein Gerät an einen anderen Standort, lässt sich der zugehörige Port am Switch umprogrammieren und das Gerät kann wie gewohnt weiterarbeiten. Ohne VLANs wären aufwändige Verkabelungsarbeiten notwendig. Ebenso der umgekehrte Fall – Umzug eines Gerätes in ein anderes Subnetz – kann durch die simple Änderung der VLAN-Zugehörigkeit umgesetzt werden.

Ordnung

Mittels Zuordnung von Geräten zu einem VLAN kann eine Sortierung nach Aufgabengebiet erfolgen. Geräte an verschiedenen Standorten im Netzwerk können einem Segment zugeordnet werden und gehören dadurch logisch zusammen. Das kann einzelne Arbeitsgruppen oder Abteilungen betreffen wie auch die Segmentierung nach Funktion wie Management-VLAN, WLAN-VLAN, Voice-VLAN und so weiter.

Wie konfiguriert man ein VLAN?

Die Konfiguration der VLANs erfolgt an der Verwaltungsoberfläche der Switches, am einfachsten grafisch über das Webfrontend, am flexibelsten und sogar programmierbar über die CLI. Es gibt verschiedene Techniken, VLANs zu konfigurieren und Ports VLANs zuzuordnen. Je nach Technik wird unterschieden zwischen portbasiertem oder tagged VLAN. Ist die Portzuordnung fest, spricht man vom statischen VLAN, bei veränderlicher Portzuordnung dagegen vom dynamischen.

Portbasiertes VLAN

Portbasierte VLANs waren die erste Implementierung dieser Technik. Dabei wird jedem Port eines Switches genau ein VLAN zugeordnet. Direkter Datenverkehr ist nur zwischen den Ports eines VLANs möglich. Mit der Anzahl der VLANs und der Switche steigt die Anzahl der Verbindungen zur VLAN-Übertragung exponentiell. Das Verfahren ist deshalb nur für kleine Anzahlen von VLANs und Switchen praktikabel.

Tagged VLAN

Tagged VLANs stellen eine Erweiterung des Ethernet Standards dar und sind nur mit speziell dafür vorgesehenen Switches verwendbar. Dabei wird das Ethernetpaket um den sogenannten Tag erweitert, der der die VLAN ID des zugehörigen Netzwerkpaketes darstellt. Der VLAN-Tag ist vier Bytes lang, davon werden 12 Bit für das VLAN Tag verwendet. Rechnerisch ergibt sich daraus die Möglichkeit, 4096 VLANs anzulegen. Wegen der sich verändernden Länge der Pakete ist das Verfahren nur auf dafür vorgesehenen Switches und Netzwerkgeräten anwendbar.

Das Tag wird verwendet, um die Zugehörigkeit von Paketen zu einem VLAN zu kennzeichnen. Dadurch können über einen Port Pakete mehrerer VLANs übertragen werden. Diese Ports lassen sich gut zur Verbindung von Switches verwenden und reduzieren den Aufwand der Verkabelung erheblich.

In modernen Switches wird heute eine Mischung aus port- und tag-basierten VLANs verwendet. Sogenannte Access-Port für den Anschluss von Geräten werden einem VLAN zugeordnet (portbasiert), das Tagging wird bei Ports für die Koppelung von Netzwerkgeräten wie Switches Routern oder Virtualisierungshosts verwendet. Dadurch ist es möglich, die Vorteile des VLAN Taggings zu nutzen, ohne dass alle Geräte im Netzwerk mit Tags umgehen können müssen.

Statische VLANs

Statische VLANS sind praktisch gleichzusetzen mit portbasierten. Die Portzuordnung wird fest vorgegeben und verändert sich nur durch Neukonfiguration durch den Administrator.

Dynamische VLANs

Zur Umsetzung eines dynamischen benötigt der Switch eine gewisse Intelligenz. Die Zuordnung eines Ports zu einem VLAN wird durch programmierbare Charakteristika der passierenden Netzwerkpakete festgelegt. Der Switch erkennt die vorgegebenen Muster und ordnet einen Port automatisch dem zugehörigen VLAN zu.

Der Administrator legt bei der Switchkonfiguration bestimmte Regeln fest, nach denen ein Port einem VLAN zugeordnet wird. Das können Mac-Adressen, Protokoll-Typ, TCP/UDP-Ports und vieles mehr sein. Anhand der Regeln lässt sich der Zugang zum Netzwerk und zu bestimmten VLANs steuern. Mobile Geräte können unabhängig vom Standort immer demselben VLAN zugeordnet werden.

Was ist Python?

Bei Python handelt es sich um eine performante, objektorientierte Programmiersprache, die sich durch eine leicht zu lernende Syntax auszeichnet. Die Alpha-Version der Programmiersprache hat der niederländischen Informatiker Guido Van Rossum Ende der 1980er Jahre entwickelt. Die öffentliche Vorstellung fand im Februar 1991 statt.

Woher stammt der Name?

Die Programmiersprache hat ihren Namen nicht, wie es oft vermutet wird, in Anlehnung an die Riesenschlange bekommen. Der Programmierer Guido Van Rossum war ein leidenschaftlicher Fan der britischen Comedy-Show „Monty Python’s Flying Circus“. Namensgeber für die Programmiersprache war diese Serie.

Wodurch zeichnet sich die Programmiersprache aus?

Im Vergleich zu ähnlichen Programmier- und Skriptsprachen, wie beispielsweise C, C++ oder Node.js ist Python wesentlich leichter zu verstehen und zu schreiben. Generell ist die Syntax äußerst elegant und sehr ausdrucksvoll, sodass Sie mit wenigen Zeilen Code viel erreichen können. Python wird unter der Open Source-Lizenz vertrieben und kann kostenlos auch für den kommerziellen Gebrauch genutzt werden.

Das objektorientierte Programmierparadigma gibt Ihnen die Möglichkeit, durch die Erstellung logischer Objekte komplexe Vorgänge in kleinere und übersichtliche Einzelteile aufzuteilen. Durch die Micro-Service-Architektur ist es möglich, Python-Code in Kombination mit anderen Programmiersprachen wie Rust oder C++ zu nutzen.

Auch auf andren Plattformen nutzbar

Einer der wesentlichen Vorteile der Programmiersprache ist ihre hohe Flexibilität sowie Portabilität. In Python geschriebene Anwendungen lassen sich prinzipiell, ohne größere Änderungen im Programmcode vornehmen zu müssen, auf unterschiedlichen Plattformen nutzen. Man kann die Anwendungen auf Windows-, Linux– und Max OS-Systemen nutzen.

Bei Python handelt es sich wie bei PHP oder JavaScript um eine sogenannte „Interpretirsprache“. Das bedeutet, dass der Programmcode wie bei traditionellen Programmiersprachen nicht erst vor der Ausführung kompiliert werden muss, sondern Pythonanwendungen werden direkt aus dem Quellcode heraus interpretiert und ausgeführt. Das vereinfacht  den Prozess der Programmierung wesentlich, da Sie  nicht auf die manuelle Speicherverwaltung achten müssen. Darüber hinaus müssen Sie sich auch nicht darum kümmern, ob die korrekten Programmbibliotheken richtig verlinkt und geladen wurden.

Reine Anwendungen von Python sind langsamer

Python bringt jedoch auch einige Nachteile mit sich. Da es sich hierbei um eine interpretierte Skriptsprache handelt, sind reine Pythonanwendungen langsamer in ihrer Ausführung und benötigen mehr Arbeitsspeicher. Wenn Sie Anwendungen benötigen, die äußerst performant und effizient sind, dann setzen Sie bei einem Teil der Anwendung auf anderen Programmiersprache, wie zum Beispiel C++.

Was sind die Einsatzgebiete von Python?

Aufgrund der übersichtlichen und intuitiven Syntax und Programmstruktur wird Python sowohl in der Entwicklung komplexer Anwendungen als auch bei der Erstellung einzelner Module, die in andere Programmiersprachen integriert werden können, verwendet.  Man nutzt Python , um einzelne Module zu entwickeln, die sich immer wieder verwenden lassen. Einer der wesentlichen Vorteile der Sprache ist die gigantische Auswahl an Bibliotheken für numerische und wissenschaftliche Kalkulationen, die sich schnell und unkompliziert in bestehende Module einbinden lassen.

Große Unternehmen nutzen Software

Python wird von bekannten Unternehmen wie Google, Microsoft, Tesla oder Netflix in den Bereichen KI (künstliche Intelligenz), Spracherkennung und neuronale Netzwerke eingesetzt, um Anwendungen zu entwickeln, die sich durch ein hohes Maß an Autonomität auszeichnen. Darüber hinaus nutzt man Python auch bei der Entwicklung skalierbarer Webanwendungen. Hier kommen sogenannte „Frameworks“ wie Django und Flask zum Einsatz, die auf der Programmiersprache aufbauen und die Entwicklung moderner Webapps wesentlich beschleunigen. Viele bekannte Websites, wie zum Beispiel reddit oder Instagram basieren auf diesen Frameworks. Einsatzgebiete von Python sind ebenso Deep Learning, Data Mining und Maschine Learning.

Welche Softwareprodukte basieren auf dem Programm

Die Programmiersprache kommt aktuell in einer Vielzahl unterschiedlicher kommerzieller Softwareprodukte und Open-Source-Lösungen zum Einsatz. Einige bekannte Anwendungen, die auf Python aufbauen sind:

–              Blender

–              OpeShot

–              OpenOffice

–              Civilization 4

–              Battlefield 2

 

Ist es schwer Python zu lernen?

Falls Sie Kenntnisse in anderen Programmiersprachen wie Java oder Go haben, sollten Sie in der Regel nicht mehr als 10 Tage benötigen, um die Grundlagen dieser Skriptsprache zu erlernen, um einen einfachen Code schreiben zu können. Zahlreiche Online-Plattformen bieten Python-Video-Kurse an, die Sie zum Lernen benutzen können. Darüber hinaus stehen Ihnen zahlreiche Tutorials mit Übungen im Netz kostenlos zur Verfügung. Insgesamt sollten Sie etwa 2 Wochen einplanen, um Basiswissen in der Programmiersprache zu erlangen.

Standardisierter Zugriff auf Datenbanken

SQL ist eine Standard-Abfragesprache für Datenbanken. Auf nahezu alle Datenbanksysteme, so auch MySQL oder MS-SQL, kann mit Standard SQL zugegriffen werden. Mit der Abfragesprache werden Tabellen erstellt oder abgefragt („Wie viele Kunden heißen Meier?“). Häufig verwendete SQL-Befehle sind „Create“ zum Erstellen von Tabellen (Datenstrukturen) und „Select“ zum Lesen von Tabellen. SQL steht für Structured Query Language, übersetzt „strukturierte Abfrage-Sprache“.

SQL ist eine Datenbanksprache für relationale Datenbanken, mit der Strukturen (Tabellen) definiert und Daten bearbeitet oder abgefragt werden können. Tabellen können etwa Kundendaten, Materialdaten, Aufträge und Rechnungen enthalten. Mit der Datenbanksprache werden

– Tabellen angelegt

– Felder in den Tabellen definiert

– Tabellenzeilen befüllt

– Tabelleneinträge gelesen oder Informationen zu den Inhalten abgefragt (z. B. Länge eines Feldes, Anzahl der Einträge in der Tabelle).

Beispiel: Abfragen in einer Datenbanktabelle

Per SQL-Befehl hat man in einer Datenbank die Tabelle „Kunden“ angelegt („create“). Die Struktur enthält Felder für die Aufnahme von Daten wie Kundennummer, Vorname, Nachname u.ä. Ist die Tabelle mit Kundendaten befüllt, können werden alle Kundeneinträge mit dem Namen „Meier“ selektiert („select“-Befehl) oder etwa die Anzahl der Kundendatensätze ermittelt werden („Befehle select count“).

SELECT * FROM Kunden WHERE Name = ‚Meier‘;

Es werden alle Zeilen und alle Spalten (*) aus der Tabelle Kunden ausgegeben, deren Nachname Meier ist.

Zur Standardisierung von Datenbankzugriffen

Die Syntax der Datenbanksprache ist einfach und basiert auf der relationalen Algebra. Die Sprache wird von einem gemeinsamen Gremium standardisiert, um eine möglichst hohe Unabhängigkeit von Software-Programmen zum unterliegenden Datenbankmanagementsystem anzustreben. Heute verfügen die meisten Datenbanksysteme über Schnittstellen, um den standardisierten Zugriff auf Tabellen und Daten zu ermöglichen. Auch auf Datenbanken wie MySQL oder MS-SQL kann mit Standard-SQL zugegriffen werden.

Kategorien von Befehlen bei SQL

Mit den Befehlen können in der Datenbank verschiedene Operationen ausgeführt werden. Nach ihrer Funktion sind vier Kategorien von Befehlen zu unterscheiden:

– DQL-Befehle (Data Query Language): Befehle zur Abfrage und Aufbereitung von Daten

– DML-Befehle (Data Manipulation Language): Befehle zur Manipulation von Daten, wie Ändern, Einfügen, Löschen und Lesen

– DDL-Befehle (Data Definition Language: Befehle zur Definition des Datenbankschemas, z. B. von Anlegen von Tabellen

– DCL-Befehle (Data Control Language): Befehle zur Transaktionskontrolle und Rechteverwaltung.

Abfrage mit „SELECT“

Das Ergebnis einer Abfrage (Query, DQL-Befehl) liefert einen Ausschnitt der Tabelle. Damit sieht das Ergebnis einer Abfrage wiederum selbst aus wie eine Tabelle und kann angezeigt, bearbeitet und verwendet werden. DQL-Befehle werden auch als Untergruppe der DML-Befehle gesehen.

Aufgabe: Ein Unternehmen hat 101 Kunden. Diese sollen angezeigt werden.

SELECT * FROM kunden;

Die Query listet alle Spalten und 101 Zeilen der Kunden-Tabelle auf.

Aufgabe: Alle Kunden anzeigen, allerdings nur die Spalten Kundennummern und Kundennamen:

SELECT Kunnr, Name

FROM kunden;

Die Ausgabe liefert 101 Zeilen (Kunden), allerdings nur die Inhalte der Felder Kundennummer und Nachname.

Aufgabe: Alle Kunden im Postleitzahlbereich „60“ anzeigen lassen.

SELECT * FROM kunden

WHERE Plz LIKE ‚60%‘;

Die Tabelle Aufträge enthält die Kundenaufträge des Unternehmens. Im relationalen Datenmodell enthält sie mit der Kundennummer lediglich „einen Link“ zur Kundentabelle.

Aufgabe: Ausgabe aller Kundenaufträge aus dem Postleitzahlbereich „60“.

SELECT auftrag.Auftragsnr, auftrag.kunnr, kunden.name, kunden.plz kunden.ort

FROM kunden, auftrag

WHERE kunden.kunnr= auftrag.kunnr

AND kunden.plz LIKE ‚60%‘;

Der (inner) JOIN verknüpft zwei Tabellen. Um die Postleitzahl zu den Aufträgen zu finden, muss in die Tabelle „kunden“ geschaut werden. Beide Tabellen enthalten den eindeutigen Schlüssel „Kundennummer“ (kunnr).

Schlüssel in relationalen Datenbanken

SQL ist eine Abfragesprache für relationale Datenbanken, in denen Informationen auf mehrere Tabellen verteilt werden. Im  Beispiel hätte die Auftragsdaten-Tabelle auch die Felder für die Kundendaten (Name, Ort, PLZ) enthalten können. Diese Felder wären damit „doppelt“ in der Datenbank vorhanden. Dies ist im relationalen Datenmodell nicht der Fall.

Um Redundanzen zu vermeiden, werden Daten auf mehrere Tabellen verteilt und über Schlüssel verknüpft. In die Auftragstabelle wird  die Kundennummer aufgenommen. Alle weiteren Kundendaten müssen in der Kundentabelle nachgelesen werden.

Die primären Schlüssel im Beispiel sind die Kundennummer in der Kundentabelle und die Auftragsnummer in der Auftragstabelle.

Programmieren mit der Abfragesprache

Mann kann die Abfragesprache kann mit Programmiersprachen kombinieren. Dazu wird aus einem Anwendungsprogramm heraus mit Standard SQL-Befehlen auf eine Datenbank zugegriffen. Folgende Techniken sind möglich:

  1. a) Embedded SQL mit Anweisungen im Quelltext von C, C++, Pascal, Cobol und anderen Programmiersprachen. Beispiele für Implementierungen sind SQLJ für Java, Pro*C für C und C++.
  2. b) Herkömmliche Programmierschnittstellen, über die SQL-Befehle direkt an das Datenbanksystem weitergegeben werden. Beispiele dazu sind ODBC, JDBC aund ADO.
  3. c) Persistenz-Frameworks, wie Hibernate oder iBATIS für eine objektorientierte Verarbeitung in z. B. C# oder Java.
  4. d) Teil 4 des SQL/PSM Standards mit Konstrukten wie IF-Blöcken und Schleifen, die in Hersteller-spezifische Erweiterungen implementiert werden. Beispiele sind PL/SQL in Oracle und Transact SQL im SQL Server.

Unterschied zwischen statisches und dynamisch

Unabhängig von der Programmiertechnik ist eine SQL-Anweisung statisch und damit  zum Zeitpunkt der Programmübersetzung festgelegt. Beim dynamischen SQL wird die tatsächliche Anweisung erst zum Zeitpunkt der Programmausführung bekannt. Beispiele für dynamische Anweisungen sind etwa die Benutzereingabe der Query zur Laufzeit des Programms oder die Konstruktion des Statements im Programm.

Wenn Mensch und Maschine voneinander lernen

Künstliche Intelligenz (KI, auch Artifizielle Intelligenz (AI) beschreibt Technologien, mit denen Maschinen ein menschenähnliches Denkvermögen simulieren. Mit KI können Maschinen aus Erfahrung lernen und mit neu eingehenden Informationen ihre Kompetenz zum Bewältigen von Aufgaben auszubauen (Maschinelles Lernen). Schachcomputer, selbstfahrende Autos und Alexa sind bekannte Beispiele für künstliche Intelligenz.
Systeme wie Alexa basieren auf Deep Learning und natürlicher Sprachverarbeitung. KI versucht, Entscheidungsstrukturen des Menschen nachzubilden. Künstliche Intelligenz soll Computer befähigen, eigenständig Probleme zu bearbeiten. So wird in Computerspielen mit einfachen Algorithmen ein „intelligentes Verhalten“ simuliert. Die künstliche Intelligenz umfasst weitere Teilgebiete, wie wissensbasierte Systeme, Musteranalysen und Mustererkennung, Mustervorhersage, Robotik, Modellierung mit Entropiekraft, und künstliches Leben.
So funktioniert künstliche Intelligenz.

KI-Software: von Mustern und Merkmalen

Anhand von Mustern oder Merkmalen in Daten soll die KI-Software automatisch lernen. Dazu werden große Datenmengen mit intelligenten Algorithmen und iterativen Berechnungen kombiniert. Das Forschungsfeld der KI ist breit und nutzt zahlreiche Technologien, Methoden und Theorien. Zu den wichtigsten Teilbereichen der KI zählen:

– Neuronale Netze
Die Netze unterstützen ein maschinelles Lernen, indem miteinander verbundene Knoten Daten verarbeiten. Diese Knoten, entsprechend der Neuronen im menschlichen Gehirn, reagieren auf neue Eingangsdaten und verteilen Informationen auf andere Knoten. Künstliche Intelligenz versucht mit mehreren Datendurchläufen Verbindungen zu finden und undefinierte Daten zu gewichten.

– Maschinelles Lernen
Auch nicht explizit programmierte Lösungen sollen über Methoden des maschinellen Lernens gefunden werden. Dazu wird die Erstellung analytischer Modelle automatisiert. Um neue Erkenntnisse und Schlussfolgerungen zu erhalten, verwendet die künstliche Intelligenz Methoden aus Physik, Statistik, Operations Research und neuronalen Netzen.

– Deep Learning
Deep Learning kommt häufig bei der Bild- und Spracherkennung zum Einsatz. Dazu werden große neuronale Netzen mit Verarbeitungsknoten in mehreren Schichten genutzt. Bei der Analyse großer Datenmengen sollen komplexe Muster erlernt werden.

– Cognitive Computing
Das Cognitive Computing versucht eine Maschine schaffen, die das menschliche Verhalten simuliert. Als Teilbereich der KI wird eine möglichst natürliche Interaktion mit Maschinen angestrebt. Künstliche Intelligenz hat hier zum Ziel, eine Maschine zu entwickeln, die menschliche Denkprozesse simuliert, Bilder und Sprache interpretiert und schlüssig antworten kann.

– Computer Vision
Inhalte von Bildern und Videos werden mithilfe der Mustererkennung und Deep Learning interpretiert. Die entwickelten Computer sollen Bilder oder Videos in Echtzeit analysieren und das Umfeld interpretieren.

– Natürliche Sprachverarbeitung (NLP)
Diese KI-Computer sollen die menschliche Sprache verstehen, analysieren und selbst erzeugen können. Ziel ist letztlich eine Interaktion in natürlicher Sprache. Die natürliche Sprachverarbeitung ermöglicht dem Menschen eine Kommunikation mit Computern im Alltag, um etwa Anweisungen zu vermitteln oder Fragen zu stellen.

Künstliche Intelligenz zum Simulieren des menschlichen Gehirns

Ein Teilbereich von KI befasst sich mit der Entwicklung von Maschinen, die sich wie Menschen verhalten sollen. Die Herausforderung besteht in der „Mechanisierung“ des menschlichen Denkens (sogenannte starke KI). Künstliche Intelligenz befasst sich mit Automatisierung und maschinellem Lernen. Mit dem Nachbau des menschlichen Gehirns sollen auch Maschinen lernfähig werden. Der Begriff der neuronalen Netze bezieht sich auf diese Lernfähigkeit, an der im menschlichen Gehirn Neuronen beteiligt sind. Deutlich werden die Herausforderungen zur Schaffung von künstlicher Intelligenz bei der Programmierung der KI-Systeme: Die Softwareentwicklung für künstliche Intelligenz erfordert einen neuen Ansatz, damit Programme lernfähig werden und eigene Entscheidungen treffen können. Beispiele für einfache KI-Systeme sind die Vorschlagslisten auf Shopping-Portalen. Im Alltag begegnet dem Benutzer die künstliche Intelligenz auf Portalen wie Amazon, Netflix und Spotify: „Kunden, die sich diesen Artikel angeschaut haben, kauften auch ..“. Künstliche Intelligenz wird auch in Computerspielen genutzt, die durch einfache Algorithmen ein „intelligentes Verhalten“ simulieren.

Nutzen von KI für die Gesellschaft

Im Gegensatz zur landläufigen Vorstellung soll die künstliche Intelligenz den Menschen nicht ersetzen. Von der künstlichen Intelligenz profitiert auch der Mensch. KI kann:

– Analyse-Technologen wie Zeitreihenanalysen und Computer Vision verbessern
– Analytics zur Nutzung verschiedensten Branchen und Bereichen bereitstellen
– Ökonomische Hindernisse wie Sprach- und Übersetzungsbarrieren reduzieren
– Durch die Erweiterung der menschlichen Fähigkeiten die Entscheidungsfindung verbessern
– Zu besserem Sehen, Verständnis und Erinnern beitragen.


Künstliche Intelligenz ersetzt nicht den Menschen

Bei fehlerhaften oder lückenhaften Daten spiegelt sich dies in den erzielten Ergebnissen wider. Die Aufgaben eines KI-Systems sind daher relativ klar umrissen: Ein Pokerspiel kann nicht gleichzeitig auch Schach spielen. Es muss für beide Aufgaben speziell trainiert sein. Heutige KI-Systeme sind sehr stark spezialisiert und noch weit davon entfernt, den Menschen ersetzen zu können. Auch selbstlernende Systeme sind nicht autonom.

Anwendungsbereich der künstlichen Intelligenz

Der Bedarf an Computerprogramme mit KI-Fähigkeiten ist groß. Sollen Fragen automatisch beantwortet werden, Rechtsauskünfte oder Risikohinweise gegeben werden, sind KI-Systeme im Einsatz. Zu den großen Branchen, in denen die künstliche Intelligenz Aufgaben übernimmt, zählen:
– Gesundheitswesen Im Gesundheitswesen wird das KI-Programm zum persönlichen Gesundheitsassistenten. Künstliche Intelligenz kann den Benutzer etwa an eine gesunde Ernährung oder an die Medikamenteneinnahme erinnern. KI-Anwendungen werten selbstständig Röntgenbilder aus oder stellen personalisierte medizinische Leistungen bereit.

– Einzelhandel
Personalisierte Empfehlungen beim virtuellen Einkauf treffen die Benutzer bereits häufig an. Die künstliche Intelligenz unterstützt interaktiv beim Online-Shoppen, indem beispielsweise weitere Kaufoptionen vorgeschlagen werden. Das System lernt unter anderem aus den Einkäufen anderer Benutzer sowie dem an Artikeln und Suchbegriffen gezeigten Interesse.

– Sport
Künstliche Intelligenz kann die Spielvorbereitung verbessern bzw. die Spielstrategie und Spielaufstellung verbessert. Erfassen kann das KI-System Fotos von Spielzügen, um Erkenntnisse zu gewinnen.

– Fertigung
Auslastung und Nachfrage können über KI prognostiziert werden. Dazu übertragen vernetzte Geräte der Fabriken ihre Daten an das KI-System. Künstliche Intelligenz übernimmt mit Deep Learning oder rekurrenten Netzen die Analyse der Informationen.

Softwareentwicklung bei KI

Während die klassische Softwareentwicklung den eintretenden Ereignissen einen klaren Ablauf vorschreibt, folgt die KI-Maschine keiner festen Entscheidungsfolge. Mit maschinellem Lernen und neuronalen Netzen wird in den Programmen die Funktionsweise des menschlichen Gehirns nachgebaut. Wurde in einem herkömmlichen Programm keine Lösung für ein auftretendes Ereignis implementiert, läuft die Software auf einen Fehler oder sie stürzt ab. Im Idealfall gibt sie eine aussagekräftige Fehlermeldung aus. Um das neue Ereignis künftig zu bearbeiten, muss der Programmierer das Programm-Coding entsprechend erweitern. Künstliche Intelligenz zeichnet sich dadurch aus, dass eine KI-Software selbständig solche Ereignisse löst. Dazu nutzt sie beispielsweise zuvor gemachte Erfahrungen und zieht Schlüsse, um ein passendes Entscheidungsmuster zu generieren.

 KI: Software die sich selbst entwickelt

Ist bei der klassischen Softwareentwicklung ein unveränderbarer Entscheidungsbaum vorgegeben, versucht die künstliche Intelligenz Entscheidungspunkte in Form von Neuronen zu entwickeln. Diese Entscheidungspunkte füttert man viele hundertmal mit Daten, um mit den Entscheidungs-Parametern der Neuronen das gewünschte Ergebnis zu erzielen.

KI wird versuchen, selbst eine Lösung zu generieren.
Um schneller zu ersten KI-Ergebnissen zu gelangen, hat das Unternehmen Google vor einigen Jahren das „Tensorflow“-Framework herausgebracht. Googles hauseigener Werkzeugkasten für künstliche Intelligenz ist Open-Source-Software.