Ein bisschen TCP/IP. David Vajda 25. Januar 2016

Größe: px
Ab Seite anzeigen:

Download "Ein bisschen TCP/IP. David Vajda 25. Januar 2016"

Transkript

1 Ein bisschen TCP/IP David Vajda 25. Januar TCP/IP 1.1 Der Protokollstack Was ist ein Protokoll? Wenn zwei Menschen miteinander reden, können Sie dabei verschiedene Regel entwickeln, wie sie es tun. So gibt es diplomatische Protokolle. Diplomatische Protokolle schreiben vor, wie und in welcher Reihenfolge was wo gesagt wird. Es gibt Notwendigkeiten für Protokolle, wenn zwei Computer miteinander reden. Es genügt nicht einfach Daten irgendwo hin zu übertragen. Wenn zwei Computer miteinander kommunizieren, muss zum Beispiel der eine schon bereit sein und zu hören. Aber wenn zwei Computer miteinander reden, gibt es einerseits Technische Notwendigkeiten und andererseits technische Pragmatismen. Zum Beispiel ist es pragmatisch, einen Strom von Byte in viele Pakete zu zerlegen. Kommunizieren zwei Computer miteinander, dann ist es besser, man verteilt den Gesamtinhalt der Kommunikation auf verschiedene Pakete. Da wären wir bei einem Protokoll zum Beispiel schon gefragt: Wo beginnt ein Paket? Wie erkenne ich ein Paket? Wann endet ein Paket? Wann kommt ein Paket? Die nächste Frage, wäre die Frage der Addressierung. Wenn wir per Post Briefe verschicken, kann jeder überall Briefe verschicken. Das ist beim Computer generell auch so: Jeder Computer muss mit jedem Computer kommunizieren können. Dann müssen aber die Computer wissen, wer gerade mit wem redet und wer mit wem reden will. Das ist auch beim Telefon so. Betrachten wir nun das Telefon. Der Vorgang des Telefonierens besteht aus den Schritten, den Hörer zu nehmen, eine Nummer zu wählen und zu warten bis jemand an den Hörer geht oder das Besetztzeichen erscheint. Erscheint das Besetztzeichen, legen wir wieder auf. Danach besteht für den anderen beim Klingeln die Pflicht, den Hörer zu nehmen. Am Schluss legen beide den Hörer auf. Das ist Beispielsweise ein Protokoll. Hier findet mehr statt, als dass einfach eine Botschaft übertragen wird. Und zwar könnten wir das Telefonieren als einen einzigen Ablauf betrachten. Von dem Beginn an, dass der Wähler den Hörer nimmt bis zum Schluss, wo der Telefonhörer aufgelegt wird. Wenn man so will kann man das Telefonieren als eine einzige Einheit sehen, die zwischendrin, die wahren Nutzdaten enthält. Das wäre nämlich das, was einer dem anderen beim Telefonieren sagt. Trotzdem ist das Telefonieren eine einzige Einheit, mit samt dem Wählen. Das Telefonieren hat einen Vorspann, nämlich das der eine den Telefonhörer nimmt usw. und eine Botschaft, die die eigentliche Botschaft ist und ein Ende. Der Vorspann ist quasie der Botschaft des Miteinander sprechens vorangestellt. Ebenso ist das 1

2 auch im Internet mit den Paketen. Den Paketen wird etws vorangehängt. Notwendige Informationen, die den Datenaustausch erst möglich machen, damit der Datenaustausch stattfinden kann. Ein vollkommen anderes Problem ist das der Addressierung. Das gibt es bei dem Brief, wie beim Telefonieren. Dort wäre beim Brief die Addresse, die aus Name, Straße und Stadt mit PLZ besteht. Bei dem Telefon wäre es die Telefonnummer, die aus Ortsanteil und der eigentlichen Telefonnummer besteht. Ein Computernetzwerk managet das Ähnlich. Einem jedem Paket werden Dinge vorrangespannt. Natürlich enthält ein Paket an irgendeiner Stelle Nutzdaten. Aber es muss zum Beispiel vielleicht die Nummer des Pakets enthalten. Desweiteren muss es die Addresse des Ziels enthalten. Die Adressierung ist etwas vollkommen anderes, als die Aufteilung in Pakete. Ebenso wie die Telefonnummer und der Bereich der Telefonnumer, das Nachschlagen in einem Telefonbuch, kurz die Verständnis der Telefonnumer, ebenso wie beim Brief das Verständnis für die Addresse etwas anderes ist, als den eigentlichen Vorgang des Verschickens oder Telefonierens. Bei dem Internet muss in jedem Paket die Adresse des Ziels angegeben sein. Aber das Internet regelt den Unterschied zwischen Aufteilung in Pakete und die Addressierung zum Beispiel in verschiedenen Protokollen. Bei dem einem Protokoll steht die Addressierung im Vordergrund, bei dem nächsten die Aufteilung in Pakete. Trotzdem enthält jedes Paket auf jeden Fall Nutzdaten. Die verschiedenen Gesichtspunkte, die hier verschiedene Protokolle darstellen oder durch verschiedene Protokolle realisiert werden, haben alle Informationen, die einem Datenpaket beigebracht werden, oder die an einem Datenpaket angebracht werden. Dabei durchlaufen die Daten verschiedene Protokollschichten. Die Protokollschichten werden als solche auch als ein Stapel dargestellt, aber ebenso wie die Protokollschichten als ein Stapel dargestellt werden, nämlich von ihrer Funktion, durchlaufen die Daten auch diese Protokollschichten. Jeder der Protokollschichten fügen einem zu sendenden Paket weitere Daten hinzu, die für den Gesichtspunkt des jeweiligen Protokolls notwendig sind. Die Nutzdaten sind dabei in einem Paket irgendwo enthalten. Die Daten durchwandern die Protokollschichten und wenn sie gesendet werden, durchlaufen sie die Protokollschichten nach unten, von der ersten zur nächsten und es wird jeweils etwas an das Paket vorne und hinten angefügt. Das bedeutet nicht mal, dass die Daten als Paket weitergereicht werden. Das zerlegen der Daten in Pakete ist selbst wieder ein Protokoll. Trotzdem jedes Protokoll und jede Protokollschicht hat eigene spezifische Informationen und die Daten, die jeweils angefügt werden müsen und die Daten oder das Paket wird an die nächst untere Schicht weiter gegeben, wo weitere Daten hinzugefügt werden. Beim Empfänger der Daten durchlaufen die Daten die Protokollschicht in umgekehrter Reihenfolge von unten nach oben und die nur für das Protokoll interessanten Daten werden wieder entfernt, so dass am Schluss die eigentlichen Daten vorhanden sind. Man unterscheidet bei Computernetzwerken zwei Arten von wesentlichen Architekturmodellen: Das ISO (Internation Standard Organisation) OSI (Open Systems Interconnect) Reference Model Den TCP/IP Protokoll Stack 2

3 Das ISO OSI-Reference Modell wird häufig als Basisreferenzmodell herangezogen. Das Basisreferenzmodell besteht aus 7 Schichten: 1. Bitübertragungsschicht 2. Sicherungsschicht 3. Vermittlungsschicht 4. Transportschicht 5. Kommunikationssteuerschicht 6. Darstellungsschicht 7. Anwendungsschicht Anwenderschicht: Hier sind Prozesse, auf die der Benutzer direkten Zugang hat Darstellungsschicht: Gibt es nicht bei TCP/IP Kommunikationsschicht: Gibt es nicht bei TCP/IP Transportschicht: Die Daten gelangen genauso zum Empfänger, wie sie der Abesnder auf den Weg gebracht hat. Dies ist innerhalb von TCP/IP das TCP (Transmission Control Protocol) oder UDP (User Datagram Protcol). TCP ist dafür zuständig Daten in Pakete zu zergliedern Vermittlungsschicht: Entspricht dem Internet Protocol (IP), also der Addressierung Sicherungsschicht: Gibt es so nicht bei TCP/IP, übernimmt die nächste Schicht Bitübertragungsschicht: Hardware: Bei TCP/IP wäre das zum Beispiel Ethernet, was einer LAN-Schnittstelle entspricht, oder WLAN. Desweiteren gibt es auch Verbindungen mit Koaxialkabel, wie beim Fernsehen. Bei der TCP/IP Protokolarchitektur gibt es vier Schichten: 1. Netzzugangsschicht 2. Internetschicht 3. Host-zu-Host Transportschicht 4. Anwendungsschicht Die Daten werden nach unten weitergerreicht. Jede Schicht fügt ihre eigenen Kontrollinformationen hinzu. Diese Informationen nennt man Header (Kopf), da sie den Daten vorrangestellt werden. Dabei wird an die gesamten Daten der vorhergehenden Schicht, der Kopf angefügt. Dieses Hinzufügen von Kontrollinformationen nennt man Encapsulation (Kapselung) 3

4 Anwendungsschicht: Transportschicht: Internetschicht: Netzzugangsschicht: Daten Header Daten Header Header Daten Header Header Header Daten Die Daten der jeweiligen Schicht werden bezeichnet als: 1. Netzzugangsschicht: Frame 2. Internetschicht: Datagram 3. Transportschicht: Segment 4. Anwendungsschicht: Stream Die Internetschicht und die IP-Addresse Die Internetschicht bezieht sich auf die Adressierung. Addressierung wird mittels IP-Adresse. Dabei werden einzelne Pakete addressiert. Die Daten müssen schon vorher durch TCP in Pakete zerlegt worden sein, bevor eine Adresse hin zu gefügt wird. Wir verwenden Router. Warum und was bedeutet das? Das Bedeutet wir benutzen Subnetting? Was bedeutet das nun wiederum? Wenn wir Rechner miteinander vernetzen, dann muss jeder Rechner mit jedem Rechner kommunizieren können. Wie soll man die Computer miteinadner verbinden. Zunächst ist es so, dass an einem Knoten im Netzwerk wiederum mehrere Knoten angeschlossen sein können und an diese wiederum mehrere Knoten. Dann müssen aber Knoten über andere Knoten im Netzwerk miteinander kommunizieren. Eine andere Möglichkeit wäre jeden Knoten mit jedem Knoten zu verbinden, das ist sicher nicht effektiv. Noch eine Möglichkeit wäre einen Knotenmittelpunkt zu schaffen, an dem alle Knoten angeschlossen sind. Das ist in der Realität nicht gut. Denn dann muss jeder Knoten eine Leitung zum Mittelpunkt haben. Und da die Welt groß ist, müssten viele Kabel verlegt werden. Darum hat man sich zu etwas anderem entschieden: An einem Knoten können Knoten liegen und diese kommunizieren nun wiederum über den Knoten an dem sie angeschlossen sind miteinander. Knoten und Netzwerke, die aus Knoten und Netzwerken bestehen, die an einem Knoten angeschlossen sind, der wiederum für alle und für sich selbst mit weiteren Knoten weiter weg kommuniziert, werden Subnetze genannt. Das Netzwerk ist in Subnetze unterteilt und diese sind wiederum in Subnetze unterteilt. Eine Addresse im Netzwerk muss eindeutig sein. Man kann Addressen nicht verdopppeln oder verfielfachen, sonst, kommen die Daten an mehreren Stellen im Netzwerk gleichzeitig an. Addressen müssen eindeutig sein und die Unterteilung in Subnetze ist notwendig. Das regelt das IP-Protokoll. Ebenso wir das Zerlegen und Netze und Subnetze. Der Netzadresse Der Adresse des Rechners Desweiteren gilt: Eine IP-Adresse ist 4 Byte lang: 4

5 Eine IP-Addresse entspricht in C also long int Eine IP-Adresse wird durch Zahlen die durch 3 Punkte voneinander getrennt wird geschrieben Jede dieser Zahlen ist zwischen 000 und 255 groß. Das entspricht genau einem Byte mit dem Werte zwischen 0 und 255 darstellbar sidn Man schreibt also etwas in der Art, wie oder oder oder Man unterscheidet drei Addressklassen: 1. A 2. B 3. C Dabei gilt: 1. A: Wenn das erste Bit der IP-Addresse 0 ist, handelt es sich um eine Addresse der Klasse A. Die nächsten 7 Bits identifieren das Netzwerk und die restlichen 24 Bit den Rechner 2. B: Wenn die ersten beiden Bits einer IP-Addresse 10 sind, handelt es sich um eine Addresse der Klasse B, die nächsten 14 Bit identifizieren das Netzwerk und die letzten 16 Bit den Rechner 3. C: Wenn die ersten drei Bits einer IP-Adresse 110 sind, handelt es sich um eine Addresse der Klasse C. Die nächsten 21 Bit bestimmen das Netzwerk, die letzten 8 Bit den Rechner Man hat zwei bestimmte Addressen die etwas besonderes bezeichnen: 1. Das Netzwerk 0 ist die Defaultroute 2. Das Netzwerk 127: Die Loopbackaddresse Das Subnetting funktioniert so: Routing-Tabelle, Forwarding-Table: UNIX-Befehl: netstat -nr -r: Routing-Tabelle anzeigen -n: Numerische Darstellung der Adresse Felder: Destination: Zielnetzwerk Gateway: ber welchen Gateway Flags: U,H,G,D Refcnt: Wie häufig wurde die Route benutzt Use: Wie viele Pakete wurden Transportiert 5

6 Interface: Gibt den Namen des Netzwerk-Interfaces für die Route an Loopback-Route ( ): Erster Eintrag Default-Route ( ): Zweiter Eintrag Unter Interface steht unter Linux entweder eth0, eth1, eth2, eth3,... und l0 Unter Windows: , , Unter Windows ist jeder Netzwerschnittstelle eine IP-Adresse zugeordnet. Jede Netzwerkschnittstelle hat eine IP-Adrese. Unter Windows zeigt es die IP- Adresse an, die der Netzwerkschnittstelle zugeordnet ist und somit, reicht es die IP-Adresse zu zeigen. Linux zeigt l0, eth0, eth1, eth2,... Wozu die Netzwerkmaske. Na ja, wir befinden uns in einem Router, angenommen. Sobald eine Routingtabelle da ist, sind wir ein Router. Ein Router hat im Gegensatz zu einem Host, zum Beispiel 4 Netzwerkkarten. Es gehen auch 5,6,7,8,...,16,... An einem Router sind mehr Netzwerkkarten, als an einem Host. Eine Netzwerkkarte ist das, an das das Netzwerkkabel angeschlossen ist. Da steckt man ein Kabel rein, ein Ethernet-Kabel. So wie man mehrere Soundkarten haben kann, oder mehrere Festplatten, oder mehrere Monitore, kann man mehrere Ethernetkarten haben. Diese Ethernetkarten werden bezeichnet als eth0, eth1, eth2, eth3,... Daneben gibt es noch l0, als Loopback Interface. Fungiert der Rechner als Router, so ist eine Routing Tabelle aufgestellt. Nun gibt es IP-Adressen, aus Klasse A, Klasse B, Klasse C. Jetzt betreiben wir aber Subnetting: Vorsicht: Eine IP-Adresse im gesamten Netzwerk ist eindeutig. Es kann eine IP-Adresse nur ein Mal geben, wenn zwischen den Netzwerken eine Verbindung besteht. Das heißt es wurde eine Routingtabelle aufgestellt. Wenn wir nun ein Paket auf der einen Schnittstelle erhalten und sollen es an die andere weiterleiten, woher weiß der Rechner, an welche der Netzwerkkarten. Nun gut, angenommen wir haben 4 Netzwerkkarten, dann haben wir: eth0, 1 eth1, 2 eth2, 3 eth3, 4 Das heißt wir haben 4 durchnummerierte Netzwerkkarten. Alle Netzwerke an eth0, stellen das Netzwerk 1 dar, alle Netzwerke an eth1, stellen das Netzwerk 2 dar,... Wenn wir nun Klasse A, Klasse B, Klasse C, endeutig benutzen, dann wissen wir ist die Netzwerkmase. Dann haben wir zum Beispiel IP-Adressen

7 Wenn wir in Klasse B sind, zum Beispiel Wenn wir in Klasse C sind, zum Beispiel Was ist jetzt, wenn wir in kleinere Subnetze aufgeteilt sind. Wir haben einen harmlosen Router, am Ende des Netzwerks. Wir sind eine Organisation, zum Beispiel eine Universität. Wenn dem so ist: Wir haben vier Subnetze. Genau vier Netzwerkkarten. In diesen Subnetzen hängen jetzt wieder vereinzelt, wenige Rechner. Na dann benutzen wir nicht Sondern als Netzwerkmaske. Das ist Dann haben wir vier Subnetze: : Das ist , eth0, mit Netzwerkmaske : Das ist , eth1, mit Netzwerkmaske : Das ist , eth2, mit Netzwerkmaske : Das ist , eth3, mit Netzwerkmaske Das sind die Netzwerkadressen von bis : Das ist bis eth bis : Das ist bis eth1 7

8 bis : Das ist bis eth bis : Das ist bis eth3 Wenn wir das Routing nicht verwenden, dann müssen wir ein Kabel von jedem Rechner zu einem Gewissen Punkt auf der Erde legen. Das Subnetting dient nicht dazu, dass wir Adressen vervielfachen oder verdoppeln. Jede IP-Adresse ist eindeutig. Es dient nur dazu, dass zum Beispiel ein Kabel von einem Rechner zum anderen führt und an dem hängen wieder mehrere Rechner, also ein Netzwerk, an dem wieder viele Rechner hängen können, also wieder ein Netzwerk. Sollten wir an einem Rechner mehrere Netzwerkkarten haben, verschwenden wir nicht mehr IP-Adressen, wenn die Netzwerkkarten nicht durch eine Routingtabelle miteiannder verbunden sind. Welche Pakete wohin weiter geleitet werden entscheidet die Routingtabelle. Und sind an einem Rechner mehrere Netzwerkkarten, die eine ist ans Internet angeschlossen, zu den anderen besteht keine Routingtabelle, dann gibt es keine Verschwendung durch die anderen. Man kann das auch anders machen, zum Beispiel, kleinere Subnetze Dann haben wir vier Subnetze: : Das ist , eth0, mit Netzwerkmaske : Das ist , eth1, mit Netzwerkmaske : Das ist , eth2, mit Netzwerkmaske : Das ist , eth3, mit Netzwerkmaske Das sind die Netzwerkadressen von bis : Das ist bis eth0 8

9 bis : Das ist bis eth bis : Das ist bis eth bis : Das ist bis eth3 2 Die IP-Addresse unter Windows und Linux und erste Möglichkeiten sein Netzwerk unter Linux und Windows ein zu richten 2.1 Die Systemsteuerung unter Windows, die IP-Addresse und die Netzwerkschnittstelle unter Windows Unter Windows erreichen wir die IP-Adresse über die Systemsteuerung: Dort gehen wir auf Netzwerk und Internet 9

10 Dort gehen wir nicht auf Netzwerkcomputer und -geräte anzeigen, sondern auf Netzwerkstatus und -aufgaben anzeigen Unter Windows 10 öffnet sich dieses Fenster: Unter Windows 7 öffnet sich dieses Fenster: 10

11 Dort gehen wir auf die LAN-Verbindung und erhalten: Nun gehen wir auf Eigenschaften und erhalten: 11

12 Dort gehen wir auf TCP/IPv4 und erhalten 12

13 Wir können wie wir hier eben sehen die IP-Addresse eintragen, oder wir lassen sie leer: Dann gilt DHCP. Sollten wir nun noch einen weiteren Adapter anschließen erhalten wir diesen wie vorher: 13

14 Die Verbindungen unter Windows tragen den Namen Ethernet oder Netzwerkverbindung oder wie auch immer. Bei dem Programm route wird die IP-Addresse des Netzwerkadapters angezeigt. 2.2 Yast2 unter Linux, die IP-Addresse und die Netzwerkschnittstelle unter Linux Unter Linux tragen die Netzwerschnittstellen die Namen eth0 eth1 eth2 Wir erreichen eine bequeme Konfiguration über Yast2, wenn wir OpenSuSE als Linux verwenden: 14

15 Dies öffnen wir und erhalten: Dort gehen wir auf Netzwerkgeräte 15

16 Und innerhalb dessen auf Netzwerkeinstellungen und erhalten: Dort lässt sich die IP-Addresse einstellen: 16

17 Andererseits lässt sich die Netzwerkkarte in der Konsole anzeigen: 17

18 3 Die Anwenderschicht Windows WORKGROUP Haben wir die IP-Addressen richtig eingetragen, bei allen Computern im Computernetzwerk, so können wir in Windows automatisch auf die anderen Computer zugreifen. Die Computer erscheinen unter Netzwerk im Fileexplorer Samba Eine Möglichkeit Linux in ein Apache und Yast2 Ein Webbrowser lässt sich prima mittels OpenSuSE, Yast2 installieren. 18

19 Hier kann man den Namen und den Ort der HTML-Datei index.html eintragen. Diese Datei befindet sich irgendwo auf dem Computer. Sollte der Computer nun an ein Netzwerk angeschlossen sein, dann kann man von einem anderen Computer mittels Webbrowser auf diese Seite zugreifen. 19

20 4 C und TCP/IP C-Programmierung und der Zugriff auf TCP/IP erfolgt mittels Sockets/innerhalb C arbeiten wir mit Sockets. Während man in C den Dateizugriff mittels Filehandler realsiert und in Dateien ließt und schreibt funktioniert der Zugriff bei TCP/IP ähnlich, aber mittels Sockets. Während man beim Dateizugriff Filehandler verwendet, verwendet man bei TCP/IP-Netzwerken Sockets. Zwei Rechner sind mittels Sockets miteinander verbunden. Dabei spielt der eine die Rolle des Servers, der andere die Rolle des Clients. Das betrifft alle Protokolle der Anwenderschicht, wie HTTP, SMTP, POP, POP3, IMAP, FTP. Über TCP/IP liegen andere Protokolle wie HTTP, SMTP, POP, POP3, IMAP, FTP. TCP Man stellt über die Sockets eine Verbindung her, dabei fungiert der eine Computer als Client, der andere als Server. Vorsicht: Server und Client, das ist Software und nicht der Computer. Haben Server und Client eine Verbindung hergestellt, könen sie zum Beispiel über Textbotschaften miteinander kommunizieren. Das naheliegendste wäre, dass sie sich mit Textbotschaften miteinader unterhalten. Wenn sich zwei unterhalten, sagt der eine etwas, der andere hört etwas. Beim Dateizugriff unterscheiden wir zwischen Lesen und Schreiben. Es gibt während dem Verkehr zwischen Client und Server, zwei grundsätzliche Strukturen: Lesen und Schreiben. Zunächst muss die Verbindung hergestellt werden. Dann schreibt der eine, was der andere ließt, der andere kann auch lesen, was der andere schreibt. Dabei können sowohl Server als auch Client lesen und schreiben. Bevor gelesen, muss die Verbindung aufgebaut werden. Der Server läuft bereits, wenn der Client gestartet wird. So kann der Server, auf den Client warten. Während dem Verkehr wird dann gelesen und geschrieben. Dafür gibt es zwei Funktionen: send() recv() Man muss nun drei Dinge unterscheiden, zum Beispiel bei HTTP: 1. Zum einen, das senden und empfangen, innerhalb von C: send und recv 2. Das HTTP-Protokoll zum Beispiel. Ähnlich wie SMTP oder POP3, lässt sich HTTP, in für Menschen verständliche Botschaften verstehen. Ein Mensch kann die Botschaften verstehen, die dort gesendet und empfangen werden, er kann sie auch per Hand in die Konsole eingeben. Das sind Botschaften, wie Gib mir die Seite oder Sende mir die nur in der entsprechenden Sprache ausgedrückt. Wenn diese Botschaften in der Konsole eingeben werden, verwenden sie aber unter Garantie ein Programm, was, wenn es in C geschrieben wurde, Sockets verwendet. D.h. die Botschaften werden innerhalb des Programms mittels Sockets übermittelt 3. HTML: Ist die Seite angekommen, dann steht sie natürlich in HTML da. HTML muss nicht formatiert ausgegeben werden, es kann auch als eine reine Textform am Bildschirm ausgegeben werden. Das Entscheidende ist, dass der POP3-Client eine für den Menschen verständliche Textbotschaft den den POP3-Server schicken kann, die nicht die selber ist, aber für den Menschen verständlich ist und die Auslieferung der E- Mail zum Beispiel erst initisiert. So kann der POP3-Client an den POP3-Server 20

21 den Befehl send schicken. Dieser Befehl send hätte dann aber nichts mit der Funktion send() zu tun, die innerhalb des C-Programms verwendet wird. Dann sendet der Client mittels send() innerhalb des C-Prgoramms die Botschaft send und der Server hört mittels recv() zu und empfängt send. Die selber wird aber genauso als Text übertragen, wie die Botschaft send. Man unterscheidet also die Schicht des TCP/IP, bei der es die zwei Befehle send() und recv() gibt, dann wiederum Befehle innerhalb der Anwenderschicht, wie send und dann gibt es zum Beispiel beim HTTP-Server die HTML-Datei selber. Letzten Endes, könnte man ganz einfach einen HTTP-Client schreiben, Internet Explorer, Firefox und Safari, Chrome, das sind alles HTTP- Clients. Und im Gegensatz dazu könnte man einen reinen HTTP-Client selber schreiben. Reinen heißt: Ich persönlich kenne zwar nicht die Befehle von HTTP, aber die würden zum Beispiel so lauten: Liefere mir die Webseite so und so und sie wird an den HTTP-Client von dem HTTP-Server übermittelt. Dann kommt bei Ihnen die HTML-Seite so oder so an. Ob diese dann schön dargestellt wird ist eine andere Frage, Sie können auch einen Text erhalten, der sieht so aus: <BODY>...</BODY> und der wird nicht entsprechend dargestellt, sondern ist die reine Textform der Seite und enthält halt die HTML-Befehle, ohne das sie bei der Darstellung am Bildschirm irgendetwas ausrichten. Dann steht da nicht die berschrift groß gedruckt, oder irgendein Text dick, sondern da steht anstelle der berschrift <H1>...</H1> und wird auch genauso ausgegeben. Die Darstellung, dass aus <H1>...</H1> gemacht wird überlassen Sie jemand anderen. Dann sieht das entsprechend formatiert aus, die berschrift ist Dick und <H1>...</H1> sind reine Angaben an die Darstellung und werden so nicht ausgegeben. Ebenso können Sie mit Sockets einen POP3-Client schreiben und Sie werden sehen, alleine mit wenigen Befehlen wie SEND können Sie, indem Sie diese Befehle dann als Text über ihr Programm, was Sockets verwendet, eine lesen, an einem selbstgeschrieben Client. Ein Server zum Beispiel hat eine Aufgabe, die meistens für ihn Typisch ist: Ein POP3- Server speichert auf seiner Festplatte s innerhalb von Dateien, ein Webserver, auch HTML-Seiten für Ihre HTTP-Seite in Form von Dateien. Die speichert er bei sich auf der Festplatte und wir hatten es eben von Sockets. Davor von Filehandlern und der Server ist ein Programm, was sowohl Sockets als auch Filehandler benutzt. Der Server ist ein Programm, was einerseits Sockets geöffnet hat, für die TCP-IP-Verbindung zum Client, andererseits Filehandler um die Dateien zu lesen und über die TCP/IP-Verbindung zu übertragen, auf der der Client, entsprechende Daten zum Beispiel HTML-Dateien als Webseiten anfordert. Der HTTP-Server ließt die Dateien auf seiner Festplatte und übermittelt sie wie oben beschrieben über das Netzwerk oder die Netzwerk Verbindung. Jetzt gibt es einen Haufen Programme. Wie gesagt der Webserver ist ein Programm, warum sollte man, wenn man Programme wie Office hat oder Programme wie Latex und dafür Standardanwendungen nimmt, warum sollte man nicht eine Standardanwendung für einen Webserver nehmen, der ja auch nur ein Programm ist. Für das Web gibt es zum Beispiel den Apache. Nun ist es so: Ein Computer kann mehrere Programme gleichzeitig ausführen, so können mehrere Server auf einem Computer gleichzeitig arbeiten. Mehrere Server für unterschiedliche Aufgaben, bernimmt ein Provider die Anforderung, s und HTTP-Seiten zu verteilen, dann wäre es ja möglich sich einen großen Computer an zu schaffen und der ist sowohl für s als auch für HTTP zuständig. Dann ist auf einem Computer alles. Man kann auch einen 21

22 Computer für SMTP einen für HTTP, aber man kann auch einen nehmen für SMTP und HTTP. Oder man kann mehrere nehmen, die dann wiederum HTTP und SMTP jeweils beide gleichzeitig betreiben. Nun ist es so: Wenn ich einen Computer über eine IP-Adresse im Netzwerk identifiziere, auf einem Computer, der Server (Server ist zunächst ein Programm) läuft und zwar der für s und für Webseiten, dann muss ich einen Port öffnen. Es gibt die typischen Ports (zum Beispiel 80 für HTTP), damit der Computer, auf dem die Server laufen auch weiß, was er jetzt bei der aktuellen Verbindung bedienen soll. Laufen auf dem Computer, der das bereitstellt, beide Dienste, muss er jeweils immer wissen, welchen er denn bedienen soll. Reden zwei Computer miteinander, dann kommunizieren Client und Server miteinander. Der Server bleibt ber die Verbindung hinaus und war auch schon vor der Verbindung am laufen. Man nimmt nicht einfach Kontakt zu einem anderen Computer auf. Ein Server, wie ein HTTP-Server ist eine ständig laufende Software, auf einem vielleicht ganz normalen Computer, die auf Signale eines Clients wartet. D.h. die Software des Servers läuft schon, bevor die Verbinundung zustande kommt, sie läuft permanent. Dann kann der Client zu dieser Software eine Verbindung aufbauen. Webserver sind Software, wie jeder Server: Zum Beispiel Apache Clients sind zum Beispiel Webbrowser, wie Internetexplorer, Chrome, Firefox. Die Darstellung der HTML-Dateien, dass sie am Bildschirm so gut aussehen, hat nichts mit der Funktion des Clients an sich zu tun oder mit dessen, was ein Client eigentlich ist, der Client fordert schlicht und ergreifend eine HTML-Datei an und zwar ber ein TCP/IP-Netzwerk, die Darstellung ist ein zweiter Schritt. Wir müssen zwei Anwendungen mit C Programmieren: Einen Client und einen Server. Socket = Kommunikationsendpunkt Egal, ob Client oder Server, fordern wir zunächst einen Socket vom Betriebssystem an. Es spielt dabei keine Rolle, ob wir ein Server oder ein Client sind, es ist auch egal, mit wem wir kommunizieren möchten. Socket = Kommunikationsendpunk 22

23 Fangen wir an: 4.1 Client-Anwendung Socket für Linux: #include <sys/types.h> #include <sys/socket.h> int socket(int domain, int type, int protocol); Socket für Windows #include <winsock.h> SOCKET socket(int af, int type, int protocol); Wird die Funktion aufgerufen und es geschieht ein Fehler, gibt sie den Wert -1 zurück. 1. Parameter: domain : Protokollfamilie Protokollfamilien sind: AF_UNIX: Für Interprozesskommunikation verwendet. AF_INET: Internet IP-Protokoll Version 4 (dies verwenden wir, wir erinnern uns an die IP-Adressen unter Windows) AF_INET6: Internet IP-Protokoll Version 6 AF_IRDA: Infrarot,... AF_BLUETOOTH: Bluetooth-Sockets 2. Parameter: SOCK_STREAM: für TCP SOCK_DGRAM: UDP 3. Parameter: Code: Es besteht ein Zusammenhang zum zweiten Parameter, bzw. dem davor if((sock = socket(af_inet, SOCK_STREAM, 0)) < 0) /* Fehler */ Wenn alles mit socket(); funktioniert hat, kann der Client versuchen eine Verbindung zum Server auf zu bauen: connect(); Linux: 23

24 #include <sys/types.h> #include <sys/socket.h> int connect(int sock, const struct sockaddr *addr, int addrlen); Windows: #include <winsock.h> int connect(socket sock, const struct sockaddr FAR* addr, int addrlen); Als erster Parameter dient der Socket, den wir von socket erhalten haben. Der Rückgabewert ist negativ, wenn ein Fehler entstand. Für den zweiten Parameter gilt: Entweder: struct sockaddr { sa_family_t sa_family; char sa_data[14]; ; Oder: struct sockaddr_in { sa_family sin_family; unsigned short int sin_port; struct in_addr sin_addr; unsigned char pad[8]; ; Mit dem letzten Parameter geben wir die Länge von dem zweiten Parameter in Bytes mittels des ßizeofOperators an. sockaddr_in: sin_family: Addressfamilie (Protokollfamilie): Dasselbe wie in Socket sin_port: Portnummer: Ports wie HTTP (80), SMTP (25), IMAP, POP3,... sin_addr: IP-Adresse Das ganze sieht dann so aus: struct sockaddr_in server; unsigned long addr; memset(&server, 0, sizeof (server)); /* Wir initialisieren die gesamter Strukturvariable server vom Typ sockaddr_in, die gerade beschrieben wurde, mit 0 */ addr = inet_addr(argv[1]); /* Wir wandeln unsere Schreibweise einer IP-Adresse in eine 4-Byte Zahl um*/ memcpy((char *)&server.sin_addr, &addr, sizeof(addr)); /* Wir setzen die IP-Addresse, die wir als 4-Byte Zahl haben (long) in der Variablen 24

25 server vom Typ sockaddr_in*/ server.sin_family = AF_INET; /* Wir setzen das Protokoll */ server.sin_port = htons(80); /* Wir setzen den Port */ if(connect(sock,(struct sockaddr*)&server, sizeof(server)) < 0){ /* Fehler */ /* Wir bauen eine Verbindung auf */ Nun steht die Verbindung. Senden und Empfangen: Nun haben wir eine stehende Verbindung von unserem Client zu einem bestehenden Server. Die Sockets lassen sich mit Filedeskriptoren vergleichen, die zum Öffnen und Schließen einer Datei verwendet werden. So wie es beim Dateizugriff read() und write() gibt, gibt es bei einer Verbindung send() und recv() 1. Senden: Linux: #include <sys/types.h> #include <sys/socket.h> ssize_t send(int socketfd, const void *data, size_t data_len, unsigned int flags); Windows: #include <winsock.h> int send(socket s, const char FAR* data, int data_len, int flags ); Parameter: Unser Socket Einen Pointer auf den Arbeitsspeicherbereich, wo unsere Daten liegen Die Größe unserer Daten Ein paar Flags. Im Falle eines Fehlers erhalten wir den Rückgabewert Empfangen: Linux: #include <sys/types.h> #include <sys/socket.h> ssize_t recv(int socketfd, void *data, size_t data_len, unsigned int flags ); 25

26 Windows: #include <winsock.h> int recv(socket s, char FAR* data, int data_len, int flags); Das beenden der Verbindung: Linux: #include <unistd.h> int close(int s); Windows: #include <winsock.h> int closesocket(socket s); Also: Client: Funktionen: socket connect send recv close Strukturen: struct sockaddr_in: Enthält: IP-Adresse vom Server Port Noch mal demselben wie in der Funktion socket, einfach dass wir TCP/IP verwenden Ein paar Bytes, die zum Auffüllen der Struktur dienen Wichtige Parameter und Konstanten: socket: AF_INET, bei socket(), erster Parameter: wir wollen eine TCP/IP- Verbindung mit IPv4 SOCK_STREAM, bei socket(), zweiter Parameter: Wir wollen TCP verwenden und nicht UDP 3. Parameter von socket(): Einfach 0 Rückgabewert von socket(): Eine Nummer, die den Socket identifiziert, änlich einem Dateideskriptor. connect: 26

27 erster Parameter: Der Socket oder die Nummer des Sockets, ähnlich dem Dateideskriptor, Rückgabewert von socket(); zweiter Parameter: Struktur struct sockaddr_in, mit Informationen zu IP-Adresse vom Server Port Noch mal die Angabe wie in der Funktion socket, dass wir TCP/IP verwenden Ein paar Bytes, die zum Auffüllen der Struktur dienen dritter Parameter: Die Grösse in Bytes der Struktur sockaddr_in 4.2 Erstellen einer Server Anwendung Auch auf der Serverseits socket(); verwenden. Bei dem Server verwenden wir statt connect();: bind(); Linux: #include <sys/types.h> #include <sys/socket.h> int bind(int s, const struct sockaddr name, int namelen); Windows: #include <winsock.h> int bind(socket s, const struct sockaddr_in FAR* name, int namelen); Danach folgt: struct sockaddr_in server; memset(&server, 0, sizeof (server)); server.sin_family = AF_INET; server.sin_addr.s_addr = htonl(inaddr_any); server.sin_port = htons(1234); if(bind(sock, (struct sockaddr*)&server, sizeof( server)) < 0) { /* Fehler */ Danach folgt listen(); Linux: #include <sys/types.h> #include <sys/socket.h> int listen( int s, int backlog ); 27

28 Windows: #include <winsock.h> int listen( SOCKET s, int backlog ); Wir hatten ja gesagt, wenn Server und Client eine Verbindung aufbauen wollen, muss der eine vorher da sein, als der andere, das ist natürlich der Server. Beide sind Software. Während die eine Software schon läuft, muss der andere die Verbindung aufbauen. Die Verbindung zum Server baut der Client auf. Doch wie soll man das mit der Verbindung bewerkstelligen? Man kann nicht beide gleichzeitig einschalten, so dass sie dann unter Garantie eine Verbindung aufbauen. Stattdessen läuft der Server und der Client baut eine Verbindung zu ihm auf. Also ist der Client später gestartet als der Server. Aber es kommt noch besser: Ein Server kann mehrere Clients akzeptieren. Zum gleichen Zeitpunkt können mehrere Menschen auf dieselbe Webseite zugreifen. Dass ein Client eine Verbindung zu einem Server aufbauen will und zu erkennenn, dass er das will, was die Aufgabe des Servers ist, muss der Server ständig überprüfen. Er horcht, ob ein Client die Verbindung aufbauen will. Dieses Horchen bezeichnet man als listen(); Danach kommt #include <sys/types.h> #include <sys/socket.h> int accept(int s, struct sockaddr *addr, socklen_t addrlen ); Windows: #include <winsock.h> SOCKET accept(socket s, struct sockaddr FAR* addr, int FAR* addrlen ); Warum: Nun mehrere Clients haben eventuell eine Verbindung zum Server aufgebaut, also lagern die Wünsche der Clients, also die Clients, in einer Warteschlange. Es wird immer der nächste aus der Verbindung der Warteschlangs geholt. Dafür ist accept() zuständig. struct sockaddr_in client; int sock, sock2; socklen_t len;... while(1) { len = sizeof(client); sock2 = accept(sock, (struct sockaddr*)&client, &len); if(sock2 < 0) { /* Fehler */ /* Hier beginnt der Datenaustausch. */ 28

29 Deswegen gibt es bei dem Server auch sock und sock2. sock ist die des Servers selber und sock2, der socket des Clients bzw. aller Clients, die zum Server Kontakt aufgenommen haben. 4.3 Der komplette Quelltext Linux, Client: /* Dies ein Quelltext fuer Linux */ /* Das Programm muss mit g++ uebersetzt werden */ #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <arpa/inet.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #define PORT 3142 int main(int argc, char *argv[]) { int sock; struct sockaddr_in server; char addr_str[50]; long addr; char echo_str[50]; if(argc < 3) { printf("usage: client server-ip echo-word\n"); printf("server-ip musst be an numeric ip-address\n"); printf("programm exits\n"); strcpy(addr_str, argv[1]); strcpy(echo_str, argv[2]); if((sock = socket(af_inet, SOCK_STREAM, 0)) < 0) { printf("beim Erzeugen des Sockets trat auf Client Seite ein Fehler auf\n"); printf("programm beendet sich\n"); 29

30 memset(&server, 0, sizeof(server)); addr = inet_addr(addr_str); memcpy((char *)&server.sin_addr, &addr, sizeof(addr)); server.sin_family = AF_INET; server.sin_port = htons(port); if(connect(sock, (struct sockaddr *)&server, sizeof(server)) < 0) { printf("fehler beim Verbindungsaufbau auf Seite des Clients,", "Client kann keine Verbindung zu Server herstellen\n"); printf("programm beendet sich\n"); if(send(sock, echo_str, strlen(echo_str), 0)!= strlen(echo_str)) { printf("send() hat eine andere Anzahl von Bytes gesendet als erwartet\n"); printf("programm beendet sich\n"); close(sock); return 0; Linux, Server: /* Dies ein Quelltext fuer Linux */ /* Das Programm muss mit g++ uebersetzt werden */ #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <arpa/inet.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> #define PORT 3142 int main(int argc, char *argv[]) { struct sockaddr_in server, client; int sock, client_sock; unsigned int len; char msg[50]; int msg_len; 30

31 if((sock = socket(af_inet, SOCK_STREAM, 0)) < 0) { printf("beim Erzeugen des Sockets trat auf Seiten des Server ein Fehler auf\n"); printf("programm beendet sich\n"); memset(&server, 0, sizeof(server)); server.sin_family = AF_INET; server.sin_addr.s_addr = htonl(inaddr_any); server.sin_port = htons(port); if(bind(sock, (struct sockaddr*)&server, sizeof( server)) < 0) { printf("server: Kann den Socket nicht binden\n"); printf("programm beendet sich\n"); if(listen(sock, 5) == -1 ) { printf("server: Fehler bei listen\n"); printf("programm beendet sich\n"); while(1) { len = sizeof(client); client_sock = accept(sock, (struct sockaddr*)&client, &len); if(client_sock < 0) { printf("server: Fehler bei accept\n"); printf("programm beendet sich\n"); if((msg_len = recv(client_sock, msg, 50, 0)) < 0) { printf("ermittelte Nachricht zu kurz\n"); printf("programm beendet sich\n"); msg[msg_len] = 0; printf("client mit der Adresse %s sagt: %s\n", inet_ntoa(client.sin_addr), msg); close(client_sock); return 0; Windows Client: /* Dies ein Quelltext fuer Windows */ /* Das Programm muss mit einem Borland C++ Compiler uebersetzt werden */ #include <winsock.h> 31

32 #include <stdio.h> #include <string.h> #include <stdlib.h> #define PORT 3142 int main(int argc, char *argv[]) { SOCKET sock; struct sockaddr_in server; char addr_str[50]; long addr; char echo_str[50]; if(argc < 3) { printf("usage: client server-ip echo-word\n"); printf("server-ip musst be an numeric ip-address\n"); printf("programm exits\n"); strcpy(addr_str, argv[1]); strcpy(echo_str, argv[2]); if((sock = socket(af_inet, SOCK_STREAM, 0)) < 0) { printf("beim Erzeugen des Sockets trat auf Client Seite ein Fehler auf\n"); printf("programm beendet sich\n"); memset(&server, 0, sizeof(server)); addr = inet_addr(addr_str); memcpy((char *)&server.sin_addr, &addr, sizeof(addr)); server.sin_family = AF_INET; server.sin_port = htons(port); if(connect(sock, (struct sockaddr *)&server, sizeof(server)) < 0) { printf("fehler beim Verbindungsaufbau auf Seite des Clients,", "Client kann keine Verbindung zu Server herstellen\n"); printf("programm beendet sich\n"); if(send(sock, echo_str, strlen(echo_str), 0)!= strlen(echo_str)) { printf("send() hat eine andere Anzahl von Bytes gesendet als erwartet\n"); printf("programm beendet sich\n"); 32

33 closesocket(sock); return 0; Windows, Server: /* Dies ein Quelltext fuer Windows */ /* Das Programm muss am Besten mit einem Borland c++ Compiler uebersetzt werden */ #include <winsock.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <fcntl.h> #define PORT 3142 int main(int argc, char *argv[]) { struct sockaddr_in server, client; SOCKET sock, client_sock; int len; char msg[50]; int msg_len; if((sock = socket(af_inet, SOCK_STREAM, 0)) < 0) { printf("beim Erzeugen des Sockets trat auf Seiten des Server ein Fehler auf\n"); printf("programm beendet sich\n"); memset(&server, 0, sizeof(server)); server.sin_family = AF_INET; server.sin_addr.s_addr = htonl(inaddr_any); server.sin_port = htons(port); if(bind(sock, (struct sockaddr*)&server, sizeof( server)) < 0) { printf("server: Kann den Socket nicht binden\n"); printf("programm beendet sich\n"); if(listen(sock, 5) == -1 ) { printf("server: Fehler bei listen\n"); printf("programm beendet sich\n"); 33

34 while(1) { len = sizeof(client); client_sock = accept(sock, (struct sockaddr*)&client, &len); if(client_sock < 0) { printf("server: Fehler bei accept\n"); printf("programm beendet sich\n"); if((msg_len = recv(client_sock, msg, 50, 0)) < 0) { printf("ermittelte Nachricht zu kurz\n"); printf("programm beendet sich\n"); msg[msg_len] = 0; printf("client mit der Adresse %s sagt: %s\n", inet_ntoa(client.sin_addr), msg); closesocket(client_sock); return 0; 5 HTML-Programmierung im Web Eine Möglichkeit eine HTML-Seite zu erstellen ist entweder ganz in HTML, oder mittels einer Software, die entweder ein WYSIWYG Editor verwendet oder eine Webseite mittels zum Beispiel LaTeX2html. Latex2html bietet den Vorteil, dass die Webseite einer Norm unterliegt. LaTeX2HTML ist ein Standard. Im Gegensatz zu HTML selber ist Latex so, dass es viel mehr auf die genormte Darstellung von Dokumenten achtet. Das heißt es hält sich an die Regeln, wie ein Dokument nach allen Standards und Regeln aussehen soll und die Stimmen nach all den Jahren und Jahrhunderten, der Erfassung von Regeln auf jeden Fall. LaTeX2HTML ist wieder ein Standard, weil alles was in LaTeX2HTML sieht gleich aus, so wie eben, dass sich Latex um äußere Standards bemüht. Des Weiteren, wenn man sich mit all den regeln des äußeren und optischen bemüht, hat man es mit HTML nicht leicht, denn man muss hier Dinge kenne, die beziehen sich auf weitreichende Bereich, wie man Dokumente überhaupt nach allen Regeln so darstellt, dass sie nach etwas aussehen. Latex ist selber aber auch eine Skriptsprache zur Dokumentenbeschreibung wie HTML. Es benutzt auch Befehle in dieser Art. Und eignet sich gut zum Beispiel zur Darstellung von Mathematischen Text und Formeln. Mathematische Formeln lassen sich gut damit darstellen. Seiten, die mit Latex2HTML geschrieben wurden, sehen immer gleich aus. Und damit ist das ein Standard, vor allem weil jeder, der Latex2HTML verwendet, jedes Mal eine ähnlich aussehende Seite erhält. Und da Latex2HTML eine Anwendung ist, die so zu sagen bekannt ist, oder immer wieder verwendet wird oder zumindest so ist, dass sie bekannt ist und immer wieder verwendet werden kann, kann man sich sicher sein, dass die Seiten damit nicht schlecht aussehen. Latex ist eine Dokumentenbeschreibungssprache wie HTML und dient vor allem zur Darstellung von mathematischen Formelsatz. Es handelt sich dabei 34

35 allerdings um eine Dokumentenbeschreibungssprache, wo mit Sie Texte quasi so schreiben können, dass sie wie ein echtes Dokument aussehen und auch wirklich eines sind, es gibt ja gewisse Regeln, nach denen ein Dokument aus zu sehen hat, ist das eine vollkommen legitime Sprache. Was halt nicht, wie in HTML sein kann, ist, dass der Button oder die Tabelle irgendwo im Raum liegen kann. Da ist nicht in der rechten oberen Ecke zum Beispiel vollkommen fehl platziert irgendetwas, was auch immer. 6 Neuer Text vom User, auf meiner Webseite Was das Einbetten von Texten auf einer Webseite betrifft: Facebook funktioniert auf diese Art und Weise, wie jede Seite, die Code einbettet. Es gibt Java-Script. In Java-Script gibt es Eingabeberreiche. Dort gebe ich Text ein. Die Seite ist schon da, auf der ein Eingabefenster ist. Ich gebe dort den Text ein und der Text geht mittels Java-Script zurrück an den Server, auf dem die Seite ist. Doch diese Seite auf dem das Eingabefenster ist, ist eine HTML-Seite. Sie wurde in HTML geschrieben. Dazwischen ist Code mit Java- Script. Aber die Teile von HTML, die Text und Bilder darstellten, gehören zu HTML. Wenn ich nun einen Text eingebe, dann geht der Text zurück an den Server. Dieser speichert nun an einer bestimmten Stelle in der HTML-Datei den neu zurückgekommenen Text und speichert es als Text, wie jeden anderen Text einer HTML-Datei. Nun wird die Webseite neu angezeigt mit dem eingebenen Text. Doch diese HTML-Datei befindet sich ja auf dem Server. Also wird dort was als Text auf der Datei auf dem Server geändert, bzw. hinzugefügt. Und nun die Frage: Was ist wenn dort jemand Java-Script-Code einfügt. Das funktioniert nicht, denn der Server bringt den Code so an, dass er als Text ausgeführt bzw. gelesen wird. Dort wird kein Code ausgeführt, weil er als Textform auf der Seite untergebracht ist, so dass er nur als Text gelesen wird. Dann fragt man sich und wenn ich nun etwas an dem HTML-Code der Seite ändere? Das geht nicht, denn ich kann zwar die Seite speichern und bei mir auf dem Computer was ändern, aber nicht auf dem Server. Ich kann auf dem Server nichts an der Datei ändern. Die Datei ist auf dem Server gespeichert und auf der auf dem Server gespeicherten Datei kann ich nichts ändern. Doch sagen manche, ich kann doch Java-Script Code einfügen, nein, das kann ich nicht, denn dann muss ich ja wieder was auf der Datei auf dem Server ändern. Die HTML-Datei wird trotz Java-Script per Apache oder einem anderen Webserver verteilt. Der führt den Code nicht aus. Das tut der Webbrowser. 35

Ein bisschen TCP/IP. David Vajda 25. Januar 2016

Ein bisschen TCP/IP. David Vajda 25. Januar 2016 Ein bisschen TCP/IP David Vajda 25. Januar 2016 1 TCP/IP 1.1 Der Protokollstack Was ist ein Protokoll? Wenn zwei Menschen miteinander reden, können Sie dabei verschiedene Regel entwickeln, wie sie es tun.

Mehr

Computer and Communication Systems (Lehrstuhl für Technische Informatik) Socket-Programmierung

Computer and Communication Systems (Lehrstuhl für Technische Informatik) Socket-Programmierung Computer and Communication Systems (Lehrstuhl für Technische Informatik) Socket-Programmierung [RN] Sommer 2012 Socket - Programmierung 1 Überblick Allgemeine Grundlagen für die Socket-Programmierung Elementare

Mehr

Projekt: Web-Server. Foliensatz 9: Projekt Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2014

Projekt: Web-Server. Foliensatz 9: Projekt Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2014 Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)

Mehr

J-1 Überblick. 1 Binden von Sockets. Besprechung 6. Aufgabe (jsh) Domain, z. B. (PF_ = Protocol Family) Byteorder bei Netzwerkkommunikation

J-1 Überblick. 1 Binden von Sockets. Besprechung 6. Aufgabe (jsh) Domain, z. B. (PF_ = Protocol Family) Byteorder bei Netzwerkkommunikation J 8. Übung J 8. Übung J-1 Überblick #include int socket(int domain, int type, int protocol); Besprechung 6. Aufgabe (jsh) Byteorder bei Netzwerkkommunikation Domain, z. B. (PF_ = Protocol

Mehr

Lösung Übungszettel 6

Lösung Übungszettel 6 Lösungen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik SS 03 AG Betriebssysteme FB3 Kirsten Berkenkötter Lösung Übungszettel 6 1 Aufgabe 1: Parallel-Server 1.1 Client #include

Mehr

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN UNIX/Linux-Interprozesskommunikation, zugehörige Systemaufrufe und Kommandos 12. UNIX/Linux-Sockets Wintersemester 2016/17 UNIX/Linux-IPC-Mechanismen Nachrichtenbasierter

Mehr

7. OSI-Modell als Rollenspiel

7. OSI-Modell als Rollenspiel 7.1 Rollen Mit Hilfe eines Rollenspiels soll der gesamte Ablauf der Anfrage einer Webseite bei einem Web-Server dargestellt werden. An einer Web-Anfrage sind folgende Rollen beteiligt: 1. User 2. Browser

Mehr

Netzwerk Linux-Kurs der Unix-AG

Netzwerk Linux-Kurs der Unix-AG Netzwerk Linux-Kurs der Unix-AG Benjamin Eberle 13. Juli 2016 Netzwerke mehrere miteinander verbundene Geräte (z. B. Computer) bilden ein Netzwerk Verbindung üblicherweise über einen Switch (Ethernet)

Mehr

Themen. Transportschicht. Internet TCP/UDP. Stefan Szalowski Rechnernetze Transportschicht

Themen. Transportschicht. Internet TCP/UDP. Stefan Szalowski Rechnernetze Transportschicht Themen Transportschicht Internet TCP/UDP Transportschicht Schicht 4 des OSI-Modells Schicht 3 des TCP/IP-Modells Aufgaben / Dienste: Kommunikation von Anwendungsprogrammen über ein Netzwerk Aufteilung

Mehr

Netzwerk-Programmierung. Netzwerke. Alexander Sczyrba Michael Beckstette.

Netzwerk-Programmierung. Netzwerke. Alexander Sczyrba Michael Beckstette. Netzwerk-Programmierung Netzwerke Alexander Sczyrba Michael Beckstette {asczyrba,mbeckste}@techfak.uni-bielefeld.de 1 Übersicht Netzwerk-Protokolle Protkollfamilie TCP/IP Transmission Control Protocol

Mehr

Linux Prinzipien und Programmierung

Linux Prinzipien und Programmierung Linux Prinzipien und Programmierung Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2012/2013 1 / 25 Netzwerkkonfiguration TCP (Forts.) UDP IPC über Unix Domain Sockets 2 / 25 Grundlagen Netzwerk

Mehr

Internet Modell. Nothing stated. Bildquelle: Andrew S. Tanenbaum, Computer Networks, Fourth Edition, 2003 Grundlagen der Rechnernetze Einführung 50

Internet Modell. Nothing stated. Bildquelle: Andrew S. Tanenbaum, Computer Networks, Fourth Edition, 2003 Grundlagen der Rechnernetze Einführung 50 Internet Modell Nothing stated by TCP/IP model Bildquelle: Andrew S. Tanenbaum, Computer Networks, Fourth Edition, 2003 Grundlagen der Rechnernetze Einführung 50 Internet Protokolle Bildquelle: Andrew

Mehr

Tafelübung zu BS 4. Interprozesskommunikation

Tafelübung zu BS 4. Interprozesskommunikation Tafelübung zu BS 4. Interprozesskommunikation Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/

Mehr

Kü /Info Oberstufe Netzwerke SJ. 2014/2015

Kü /Info Oberstufe Netzwerke SJ. 2014/2015 Der Switch Video: o http://perm.ly/kommunikation-in-netzwerken-switche Der Switch wird in Filius auf folgende Weise dargestellt: In der Regel hat ein Switch viele sogenannte Ports, an die die Endgeräte

Mehr

7. Tafelübung. Socket - Erzeugung. Netzwerkkommunikation und Byteorder. Binden von Sockets. Lösung der jsh-aufgabe. Erläuterung der rshd-aufgabe

7. Tafelübung. Socket - Erzeugung. Netzwerkkommunikation und Byteorder. Binden von Sockets. Lösung der jsh-aufgabe. Erläuterung der rshd-aufgabe 7. Tafelübung Lösung der jsh-aufgabe Erläuterung der rshd-aufgabe Sockets Socket - Erzeugung s = socket(domain, type, protocol) Domain, z.b. AF_INET: Internet AF_UNIX: Unix Filesystem AF_APPLETALK: Appletalk

Mehr

Projekt: Web-Proxy. Foliensatz 9: Projekt Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2015

Projekt: Web-Proxy. Foliensatz 9: Projekt Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2015 Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)

Mehr

Rechnernetze & Verteilte Systeme (T) Netzprogrammierung/Sockets (P)

Rechnernetze & Verteilte Systeme (T) Netzprogrammierung/Sockets (P) Systempraktikum im Wintersemester 2009/2010 (LMU): Vorlesung vom 07.01. Foliensatz 7 Rechnernetze & Verteilte Systeme (T) Netzprogrammierung/Sockets (P) Thomas Schaaf, Nils gentschen Felde Lehr- und Forschungseinheit

Mehr

Protokolle und Schichten. Grundlagen der Rechnernetze Einführung 41

Protokolle und Schichten. Grundlagen der Rechnernetze Einführung 41 Protokolle und Schichten Grundlagen der Rechnernetze Einführung 41 Protokoll und Interface Host 1 Host 2 High Level Objekt High Level Objekt Service Interface Service Interface Protokoll Peer to peer Interface

Mehr

Michael Golm, Universität Erlangen-Nürnberg, IMMD 4, 1999/2000 1999-12-20 14.51 / Tafelübung 7. Netzwerkkommunikation und Byteorder

Michael Golm, Universität Erlangen-Nürnberg, IMMD 4, 1999/2000 1999-12-20 14.51 / Tafelübung 7. Netzwerkkommunikation und Byteorder 7. Tafelübung Lösung der jsh-aufgabe Erläuterung der rshd-aufgabe Sockets 83 Netzwerkkommunikation und Byteorder Wiederholung: Byteorder big endian little endian 0 1 2 3 11 aa bb cc cc bb aa 11 0x11aabbcc

Mehr

Verteilte Systeme - Java Networking (Sockets) -

Verteilte Systeme - Java Networking (Sockets) - Verteilte Systeme - Java Networking (Sockets) - Prof. Dr. Michael Cebulla 30. Oktober 2014 Fachhochschule Schmalkalden Wintersemester 2014/15 1 / 36 M. Cebulla Verteilte Systeme Gliederung Grundlagen TCP/IP

Mehr

TCP/IP-Protokollfamilie

TCP/IP-Protokollfamilie TCP/IP-Protokollfamilie Internet-Protokolle Mit den Internet-Protokollen kann man via LAN- oder WAN kommunizieren. Die bekanntesten Internet-Protokolle sind das Transmission Control Protokoll (TCP) und

Mehr

Gebäudeautomatisierung mit Android und dem Raspberry Pi. Sergej Knaub, Thomas Stickel

Gebäudeautomatisierung mit Android und dem Raspberry Pi. Sergej Knaub, Thomas Stickel Gebäudeautomatisierung mit Android und dem Raspberry Pi Sergej Knaub, Thomas Stickel Inhaltsübersicht Bluetoothtechnologie Serielle Kommunikation Netzwerk-Technologien LAN-Technologie Protokolle Ethernet

Mehr

Filius Simulation von Netzwerken

Filius Simulation von Netzwerken Wurde an der Universität Siegen entwickelt, Download unter http://www.lernsoftware-filius.de Start unter Linux: Auf der Konsole den entsprechenden Ordner ansteuern: cd Desktop/TdI-Filius/filius-1.5.1 Filius-Java-Datei

Mehr

Adressauflösung. IP Adresse Physikalische Adresse 128.96.34.1 57:FF:AA:36:AB:11 128.96.34.16 85:48:A4:28:AA:18

Adressauflösung. IP Adresse Physikalische Adresse 128.96.34.1 57:FF:AA:36:AB:11 128.96.34.16 85:48:A4:28:AA:18 Adressauflösung IP Adresse Physikalische Adresse 128.96.34.1 57:FF:AA:36:AB:11 128.96.34.16 85:48:A4:28:AA:18 IP Adresse Physikalische Adresse 128.96.34.15??? 128.96.34.16 85:48:A4:28:AA:18 128.96.34.15

Mehr

Operating Systems Principles. Event Queue

Operating Systems Principles. Event Queue Humboldt University Computer Science Department Operating Systems Principles Event Queue 1. Aufgabe 3 Wochen Zeit zum Lösen der Aufgaben Aufgabenstellung auf der SAR Website Abgabe über GOYA Abgabefrist:

Mehr

Linux Prinzipien und Programmierung

Linux Prinzipien und Programmierung Linux Prinzipien und Programmierung Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2012/2013 1 / 24 RPMs Socket-Programmierung TCP 2 / 24 RPMs: Grundlagen Die meisten Linux-Distributionen benutzen

Mehr

Linux Prinzipien und Programmierung

Linux Prinzipien und Programmierung Linux Prinzipien und Programmierung Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2011/2012 1 / 24 RPMs Socket-Programmierung TCP 2 / 24 RPMs: Grundlagen Die meisten Linux-Distributionen benutzen

Mehr

Netzwerk-Programmierung. Netzwerke.

Netzwerk-Programmierung. Netzwerke. Netzwerk-Programmierung Netzwerke Alexander Sczyrba Michael Beckstette {asczyrba,mbeckste}@techfak.uni-bielefeld.de Übersicht Netzwerk-Protokolle Protkollfamilie TCP/IP Transmission Control Protocol (TCP)

Mehr

Konfiguration für den Betrieb über LAN Interface

Konfiguration für den Betrieb über LAN Interface Konfiguration für den Betrieb über LAN Interface Die folgende Anleitung ist durchzuführen, nachdem die LAN-SDR Software auf Ihrem PC installiert wurde. LAN-SDR ist ausgeschaltet. Bitte merken Sie sich

Mehr

8. TCP-IP Modell als Rollenspiel

8. TCP-IP Modell als Rollenspiel 8.1 Rollen Mit Hilfe eines Rollenspiels soll der gesamte Ablauf der Anfrage einer Webseite bei einem Web-Server dargestellt werden. An einer Web-Anfrage sind folgende Rollen beteiligt: 1. User 2. Browser

Mehr

Internetanwendungstechnik (Übung)

Internetanwendungstechnik (Übung) Internetanwendungstechnik (Übung) Sockets Stefan Bissell, Gero Mühl Technische Universität Berlin Fakultät IV Elektrotechnik und Informatik Kommunikations- und Betriebssysteme (KBS) Einsteinufer 17, Sekr.

Mehr

Übung - Mit Wireshark eine UDP-DNS-Aufzeichnung untersuchen

Übung - Mit Wireshark eine UDP-DNS-Aufzeichnung untersuchen Übung - Mit Wireshark eine UDP-DNS-Aufzeichnung untersuchen Topologie Lernziele Teil 1: Wireshark für das Erfassen von Paketen vorbereiten Auswahl einer geeigneten Netzwerk-Schnittstelle, um Pakete zu

Mehr

Netzwerkprogrammierung mit Sockets und C. Ulrich Vogel

Netzwerkprogrammierung mit Sockets und C. Ulrich Vogel Netzwerkprogrammierung mit Sockets und C Ulrich Vogel Netzwerkprogrammierung mit Sockets und C von Ulrich Vogel Dieses Tutorial ist eine Einführung in die Netzwerkprogrammierung mit Hilfe von Sockets.

Mehr

Netzwerk-Programmierung in C

Netzwerk-Programmierung in C 1 / 26 Netzwerk-Programmierung in C Oliver Bartels Fachbereich Informatik Universität Hamburg 2 Juli 2014 2 / 26 Inhaltsverzeichniss 1 IPv4 und IPv6 Wie werden Daten verschickt? 2 3 Verbindungsaufbau ohne

Mehr

4. Network Interfaces Welches verwenden? 5. Anwendung : Laden einer einfachen Internetseite 6. Kapselung von Paketen

4. Network Interfaces Welches verwenden? 5. Anwendung : Laden einer einfachen Internetseite 6. Kapselung von Paketen Gliederung 1. Was ist Wireshark? 2. Wie arbeitet Wireshark? 3. User Interface 4. Network Interfaces Welches verwenden? 5. Anwendung : Laden einer einfachen Internetseite 6. Kapselung von Paketen 1 1. Was

Mehr

Netzwerkprotokolle. Physikalische Verbindungsebene Datenübertragungsebene

Netzwerkprotokolle. Physikalische Verbindungsebene Datenübertragungsebene TCP/IP-Familie Netzwerkprotokolle Protokoll Verfahrensvorschrift Der komplexe Vorgang der Kommunikation wird im Netzwerk auf mehrere aufeinander aufbauende Schichten verteilt, wobei es neben dem OSI-Modell

Mehr

Netzwerke. Netzwerk-Programmierung. Sven Hartmeier.

Netzwerke. Netzwerk-Programmierung. Sven Hartmeier. Netzwerk-Programmierung Netzwerke Sven Hartmeier shartmei@techfak.uni-bielefeld.de Übersicht Netzwerk-Protokolle Protokollfamilie TCP/IP Transmission Control Protocol (TCP) erste Schritte mit sockets Netzwerk-Programmierung

Mehr

Rechnernetze II SS 2015. Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404

Rechnernetze II SS 2015. Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Rechnernetze II SS 2015 Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 14. Juli 2015 Betriebssysteme / verteilte Systeme Rechnernetze

Mehr

An Open Interface for Network Programming under Microsoft Windows. DI. Dr. Peter René Dietmüller

An Open Interface for Network Programming under Microsoft Windows. DI. Dr. Peter René Dietmüller Windows Sockets An Open Interface for Network Programming under Microsoft Windows DI. Dr. Peter René Dietmüller Institut für Informationsverarbeitung und Mikroprozessortechnik Johannes Kepler Universität

Mehr

Einführung in die Netzwerkprogrammierung mit Sockets und C

Einführung in die Netzwerkprogrammierung mit Sockets und C Einführung in die Netzwerkprogrammierung mit Sockets und C 1 BrB/V0.1 1 Vorwort Dieses Tutorial ist eine Einführung in die Netzwerkprogrammierung mit Hilfe von Sockets und der Programmiersprache C. Als

Mehr

Technische Grundlagen

Technische Grundlagen Technische Grundlagen Allgemeines über Computernetze Die Beschreibung der Kommunikation in Computernetzwerken erfolgt in der Regel über Standards. Das Ziel aller Standardisierungsbemühungen sind offene

Mehr

Beispiel Block 1 Programmierrichtlinien und Fehlerbehandlung Argumentbehandlung Signale Sockets Übungsaufgaben. Benedikt Huber WS 2011/2012

Beispiel Block 1 Programmierrichtlinien und Fehlerbehandlung Argumentbehandlung Signale Sockets Übungsaufgaben. Benedikt Huber WS 2011/2012 Beispiel Block 1 Programmierrichtlinien und Fehlerbehandlung Argumentbehandlung Signale Sockets Übungsaufgaben Benedikt Huber WS 2011/2012 1 Organisatorisches Vorlesung am Dienstag den 18.10.2011 entfällt

Mehr

Das ISO / OSI -7 Schichten Modell

Das ISO / OSI -7 Schichten Modell Begriffe ISO = Das ISO / OSI -7 Schichten Modell International Standardisation Organisation Dachorganisation der Normungsverbände OSI Model = Open Systems Interconnection Model Modell für die Architektur

Mehr

Adressierung eines Kommunikationspartners in der TCP/IP-Familie

Adressierung eines Kommunikationspartners in der TCP/IP-Familie Adressierung eines Kommunikationspartners in der TCP/IP-Familie! Wenn Daten geroutet werden, müssen sie: 1. zu einem bestimmten Netzwerk 2. zu einem bestimmten Host in diesem Netzwerk 3. zu einem bestimmten

Mehr

Berkeley Sockets 187

Berkeley Sockets 187 Berkeley Sockets 187 Für TCP/IP gibt es zwei Schnittstellen, die beide zum POSIX-Standard gehören: Die Berkeley Sockets wurden 1983 im Rahmen von BSD 4.2 eingeführt. Dies war die erste TCP/IP-Implementierung.

Mehr

Peer-to-Peer- Netzwerke

Peer-to-Peer- Netzwerke Peer-to-Peer- Netzwerke Christian Schindelhauer Sommersemester 2006 2. Vorlesung 27.04.2006 schindel@informatik.uni-freiburg.de 1 Organisation Web-Seite http://cone.informatik.uni-freiburg.de/ teaching/vorlesung/peer-to-peer-s96/

Mehr

Zusammenfassung für CS-Prüfung 3 Seite 1. CS-Zusammenfassung für Prüfung 3 vom Im Beispiel gibt es 3 Deadlocks

Zusammenfassung für CS-Prüfung 3 Seite 1. CS-Zusammenfassung für Prüfung 3 vom Im Beispiel gibt es 3 Deadlocks Zusammenfassung für CS-Prüfung 3 Seite 1 CS-Zusammenfassung für Prüfung 3 vom 24. 6. 2002 Deadlock Im Beispiel gibt es 3 Deadlocks Unterschied zwischen Blockieren, Verklemmen und Verhungenrn= -> Band 1

Mehr

Rechnernetze II WS 2012/2013. Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404

Rechnernetze II WS 2012/2013. Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Rechnernetze II WS 2012/2013 Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 5. Mai 2014 Betriebssysteme / verteilte Systeme Rechnernetze

Mehr

Byteorder bei Netzwerkkommunikation Netzwerkprogrammierung - Sockets Netzwerkprogrammierung - Verschiedenes

Byteorder bei Netzwerkkommunikation Netzwerkprogrammierung - Sockets Netzwerkprogrammierung - Verschiedenes U9 9. Übung U9 9. Übung Besprechung Aufgabe 7 (lash) Informationen zu Aufgabe 8 (simail) Byteorder bei Netzwerkkommunikation Netzwerkprogrammierung - Sockets Netzwerkprogrammierung - Verschiedenes U9.1

Mehr

Gruppen Di-T14 / Mi-T25

Gruppen Di-T14 / Mi-T25 Gruppen Di-T14 / Mi-T25 Tutorübung zu Grundlagen: Rechnernetze und Verteilte Systeme (SS 16) Michael Schwarz Institut für Informatik Technische Universität München 31.05 / 01.06.2016 1/2 Subnetting IPv6

Mehr

Das TCP/IP Schichtenmodell

Das TCP/IP Schichtenmodell Das TCP/IP Schichtenmodell Protokolle Bei der TCP/IP Protokollfamilie handelt sich nicht nur um ein Protokoll, sondern um eine Gruppe von Netzwerk- und Transportprotokollen. Da die Protokollfamilie Hardwareunabhängig

Mehr

Internet Routing am 14. 11. 2006 mit Lösungen

Internet Routing am 14. 11. 2006 mit Lösungen Wissenstandsprüfung zur Vorlesung Internet Routing am 14. 11. 2006 mit Lösungen Beachten Sie bitte folgende Hinweise! Dieser Test ist freiwillig und geht in keiner Weise in die Prüfungsnote ein!!! Dieser

Mehr

Client-Server mit Socket und API von Berkeley

Client-Server mit Socket und API von Berkeley Client-Server mit Socket und API von Berkeley L A TEX Projektbereich Deutsche Sprache Klasse 3F Schuljahr 2015/2016 Copyleft 3F Inhaltsverzeichnis 1 NETZWERKPROTOKOLLE 3 1.1 TCP/IP..................................................

Mehr

KN 20.04.2015. Das Internet

KN 20.04.2015. Das Internet Das Internet Internet = Weltweiter Verbund von Rechnernetzen Das " Netz der Netze " Prinzipien des Internet: Jeder Rechner kann Information bereitstellen. Client / Server Architektur: Server bietet Dienste

Mehr

Einwahl per Modem unter Linux

Einwahl per Modem unter Linux Einwahl per Modem unter Linux David Vajda 25. Juni 2017 1 Das Device-Konzept unter Linux Devices sind zum Beispiel: /dev/hda /dev/hda1 /dev/hda2 /dev/hda3 /dev/hdb /dev/hdb1 /dev/hdb2 /dev/hdc /dev/hdc1

Mehr

Transmission Control Protocol (TCP)

Transmission Control Protocol (TCP) Transmission Control Protocol (TCP) Verbindungsorientiertes Protokoll, zuverlässig, paketvermittelt stream-orientiert bidirektional gehört zur Transportschicht, OSI-Layer 4 spezifiziert in RFC 793 Mobile

Mehr

Übungen zu Systemprogrammierung I Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2003 H-Uebung6.fm

Übungen zu Systemprogrammierung I Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2003 H-Uebung6.fm H 6. Übung H 6. Übung H.1 Überblick Besprechung 4. Aufgabe (mysh) Signale (Fortsetzung) Byteorder bei Netzwerkkommunikation Netzwerkprogrammierung - Sockets Duplizieren von Filedeskriptoren Netzwerkprogrammierung

Mehr

Was ist das OSI-Referenzmodell eigentlich und wofür wird es benötigt?

Was ist das OSI-Referenzmodell eigentlich und wofür wird es benötigt? Was ist das OSI-Referenzmodell eigentlich und wofür wird es benötigt? OSI ist die englische Abkürzung für Open System Interconnection (Reference) Model und ist ein offenes Schichtenmodell zur Kommunikation

Mehr

Internet, Multimedia und Content Management

Internet, Multimedia und Content Management Mag. Friedrich Wannerer Internet, Multimedia und Content Management Jahrgang 1, 2, 3 (bzw. 4 und 5) 1. Jahrgang Internet Grundbegriffe, Zugang Informationsbeschaffung (Suchmaschinen) Webseitengestaltung

Mehr

Netzwerk Linux-Kurs der Unix-AG

Netzwerk Linux-Kurs der Unix-AG Netzwerk Linux-Kurs der Unix-AG Andreas Teuchert 18./19. Juli 2012 Netzwerk-Protokolle legen fest, wie Daten zur Übertragung verpackt werden unterteilt in verschiedene Schichten: Anwendungsschicht (HTTP,

Mehr

ARP, ICMP, ping. Jörn Stuphorn Bielefeld, den 4. Mai Mai Universität Bielefeld Technische Fakultät

ARP, ICMP, ping. Jörn Stuphorn Bielefeld, den 4. Mai Mai Universität Bielefeld Technische Fakultät ARP, ICMP, ping Jörn Stuphorn stuphorn@rvs.uni-bielefeld.de Universität Bielefeld Technische Fakultät TCP/IP Data Link Layer Aufgabe: Zuverlässige Übertragung von Rahmen über Verbindung Funktionen: Synchronisation,

Mehr

Gefahren aus dem Internet 1 Grundwissen April 2010

Gefahren aus dem Internet 1 Grundwissen April 2010 1 Grundwissen Voraussetzungen Sie haben das Internet bereits zuhause oder an der Schule genutzt. Sie wissen, was ein Provider ist. Sie wissen, was eine URL ist. Lernziele Sie wissen, was es braucht, damit

Mehr

IP Adressen & Subnetzmasken

IP Adressen & Subnetzmasken IP Adressen & Subnetzmasken Jörn Stuphorn stuphorn@rvs.uni-bielefeld.de Universität Bielefeld Technische Fakultät Stand der Veranstaltung 13. April 2005 Unix-Umgebung 20. April 2005 Unix-Umgebung 27. April

Mehr

Übung c Funktionen für den Vielfachzugriff (Aufbauübung)

Übung c Funktionen für den Vielfachzugriff (Aufbauübung) Übung 11.2.3c Funktionen für den Vielfachzugriff (Aufbauübung) Router- Name Router- Typ FA0- Adresse FA1- Adresse S0- Adresse S1- Adresse Subne tzmas ke Routing Enable- Kennwort VTY- Kennwort 1-10 CCNA

Mehr

Schritt Stecken Sie das Modemkabel in den Modemanschluss des Routers. (Der Anschluss ist blau markiert.)

Schritt Stecken Sie das Modemkabel in den Modemanschluss des Routers. (Der Anschluss ist blau markiert.) Schritt 1 1. Stecken Sie das Modemkabel in den Modemanschluss des Routers. (Der Anschluss ist blau markiert.) 2. Verbinden Sie den Adapter mit dem Router, und stecken Sie den Netzstecker in die Steckdose.

Mehr

# Socketprogrammierung

# Socketprogrammierung # Socketprogrammierung Socketprogrammierung in C/C++ Christian Benjamin Ries 21.02.2008 Dipl.-Ing. (FH) Christian Benjamin Ries 1 # Agenda Ziel Einführung Netzwerkprotokolle Was sind Sockets? Funktionen

Mehr

6.1 Verbindungsorientiert, Verbindunslos

6.1 Verbindungsorientiert, Verbindunslos Kapitel 6 client server Bisher wurden Methoden besprochen, die auf einem Rechner funktionieren. Dabei wurde bei threads bereits wirklich parallel gerechnet, sofern mehrere Prozessoren vorhanden waren.

Mehr

Rechnern netze und Organisatio on

Rechnern netze und Organisatio on Rechnernetze und Organisation Assignment A3 Präsentation 1 Motivation Übersicht Netzwerke und Protokolle Rechnernetze und Organisatio on Aufgabenstellung: Netzwerk-Protokoll-Simulator 2 Motivation Protokoll-Simulator

Mehr

LAN & Internet. Grundlagen Netzwerke LAN-2. Saarpfalz-Gymnasium. Router. Router LAN-3. Router. Kommunikation in Rechnernetzen

LAN & Internet. Grundlagen Netzwerke LAN-2. Saarpfalz-Gymnasium. Router. Router LAN-3. Router. Kommunikation in Rechnernetzen Kommunikation in Rechnernetzen Grundlagen Netzwerke Als Folge des Sputnik-Schocks 1957 wurde Ende der 60er-Jahre von einer Projektgruppe des amerikanischen Verteidigungsministeriums (ARPA) ein Computer-Netz

Mehr

Attribute: Name (Zuweisung eines Namens durch Binding) Communication Domain Duplizieren von Filedeskriptoren. SoS I - Ü

Attribute: Name (Zuweisung eines Namens durch Binding) Communication Domain Duplizieren von Filedeskriptoren. SoS I - Ü U7 7. Übung U7 7. Übung U7-1 Überblick Endpunkte einer Kommunikationsverbindung Besprechung 4. Aufgabe (malloc) Arbeitsweise: FIFO, bidirektional Byteorder bei Netzwerkkommunikation Netzwerkprogrammierung

Mehr

Stefan Dahler. 1. Konfiguration von Extended Routing. 1.1 Einleitung

Stefan Dahler. 1. Konfiguration von Extended Routing. 1.1 Einleitung 1. Konfiguration von Extended Routing 1.1 Einleitung Im Folgenden wird die Konfiguration von Extended Routing beschrieben. Die Verbindungen ins Internet werden über 2 unterschiedliche Internet Strecken

Mehr

U7-2 Netzwerkkommunikation und Byteorder

U7-2 Netzwerkkommunikation und Byteorder U7 7. Übung U7 7. Übung U7-1 Überblick Besprechung 4. Aufgabe (malloc) Byteorder bei Netzwerkkommunikation Netzwerkprogrammierung - Sockets Duplizieren von Filedeskriptoren Netzwerkprogrammierung - Verschiedenes

Mehr

1 Communication Domain und Protokoll

1 Communication Domain und Protokoll U9 9. Übung U9 9. Übung U9-1 Netzwerkkommunikation und Byteorder U9-1 Netzwerkkommunikation und Byteorder Besprechung Aufgabe 7 (lash) Wiederholung: Byteorder Informationen zu Aufgabe 8 (simail) Byteorder

Mehr

Gruppen Di-T14 / Mi-T25

Gruppen Di-T14 / Mi-T25 Gruppen Di-T14 / Mi-T25 Tutorübung zu Grundlagen: echnernetze und Verteilte Systeme (SS 16) Michael Schwarz Institut für Informatik Technische Universität München 27.06 / 28.06.2016 1/1 In Kapitel 3 haben

Mehr

Modul N4 Adressierung und Protokolle

Modul N4 Adressierung und Protokolle N-Netze Modul Adressierung und Protokolle Zeitrahmen 30 Minuten Zielgruppe Sekundarstufe I Inhaltliche Voraussetzung keine Lehrziel Erkennen, dass in (Computer-)Netzwerken eine eindeutige Identifizierung

Mehr

Rechnernetzwerke. Rechnernetze sind Verbünde von einzelnen Computern, die Daten auf elektronischem Weg miteinander austauschen können.

Rechnernetzwerke. Rechnernetze sind Verbünde von einzelnen Computern, die Daten auf elektronischem Weg miteinander austauschen können. Rechnernetzwerke Rechnernetze sind Verbünde von einzelnen Computern, die Daten auf elektronischem Weg miteinander austauschen können. Im Gegensatz zu klassischen Methoden des Datenaustauschs (Diskette,

Mehr

U8-3 Netzwerkkommunikation und Byteorder. U8-2 Evaluation. U8-4 Sockets. U8-1 Überblick. Wiederholung: Byteorder. 0 1 2 3 14 a2 b5 c8 0x14a2b5c8

U8-3 Netzwerkkommunikation und Byteorder. U8-2 Evaluation. U8-4 Sockets. U8-1 Überblick. Wiederholung: Byteorder. 0 1 2 3 14 a2 b5 c8 0x14a2b5c8 U8 8. Übung U8 8. Übung U8-3 Netzwerkkommunikation und Byteorder U8-3 Netzwerkkommunikation und Byteorder U8-1 Überblick Wiederholung: Byteorder Besprechung der Miniklausur Online-Evaluation big endian

Mehr

Quick Reference Guide

Quick Reference Guide Bei technischen Fragen erreichen Sie uns unter: TEL: +49-(0) 5235-3-19890 FAX: +49-(0) 5235-3-19899 e-mail: interface-service@phoenixcontact.com PPP Applikationen PSI-MODEM-ETH PHOENIX CONTACT - 07/2010

Mehr

7 Transportprotokolle

7 Transportprotokolle 7 Transportprotokolle 7.1 Transmission Control Protocol (TCP) 7.2 User Datagram Protocol (UDP) 7.3 Ports 7.1 TCP (1) IP-Pakete (Datagramme) von A nach B transportieren reicht nicht interaktive Verbindungen

Mehr

Dienstspezifikation nach RFC 2396 193

Dienstspezifikation nach RFC 2396 193 Dienstspezifikation nach RFC 2396 193 Für die Kombination aus Rechnernamen (oder alternativ einer IP-Adresse) und einer Portnummer gibt es mit RFC 2396 einen Standard: hostport host [ : port ] host hostname

Mehr

Netzwerk Linux-Kurs der Unix-AG

Netzwerk Linux-Kurs der Unix-AG Netzwerk Linux-Kurs der Unix-AG Benjamin Eberle 5. Februar 2015 Netzwerke mehrere miteinander verbundene Geräte (z. B. Computer) bilden ein Netzwerk Verbindung üblicherweise über einen Switch (Ethernet)

Mehr

Client/Server-Systeme

Client/Server-Systeme Frühjahrsemester 2011 CS104 Programmieren II / CS108 Programmier-Projekt Java-Projekt Kapitel 3: /Server-Architekturen H. Schuldt /Server-Systeme Ein zweischichtiges /Server-System ist die einfachste Variante

Mehr

BEAMSCAN Messsystem. Installation der BEAMSCAN Hardware. Hinweise WARNUNG VORSICHT ACHTUNG

BEAMSCAN Messsystem. Installation der BEAMSCAN Hardware. Hinweise WARNUNG VORSICHT ACHTUNG VORSICHT Dieses Dokument stellt eine Ergänzung zu den Gebrauchsanweisungen BEAMSCAN Hardware und BEAMSCAN Software dar. Verwenden Sie es nur im Zusammenhang mit den Gebrauchsanweisungen. Folgen Sie den

Mehr

Einführung in die Netzwerktechnik

Einführung in die Netzwerktechnik eurogard Gesellschaft für industrielle Nachrichtentechnik und Datenbankentwicklung mbh Kaiserstraße 100 52134 Herzogenrath www.eurogard.de Ich Falk Schönfeld Seit 10 Jahren bei eurogard GmbH Entwickler

Mehr

Einführung in TCP/IP. das Internetprotokoll

Einführung in TCP/IP. das Internetprotokoll Schwarz Einführung in TCP/IP das Internetprotokoll Was ist ein Protokoll? Mensch A Mensch B Englisch Deutsch Spanisch Französisch Englisch Japanisch Was sind die Aufgaben eines Protokolls? Informationen

Mehr

01 Einführung in PHP. Einführung in PHP 1/13 PHP in Aktion

01 Einführung in PHP. Einführung in PHP 1/13 PHP in Aktion 01 Einführung in PHP Einführung in PHP 1/13 PHP in Aktion PHP ist eine Programmiersprache, die ganz verschiedene Dinge tun kann: von einem Browser gesendete Formularinhalte auswerten, angepasste Webinhalte

Mehr

7. TCP-IP Modell als Rollenspiel

7. TCP-IP Modell als Rollenspiel 7.1 Rollen Mit Hilfe eines Rollenspiels soll der gesamte Ablauf der Anfrage einer Webseite bei einem Web-Server dargestellt werden. An einer Web-Anfrage sind folgende Rollen beteiligt: 1. User 2. Browser

Mehr

Netzwerkinstallation unter Windows 9x

Netzwerkinstallation unter Windows 9x Netzwerkinstallation unter Windows 9x Allererste und recht goldene Regel: beim Installieren von Fenstersystemen wie Windows 95, Windows 98 sind vorher sämtliche Karten (wie Netzwerkkarten, Soundkarten

Mehr

A1 Modem Speed Touch 546 für Windows 7 (Routerzugang)

A1 Modem Speed Touch 546 für Windows 7 (Routerzugang) Installationsanleitung Einfach A1. A1 Modem Speed Touch 546 für Windows 7 (Routerzugang) Einfach schneller zum Ziel. Zu Ihrem A1 Modem haben Sie eine A1 Installations-CD erhalten, mit der Sie alle Einstellungen

Mehr

AV-VTA300W QUICKSTART - GUIDE

AV-VTA300W QUICKSTART - GUIDE AV-VTA300W QUICKSTART - GUIDE Version 06/2017 Seite 1 von 8 Einrichten der W-LAN Verbindung Für die Erstinstallation benötigen Sie die folgenden Dinge: 1. Stromversorgung für die Außenstation DC 12V 2.

Mehr

Kontrollfragen: Internet

Kontrollfragen: Internet Kontrollfragen: Internet 1. Zählen Sie mindestens 5 Internet-Dienste auf. 2. Was ist eine virtuelle Verbindung? Vergleichen Sie eine virtuelle TCP/IP-Verbindung mit der Leitungsvermittlung (analoge Telefonverbindung).

Mehr

Konfiguration des Servers

Konfiguration des Servers Um mehreren Rechnern den Zugang zum Internet zu ermöglichen gibt es sowohl verschiedene Software Lösungen (WinRoute, Jana, AVM Ken, ) als auch verschiedene Hardware Lösungen (Router ). Für ein kleines

Mehr

Referat: Netzwerkprogrammierung in Java

Referat: Netzwerkprogrammierung in Java 1.)ISO/OSI und Internet Referenzmodell Referat: Netzwerkprogrammierung in Java ISO/OSI 7 Schichtenmodell (1-Bitübertragung, 2-Sicherung, 3-Netzwerk, 4-Transport, 5-Sitzung, 6- Darstellung, 7-Anwendung)

Mehr

Netzwerkinstallation von Win-CASA 2009 für Kunden einer Einzelplatzversion

Netzwerkinstallation von Win-CASA 2009 für Kunden einer Einzelplatzversion Netzwerkinstallation von Win-CASA 2009 für Kunden einer Einzelplatzversion Die Netzwerkinstallation von Win-CASA (Server- und Arbeitsplatzinstallation) läuft weit gehendst automatisch ab. Ein Netzwerkadministrator

Mehr

Netzwerk Linux-Kurs der Unix-AG

Netzwerk Linux-Kurs der Unix-AG Netzwerk Linux-Kurs der Unix-AG Andreas Teuchert 16. Juli 2013 Netzwerk-Protokolle legen fest, wie Daten zur Übertragung verpackt werden unterteilt in verschiedene Schichten: Anwendungsschicht (z. B. HTTP,

Mehr

Nutzung der VDI Umgebung

Nutzung der VDI Umgebung Nutzung der VDI Umgebung Inhalt 1 Inhalt des Dokuments... 2 2 Verbinden mit der VDI Umgebung... 2 3 Windows 7... 2 3.1 Info für erfahrene Benutzer... 2 3.2 Erklärungen... 2 3.2.1 Browser... 2 3.2.2 Vertrauenswürdige

Mehr

Netzwerkgrundlagen. OSI-Modell. Layer 1 Physikal Layer. Layer 2 Data Link Layer. Layer 3 Network Layer

Netzwerkgrundlagen.  OSI-Modell. Layer 1 Physikal Layer. Layer 2 Data Link Layer. Layer 3 Network Layer Netzwerkgrundlagen http://de.wikipedia.org/wiki/ethernet OSI-Modell http://de.wikipedia.org/wiki/osi-modell Das OSI-Modell beschreibt modellhaft eine Art der Datenübertragung für die Kommunikation offener,

Mehr

Handbuch Alpha11 Pager-Software

Handbuch Alpha11 Pager-Software Handbuch Alpha11 Pager-Software Dieses Handbuch beschreibt die Installation, sowie die Funktionen der Pager-Software. Sollte die Pager-Software bereits installiert sein, können Sie gleich auf die Funktions-Beschreibung

Mehr

Übung Prüfen von Ethernet-Rahmen mit Wireshark

Übung Prüfen von Ethernet-Rahmen mit Wireshark Topologie Lernziele Teil 1: Prüfen der Header-Felder in einem Ethernet-II-Rahmen Teil 2: Analysieren und Erfassen von Ethernet-Rahmen mit Wireshark Hintergrund / Szenario Wenn höhere Schichtprotokolle

Mehr

Beispiel für einen IPC-Server, der seinen Dienst über den Global Name Service im Netzwerk bekannt gibt. Header-Dateien einbinden

Beispiel für einen IPC-Server, der seinen Dienst über den Global Name Service im Netzwerk bekannt gibt. Header-Dateien einbinden Dokument: gns_ipc_server.c, 1 - Seite 1 - - 1: 1 von 1 - Beispiel für einen IPC-Server, der seinen Dienst über den Global Name Service im Netzwerk bekannt gibt. Header-Dateien einbinden int main(int argc,

Mehr