From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../hjp5/html/k100293.html | 718 +++++++++++++++++++++ 1 file changed, 718 insertions(+) create mode 100644 Master/Reference Architectures and Patterns/hjp5/html/k100293.html (limited to 'Master/Reference Architectures and Patterns/hjp5/html/k100293.html') diff --git a/Master/Reference Architectures and Patterns/hjp5/html/k100293.html b/Master/Reference Architectures and Patterns/hjp5/html/k100293.html new file mode 100644 index 0000000..538e4e2 --- /dev/null +++ b/Master/Reference Architectures and Patterns/hjp5/html/k100293.html @@ -0,0 +1,718 @@ + + + +Handbuch der Java-Programmierung, 5. Auflage + + + + + + + + + +
 Titel  + Inhalt  + Suchen  + Index  + DOC  +Handbuch der Java-Programmierung, 5. Auflage +
 <<  +  <   +  >   + >>  + API  +Kapitel 46 - Netzwerkprogrammierung +
+
+ + + + +

46.1 Grundlagen der Netzwerkprogrammierung

+
+ +
+ + + + +

46.1.1 Was ist ein Netzwerk?

+ +

+Man könnte ganz plakativ sagen, dass ein Netzwerk die Verbindung +zwischen zwei oder mehr Computern ist, um Daten miteinander auszutauschen. +Das ist natürlich eine sehr vereinfachte Darstellung, die am +besten in die Anfangszeit der Entstehung von Computernetzen passt. +Heutzutage gibt es eine Vielzahl von Anwendungen, die auf dem Austausch +von Daten über ein Netzwerk basieren. Zu ihnen zählen beispielsweise: +

+ +

+So vielfältig wie diese Anwendungen ist auch die dafür erforderliche +Hard- und Softwaretechnik. Das Thema »Computernetze« hat +in den letzten Jahren stark an Dynamik und Umfang zugenommen. Es gibt +heute eigene Studiengänge, deren Schwerpunkt auf der Vernetzung +von Computersystemen liegt. Fast jedes größere Unternehmen +beschäftigt Mitarbeiter, die sich ausschließlich um den +Betrieb und die Erweiterung der unternehmenseigenen Netze und ihrer +Anbindung an öffentliche Netze kümmern. + + + + +

46.1.2 Protokolle

+ +

+Um überhaupt Daten zwischen zwei oder mehr Partnern austauschen +zu können, müssen sich die Teilnehmer auf ein gemeinsames +Protokoll geeinigt haben. Als Protokoll +bezeichnet man die Menge aller Regeln, die notwendig sind, um einen +kontrollierten und eindeutigen Verbindungsaufbau, Datenaustausch und +Verbindungsabbau gewährleisten zu können. Es gibt sehr viele +Protokolle mit sehr unterschiedlichen Ansprüchen. Ein weitverbreitetes +Architekturmodell, das ISO/OSI-7-Schichten-Modell, +unterteilt sie in Abhängigkeit von ihrem Abstraktionsgrad in +sieben Schichten (siehe Abbildung 46.1). +

+ + +

+ +

+Abbildung 46.1: Das ISO/OSI-7-Schichten-Modell

+ +

+Die derzeit in Java verfügbaren Netzwerkfähigkeiten basieren +alle auf den Internet-Protokollen TCP/IP +(bzw. TCP/UDP). Wir wollen uns in diesem +Kapitel ausschließlich mit der TCP/IP-Familie von Protokollen +beschäftigen. Hierfür wird häufig eine etwas vereinfachte +Unterteilung in vier Ebenen vorgenommen (siehe Abbildung 46.2): +

+

+ + +

+ +

+Abbildung 46.2: Das vereinfachte 4-Ebenen-Modell

+ +

+Die TCP/IP-Protokollfamilie wird sowohl in lokalen Netzen als auch +im Internet verwendet. Alle Eigenarten des Transportweges werden auf +der zweiten bzw. dritten Ebene ausgeglichen, und die Anwendungsprotokolle +merken prinzipiell keinen Unterschied zwischen lokalen und +globalen Verbindungen. Wurde beispielsweise ein SMTP-Mailer für +den Versand von elektronischer Post in einem auf TCP/IP basierenden +Unternehmensnetz entwickelt, so kann dieser im Prinzip auch dazu verwendet +werden, eine Mail ins Internet zu versenden. +

+ + + + + + + + + +
+ +

+TCP ist ein verbindungsorientiertes Protokoll, das auf der +Basis von IP eine sichere und fehlerfreie Punkt-zu-Punkt-Verbindung +realisiert. Daneben gibt es ein weiteres Protokoll oberhalb von IP, +das als UDP (User Datagram Protocol) +bezeichnet wird. Im Gegensatz zu TCP ist UDP ein verbindungsloses +Protokoll, bei dem die Anwendung selbst dafür sorgen muss, dass +Pakete fehlerfrei und in der richtigen Reihenfolge beim Empfänger +ankommen. Sein Vorteil ist die größere Geschwindigkeit +gegenüber TCP. In Java wird UDP durch die Klassen DatagramPacket +und DatagramSocket +abgebildet. Wir wollen uns in diesem Abschnitt allerdings ausschließlich +mit den populäreren Protokollen auf der Basis von TCP/IP beschäftigen, +TCP/UDP wird im folgenden nicht weiter behandelt.

+ + + + +
 Hinweis 
+
+ + + + +

46.1.3 Adressierung von Daten

+ + + + +

IP-Adressen

+ +

+Um Daten über ein Netzwerk zu transportieren, ist eine Adressierung +dieser Daten notwendig. Der Absender muss angeben können, an +wen die Daten zu senden sind, und der Empfänger muss erkennen +können, von wem sie stammen. Die Adressierung in TCP/IP-Netzen +erfolgt auf der IP-Ebene mit Hilfe einer 32-Bit langen IP-Adresse. + +

+Die IP-Adresse besteht aus einer Netzwerk-ID +und einer Host-ID. Die Host-ID gibt +die Bezeichnung des Rechners innerhalb seines eigenen Netzwerks an, +und die Netzwerk-ID liefert die Bezeichnung des Netzwerks. Alle innerhalb +eines Verbundes von Netzwerken sichtbaren Adressen müssen eindeutig +sein; es darf also nicht zweimal dieselbe Host-ID innerhalb eines +Netzwerks geben. Sind mehrere Netzwerke miteinander verbunden (wie +es beispielsweise im Internet der Fall ist), müssen auch die +Netzwerk-IDs innerhalb des Verbundes eindeutig sein. + +

+Um diese Eindeutigkeit sicherzustellen, gibt es eine zentrale Institution +zur Vergabe von Internet-Adressen und -namen, das Network Information +Center (kurz NIC). +Die zu vergebenden Adressen werden in drei Klassen A bis C eingeteilt +(die zusätzlichen existierenden Klasse-D- und Klasse-E-Adressen +spielen hier keine Rolle): + +

+ + + + + + + + + + + + + + + + + + + + + + +
KlasseNetzwerk-IDHost-IDBeschreibung
A 7 Bit 24 Bit Ein Klasse-A-Netz ist für sehr große +Netzbetreiber vorgesehen. Das erste Byte der Adresse liegt im Bereich +von 0 bis 127, sein höchstwertiges Bit ist also immer 0. Ein +Klasse-A-Netz bietet 224 verschiedene Host-IDs innerhalb +des Netzes. Insgesamt gibt es aber nur 128 verschiedene Klasse-A-Netze +weltweit (tatsächlich werden seit einigen Jahren keine Klasse-A-Adressen +mehr vom NIC vergeben).
B 14 Bit 16 Bit Ein Klasse-B-Netz erlaubt immerhin noch +die eindeutige Adressierung von 216 unterschiedlichen Rechnern +innerhalb des Netzwerks. Insgesamt gibt es maximal 16384 verschiedene +Klasse-B-Netze weltweit. Das erste Byte der Adresse liegt im Bereich +von 128 bis 191, seine höchstwertigen Bits haben also immer den +Binärwert 10.
C 21 Bit 8 Bit Klasse-C-Netze sind für kleinere Unternehmen +vorgesehen, die nicht mehr als 256 unterschiedliche Rechner adressieren +müssen. Insgesamt gibt es maximal 2097152 verschiedene Klasse-C-Netze +weltweit. Das erste Byte der Adresse liegt im Bereich von 192 bis +223, seine höchstwertigen Bits haben also immer den Binärwert +110. Die meisten an das Internet angebundenen kleineren Unternehmen +betreiben heute ein Klasse-C-Netz.
+

+Tabelle 46.1: Klassen von IP-Adressen

+

+ + + + + + + + + +
+ +

+Obwohl damit theoretisch etwa 4 Milliarden unterschiedliche Rechner +angesprochen werden können, reichen die Adressen in der Praxis +nicht aus. Durch die starren Grenzen sind bereits viele mittlere Unternehmen +gezwungen, ein Klasse-B-Netz zu betreiben, weil sie die 256-Rechner-Grenze +knapp überschreiten oder damit rechnen, sie demnächst zu +überschreiten. Dadurch wird ein fester Block von 65536 Adressen +vergeben. Um diese Probleme in Zukunft zu umgehen, werden Internet-Adressen +demnächst nach dem Standard IPv6 +definiert werden, der eine Adresslänge von 128 Bit vorsieht.

+ + + + +
 Hinweis 
+
+ + + + +

Domain-Namen

+ +

+Während IP-Adressen für Computer sehr leicht zu verarbeiten +sind, gilt das nicht unbedingt für die Menschen, die damit arbeiten +müssen. Wer kennt schon die Telefonnummern und Ortsnetzkennzahlen +von allen Leuten, mit denen er Telefonate zu führen pflegt? Um +die Handhabung der IP-Adressen zu vereinfachen, wurde daher das Domain +Name System eingeführt (kurz DNS), +das numerischen IP-Adressen sprechende Namen wie www.gkrueger.com +oder java.sun.com zuordnet. + +

+Anstelle der IP-Adresse können bei den Anwendungsprotokollen +nun wahlweise die symbolischen Namen verwendet werden. Sie werden +mit Hilfe von Name-Servern in die zugehörige +IP-Adresse übersetzt, bevor die Verbindung aufgebaut wird. Zwar +kann sich hinter ein und derselben IP-Adresse mehr als ein Name-Server-Eintrag +befinden. In umgekehrter Richtung ist die Zuordnung aber eindeutig, +d.h. zu jedem symbolischen Namen kann eindeutig die zugehörige +IP-Adresse (und damit das Netz und der Host) bestimmt werden, zu der +der Name gehört. + + + + +

46.1.4 Ports und Applikationen

+ +

+Die Kommunikation zwischen zwei Rechnern läuft oft auf der Basis +einer Client-Server-Beziehung ab. Dabei +kommen den beteiligten Rechnern unterschiedliche Rollen zu: +

+ +

+Ein typisches Beispiel für eine Client-Server-Verbindung ist +der Seitenabruf im World Wide Web. Der Browser fungiert als Client, +der nach Aufforderung durch den Anwender eine Verbindung zum Web-Server +aufbaut und eine Seite anfordert. Diese wird vom Server von seiner +Festplatte geladen oder dynamisch generiert und an den Browser übertragen. +Dieser analysiert die Seite und stellt sie auf dem Bildschirm dar. +Enthält die Seite Image-, Applet- oder Frame-Dateien, werden +sie in gleicher Weise beim Server abgerufen und in die Seite integriert. +

+ + + + + + + + + +
+ +

+In der Praxis ist die Kommunikationsbeziehung nicht immer so einfach +wie hier dargestellt. Es gibt insbesondere auch symmetrische Kommunikationsbeziehungen, +die nicht dem Client-Server-Modell entsprechen. Zudem kann ein Server +auch Client eines anderen Servers sein. Auf diese Weise können +mehrstufige Client-Server-Beziehungen entstehen.

+ + + + +
 Hinweis 
+
+ +

+Auf einem Host laufen meist unterschiedliche Serveranwendungen, die +noch dazu von mehreren Clients gleichzeitig benutzt werden können. +Um die Server voneinander unterscheiden zu können, gibt es ein +weiteres Adressmerkmal, die Port-Nummer. +Sie wird oberhalb von IP auf der Ebene des Transportprotokolls definiert +(also in TCP bzw. UDP) und gibt die Server-Anwendung an, mit der ein +Client kommunizieren will. Port-Nummern sind positive Ganzzahlen im +Bereich von 0 bis 65535. Port-Nummern im Bereich von 0 bis 1023 sind +für Anwendungen mit Superuser-Rechten reserviert. Jeder Servertyp +hat seine eigene Port-Nummer, viele davon sind zu Quasi-Standards +geworden. So läuft beispielsweise ein SMTP-Server meist auf Port +25, ein FTP-Server auf Port 21 und ein HTTP-Server auf Port 80. Tabelle 46.2 +gibt eine Übersicht der auf den meisten UNIX-Systemen verfügbaren +Server und ihrer Port-Nummern. + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name PortTransportBeschreibung
echo 7 tcp/udp Gibt jede Zeile zurück, die der Client +sendet
discard 9 tcp/udp Ignoriert jede Zeile, die der Client sendet
daytime 13 tcp/udp Liefert ASCII-String mit Datum und Uhrzeit
chargen 19 tcp/udp Generiert ununterbrochen Zeichen
ftp 21 tcp Versenden und Empfangen von Dateien
telnet 23 tcp Interaktive Session mit entferntem Host
smtp 25 tcp Versenden von E-Mails
time 37 tcp/udp Liefert die aktuelle Uhrzeit als Anzahl +der Sekunden seit 1.1.1900
whois 43 tcp Einfacher Namensservice
tftp 69 udp Vereinfachte Variante von FTP auf UDP-Basis
gopher 70 tcp/udp Quasi-Vorgänger von WWW
finger 79 tcp Liefert Benutzerinformationen
www 80 tcp/udp Der Web-Server
pop3 110 tcp/udp Übertragen von Mails
nntp 119 tcp Übertragen von Usenet-News
snmp 161 udp Netzwerkmanagement
rmi 1099tcp Remote Method Invocation
+

+Tabelle 46.2: Standard-Port-Nummern

+ + + + +

46.1.5 Request for Comments

+ +

+Die meisten der allgemein zugänglichen Protokolle sind in sogenannten +Request For Comments (kurz RFCs) +beschrieben. RFCs sind Dokumente des Internet Activity Board +(IAB), in denen Entwürfe, Empfehlungen +und Standards zum Internet beschrieben sind. Auch Anmerkungen, Kommentare +oder andere informelle Ergänzungen sind darin zu finden und auch +Humor kommt in den RFCs nicht zu kurz, wie etwa das Hypertext Coffee +Pot Control Protocol (HTCPCP) in RFC 2324 oder das 2004 veröffentlichte +»Allwissenheitsprotokoll«, welches es der US-amerikanischen +Regierung ermöglichen sollte, alle Arten von Computerkriminalität +zu entdecken und mit den Worten »Good Luck« endet. + +

+Insgesamt gibt es derzeit über 5000 RFCs, einige von ihnen wurden +zu Internet-Standards erhoben. Alle bekannten Protokolle, wie beispielsweise +FTP, SMTP, NNTP, MIME, DNS, HMTL oder HTTP, sind in einschlägigen +RFCs beschrieben. Sie sind nicht immer einfach zu lesen, aber oftmals +die einzige verläßliche Quelle für die Implementierung +eines bestimmten Protokolls. Es gibt viele Server im Internet, die +RFCs zur Verfügung stellen. Zu den bekanntesten zählt beispielsweise +der RFC Editor unter http://www.rfc-editor.org/. + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Protokoll/Dokument Zuständige RFCs
IP RFC791, RFC1060
ICMP RFC792
TCP RFC793
UDP RFC768
DNS RFC1034, RFC1035, RFC2136, RFC974, RFC1101, +RFC1812
ARP / RARP RFC826, RFC903
SMTP RFC821, RFC822
MIME RFC2045 - RFC2049
Content Types RFC1049
POP3 RFC1939
NNTP RFC977
HTML 3.2 Internal Draft
HTML 2.0 RFC1866
HTTP 1.0 / 1.1 RFC1945, RFC2068
FTP RFC959, RFC765
TFTP RFC1782, RFC1783, RFC1350
TELNET RFC854
SNMP RFC1157
X11 RFC1013
NTP RFC1305
FINGER RFC1288
WHOIS RFC954
GOPHER RFC1436
ECHO RFC862
DISCARD RFC863
CHARGEN RFC864
DAYTIME RFC867
TIME RFC868
Assigned Numbers RFC1700
Internet Protocol Standards RFC2400
Hitchhikers Guide to the InternetRFC1118
+

+Tabelle 46.3: Liste wichtiger RFCs

+

+ + + + + + + + + +
+ +

+Die hier aufgelisteten RFCs finden sich auch auf der DVD zum Buch. +Sie liegen als Textdateien im Verzeichnis \rfc. +Zusätzlich findet sich dort eine Datei INDEX_rfc.html +mit einer Übersicht über alle RFCs (Stand: November 1998).

+ + + + +
 Hinweis 
+
+ + + + +

46.1.6 Firewalls und Proxys

+ +

+Nicht alle Server in einem Netzwerk sind für alle Clients sichtbar. +Aufgrund von Sicherheitserwägungen wird insbesondere die Verbindung +zwischen einem lokalen Unternehmensnetz und der Außenwelt (z.B. +dem Internet) besonders geschützt. Dazu wird meist eine Firewall +verwendet, also ein spezielles Gateway mit Filterfunktion, das Netzwerkverkehr +nur in bestimmten Richtungen und in Abhängigkeit von Port-Nummern, +IP-Adressen und anderen Informationen zuläßt. Mit einer +Firewall kann beispielsweise dafür gesorgt werden, dass nicht +von außen auf den Mail-Server (Port 25) des Unternehmens +zugegriffen werden kann. Oder es kann verhindert werden, dass die +firmeninternen Anwender bestimmte Web-Server im Internet besuchen +usw. + +

+Normalerweise ist es insbesondere nicht erlaubt, IP-Daten zwischen +einem beliebigen Arbeitsplatzrechner und einem außerhalb des +Unternehmens liegenden Server hin- und herzusenden. Um dennoch beispielsweise +das Anfordern von Webseiten von beliebigen Servern zu ermöglichen, +kommuniziert der Web-Browser auf dem Arbeitsplatz mit einem Proxy-Server +(kurz Proxy), der innerhalb der Firewall liegt. Anstatt +die Seitenanfrage direkt an den Server zu schicken, wird sie an den +Proxy übergeben, der sie an den Server weiterleitet. Die Antwort +des Servers wird nach Erhalt vom Proxy an den anfordernden Arbeitsplatz +gesendet. Die Firewall muss also lediglich dem Proxy eine HTTP-Verbindung +ins Internet gestatten, nicht allen Arbeitsplätzen. + +

+Ein Proxy ist also eine Art »Handlungsbevollmächtigter« +(so lautet die wörtliche Übersetzung), der Aufgaben erledigt, +die dem einzelnen Arbeitsplatz nicht erlaubt sind. Proxys gibt es +auch für andere Zwecke, etwa zum Zugriff auf Datenbanken. Da +beispielsweise ein Applet aus Sicherheitsgründen nur zu dem Server +eine TCP/IP-Verbindung aufbauen darf, von dem es geladen wurde, kann +es auf Daten aus einer Datenbank nur zugreifen, wenn die Datenbank +auf demselben Host liegt wie der Web-Server. Ist dies nicht der Fall, +kann man sich mit einem Datenbankproxy auf dem Web-Host behelfen, +der alle entsprechenden Anfragen an die Datenbank weiterleitet. +


+ + + +
 Titel  + Inhalt  + Suchen  + Index  + DOC  +Handbuch der Java-Programmierung, 5. Auflage, Addison +Wesley, Version 5.0.1 +
 <<  +  <   +  >   + >>  + API  +© 1998, 2007 Guido Krüger & Thomas +Stark, http://www.javabuch.de +
+ + + -- cgit v1.2.3