Programmierung mit sockets

Ähnliche Dokumente
Python Programmierung. Dipl.-Ing.(FH) Volker Schepper

KAPITEL 7: ANWENDUNGSSYSTEME

Transmission Control Protocol (TCP)

Adressauflösung. IP Adresse Physikalische Adresse :FF:AA:36:AB: :48:A4:28:AA:18

Kommunikation im Netzwerk

Kapitel 4: Design von Client/Server-Software. Middleware in Java vieweg 2005 Steffen Heinzl, Markus Mathes

Rechnernetze. 6. Übung

Netzwerk Linux-Kurs der Unix-AG

Netzwerk Linux-Kurs der Unix-AG

Verteilte Systeme - 1. Übung

Networking. Motivation Grundlagen von Sockets Klasse Socket Klasse ServerSocket Exceptions Klasse URL

4. Thread- und Netzwerk- Programmierung

Alles Text Sockets à la Plan 9

Teil 1: Ein einfacher Chat

Techniken der Projektentwicklung

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

Netzwerke für den Einsatz mit dem BIM-Server

Tafelübung zu BS 4. Interprozesskommunikation

1.) Nennen Sie Aufgaben und mögliche Dienste der Transportschicht (Transport Layer) des ISO/OSI-Schichtenmodells.

Informatik B. Vorlesung 16 Netzwerkprogrammierung. Dr. Ralf Kunze

Client/Server-Systeme

Scaling IP Addresses. CCNA 4 version 3.0 Wolfgang Riggert,, FH Flensburg

Netzwerk. Um den Hostnamen angezeigt zu bekommen $ hostname $ hostname -f Um den Hostnamen zu ändern $ hostname <neuerhostname>

Konfiguration einer Firewall mit FireHOL

Android VPN. Am Beispiel eines Netzwerktunnels für das Domain Name System (DNS) 1 Andiodine - Android DNS-VPN

Domain Name Service (DNS)

Rechnernetze Übung 12

DynDNS für Strato Domains im Eigenbau

TCP-Sockets in Java und C. Verteilte Systeme Hochschule Regensburg Vorlesung 4, Universitätsstraße 31, Regensburg

Internet-Kommunikation in Python mit Sockets

Lösung Übungszettel 6

Netzwerkprogrammierung

IP Adressen & Subnetzmasken

1. Netzwerkprogrammierung für mobile Geräte

Logging, Threaded Server

IP-Adressen und Ports

Netzwerk Linux-Kurs der Unix-AG

7 TCP/IP-Dienste konfigurieren

15 Transportschicht (Schicht 4)

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

Gemeinsam statt einsam - ein Internet-Zugang für mehrere Rechner Wie geht das? - Tricks und Verfahren einer Technik, die wirklich Geld spart.

Scanner, Sniffer und Scanlogger

Beispiel Time Client/Server

Musterlösung für Schulen in Baden-Württemberg. Windows Netzwerkanalyse mit Wireshark. Stand: / 1. Fassung

The Cable Guy März 2004

So wird der administrative Aufwand bei der Konfiguration von Endgeräten erheblich reduziert.

FOPT 5: Eigenständige Client-Server-Anwendungen (Programmierung verteilter Anwendungen in Java 1)

Crystal Reports für SIAS- und SIERA- Berichte: ODBC-Verbindung zwischen Win-PC und Datenbankhost

Anleitung: Confixx auf virtuellem Server installieren

KN Das Internet

. Nachrichtenübertragung. Internetkommunikation Christof Fox. Wie werden Nachrichten Übertragen?

IPv6 in der Praxis. Felix von Leitner CCC Berlin Dezember IPv6 in der Praxis

Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition)

Dienstspezifikation nach RFC

TCP/UDP. Transport Layer

CAN-Bus mit Linux und Python

TIA Portal V13 Kommunikation mit S7-1500

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: - Ein Bootimage ab Version Optional einen DHCP Server.

Internetprotokoll TCP / IP

Remote Tools. SFTP Port X11. Proxy SSH SCP.

Internet und WWW Übungen

Netzwerklizenz erwerben und Lizenz Server installieren

Übertragungsprotokolle TCP/IP Ethernet-Frames / network layer


TCP/IP-Protokollfamilie

Router 1 Router 2 Router 3

Proseminar: Website-Management-Systeme

Networking - Überblick

Praxis Linux-Administration

Nutzung der Ethernet.lib für Client/Server Verbindungen Anwendungshinweis

Monitoring Wissen, was passiert. Wissen, was zu tun ist. Thorsten Kramm SLAC 2011

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

Perl-Praxis CGI-Skripte 0-0/22

Kommunikation und Synchronisation von Prozessen

Verteilte Systeme - 2. Übung

DNS Server einrichten unter Debian Linux. DHCP Server einrichten unter Debian Linux. Querschnittsaufgaben.

Benutzerhinweise IGW/920-SK/92: Einsatz als VPN-Client

Internet-Kommunikation in Python mit Sockets

Verteilte Systeme Kapitel 4: Realisierung von Netzwerkdiensten

7. TCP-IP Modell als Rollenspiel

IT- und Medientechnik

Anmeldung über Netz Secure Socket Layer Secure Shell SSH 1 SSH 2. Systemverwaltung. Tatjana Heuser. Sep Tatjana Heuser: Systemverwaltung

Programmiermethodik. Übung 13

Aufgaben einer Firewall. Firewalls. Firewall-Arten. Hardwarebasierte Firewalls. Eine Firewall überwacht den sie durchquerenden Datenverkehr.

Übersicht. Was ist FTP? Übertragungsmodi. Sicherheit. Öffentliche FTP-Server. FTP-Software

protokolliert alle Anmeldungen am Server direkt

Dynamic DNS AK-NORD AK-ComPoint-LAN-AS Router2 Registration Router2 Freischaltung AK ComPoint LAN-AS mydev.dyndns.org

Delphi Web Start. Ein Application Loader ohne Browser Technologie als mobilen Thin Client implementieren...

3 Netzdienste im Internet. vs3 1

Netzwerkprogrammierung & Threads

Transkript:

Netzwerk-Programmierung Programmierung mit sockets Jan Krueger jkrueger@cebitec.uni-bielefeld.de Alexander Sczyrba asczyrba@cebitec.uni-bielefeld.de

Übersicht Datentypen und Konvertierung Minimaler Client Minimaler Server

Berkeley sockets sockets API, erstmals in 4.2BSD (1983) Einfache Implementierung: TCP/IP named pipes OSI protocols... C Funktionen Information über Adressen und Ports in structs Datentypenkonversion mit speziellen Funktionen

Namen und Adressen Netzwerkinterface durch IP-Adresse eindeutig identifiziert dotted quad-notation: 129.70.132.229 lesbare Namen ermittelt durch Domain Name System (DNS) www.uni-bielefeld.de 129.70.240.4 Keine Bijektion! 173.194.69.147 bk-in-f147.1e100.net Keine mathematische Funktion! www.google.com (173.194.69.106, 173.194.69.147... )

Adresskonvertierung import socket Binär-Representation für socket-funktionen: iaddr = socket.inet_aton( 129.70.240.4 ); Vice versa: dotquad = socket.inet_ntoa(iaddr); Alternative: dotquad = socket.gethostbyname( www.unibielefeld.de ); Hostname and Aliase ermitteln: (name, aliaslist, addresslist) = socket.gethostbyaddr(iaddr HOSTNAME, AF_INET);

Aufgaben Transformiert die folgenden Namen in Binär-Repräsentation und wieder zurück in dotted quad-notation. Löst den Namen und die Aliase ausgehend von der dotted quad-notation auf. Führt das Skript mehrere Male aus. Was sind die Unterschiede? hosts = ['goldfinger', 'goldfinger.techfak.uni bielefeld.de', 'www.ebay.com', 'www.uni paderborn.de', 'www.cnn.com', 'www.bielefeld.de'] Vergleicht eure Ergebnisse mit denen vom Programm dig: > dig www.ebay.com

Weitere Funktionen Protokolle (vgl. /etc/protocols) proto = socket.getprotobyname('tcp'); Services (vgl. /etc/services) service = socket.getservbyname('daytime'[, 'tcp']); daytime = socket.getservbyport(13[, 'tcp']);

Arbeitsweise Client socket() connect() I/O close() Server

Client-Code Erzeugen eines sockets: s = socket.socket(socket.af_inet, socket.sock_stream, socket.ipproto_tcp) socket-adresse: Kombination aus Adresse und Port als 2-Tupel sockaddr = (dottquad hostname, port); Verbindung herstellen: s.connect((<host>,<port>)) Socket schließen: s.close()

Daten senden und lesen (Python3) Daten lesen: bytes = s.recv(<buffersize>) Daten senden: sentbytes = s.send(bytes) Keine Gewährleistung, dass alles gesendet/gelesen wurde! bytes() b texttexttext bytes str: bytes.decode(<encoding>) bytes.decode('utf 8') str bytes: bytes(<str>,<encoding>)

Aufgaben Mach Dich mit dem ServiceServer (Material zu dieser Übung) vertraut und teste beide Services mit telnet Welche Services bietet der Server? Schreibe ein Client-Programm, das eine Verbindung aufbaut, ein Kommando absetzt (optional), alle Daten liest und die Verbindung wieder beendet. Der Zielrechner, der Zielport und das abzusetzende Kommando sollen als Argumente übergeben werden können. Probiere den Client mit dem ServiceServer aus. Teste den Client auch mit dem WebServer der Technischen Fakultät. Welcher Port, welches Protokoll und was für ein Kommando muss benutzt werden, um sich die Einstiegsseite anzeigen zu lassen?

Socket- Informationen Port wird dynamisch zugewiesen (ephemeral port) Beliebiges Interface bei multihomed host Informationen über sockets ermitteln: mysockinfo = s.getsockname() hissockinfo = s.getpeername() Rückgarewert bei IP-Sockets: 2-Tupel (hostaddr, port)

Aufgaben Erweitere das Programm aus der letzten Aufgabe so, daß alle Daten zur Verbindung angezeigt werden. Zur Erinnerung: socket pair: (IP-AdresseL, PortL, IP-AdresseR, PortR) Rufe das Programm mehrfach auf. Was ist zu beobachten?

Arbeitsweise Server socket() conect() IO close() IO close() socket() bind() listen() accept() close()

Server-Code, Teil 1 s = socket.socket(...) wie im Client Socket an Port/Adresse binden: socket.bind((<host>, <port>)) Passive open und backlog: socket.listen(socket.somaxconn) Tatsächliche Größe des backlogs abhängig vom Betriebssystem

Server-Code, Teil 2 Verbindungen entgegennehmen: (insocket, coninfo) = s.accept() accept() blockiert, bis Verbindung hergestellt coninfo enthält Informationen über peer Typischerweise in try finally-block mit Schleife insocket zum lesen/schreiben verwenden Am Ende Verbindungs-Socket schließen: insocket.close()

Server-Code, cont. typischer Server-Code: s = socket.socket( ) s.bind( ) s.listen( ) try: while 1: insocket, addr = s.accept() #CODEcodeCODEcodeCODE finally: insocket.close()

Aufgaben Schreibe einen Server, der auf Verbindungen wartet, zwei Zeilen Text sendet und dann die Verbindung schließt. Die erste Zeile soll den Client begrüßen, die zweite soll die aktuelle Uhrzeit ausgeben: hello goldfinger.techfak.uni Bielefeld.DE, nice to meet you it s Mon Jun 2 15:14:17 2003 Du kannst den Server entweder mit dem Client aus der letzten Aufgabe oder mit dem Programm telnet testen.