INTERNET - Programmierung TCP/IP HTML CGI JAVA PRRU - 4.Jg (Prozeßregelung / Rechnerverbund) Version 3 vom 30.August 1998 Lehrer: D.I. Reinhard SIMON Htl Wr. Neustadt, Abt. EDVO PRRU Literaturhinweise Kühnel Ralf Die JAVA 1.1 Fibel ADDISON-WESLEY CORNELL/HORSTMANN JAVA bis ins Detail Heise 1 NETZWERKE: GRUNDLAGEN (WIEDERHOLUNG GDVA) 3 1.1 Datentransport zwischen Computern 3 1.2 Verschiedene Übertragunsmedien 3 1.3 Synchronisation des Datentransports 4 1.4 Datenfernübertragung(DFÜ) 6 1.5 Das OSI-Modell von ISO 7 1.6 LAN (Local Area Network) lokales Netzwerk (digital) 8 1.7 WAN (Wide Area Network) Weitverkehrsnetz 8 1.8 INTERNET 8 1.9 Netz-Topologien 10 1.10 Netzprotokolle 11 2 TCP/IP 12 2.1 Einleitung 12 2.2 Zeitmultiplexverfahren im Internet und Routing 13 2.3 TCP/IP-Protokolle 14 2.4 Internet-Adressen (IPV4) 15 2.5 DNS (Domain Name System) des Internet 2.5.1 IP-Masquerade 16 17 2.6 TCP/IP-Anwendungen und TCP/IP konfigurieren 2.6.1 l1:/etc/rc.config: 2.6.2 l1: /etc/exports: 2.6.3 l1:Ausgabe von /sbin/route: 2.6.4 l1:Ausgabe von /usr/sbin/traceroute: 2.6.5 l1:Ausgabe von /sbin/ifconfig: 2.6.6 l1:Ausgabe von /usr/sbin/arp -a und ping 2.6.7 sun:/etc/netmasks: 2.6.8 sun:/etc/defaultdomain: 2.6.9 sun:/etc/defaultrouter: 2.6.10 sun:/etc/named.data/named.hosts: 2.6.11 sun:Ausgabe von usr/bin/netstat -r: 2.6.12 CISCO (Internet-Router) 2.6.13 LAN WORKPLACE FOR DOS, NET.CFG : 2.6.14 TRUMPET WINSOCK 18 18 19 19 19 20 20 20 20 20 20 21 21 21 22 3 HTML 23 3.1 URLs 3.1.1 HTTP 3.1.2 MIME Internet-Programmierung (TCP/IP, JAVA, HTML) 23 23 23 / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 2 3.2 WWW-Browser 23 3.3 HTML: Struktur-Tags, Überschriften, Umbrüche 24 3.4 HTML:Listen, Zeichenformatierung 24 3.5 HTML: Grafiken, Hyperlinks, Java-Applets referenzieren 24 3.6 CGI-Skripte 3.6.1 Technik ohne JAVA: 25 25 3.7 WWW-Server Apache konfigurieren 26 4 JAVA 28 4.1 Die JAVA-Klasse applet 28 4.2 java.net.Socket 29 4.3 java.net.URL 32 1 Netzwerke: Grundlagen (Wiederholung GDVA) 1.1 Datentransport zwischen Computern ⇒ Simplexbetrieb (Richtungsbetrieb) Die Übertragung der Daten (DÜ) erfolgt nur in einer Richtung. Beispiele: Radio, TV. Diese Art der DÜ besitzt in der EDV praktisch keine Bedeutung. ⇒ Halbduplex (Wechselbetrieb) Der Sender wird abwechselnd zum Empfänger und der Empfänger zum Sender. Die in dieser Betriebsart kommunizierenden Endgeräte müssen also synchronisiert zwischen Sende- und Empfangsbetrieb umschalten. Bei Endgeräten älterer Bauart ist diese Betriebsart noch verbreitet. Beispiele: Wechselsprechanlagen, CB-Funk, Großrechnerterminals. ⇒ Vollduplex (Gegenbetrieb) Senden und Empfangen ist gleichzeitig möglich. Diese Betriebsweise ist bei modernen Datenübertragungsverfahren üblich. Beispiele: Serielle DÜ zwischen zwei Rechnern, Datennetze, Telefon, usw. ⇒ Zeitmultiplexverfahren: Bei digitaler Übertragung können verschiedene Informationen zeitlich ineinander verschachtelt werden. 1.2 Verschiedene Übertragunsmedien ⇒ Koaxialkabel Ein Koaxialkabel besteht aus einem Leiterdraht, der in eine Kunststoffmasse eingebettet ist. Um diesen Kunststoff ist ein Drahtgeflecht gewickelt, das der Abschirmung des Innenleiters dient. Das Ganze ist zusätzlich von einem Mantel umgeben. Koaxialkabel werden unter anderem als Verbindung zwischen Fernseher und Dachantenne verwendet. Eingesetzt werden diese Kabel beim „Thin" Ethernet, das wir auch hier in der HTL im Einsatz haben. Datentransferrate: 10MBit/s. ⇒ Verdrillte Kupferkabel (Twisted Pair) Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 3 Verdrillte 2- oder 4-Drahtleitungen aus Kupfer sind das traditionelle Übertragungsmedium der Fernmeldetechnik. Eingesetzt werden diese Kabel im Ethernet und in Token Ring Netzwerken der Firma IBM. Dabei werden innerhalb der Leiterpaare die Datenbits komplementär übertragen. Damit ist schon ein erster Schutz vor Datenübertragungsfehlern und Leitungsstörungen gegeben. Datentransferrate: 10 MBit/s oder 100MBit/s. ⇒ Glasfaserkabel Schutz Mantel Verfahren: Die elektrischen Signale werden über einen elektrooptischen Kern Wandler (Elektroluminiszenzdioden = LED oder Laserdioden) in Mantel Lichtsignale umgesetzt und über ein Schutz Glasfaserkabel übertragen. Am Ende des Kabels werden die Lichtsignale von einem optoelektrischen Wandler (Fotodiode) wieder in elektrische Signale zurückgewandelt. Das Prinzip der Übertragung beruht auf der totalen Reflexion. Eine optische Faser besteht aus zwei Regionen. Die innere Region, der Kern, hat eine höhere Phasenbrechzahl als die äußere Region, der Mantel. Wird nun Licht in einem bestimmten Winkel in den Glaskern eingespeist, dann wird der Lichtstrahl aufgrund der unterschiedllichen Phasenbrechzahl an der Grenze zwischen Kern und Mantel vollständig reflektiert. Durch diese totale Reflexion bewegt sich der Lichtstrahl innerhalb der Glasfaser fort. Vorteile: Nachteile: - geringe Verluste bei der Übertragung, d. h. größere Entfernungen möglich - hohe Übertragungsgeschwindigkeiten (einige GBit/s, Monomode) - sehr geringe Störanfälligkeit (immun gegenüber elektromagnetischen Feldern) - sehr hohe Abhörsicherheit - kleiner Durchmesser (gute Biegsamkeit, einfach zu verlegen) - geringes Gewicht - große allgemeine Sicherheit (kein Funkenschlag möglich, daher in explosionsgefährdeten Gebieten einsetzbar) - Stationsanschlüsse bringen Probleme (Energieverlust, optische Reflexionen) - aufwendige Anschlußtechnik notwendig (AUI-Adapter) ⇒ Richtfunk und Satelliten Eine Übertragung durch die Luft ist mit Hilfe von lnfrarotsendern, Laserstrahlen, Mikrowellen und Radiosendern möglich. Die Mobilfunknetze der Post übertragen die Daten mit elektromagnetischen Wellen. Wellenlänge x Frequenz = Lichtgeschwindigkeit. Eine Richtstrecke muß vorhanden sein. Die unterschiedlichen Netze (C-Netz, D-Netz, GSM) liegen auf eigenen Frequenzbereichen. Die Datenübertragungssoftware der Vermittlungsrechner der Post müssen Störungen bei der Übertragung korrekt behandeln. 1.3 Synchronisation des Datentransports Damit die vom Sender übermittelte Information von einem Empfänger wieder korrekt interpretiert werden kann, ist eine Synchronisation zwischen beiden notwendig. Die im folgenden dargestellten Verfahren unterscheiden sich im wesentlichen dadurch, - wie diese Synchronisation, d. h. die Erzeugung eines Gleichlaufs zwischen Quelle (Sender) und Senke (Empfänger) hergestellt wird und - wie lange dieser Gleichlauf anschließend gesichert ist, bzw. in welchen Abständen neu synchronisiert werden muß. ⇒ Bei synchroner Datenübertragung ist der Gleichlauf zwischen Sender und Empfänger über eine längere Zeitdauer, während der Übertragung einer ganzen Folge von Zeichen, gewährleistet. Derartige Zeichenfolgen werden Übertragungsblöcke genannt. Die Synchronisation erfolgt durch Übertragung spezieller Synchronisationszeichen. Danach beginnt die Übertragung eines Blocks. Im allgemeinen ist Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 4 ein Block durch Steuerzeichen begrenzt (z. B. STX - Start of Text, ETX - End of Text) und durch ein oder mehrere Prüfsummenbytes abgesichert. Vorteil: Bessere Leitungsausnutzung, weil der Nutzdatenanteil größer ist Nachteil: Höhere Anforderungen an Sender und Empfänger ⇒ Bei asynchroner Datenübertragung, auch Start-Stop-Verfahren genannt, ist eine zeichenorientierte Übertragungsart, bei der die Synchronisation zwischen Sender und Empfänger am Anfang und am Ende jedes übertragenen Zeichens mittels Start und Stopbits hergestellt wird. Die Zeitabstände zwischen den einzelnen Zeichen können unterschiedlich lang sein. Vorteil: Gleichlaufanforderungen an Sender und Empfänger sind verhältnismäßig gering, so daß sie mit geringem technischen Aufwand realisiert werden können. Ein großer Teil der Übertragungskapazität (etwa 30 %) wird für die Synchronisation verwendet. Die Übertragung ist empfindlich gegen Signalverzerrungen, daher nur für geringe Geschwindigkeiten geeignet. Beispiel: DÜ über RS232-Schnittstelle Stb 1 2 3 4 5 . . n Pb Stop Asynchroner ⇒ ATM Transfer Mode Wird für Hochgeschwindigkeitsübertragung mit 133 Mbit/s verwendet. Einführung erfolgte mit der Übertragung von Bild, Sprache und Daten in öffentlichen Netzen (Breitbandnetze). Die Daten werden in Pakete verpackt und asynchron zu ihrem Ziel vermittelt. Stb ... Startbit Pb ... Paritätsbit Stop ... Stopbit Übertragungsgeschwindigkeit Unter Übertragungsgeschwindigkeit versteht man die Anzahl der pro Zeiteinheit übertragenen binären Signale (Brutto-Datenübertragungsrate). Die Einheit ist Bit pro Sekunde (Bit/s oder bps). Ein Baud ist eine Übertragungseinheit pro Sekunde. Bei digitaler Übertragung entspricht ein Baud einem Bit pro Sekunde. Bei analoger Übertragung muß das nicht der Fall sein, weil in eine Übertragungseinheit mehr als ein Bit kodiert sein können. Transfergeschwindigkeit Darunter versteht man die Anzahl der übertragenen Datenbits je Zeiteinheit, welche vom Empfänger als brauchbar akzeptiert werden (Netto-Datenübertragungsrate). Verminderung der Transfergeschwindigkeit gegenüber der Übertragungsgeschwindigkeit: 1. Start- und Stopbits bei asynchroner DÜ 2. Synchronisations- und Blockbegrenzungszeichen bei synchroner DÜ 3. Prüfinformationen wie Paritätsbit und Prüfsummen 4. Fehleranfälligkeit des Übertragungsmediums 5. verwendeten Code 6. Verpackung bei ATM Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 5 1.4 Datenfernübertragung(DFÜ) Verbindung von einem Computer zu anderen Computern, entfernten Druckern oder Terminals, wenn Entfernungen von über 50 m zurückgelegt werden. Außerhalb eines Grundstückes unterliegt die Herstellung des Übertragungsmediums zumeist einem Monopol der Post. Im Jahre 1995 wurde in Österreich der erste private Betreiber eines Mobilfunknetzes zugelassen. Bsp.: Die Post genehmigt ein Modem und führt die Übertragung durch. Es wird das bereits bestehende Telefonnetz genutzt. Die Post unterhält auch die Datennetze Datex-P (paketvermittelnde DFÜ) und Datex-L (leitungsvermittelnde DFÜ). Bei Telefonleitungen ist zu unterscheiden zwischen ⇒ Wählleitung Die Verbindung wird, wie beim Telefonieren, aufgebaut und besteht nur für die Übertragungsdauer. Die Übertragungsgeschwindigkeit beträgt 2400 Baud. Grundgebühr und Gebühr pro verbrauchte Einheit sind zu bezahlen. ⇒ Standleitung Ist eine ständige Verbindung der Partner. Sie hat den Vorteil, daß der Partner immer erreichbar ist und man von anderen Teilnehmern nicht gestört werden kann. Für Standleitungen ist eine monatliche Pauschale zu bezahlen. ⇒ ISDN Integrated Services Digital Network Ein ISDN-Anschluß besteht aus einem 16KBit Steuerkanal und zwei 64KBit Datenkanälen. Die Übertragung von Sprache und Daten erfolgt in digitaler Form. Ein MODEM ist nicht notwendig. Die Verbindung wird nur dann aufgebaut, wenn tatsächlich Daten gesendet oder empfangen werden. Danach wird die Verbindung nach einer einstellbaren Zeit wieder abgebaut. Im Stand-By Modus fallen keine Gesprächsgebühren an. Kommt ein weiteres Datenpaket, garantiert die Post die Verbindungsaktivierung in 0.5 Sekunden. Diese Form hat sich in Europa durchgesetzt (EURO-ISDN) ⇒ ATM - Asynchroner Transfer Mode Ist für die Hochgeschwindigkeitsübertragung von Bild, Sprache und Daten geeignet. Analoge Übertragung von Daten mit MODEM Um Daten über eine analoge Telefonleitung übertragen zu können, müssen sie in eine geeigneter Form umgewandelt (moduliert) und wieder zurückgewandelt (demoduliert) werden. Modems sind Geräte zum Umwandeln digitaler Daten in analoge und umgekehrt, die dann übertragen werden. Da in ein analoges Baud mehrere Bits gepackt werden können, gibt es verschiedene Geschwindigkeitsstandards: 9600 bps, 14400 bps, 28800 bps und 56000 bps. Müssen mehrere Terminals an einer Fernverbindung angeschlossen werden, so müssen Konzentratoren (z.B. Terminal-Server) eingesetzt werden, die die ankommende Daten sammeln und weiterleiten. Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 6 1.5 Das OSI-Modell von ISO 1980 wurde von der ISO, einem Internationalen Normungsgremium, das OSI- 7 Schichten-Protokoll verabschiedet. OSI: Open System lnterconnect, also eine offenes herstellerunabhängiges Netzwerkprotokoll. Ist anwendungsspezifisch. (z.B. Netscape) 7.)Verarbeitungsschicht 6.) Darstellungsschicht 5.) Kommunikationsschicht Stellt Sprachmittel zur Verfügung. (z B ASCII HTML Dokumente) Eröffnet, kontrolliert und beendet die Sitzungen.(z.B. login, logout) Regelt den Datenfluß zwischen Endbenutzern(z.B. Datenpakete) 4.) Transportschicht Koppelt die gesicherten Verbindungen, die über Zwischencomputer gehen. 3.) Vermittlungsschicht 2.) Sicherungsschicht 1.) Bitübertragungsschicht Sichert die ungesicherten Verbindungen. (z.B. CSMA/CD für Busnetze oder Token Passing für Ringnetze, HDLC,X.75 für Televonleitung) Ungesicherte Verbindungen zwischen Computern, zur Übertragung von Bits. (z.B. RS232) Geräte, die die Verbindung zwischen Netzwerken mit unterschiedlichen Protokollen herstellen, orientieren sich an den Funktionen der entsprechenden Schicht des OSI-Modells: Schicht 1: Repeater (Ein eintreffendes Signal wird unverändert wieder ausgesendet) Schicht 2: Bridge oder Switch (Ein eintreffendes Datenpaket wird nur dann weitergeleitet, Schicht 3: Router wenn es an einen Partner in einem anderen Netz adressiert ist. Der lokale Verkehr wird also nicht weitergeleitet) Schicht 4-7: Gateway Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 7 1.6 LAN (Local Area Network) lokales Netzwerk (digital) Diese Netze werden auch Büronetze genannt. Mehrere PCs, Workstations oder Terminals werden mit einer entsprechenden Netzwerk-Topologie mit Großrechnern, UNIX-Rechnern oder File-Servern zusammengeschlossen. Jeder Computer des Netzes erhält einen eigenen Adapter (wird mit einer Netzwerkkarte eingebaut z.B. NE2000), an den die Verbindungskabel angeschlossen werden. Zumeist sind dies Koaxialkabel für geringe Entfernungen. In den 70er und 80er Jahren hatte man Großrechenanlagen mit angeschlossenen "dummen" ASCIITerminals (reine I/O Geräte lediglich für ASCII-Zeichen). Die Netzwerke werden von den Computerherstellem entwickelt und waren untereinander nicht kompatibel. Verbindungen zwischen einem Netzwerk der Firma SIEMENS (Transdata-Netzwerk) und einem der Firma IBM (SNA .. Structured Network Architecture) können nur sehr mühsam über einen Gateway-Computer hergestellt werden. Mit der Entwicklung der PCs wurden die PCs mit einem File-Server zu sogenannten Client-Server Netzwerken zusammengeschlossen. ETHERNET entwickelte sich zum Standardnetzwerk. Von der Firma IBM wurde der TOKEN RING als Konkurrenzprodukt auf den Markt gebracht. Auf den PCs kann man die Anwendungen mit einer grafischen Oberfläche gestalten. Der File-Server dient zum Laden von Software und zur Verwaltung zentraler Datenbestände. Der größte Nachteil dieser Lösung ist der hohe Betreuungsaufwand für die Installation und Wartung der PCs. Vom X-Konsortium des MIT wurde Anfang der 90er Jahre das X-Window-System erfunden. Es vereinigt die Vorteile der Großrechner- und der Client-Server-Netzwerke. Die haben jedoch grafische Oberflächen wie der PC. Anstelle des File-Servers tritt ein Multi-User /Multitaskingfähiger Rechner unter den Betriebssystemen UNIX. Als Netzwerk kann weiterhin das ETHERNET verwendet werden. 1.7 WAN (Wide Area Network) Weitverkehrsnetz Die Netzverbindung geht über öffentlichen Grund und unterliegt damit dem Monopol der Post. Diese Netze können sich über Kontinente erstrecken. Bsp.: Netzwerke, die die Niederlassungen von weltweit tätigen Konzernen miteinander verbinden, wie Versicherung, Fluggesellschaft, Reisebüro mit Filialen, Computerkonzerne. Netzwerke, über die Informationen für Kunden oder die Wissenschaft weltweit verteilt werden, wie das INTERNET oder Compuserve. CompuServe Elektronische Enzyklopädie, aktuelles Wetter, Reiseinformationen, medizinische und rechtliche Information, Email BTX BTX ist von der Österreichischen Post. BTX verwendet Datex-P (Paketvermittlung). Die Daten werden in Form von Datenblöcken über das Telefonnetz geschickt. Es besteht keine durchgehende physikalische Verbindung vom Sender zum Empfänger. Der BTX-Teilnehmer benötigt einen Computer, Software und ein Modem. Angeboten wird Email, Telebrief (Ermöglicht das Erstellen und Verschicken von Briefen), Kontostandabfragen, Telebanking. 1.8 INTERNET Das weltweit verzweigte Internet wird von keiner zentralen Stelle überwacht. Das Netz wird immer nur im eigenen Bereich (Site) gewartet und erweitert. Jeder kann daher seinen Rechner oder sein gesamtes Netzwerk an das Internet anschließen. Im Jahre 1995 waren 3,8 Millionen Sites angeschlossen. Um im internationalen Netz erreichbar zu sein, muß ein Internet-Anbieter (Provider) den Namen seines Rechners oder Netzwerks (Domain) beim Name Information Center (Internic) anmelden. Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 8 Falls der Name noch nicht vergeben ist, quittiert Internic die Anmeldung mit einem Eintrag ins Namensregister. Internet-Provider sind Rechner, auf denen Dienste für andere Internet-User zur Verfügung gestellt werden. Als einheitliches Netzprotokoll wird TCP/IP verwendet. Unter einem DOS/WINDOWS-PC erfolgt die Anbindung meist über SLIP (Serial Line Internet Protocol), das eine normale Telefonleitung zu einer InternetLeitung macht. Die Anbindung ans Internet über SLIP erfolgt über das 'Windows Socket API". Diese Erweiterung des normalen Windows-API (Application Programming Interface) von Windows ermöglicht die Anbindung von Programmen an TCP/IP. Werden ganze LANs an das Internet angeschlossen, so erfolgt dieser Anschluß über eine Standleitung oder einen ISDN-Anschluß. Damit Datenpakete des LANs ins Internet gelangen können und umgekehrt, benötigt man einen Router. Normalerweise sind Router hardwaremäßig implementiert (z.B. von der Firma CISCO). Billiger, jedoch nicht so leistungsfähig sind softwaremäßig implementierte Router wie z.B. die Shareware KA9Q (ISDN/IP-Router für DOS) Das Internet Protocol IP übernimmt gleichermaßen die Rolle der Post und befördert die einzelnen Datenpakete über das lnternet zum Adressaten. Die Datenpakete werden nicht direkt, sondern über mehrere Verteiler, die Router, weitergeleitet. Jeder Router, der ein IP-Paket empfängt, leitet es an einen Nachbarrechner weiter. Das wiederholt sich, bis der Empfänger erreicht ist. Dieses Verfahren bezeichnet man als routing (Dynamische Leitwegbildung). Um das Internet nutzen zu können, braucht man außer der geeigneten Software auch eine Zugriffsberechtigung zum Internet. Diese wird von Internet-Anbietern verkauft, und macht einen nicht unerheblichen Teil der Installationskosten aus. Dienste des Internets: ⇒ Email ⇒ Der WWW-Browser für das World Wide Web bietet eine grafische Oberfläche.(Netscape) ⇒ Sehr gut eignet sich das Internet als Diskussionsforum für EDV-Belange und die Wissenschaft. ⇒ FTP (File-Transfer) mit der Dateiensuchhilfe archie ⇒ Telnet (Terminal Emulation) Da mit dem Anschluss an das Internet Sicherheitsrisken verbunden sind, werden die Dienste des Internets in Firmennetzwerken verwendet. Diese Netze nennt man INTRANET. Der Anschluss ans Internet erfolgt mit Firewalls und Proxy-Server. Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 9 1.9 Netz-Topologien Die Topologie eines Netzwerkes ist die Art und Weise der Verbindung durch Kabeln zwischen den einzelnen Knoten (Server, Workstations, Gateways, PCs, Drucker). 1.)Ring-Topologie PC Plotter PC PC PC Drucker Nachteile: PC Die Computer sind ringförmig angeordnet, jeder Computer ist mit 2 Computern verbunden. Die Übertragung von Informationen erfolgt von Computer zu Computer in einer Richtung. Der Absender versieht die Information mit der Empfangsadresse, der Empfänger versieht die Nachricht mit einer Empfangsquittung und schiebt sie weiter. Dabei werden Teile der Nachrichten in den Computern zwischengespeichert und paketweise weitergeleitet. Der Absender kann so erkennen, ob die Information empfangen wurde oder nicht. Vorteile: Es ist keine Zentrale nötig (jeder Computer übernimmt Steuerung) Es sind weniger Kabeln als bei der SternTopologie notwendig. Theoretisch sind beliebig viele Computer anschließbar. bei Ausfall einer Station steht das ganze Netz (Abhilfe: Überbrückungsschaltungen) 2.)Stern-Topologie (Großrechnertechnologie) PC PC PC Alle Computer sind an einen zentralen Vermittlungsrechner (Konzentrator) angeschlossen, der die Steuerung und Überwachung des gesamten Kommunikationssystems PC SERVER Plotter wahrnimmt. Entweder ist das ein spezieller Computer, der nur für die Kontrolle zuständig ist, oder ein beliebiger Verarbeitungscomputer, der zusätzlich Kontrollaufgaben übernimmt. Drucker PC PC Vorteile: Bei Ausfall eines Computers bleibt das Netz funktionsfähig Die Hinzunahme oder das Entfernen eines Computers aus dem Netz ist unproblematisch. Nachteile: Bei Ausfall der Zentrale fällt auch das Netz aus. Die Anzahl der Computer ist durch die Leistungsfähigkeit der Zentrale beschränkt. Aufwendige und teure Verkabelung, da alle Computer mit der Zentrale verbunden werden müssen. 3.)Bus-Topologie Alle Computer sind an einem Kabel angeschlossen. Informationen können ohne Mithilfe anderer Computer vom Sender zum Empfänger gelangen. Dies PC PC PC PC ist dadurch möglich, da immer aller Computer des Netzes mithören, aber nur die an sie adressierten Informationen verwenden. Die PCs unserer HTL sind mit einem Bus vernetzt. PC Vorteile: Nachteile: Drucker PC Plotter ausfallsicher (einzige Schwachstelle ist der BUS) einfache Verkabelung Drucker und Peripheriegeräte können leicht hinzugefügt werden. Bei der Übertragung werden nur die beteiligten Stationen benötigt. Abhörsicherheit ist nicht gegeben Geschwindigkeit ist begrenzt Es kann nur eine begrenzte Anzahl von Computern an ein Busnetz angeschlossen werden. 4.)Strukturierte Topologie (Derzeitiger Stand der Technik) Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 10 Jedes einzelne Endgerät (PCs, Terminals, Drucker) wird sternförmig an einen zentralen Hub bzw. einen Konzentrator mit vier paarigen, abgeschirmten Kupferkabeln (Twisted Pair) angeschlossen. Anstelle von Hubs (Bus-Topologie) werden immer mehr Switches eingesetzt. Dadurch werden Nachrichten nur mehr zu den tatsächlich betroffenen Stationen gesendet. Die Konzentratorpunkte werden mit mehreren Glasfaserkabel und einem zusätzlichen Kupferkabel verbunden, um ein Umstecken der Verbindungen im Fehlerfall zu ermöglichen. Vorteile: Nachteile: Bei Ausfall eines Computers bleibt das Netz funktionsfähig Die Hinzunahme oder das Entfernen eines Computers aus dem Netz ist unproblematisch. Bei Ausfall einer Verbindung kann auf eine weitere Verbindung umgeschaltet werden, da die Verkabelung redundant ist. Aufwendige und teure Verkabelung, da alle Computer mit dem Hub verbunden werden müssen. 1.10 Netzprotokolle Mit der Herstellung von Leitungsverbindungen ist das Netz noch nicht komplett. Für den Betrieb des Netzes ist spezielle Software nötig, die den Datentransport im Netz organisiert. Diese Software wickelt zwischen den einzelnen Knoten ein sogenanntes Protokoll (Folge von Steuersignalen) ab, das bewirkt, daß Daten kollisionsfrei und richtig über die Leitungen transportiert werden. 1.)CSMA/CD (Carrier Sense Multiple Access/Collission Detection) (OSI Schicht 1+2) Einsatz in Busnetzen mit ETHERNET oder TOKEN RING- Netzen. Funktion: Der Sender versieht die Information mit einem Transportetikett, aus dem man Sender und Empfänger der Nachricht erkennen kann. Danach prüft der Sender, ob der Übertragungskanal frei ist. Liegt kein Signal (Carrier) an, so beginnt er mit der Übertragung. Alle angeschlossenen Computer empfangen die Nachricht, aber nur der Computer, der seine Adresse im Transportetikett findet, bearbeitet sie weiter. Es könnte nun der Fall eintreten, daß 2 Computer gleichzeitig feststellen, daß der Übertragungskanal frei ist und gleichzeitig mit der Übertragung beginnen. In diesem Fall kommt es zum Zusammenstoß der Nachrichten (Collission). Der Computer, der das als erster feststellt, erzwingt dann durch ein spezielles Steuersignal den Übertragungsabbruch. Beide Computer warten danach eine durch einen Zufallsgenerator bestimmte Zeit ab, bevor sie einen neuen Sendeversuch starten. Einem guten Zeitverhalten bei mittlerer Auslastung steht eine undefinierte maximale Transportzeit gegenüber. 2.) TOKEN Passing(OSI-Schicht 1+2) Die Sendeberechtigung wird über einen Steuerblock vergeben, den sogenannten TOKEN, der von einem Computer zum nächsten weitergegeben wird. Der Computer, der den TOKEN besitzt, kann senden. Nach durchgeführter Übertragung gibt er den Token weiter. Einem hohen Vermittlungsaufwand bei niedriger Auslastung steht eine definierte maximale Transportzeit gegenüber. Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 11 2 TCP/IP 2.1 Einleitung Die Anfänge von TCP/IP reichen in die frühen 70er Jahre, als eine amerikanische Verteidigungsbehörde das Arpanet, ein experimentelles Netzwerk, gründetet. Später, nachdem dieses Netz mehrere Universitäten verband, wurde das Protokoll TCP/IP (Transfer Protocol/ lnternet Protocol) entwickelt. Aus dem Arpanet entwickelte sich das Internet, und danach setzte sich TCP/IP als internationales Netzwerkprotokoll auch gegen OSI durch. Die OSI-Protokolle der X.400-Normungsreihe haben sich nur im Rahmen von EDIFACT (Electronic Data Interchange und Faktorierung) durchgesetzt. TCP/IP-Architektur: im wesentlichen besteht die TCP/IP-Architektur aus 4 Schichten. ⇒ Die Netzwerkschicht übernimmt die physikalische Datenleitung. Sie setzt auf vorhandene Netzstrukturen der Schicht 1+2 auf, wie z.B. das ETHERNET mit CSMA/CD. Diese Schicht stellt sicher, daß die Daten korrekt und an den beabsichtigten Adressaten übermittelt werden. ⇒ Die lnternet-Schicht (IP-Protocol) übernimmt die Herstellung und Überwachung von Netzverbindungen zwischen verschiedenen Computern. Sie ermöglicht die Kommunikation und die Weitervermittlung von Informationen zwischen verschiedenen Netzen.(routing über gateways) (Entspricht OSI Schicht 3) ⇒ Die Transportschicht (TCP-Protocol) verfügt über verbindungslose und verbindungsorientierte Protokolle, die den eigentlichen Datenfluß regeln. (Entspricht OSI Schicht 4) ⇒ Die Applikationsschicht bietet eine Reihe standardisierter Anwendungen wie ping, arp, finger, telnet, ftp, NFS, NIS, DNS, PPP, WWW, NNTP, IRC und Email, die besondere Stärke von TCP/IP darstellen. (Entspricht OSI Schicht 4-7) Der Datenfluß zwischen den verschiedenen Schichten erfolgt durch die Übergabe der Datenpakete. Jede Schicht dabei ein neues Datenpaket, in dem die empfangenen Daten wieder enthalten sind. Den hinzugefügten Teil nennt man Header. Diese Header werden dann zur Adressierung und Übertragung verwendet. Eine IP-Adresse besteht aus 4 Zahlen zwischen 0 und 255. Jede dieser vier Zahlen enthält, wie bei einer Postanschrift, eine bestimmte Adreßinformation. Diese Nummern sind schwer zu merken, daher werden sie in Namen, die Domäne, umgesetzt. Aus 193.81.13.2 wird so der Name ftp.ping.at . Anhand dieser DomainAdresse läßt sich meist das Land (letztes Kürzel) und die Art der Organisation ablesen. (at = Austria, de = Deutschland, USA hat kein Länderkürzel ) Weiters gilt: com=kommerziell, ac=akademisch, edu=Schulen/Universitäten, net=Provider) Bei einer Internet-Email-Adresse kommt noch der durch einen Klammeraffen getrennte Benutzername dazu. [email protected] ist die E-Mail-Adresse des Benutzers r.simon, der Domäne htlwrn.ac.at. Verzeichnis der gültigen Computer (hosts) der HTL Wr. Neustadt,Abt. EDVO 127.0.0.1 193.170.149.62 193.170.149.158 193.170.149.33 193.170.149.128 193.170.149.151 193.170.149.161 193.170.149.154 193.170.149.155 loopback #Zum Test, der Rechner wird nicht verlassen novell1 n1 #Novell-Server Karte für Saal Zuse novell4 n4 #Novell-Server Karte für Saal Zemanek U101 #1.PC im Saal Zuse U401 #1.PC im Saal Zemanek SUN #Domain Name Server, Mail Server Ts1 #Terminal-Server www #WWW-Server der HTL l1 #Linux-Server Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 12 193.170.149.156 Firei 193.170.149.190 Fireo 193.170.149.189 CISCO #1.Netzwerkkarte Firewall im Segment ZEMANEK #2.Netzwerkkarte Firewall im Segment NEUMANN #Router ins Internet 2.2 Zeitmultiplexverfahren im Internet und Routing File-Transfer Uni-Wien U102 Univie.ac.at U102 Paket 1 U102 Paket 2 U205 Paket 1 U102 Paket 3 U304 Paket 1 t Cisco-Router ISDN-Leitung Wien Cisco NEW-YORK Bildaufbau Yahoo U205 Cisco-Router Wr. Neustadt Bildaufbau IBM.com U304 IBM.com Yahoo Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 13 2.3 TCP/IP-Protokolle ⇒ IP (Internet Protocol): verbindungsloses, unzuverlässiges Protokoll für die Auswahl des Datenübertragungsweges zwischen 2 Rechnern (routing). Mit „ping“ und „traceroute“ wird diese Verbindung überprüft. ⇒ TCP (Transmission Control Protocol): Protokoll für einen verbindungsorientierten, zuverlässigen Datentransfer. ⇒ ICMP (Internet Control Message Protocol): für die Übertragung von Fehler- und Diagnoseinformationen. ⇒ ARP und RARP (Reverse Address Resolution Protocol): für die Umsetzung der 32-Bit Internet-Adressen in die 48-Bit Ethernet(MAC)-Adressen. Um die Ethernet-Adresse eines Hosts zu ermitteln, verschickt ARP einen Rundruf an alle („Broadcast“) ⇒ TELNET: Terminalemulation. Mit „finger“ wird überprüft, wer von wo auf einem Server arbeitet. ⇒ FTP: File Transfer Protocol ⇒ PPP (Point to Point) : Dient zur Übertragung von Datagrammen über eine serielle Leitung mit dem Protokoll HDLC (High Level Data Link ) Bei der Konfiguration eines PPP-Clients ist es wichtig, dass die Authorisierung überprüfbar ist. Dazu dient das PAP(Password Authentication Protocol) Hier nur ein Beispiel wie sich ein Client über die serielle Schnittstelle an seinen PPP-Server anschließt: pppd /dev/cua3 38400 crtscts defaultroute (crtscts : Hardwarehandshake wird durchgeführt) ⇒ SMTP (Simple Mail Transfer Protocol): Email ⇒ POP3 (Post Office Protocoll Nummer 3): Dient zum Austausch der emails zwischen Mail-Server und lokalem Mail-System wie Microsoft-Exchange oder Netscape Navigator. ⇒ NFS (Network File System): verteiltes Dateisystem, das exportierte Dateisysteme von remote-Rechnern ins lokale Dateisystem „mounten“ kann. ⇒ NIS siehe DNS ⇒ HTTP (Hypertext Transfer Protocol) ermöglicht das WWW (World Wide Web). Siehe HTML. ⇒ NNTP (Net News Transfer Protocol) ermöglicht Newsserver. ⇒ IRC (Internet Relay Chat) ermöglicht Konferenzen im Intenet. ⇒ DHCP(Dynmic Host Configuration Protocol): Die angeschlossenen Hosts eines Teilneztes haben keine fixen IP-Adressen. Wenn sich ein Host anmeldet, bekommt er vom DHCP-Server dynamisch eine Nummer zugeordnet. Die IP-Nummer 0.0.0.0 deutet auf DHCP hin. Die Internet-Provider arbeiten mit dieser Technik, da IP-Nummern eine knapper Ressource sind, und niemals alle Kunden gleichzeitig arbeiten. Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 14 2.4 Internet-Adressen (IPV4) Es gibt 4 Klassen von Internet-Adressen, wobei durch das Wachstum des Internets bedingt, nur mehr das Class-C Netz und das CLASS-C-Subnetz wichtig ist. Class C 110 Class C- 110 Subnetz 5 + 8 + 8 Bit Netzwerkadresse 5 + 8 + 8 + (8-n) Bit Netzwerkadresse 8-Bit lokale Rechneradressen n -Bit lokale Rechneradressen Die Vergabe der Internet-Adressen wird auf Ansuchen von einer zentralen Stelle, dem Internic, vergeben und ist kostenpflichtig (Jahresgebühr). Class-C-Adressen: 192.1.x bis 223.254.254.x • • • • • • 255.255.255.255 Broadcast-Adresse für das gesamte Internet 255.255.255.224 Class-C-Subnetzmaske wobei n=5 . Bei der Netzmaske sind alle Bits des Netzwerkteiles auf 1) (224 ergibt sich aus 27 + 26 +25) 193.170.149.255 Broadcast-Adresse unserer Schule 193.170.149.159 Broadcast-Adresse des Segments ZEMANEK 193.170.149.155 Rechner linux1 Netzwerkkarte 1 193.170.149.158 Netzwerkkarte im Novell-Server (Router zwischen Sälen) für Segment Zemanek Die Adressen und die zugeordneten Namen werden lokal in der Datei /etc/hosts und zentral durch NIS oder DNS verwaltet. IPV6 ist derzeit im Standardisierungsprozess und hat folgende Vorteile gegebüber IPV4: ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ mehr IP-Adressen leichteres Routing verbesserte Subnetz-Struktur automatisches Konfigurieren verbesserte Sicherheitsfunktionen Unterstützung von Multimedia und Echtzeitapplikationen Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 15 2.5 DNS (Domain Name System) des Internet In TCP/IP-Netzwerken wird über die 32-Bit Nummer nnn.nnn.nnn.nnn adressiert. Diese Nummern kann man sich nicht merken. Daher werden normale Namen wie U104 oder sun vergeben. Hostname-Auflösung ermittelt die IP-Adresse zu einem Namen. Dazu werden die Bibliotheksroutinen gethostbyname und gethostbyaddr verwendet. (Resolver-Bibliothek libc) Bei kleinen Netzwerken wie ETHERNET wird die Hostname-Auflösung über die Datei /etc/hosts durchgeführt. Diese Datei muß bei jeder Änderung auf allen Rechnern aktualisiert werden, was ab einer gewissen Anzahl von Rechnern mühsam wird. Eine Lösung für dieses Problem ist NIS, das Network Information System von SUN. NIS speichert die hostsDatei und weitere Dateien in einer zentralen Datenbasis auf einem NIS-Server. NIS-Clients können von dort Informationen beziehen. NIS eignet sich für mittelgroße Netze wie LANs, da alle Hosts zentral verwaltet werden. Am Beginn des INTERNETS wurden alle Adressen in einer zentralen Datei HOSTS.TXT gespeichert. Diese Datei wurde vom NIC, dem Network Information Center gewartet. Mit dem Wachstum des Internets gab es administrative Probleme. Auch der Aufwand, um die HOSTS.TXT zu verteilen, überforderte die Server. Daher wurde 1984 das DNS eingeführt. DNS organisiert Hostnamen in einer Hirarchie von Domänen (engl. domain). Eine Domäne ist eine Sammlung von ‘sites’, die miteinander verwandt sind. sun.htlwrn.ac.at ist vollqualifizierter Domänennamen (FQDN) der den Rechner sun weltweit eindeutig identifiziert. at steht für Österreich, in den USA entfällt diese Domäne. ac steht für academic, htlwrn für die HTL Wr. Neustadt. Der Vorteil von DNS besteht darin, daß wir innerhalb von htlwrn.ac.at unsere Namen und Unterdomänen lokal, also ohne NIC festlegen können. DNS, eine verteilte Datenbasis Wie kann eine Anwendung ohne zenrale Autorität feststellen, welche Namen zu welchen Adressen gehören? Wenn eine Anwendung außerhalb der HTL Wr. Neustadt einen Namen innerhalb unserer Domäne wissen will, so muß diese Anwendung unseren Domain Name Server „sun.htlwrn.ac.at“ fragen. Diese Anwendung muß jedoch nicht direkt unseren DNS befragen, sondern befragt den DNS ihrer Domäne, also den lokalen DNS, der die gefragten Daten liefert. Nehmen wir an, der lokale DNS sei „dns.univie.ac.at“, so befrägt dieser den DNS von „ac.at“, der den DNS von „htlwrn.ac.at“ befrägt und so die Daten liefert. Um die Netzlast nicht unnötig zu erhöhen, halten die DNS bekannte Informationen gemäß der „time to live“ (TTL) in einem lokalen Cache. Die DNS Datenbasis Diese enthält nicht nur Hostadressen sondern auch Regeln zum Austausch von Informationen mit anderen Domain Name Servern, die in der Datei named.hosts abgelegt sind. Jeder Satz in dieser Datei hat einen gewissen Typ. Ein „A“-Satz ordnet einem FQDN oder einem lokalen Namen eine IP-Adresse zu. Ein „CNAME“-Satz ordnet einem „A“-Satz einen weiteren Namen zu. Der „SOA“-Satz ist der „Start of Authority“ definiert allgemeine Informationen wie z.B. die TTL. Namen die nicht mit einem Punkt enden sind keine FQDN sondern lokal zur Domäne des DNS. Der spezielle Name „@“ ist der Name der Domäne (z.B. htlwrn.ac.at) Der „NS“-Satz definiert einen bekannten Domain Name Server, anschließend kommt ein „A“-Satz. Der mx-Satz definiert den Mailserver. /etc/mail/aliases ordnet die mail-Benutzer den UNIX-Benutzern zu, so wird z.B. „r.simon“ die Benutzerkennung sj zugeordnet. Da es machmal notwendig ist, den Domänennamen zu einer IP-Adresse zu suchen, gibt es auch die umgekehrte Namensauflösung (reverse lookup). Auf diese Weise kann ein Netzwerkdienst die Identität eines Netzwerkklienten überprüfen. Diese Angaben stehen in der Datei named.rev. Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 16 2.5.1 IP-Masquerade IPV4-Adressen sind eine knappe und teure Ressource und IPV6 befindet sich noch im Standardisierungsprozess. IP-Masquerading bietet eine einfachere Möglichkeit um ein Netzwerk ans Internet anzuschließen wie DNS mit Class-C-Subnetzen. Ein spezieller Rechner (z.B. unter linux) wird als Router eingesetzt und ändert die Adressen in den IPPaketen, bevor er sie in das nächste Netz weitergibt. Der Empfänger sieht als Absender nur die Adresse des Routers und schickt seine Antwort dorthin zurück. Der Router übersetzt die Adressen wieder und verteilt die Pakete an die eigentlichen Empfänger. Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 17 2.6 TCP/IP-Anwendungen und TCP/IP konfigurieren Übung TCP/IP-Kommandos: Probieren Sie folgenden Kommandos auf dem Rechner l1: ping, /usr/sbin/traceroute, finger, domainname, hostname, mail, telnet, ftp Verwenden Sie die Manualpages unter linux. Betrachten Sie die Homepage www.htlwrn.ac.at. Übung TCP/IP-Konfiguration: Dokumentieren sie handschriftlich das Netzwerk der HTL, die folgende Dateien bzw. Kommandoausgaben enthält. (Ziehen Sie auch die Manualseiten zu Rate. Auszüge der Datei /etc/hosts finden Sie weiter oben) ⇒ l1: /etc/hosts, /etc/rc.config (Hilfe im yast), /etc/gateways(routing-table), /etc/exports(NFS) Kommandoausgabe von: /sbin/route, /sbin/ifconfig, /sbin/arp -a ⇒ sun: /etc/netmasks, /etc/defaultdomain, /etc/defaultrouter, /etc/named.data/named.hosts, Kommandoausgabe von /usr/bin/netstat -r ⇒ cisco ⇒ dos: net.cfg ⇒ windows: trumpet winsocket 2.6.1 l1:/etc/rc.config: # # /etc/rc.config # # Copyright (c) 1996 S.u.S.E. GmbH Fuerth, Germany. All rights reserved. # # Configuration database for shell scripts in /sbin/init.d, /sbin/SuSEconfig # Hinweis: Diese Datei wird mit dem Konfigurationswerkzeug YAST bearbeitet # Es sind nur die TCP/IP-Einträge vorhanden # Also don't forget to edit the following files: # - /etc/lilo.conf # - /etc/fstab # - /etc/profile # - /etc/hosts # # start loopback networking? ("yes" or "no") START_LOOPBACK=yes # number of network cards: "_0" for one, "_0 _1 _2 _3" for four cards # IPADDR_0="193.170.149.155" IPADDR_1="" # # network device names (e.g. "eth0") # NETDEV_0="eth0" NETDEV_1="" # # parameteres for ifconfig, if you put "bootp" into it, bootp will # be used to configure it # sample entry for ethernet: IFCONFIG_0="193.170.149.155 broadcast 193.170.149.159 netmask 255.255.255.224" IFCONFIG_1="" # # network address of the devices (e.g. "-net 192.168.81.32" or # "-host 192.168.81.33") # Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 18 NETWORK_0="193.170.149.128" NETWORK_1="" # # if this is set, the default route will be set to this gateway # (e.g. "192.168.81.33") # GATEWAY_0="193.170.149.156" GATEWAY_1="" # # setup dummy network device for IPADDR_0? this is useful for non permanent # network connections (e.g. SLIP, PPP). Some software needs a connection # to FQHOSTNAME (e.g. plp). (yes, no) SETUPDUMMYDEV=yes # # hostname of the system (full name) # if zero, and bootp is used above, bootp will also set the hostname # (e.g. "riemann.suse.de" or "hugo.linux.de") # don't forget to also edit /etc/hosts for your system # FQHOSTNAME=linux1 # # domain searchlist that should be used in /etc/resolv.conf # (e.g. "suse.de linux.de uni-stuttgart.de") # Attention! this has to be filled out, if you want to access a name server # SEARCHLIST="sun.htlwrn.ac.at" # # space separated list of nameservers that should be used for /etc/resolv.conf # give a maximum of 3 IP numbers # (e.g. "192.168.116.11 192.168.7.7") # NAMESERVER="193.170.149.151" # News server. NNTPSERVER="linux1.htlwrn.ac.at" # start the inet daemon in multi-user? ("yes" or "no") # this is needed, if you have to telnet/rlogin to your own machine. START_INETD=yes # start portmap? ("yes" or "no") # this is needed, if the NFS server is started or if NIS is used START_PORTMAP=yes # should the NFS server be started on this host? ("yes" or "no") NFS_SERVER=yes # start the apache www-server in /local/www/sbin/httpd? ("yes" or "no") START_HTTPD=yes 2.6.2 l1: /etc/exports: #exports /home www(rw) 2.6.3 l1:Ausgabe von /sbin/route: Kernel routing table Destination Gateway ipnet1 * loopback * default Firei Genmask 255.255.255.224 255.0.0.0 0.0.0.0 Flags U U UG Metric 0 0 1 Window Use 0 419235 0 1675 0 46553 Iface eth0 lo eth0 2.6.4 l1:Ausgabe von /usr/sbin/traceroute: 1 2 3 4 5 Firei (193.170.149.156) 1.995 ms 1.724 ms 1.704 ms htlwrneu-server (193.170.149.189) 4.516 ms 4.534 ms 4.34 ms 193.170.149.5 (193.170.149.5) 36.378 ms 28.177 ms 28.198 ms gw2.bmuvie.gv.at (193.170.115.9) 30.645 ms 30.418 ms 30.428 ms Vienna-RBS.ACO.net (192.153.182.57) 31.213 ms 40.41 ms 31.041 ms Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 19 6 7 8 iris.cc.univie.ac.at (193.171.14.11) 31.518 ms 34.108 ms 31.682 ms hera.cc.univie.ac.at (131.130.208.2) 31.505 ms 31.454 ms 31.381 ms ftp.univie.ac.at (131.130.1.4) 33.506 ms 32.104 ms 34.245 ms 2.6.5 l1:Ausgabe von /sbin/ifconfig: eth0 2.6.6 Link encap:10Mbps Ethernet HWaddr 00:40:C7:55:21:C0 inet addr:193.170.149.155 Bcast:193.170.149.255 Mask:255.255.255.224 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1643374 errors:0 dropped:0 overruns:0 TX packets:1663116 errors:0 dropped:0 overruns:0 Interrupt:11 Base address:0x340 l1:Ausgabe von /usr/sbin/arp -a und ping Address 193.170.149.150 193.170.149.151 193.170.149.158 HW type HW address 10Mbps Ethernet 00:00:0C:3D:DA:7A 10Mbps Ethernet 08:00:20:74:FA:7E 10Mbps Ethernet 00:60:8C:96:EC:10 Flags C C C Mask * * * PING localhost (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.3 ms 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.2 ms --- localhost ping statistics --2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 0.2/0.2/0.3 ms 2.6.7 sun:/etc/netmasks: # # network-number netmask # 193.170.149.0 255.255.255.224 2.6.8 sun:/etc/defaultdomain: htlwrn.ac.at 2.6.9 sun:/etc/defaultrouter: 193.170.149.150 2.6.10 sun:/etc/named.data/named.hosts: ; named.hosts 19960205; ; CONTACT should be an username who feels responsible for the DNS . ; change all uppercase tokens to Your local names .... ; @ IN SOA sun.htlwrn.ac.at. root.sun.htlwrn.ac.at. ( 1995092738; Serial 3600 ; Refresh every hours 1800 ; Retry every hour 604800 ; Expire after a week Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 20 86400 ) ; Minimum ttl of 1 day IN NS sun.htlwrn.ac.at. IN NS ns1.univie.ac.at. ns1.univie.ac.at. IN A 131.130.1.11 htlwrneu-server IN A 193.170.149.150 lb IN A 127.0.0.1 ; ;mailhost IN A 131.130.1.19 localhost IN CNAME lb.htlwrn.ac.at. sun IN A 193.170.149.151 ; Sun dns IN CNAME sun ; ; Segment ZUSE (IP: 193.170.149.33 - 193.170.149.62) n1 IN A 193.170.149.62 u101 IN A 193.170.149.33 ... u122 IN A 193.170.149.54 ; segment ZEMANEK (bonus computer) WWW IN A 193.170.149.154 ;Www Linux1 IN A 193.170.149.155; Linux1 linux1 l1 L1 l1 IN CNAME Linux1 IN MX 10 sun.htlwrn.ac.at. IN MX 100 email.univie.ac.at. ppp-host IN A 193.170.149.193 ; CISCO Router 2.6.11 sun:Ausgabe von usr/bin/netstat -r: Routing Table: Destination ---------------------localhost ipnet4 193.170.149.192 BASE-ADDRESS.MCAST.NET default Gateway Flags Ref Use Interface -------------------- ----- ----- ------ --------localhost UH 0 1727 lo0 SUN U 3 305 le0 ppp-host U 2 0 ipd1 SUN U 3 0 le0 CISCO UG 0 3192 2.6.12 CISCO (Internet-Router) interface Ethernet0 description Lokales Ethernet HTL Wr. Neustadt ip address 193.170.149.150 255.255.255.224 ! interface Serial0 description 64 Kbit Verbindung HTL-Wien 5 ip address 193.170.149.6 255.255.255.252 bandwidth 64 ! ip domain-name htlwrn.ac.at ip name-server 193.170.149.151 ip route 0.0.0.0 0.0.0.0 193.170.149.5 ip route 193.170.149.32 255.255.255.224 193.170.149.158 ip route 193.170.149.64 255.255.255.224 193.170.149.158 ip route 193.170.149.96 255.255.255.224 193.170.149.158 ip route 193.170.149.192 255.255.255.224 193.170.149.151 2.6.13 LAN WORKPLACE FOR DOS, NET.CFG : Link driver DE-200 Protocol IPX 0 Ethernet_802.3 Protocol IPX 8137 Ethernet_II Port 320 Int 5 Netware Dos Requester preferred server = NETWARE file handles = 70 Protocol TCPIP Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 21 PATH SCRIPT PATH TCP_CFG ip_netmask ip_address ip_router n:\lwp\SCRIPT n:\lwp\TCP 255.255.255.224 193.170.149.142 193.170.149.158 2.6.14 TRUMPET WINSOCK Trumpet Winsock Version 2.1 Revision F Ethernet address = 00:80:C8:24:30:1C WINPKT packet driver located on vector $62 IP buffers = 32 Packet buffers = 16 My IP = 193.170.149.142 netmask = 255.255.255.224 gateway = 193.170.149.150 Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 22 3 HTML Das World Wide Web (WWW) ist ein Hypertext-System, das in großem Ausmaß über das gesamte Internet verteilt installiert ist. Dieses System besteht aus Dokumenten, die Verknüpfungen (Hyper-Links) zu anderen Dokumenten, Dateien und anderen Internet-Ressourcen enthalten. 3.1 URLs Urls (Uniform Ressource Locators) bestimmen die genaue Adresse der Internet-Ressourcen. URL-Syntax http:// Protokoll www.htlwrn.ac.at :80 /r.simon/index.html Internet-Rechner Dokumentadresse Protokoll-Port-Nummer Protokolle: ftp, http, shttp (secure), gopher, telnet, news, wais, mailto (E-mail) 3.1.1 HTTP Das HTTP (Hypertext Transfer Protocol) erlaubt es dem Benutzer, Hyperlinks in den Dokumenten zu verwenden, um weitere Informationen zu erlangen. Ein WWW-Server antwortet auf entsprechende Anforderungen, indem er als Antwort eine Datei im MIME-Format zurücksendet. 3.1.2 MIME Das MIME-Format (Multipurpose Internet Mail Extension) stellt eine Konvention für den Austausch von Dateien jeglichen Formats dar. Eine MIME-Datei enhält folgende Header-Informationen: ⇒ MIME-Typ, der beschreibt, welcher Art die Daten sind, die die MIME-Datei enthält ⇒ Kodierungstyp, der beschreibt, wie die Daten dekodiert werden können Bei HTTP kann der Empfänger angeben, welchen MIME-Typ er benötigt, der Server kann die geeignete Kodierung wählen. MIME-Typ application/msword image/gif text/html text/plain application/zip Beschreibung . Microsoft Word Dokument GIF-Bild HTML-Text ASCII-Text ZIP-komprimiert 3.2 WWW-Browser Der wichtigste Browser ist Netscape. Microsoft versucht mit dem Internet-Explorer Anschluss zu finden. Unter linux ist der freie Browser „arena“ verfügbar. Übung-Netscape: Probieren Sie die Optionen Netscapes und einige HTML-Dokumente. Sehen Sie sich die Dokumentation zu HTML und JAVA in der Homepage http://www.htlwrn.ac.at/r.simon an. Netscape zeigt auf Wunsch die HTML-Sourcen an. Java-Programme sind auf l1:/home/sj/java vorhanden. Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 23 3.3 HTML: Struktur-Tags, Überschriften, Umbrüche Ein HTML-Dokument besteht aus HTML-Tags, die in ASCII-Text notiert werden. Die Darstellung dieses Textes erfolgt durch WWW-Browser, dieser beeinflusst massgeblich das Aussehen. Mehrere Leerzeichen oder Tabulatoren hintereinander werden durch ein einzelnes ersetzt, ausgenommen sie verwenden spezielle Textformate. Übung-html-tags: Erstellen Sie ihr 1. HTML-Dokument mit der Darstellung ihrer Person. Verwenden Sie <HTML> und </HTML> als Beginn und Ende. Machen Sie einen <HEAD > mit <TITLE> , Kommentar mit <!-- Kommentar -->, einen <BODY> mit mehreren Überschriften <H1> bis <H6>, fügen Sie Absätze mit <P> ohne Ende-Tag und Zeilenumbrüche mit <BR> ein und Linien mit <HR Size=Pixel Width=Pixel|n% Align=Left|Right|Center> ein. Im BODY kann mit BGCOLOR oder BACKGROUND=“Bilddatei“ der Hintergrund verändert werden. 3.4 HTML:Listen, Zeichenformatierung Übung-html-listen: Erweitern Sie ihr HTML-Dokument mit der Darstellung ihrer Fähigkeiten und Hobbys. Verwenden Sie verschiedene Listenformate um diese darzustellen. Verzeichnisliste <DIR><LI></DIR> Geordnete Liste <OL><LI></OL> Ungeordnete Liste <UL><LI></UL> Menü- Liste <MENU><LI></MENU> Definitionsliste <DL><DT><DD></DL> Besonders fleissige können noch mit den verschiedenen Textformate experimentieren: Fettschrift <B></B> Hervorgehoben <EM></EM> Stark hervorgehoben <STRONG></STRONG> Kursivschrift <I></I> Text bleibt unverändert <PRE></PRE> Nicht proportionaler Text <TT></TT> Text ausrichten Align=“Left|Middle|Center“ (Bei mehreren Tags optional verwendbar) Adresse des Autors <ADDRESS> </ADDRESS> Sonderzeichen <>&“ßÜ &lt,&gt; &amp; &quot; &szlig; &Uuml; Textgröße und -farbe <FONT SIZE=[1-7]> </FONT> <FONT COLOR=#RGB> </FONT> Hinweis: HTML unterstützt weiters noch wunderschöne Tabellen und Frames. Frames teilen das Fenster in mehrere Unterbereiche. 3.5 HTML: Grafiken, Hyperlinks, Java-Applets referenzieren Grafikdateien vom Typ GIF, JPEG und XBM können mit <IMG Src=“URL“ Alt=“Text, falls Bild nicht angezeigt werden kann“> eingefügt werden. <A HREF=“URL“><IMG Src=““></A> fügt die Grafik ein, auf die der Hyperlink verweist. Video und Sound-Dateien werden in Standard-HTML noch nicht unterstützt. Hyperlinks (Anker) werden mit <A Href=“URL“> Mit Hyperlink verknüpfter Text </A> definiert. Der URL kann relativ zum aktuellen Serverpfad oder absolut angegeben werden. Bsp1: <A HREF=“http://www.htlstpoe.ac.at“> HTL St. Pölten </A> Bsp2: <IMG align=middle SRC="htlhand.gif"><A HREF="mailto:[email protected]">Write me! </A> Sie können Verknüpfungen zwischen mehreren Dokumenten wie z.B. ein Inhaltsverzeichnis mit benannten Ankern aufbauen. <A NAME=“Ankername“> Text </A>. Der URL ist dann #Ankername. Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 24 Ein JAVA-Applet läßt sich auf folgende Weise einbinden: <APPLET Code=Name der Klassendatei.class Width=Breite Heigth=Höhe in Pixel > <PARAM Name=AppletParameter Value=Wert> </APPLET> Übung html-grafik: Scannen Sie ihr Bild und fügen Sie es in ihr HTML-Dokument ein. Fügen Sie ein Bild, ihre Email-Adresse und für sie interessante Hyperlinks ein. Erstellen Sie ein Inhaltsverzeichnis Ihres Dokuments mit Ankern. Fügen Sie ein JAVA-Applet aus der Bespielssammlung ein. 3.6 CGI-Skripte Wir wollen mit dem WWW-Browser nicht nur Dokumente ansehen können, sondern auch Eingaben durchführen können, die dann von einem Server bearbeitet werden. Dieser Server kann eine Datenbank betreiben und wir geben eine Datenbankabfrage ein, oder der Server führt sonstige Berechnungen durch und sendet uns die Ausgabe. 3.6.1 Technik ohne JAVA: Man definiert in HTML sogenannte Formulare. Wenn der Anwender die Submit-Schaltfläche anklickt, werden der Text aus den Textfeldern und die Einstellungen der Schaltflächen zum Server zurückgesendet. Auf dem Server wird das Programm (CGI-Skript) gestartet, welches bei Action im FORM-Tag angegeben ist. Der http-Dämon auf dem Server schließt das CGI-Skript an und gibt ihm die entsprechenden Daten. Das CGI-Skript verarbeitet die Formulardaten und sendet eine Antwortseite an den Browser zurück. Deren 1.Zeile muß sein: „Content-type: <Mime-type>“ Üblicherweise wird das CGI-Skript in Perl (Erweiterung von UNIXShell-Script) geschrieben, C oder JAVA ist jedoch genauso möglich. Antwort= seite CGISkript Formular= daten Web-Browser des Client httpServer Formular Die Formulardaten könne mit den Methoden GET oder POST gesendet werden. Bei der GET-Methode werden die Eingabedaten alsTeil des URL übergeben, bei der POST-Methode in der Standardeingabe. Der Server sendet kein EOF, daher muss der Programmierer das Ende an Hand der ENVIRONMENT-Variable „CONTENT_LENGTH“ ermitteln. GET-Methode:Der httpd bekommt vom Browser folgende Anforderung: GET scriptname?parameters Dieser Zeichenkette muss eine Leerzeile folgen. Bsp.: GET /cgi-bin/priceinfo?Toaster+Herd\n\n Das Skript Priceinfo würde diese Information, gefolgt von dem ? als Befehlszeilenparameter empfangen (argv[0] für Toaster und argv[1] für Herd). Sie können also mehr als eine Anweisung in die Befehlszeile eingeben, getrennt durch „+“ . URL-Kodierung: Alle nicht alphanumerischen Zeichen, ausgenommen „+“ und „&“ werden durch ein „%“Zeichen gefolgt von einer zweistelligen Hexadezimalzahl kodiert. Dies verhindert, dass alle Zwischenprogramme durch Eingabe von Zwischenräumen und Sonderzeichen durcheinandergebracht werden. Bsp.: „Mastering C++“ wird zu „Mastering+C%2b%2b“ weil die Hexadezimalzahl „2b“ der ASCII-Code von „+“ ist. In der ENVIRONMENT-Variable „QUERY_STRING“ steht der gesamte Eingabestring zur Verfügung. (CFunktion getenv) Formulare Formular Kontrollkästchen <FORM Action=“URL“> <FORM Mehtod=“GET|POST“> </FORM> <INPUT Type=“CHECKBOX“> Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 25 Textfeld <INPUT Type=“TEXT“> Passwort <INPUT Type=“PASSWORD“> Gruppe von Optionsfeldern <INPUT Type=“RADIO“> Sende-Schaltfläche <INPUT Type=“SUBMIT“> Listenelement <OPTION> Auswahlliste <SELECT></SELECT> Mehrzeiliges Textfeld <TEXTAREA></TEXTAREA> CGI-Programme in C Perl ist zwar die 1. Wahl für CGI-Programme, vieles spricht aber für C. Vorteil 1: sie beherrschen C, aber nicht Perl. Vorteil 2: C ist schneller. Vorteil 3: C als binary ist besser zu schützen. Die Übergabe von Parametern an CGI-Programme erfolgt entweder über die GET- oder POST-Methode. Die Länge der Parameter ist nicht beschränkt. Da die Übernahme der Parameter vom Browser in C kompliziert ist, gibt es diverse Routinensammlungen, die das Leben erleichtern. NCSA-Daemon: http://hoohoo.ncsa.uiuc.edu/docs/setup/Compilation.html cgic: http://www.boutell.com/cgic/ gd: http://www.boutell.com/gd/ Zeichenfunktion zur Erstellung von Grafiken Übung-html-cgi: Erstellen Sie ein Formular in Ihrem Dokument und ein CGI-Skript in C mit der GET-Methode. z.B.: Suchmaschine (Suchbegriff, gesucht wird in Dateien am Server) Hotel-, Flugzeugreservierung Bestellung von z.B. CDs (incl. Verwaltung des Bestandes) Fernwartung des WWW-Servers (ps, df-Kommandoausgabe über CGI schicken) 3.6.1.1 Technik mit JAVA: Auf dem Client läuft das JAVA-Applet und kann bereits sehr viel berechnen, formatieren und darstellen. Bei Bedarf kann über CGI, Sockets oder Mailto Verbindung mit dem JAVA-Programm auf dem Server aufgenommen werden um Daten zu sammeln oder abzulegen. CORNELL/HORSTMANN (S. 623-633) haben Perl, C und JAVA verglichen und kommen zu folgendem Ergebnis: JAVA schlägt C bei Netzwerkprogrammierung, Zeichenketten und Absturzsicherheit. JAVA schlägt Perl, da es einfacher zu lesen und zu warten ist. Ein Perl-Bsp.: $url =<<Tilde>> s/%([a-fA-F0-9][a-fA-F0-9])/pack(“C“, hex($1)) /eg; ($name, $aliases, $proto) = getprotobyname (‘tcp’); socket (S, $AF_INET, $port, $thataddr); Hinweis: JAVA-Skript hat mit JAVA nur den Namen gemeinsam. Auch Java-Skript läuft auf der Client-Seite. JAVA-Skript hat den Vorteil, auch auf 16-Bit-Betriebssystemen wie WINDOWS 3.1 zu laufen. Dieser Vorteil wird jedoch bald nicht mehr relevant sein. Progammiertechnisch ist JAVA vorzuziehen. Hinweis: CGI ist nicht sehr komfortabel um wird von einer neuen Technik abgelöst werden. Microsoft versucht derzeit mit seinem Internet Information Server 3.0 verlorenes Terrain wiederzugewinnen und stellt mit ASP (Advanced Server Pages) eine CGI-Alternative vor, die konträr zur Linie aller anderen Firmen geht. Diese wollen IIOP (Internet Inter Object Request Broker) als den weltweiten Standard implementieren. 3.7 WWW-Server Apache konfigurieren Übung-apache: Durchsuchen Sie den experimentellen WWW-Server auf der l1. ⇒ Verzeichnisse conf, cgi-bin, data, ftp in /local/www Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 26 ⇒ /etc/passwd in bezug auf ftp-user (chroot bei /home/ftp/./home/hlab bewirkt, das der Benutzer nur ftp durchführen kann und sein HOME-Verzeichnis als Wurzel hat) ⇒ Übertragen Sie eine HTML-Seite in das Übungsverzeichnis und betrachten Sie diese in Netscape über den Internet-Namen htttp://l1.htlwrn.ac.at/..... Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 27 4 JAVA 4.1 java.applet.Applet Die grundlegenden Methoden zur Steuerung eines Applets sind: init() Diese Methode ruft der Browser sofort nach dem Konstruktor des Applets auf. Sie dient der Initialisierung der verwendeten Daten. start() Nach der Initialisierung des Applets ruft der Browser diese Methode auf. Diesen Aufruf wiederholt er nach jedem erneuten Laden der Applet-Seite ohne dann jedoch zuvor init() auszuführen. stop() Beim Verlassen der Seite und vor dem Beenden des Browsers arbeitet er die Methode destroy() Methode soll das Applet vollständig löschen. Mit der Methode getAppletContext() kann man unerwünschte Wirkungen hervorrufen. // Datei jf/kapitel4/abschnitt4/LookAtMeApplet.java public class LookAtMeApplet extends Applet { public void start() { In der Startmethode versucht das Applet sofort, eine andere HTML-Seite zu laden. Es nutzt dazu die Methode showDocument() der Klasse AppletContext. try { getAppletContext().showDocument( new URL( getDocumentBase(), "ThisIsWhatYouGet.htm" )); } catch( java.net.MalformedURLException e ) { System.out.println( e.toString() ); } } Bindet man das Applet in eine Seite ein, so wird tatsächlich ThisIsWhatYouGet.htm geladen. Hier ein weiteres applet mit einer Zeichenfläche (canvas) import java.applet.*; import java.awt.*; import java.awt.image.*; import java.lang.Boolean; import java.net.*; public class AppTest extends java.applet.Applet { String cMsg; public void init() { String cImage; String cWidth; String cHeight; String cDisplayGif; int iWidth; int iHeight; Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 28 stop() ab. Boolean bDisplayGif; // // Parameter auslesen // cMsg = getParameter("message"); cWidth = getParameter("width"); cHeight = getParameter("height"); iWidth = Integer.parseInt(cWidth); iHeight = Integer.parseInt(cHeight); // // Applet auf gewuenschte Groesse // resize(iWidth, iHeight); } public void start() { this.Info (); } public void stop() { } public void destroy() { } public void Info () { System.out.println( getAppletInfo() ); System.out.println( getCodeBase() ); System.out.println( getDocumentBase() ); } public void paint(Graphics g) // Grafikobjekt für Zeichenfläche { FontMetrics fm; int iWidth; int iHeight; Dimension dim; dim = size(); fm = g.getFontMetrics(); iHeight = fm.getHeight(); iWidth = fm.stringWidth(cMsg); g.drawString( cMsg, (dim.width - iWidth)/2, (dim.height - iHeight)/2 ); } } Aufruf des applets über HTML <CENTER><STRONG><H1> Applet </H1></STRONG></CENTER> <HR> <APPLET Code="AppTest.class"Width=400 Height=200> <param NAME="height" VALUE=200> <param NAME="width" VALUE=400> <param NAME="message" VALUE="AppletTest"> <param NAME="display" VALUE=true> </APPLET> 4.2 java.net.Socket Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 29 In der Programmierung unter Unix sind Sockets ein übliches Mittel zur Herstellung von Kommunikationsverbindungen zwischen Prozessen auf möglicherweise verschiedenen Rechnern. Sockets abstrahieren dabei von dem konkreten Übertragungsprotokoll (TCP/IP, UDP/IP), der Programmierer muss sich lediglich an einen bestimmten Ablauf beim Verbindungsauf- und -abbau halten. Die wichtigsten Klassen sind InetAddress (Internet-Adresse), ServerSocket (Socket für den Server in einer Client-Server-Verbindung), Socket (Socket für den Client) und URL (Repräsentation eines URL-Objekts). In einer TCP-Verbindung übernimmt ein Prozess die Rolle des Servers und ein anderer die Rolle des Clients. Der Server öffnet einen Socket (open), bindet eine lokale Adresse (bind), spezifiziert die Anzahl der gleichzeitig zu bearbeitenden Clients (listen) und wartet dann auf Clients (select und accept). Ein Client öffnet ebenfalls einen Socket (open) und verbindet diesen dann mit der Adresse des Servers (connect). Im Erfolgsfall ist nach diesem Procedere zwischen Server und Client eine Verbindung hergestellt, über die sie Nachrichten austauschen können. public final class ServerSocket extends Object Konstruktoren public ServerSocket( int port ) throws IOException // Lokaler Port, unter dem der Server zu erreichen ist. public ServerSocket( int port, int count ) throws IOException // Anzahl akzeptierter Clients. Auswahl der Methoden public InetAddress getInetAddress() // eigene Internet-Adresse public int getLocalPort() // eigener Port public Socket accept() throws IOException // Akzeptieren von Clients public void close() throws IOException // Schliessen der Verbindung Ein Objekt der Klasse ServerSocket wird in einer Endlosschleife mit accept() auf Clients warten. Meldet sich ein Client an, so kann der Server den von accept() zurückgegebenen Socket zum Nachrichtenaustausch mit dem Client verwenden und dessen Anforderung bearbeiten. Für die Bearbeitung startet der Server im allgemeinen einen eigenen Thread, damit er gleichzeitig auf weitere Clients warten kann. Die Klasse Socket definiert die eigentliche Übertragungsfunktionalität, indem sie Ein- und Ausgabeströme nach aussen reicht. public final class Socket extends Object Auswahl der Konstruktoren public Socket( String host, int port ) throws UnknownHostException, IOException // Verbindungsaufbau zu einem Server auf dem Rechner host am Port port public Socket( InetAddress address, int port ) throws IOException // Verbindungsaufbau über die Internet-Adresse Auswahl der Methoden public InetAddress getInetAddress() // Internet-Adresse des Servers public int getPort() // Port des Servers public int getLocalPort() // eigener Port public InputStream getInputStream() throws IOException // Eingabestrom für die Datenübertragung Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 30 public OutputStream getOutputStream() throws IOException // Ausgabestrom für die Datenübertragung public synchronized void close() throws IOException // Verbindungsabbau In dem kleinen Beispiel sendet der Server jede vom Client erhaltene Zeile umgehend gespiegelt zurück. Er nutzt dazu die Klasse jf.kapitel3.abschnitt4.StringMirror. public class EchoServer { public static void main ( String[] args ) { new EchoServer().start(); } public void start() { ServerSocket serverSocket = null; Socket clientSocket = null; try { serverSocket = new ServerSocket( 5574 ); while (( clientSocket = serverSocket.accept() ) != null ) ( new EchoService( clientSocket )).start(); } Ein Objekt der Klasse EchoService liest Bytes vom Client, wandelt sie in eine Zeichenkette, vertauscht die Reihenfolge der Buchstaben und sendet das Ergebnis als Bytes zurück. class EchoService extends Thread { private byte[] buffer = new byte[ 1024 ]; private int readLength = 0; private Socket socket = null; private String line = null; public EchoService( Socket socket ) { this.socket = socket; } public void run() { try { OutputStream out = socket.getOutputStream(); InputStream in = socket.getInputStream(); while (( readLength = in.read( buffer )) &gt; 0 ) { line = new String( buffer, 0, readLength ); line = StringMirror.doMirror( line ); out.write( line.getBytes(), 0, line.length() ); } } Der gerade akzeptierte Client wird in einem parallelen Thread bedient. Der Server kann durch die Verwendung von Threads also mehrere Clients gleichzeitig bearbeiten. An dieser Stelle sei noch einmal darauf verwiesen, dass Applets in NetScape nur Socket-Verbindungen zu dem Rechner aufbauen dürfen, von dem die Seite geladen wurde. Der folgende Client funktioniert also nur, wenn der Echo-Server auf demselben Rechner gestartet wird, von dem die HTML-Seite stammt. Unter linux sind sockets im Normalfall nicht offen. Die Beispiele funktionieren nur, wenn man sie als Superuser startet. // Datei jf/kapitel5/abschnitt4/EchoClientApplet.java public class EchoClientApplet extends Applet implements ActionListener { private Socket socket = null; private TextField iTF = null, oTF = null; private Button button = null; Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 31 private InputStream in = null; private OutputStream out = null; private String host = null; private byte[] buffer = new byte[ 1024 ]; public void init() { Panel bPanel = new Panel(); Panel tPanel = new Panel(); bPanel.setLayout( new GridLayout( 2, 1 )); bPanel.add( ( button = new Button( "Sende" ))); button.addActionListener( this ); bPanel.add( ( new Label( "Empfangen:" ))); tPanel.setLayout( new GridLayout( 2, 1 )); tPanel.add( ( iTF = new TextField( 30 ))); iTF.addActionListener( this ); tPanel.add( ( oTF = new TextField( 30 ))); setLayout( new FlowLayout() ); add( bPanel ); add( tPanel ); Das Applet kann nur Verbindungen zum Rechner der eigenen DocumentBase aufbauen, deshalb wird host auf diese Weise initialisiert. host = getDocumentBase().getHost(); if ( host.equals( "" )) host = "localhost"; } public void start() { if ( socket == null ) try { socket = new Socket( host, 5574 ); in = socket.getInputStream(); out = socket.getOutputStream(); } catch ( UnknownHostException e ) { oTF.setText( "unbekannter Rechner" ); } catch ( IOException e ) { oTF.setText( "IO-Fehler " +e ); } } public void stop() { if ( socket != null ) try { socket.close();} catch ( IOException e ) {} socket = null; in = null; out = null; } public void actionPerformed( ActionEvent actionEvent ) { if ( socket != null ) { try { String line = iTF.getText(); int readLength = 0; out.write( line.getBytes(), 0, line.length() ); readLength = in.read( buffer ); oTF.setText( new String( buffer, 0, readLength )); 4.3 java.net.URL Eine komfortable Klasse zum Datenaustausch im World Wide Web ist die Klasse URL. Mit ihr können entfernte World Wide Web-Dateien oder Server (z.B. ftp) adressiert, gelesen und ausgewertet werden. public final class URL extends Object Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 32 Konstruktoren public URL( String prot, String host, int port, String file ) throws MalformedURLException // URL-Adresse in Komponenten public URL( String protocol, String host, String file ) throws MalformedURLException // Standard-Port public URL( String spec ) throws MalformedURLException // URL-Adresse als String public URL( URL context, String spec ) throws MalformedURLException // Hierarchie Auswahl der Methoden public int getPort() // Port der URL-Adresse public String getProtocol() // Protokoll der URL-Adresse public String getHost() // Host der URL-Adresse public String getFile() // Dateiname public URLConnection openConnection() throws IOException // Verbindungsaufbau public final InputStream openStream() throws IOException // Eingabestrom public final Object getContent() throws IOException // Inhalt Als Abschlußbeispiel soll ein Programm dienen, mit dem man von der Kommandozeile aus WWW-Seiten abfragen kann. Diese werden im Quelltextformat angezeigt. // Datei jf/kapitel5/abschnitt4/ShowUrl.java URL url = new URL( args[ 0 ] ); BufferedReader in = new BufferedReader( new InputStreamReader( url.openStream() )); String line = null; while (( line = in.readLine()) != null ) System.out.println( line ); Übung java-URL: ⇒ Entwerfen Sie ein Applet, das die Zugriffe auf die eigene WWW-Seite zählt. ⇒ Es soll sich dazu einer Zählerdatei auf dem WWW-Server bedienen. Diese Zählerdatei soll durch ein CGIProgramm in C aktualisiert werden. ⇒ Das Applet soll einen Button besitzen, mit dem der Zählerstand erhöht wird. Dazu muss das CGIProgramm aus dem JAVA-Applet heraus aktiviert werden. /Java bis in Detail S.594-612/ Dazu muss ein Socket auf den WWW-Server und dem Port 80 geöffnet werden. Über diesen Socket muss zuerst das Script aufgerufen werden und anschließend die Daten empfangen werden. Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 33 ⇒ In einer Textarea sollen alle Zeilen aus der Log-Datei des Servers, die diese Seite betreffen, aufgelistet werden. Internet-Programmierung (TCP/IP, JAVA, HTML) / HTL Wr.Neustadt Abt. EDVO / Schulintern Seite 34