Netzwerkprogrammierung mit C++
|
|
|
- Marielies Messner
- vor 8 Jahren
- Abrufe
Transkript
1 Netzwerkprogrammierung mit C++ Bernhard Trummer Linux User Group Graz für die Linuxtage April 2003 Typeset by FoilTEX
2 Übersicht System Calls: Wie erzeugt man Sockets? Wie arbeitet man mit Sockets? Socket Multiplexing: Wie arbeitet man mit mehreren Sockets gleichzeitig? Blocking vs. Non-blocking I/O: Unterschiede, Vorteile, Nachteile. Datenübertragung: Wie kann man Daten über Sockets übertragen? Design von Servern: Was ist alles zu berücksichtigen, wenn man einen Server schreiben will? Typeset by FoilTEX 1
3 System Calls Jeder Socket ist in Wirklichkeit ein Filedeskriptor 1. Dieser muß bei den System Calls als Parameter übergeben werden. Jeder System Call liefert im Fehlerfall den Returnwert -1 zurück. Über die Variable errno kann die genaue Fehlerursache abgefragt werden. Jeder System Call sollte auf Fehler überprüft werden! 1 Dies entspricht der Unix-Philosophie: Alles ist ein File. Typeset by FoilTEX 2
4 socket() int socket(int domain, int type, int protocol); domain: Die Protokollfamilie des Sockets (z.b. PF INET oder PF UNIX). type: Der Socket-Typ (z.b. SOCK DGRAM, SOCK STREAM oder SOCK RAW). protocol: Zu verwendende Protokoll (meistens 0, da dieser Parameter nur selten gebraucht wird). Returnwert: Der erzeugte Filedescriptor. Typeset by FoilTEX 3
5 close() int close(int fd); fd: Der zu schließende Filedescriptor (bzw. Socket). Typeset by FoilTEX 4
6 bind() int bind(int sockfd, struct sockaddr *my addr, socklen t addrlen); sockfd: Der zu bindende Socket. my addr: Pointer zu einer lokalen Adresse, die der Socket bekommen soll. addrlen: Länge der angegebenen Adresse. Ein IP-Socket kann an eine IP-Adresse, an einen Port oder an beides gebunden werden. Typeset by FoilTEX 5
7 connect() int connect(int sockfd, struct sockaddr *serv addr, socklen t addrlen); sockfd: Socket, der zu einem anderen Socket verbunden werden soll. serv addr: Pointer zur Adresse des Peers. addrlen: Länge der angegebenen Adresse. Im Falle SOCK STREAM blockiert dieser System Call, bis der TCP- Handshake (SYN, SYN/ACK, ACK) abgeschlossen ist. Typeset by FoilTEX 6
8 listen() int listen(int s, int backlog); s: Socket, der in den Listening-State versetzt werden soll. backlog: Angabe, wie viele Verbindungen das Betriebssystem puffern soll. Erst durch connect() oder listen() wird festgelegt, ob ein Socket einer Connection oder einem Listener entspricht. Typeset by FoilTEX 7
9 accept() int accept(int s, struct sockaddr *addr, socklen t *addrlen); s: Listener-Socket, von dem eine Verbindung akzeptiert werden soll. addr: Optionaler Pointer zu einer Adress-Struktur, in der die Adresse vom Client gespeichert werden soll. addrlen: Optionale Länge der gegebenen Client-Adresse. Diese Länge muß mit der Länge der Client Adress-Struktur initialisiert werden! Returnwert: Der Filedeskriptor des aktzeptierten Sockets. Typeset by FoilTEX 8
10 send(), sendto() und sendmsg() int send(int s, const void *msg, size t len, int flags); int sendto(int s, const void *msg, size t len, int flags, const struct sockaddr *to, socklen t tolen); int sendmsg(int s, const struct msghdr *msg, int flags); Typeset by FoilTEX 9
11 recv(), recvfrom() und recvmsg() int recv(int s, void *buf, size t len, int flags); int recvfrom(int s, void *buf, size t len, int flags, struct sockaddr *from, socklen t *fromlen); int recvmsg(int s, struct msghdr *msg, int flags); Typeset by FoilTEX 10
12 Erzeugen eines TCP Server Sockets socket(): Erzeuge den Socket. bind(): Binde den Socket an eine Adresse bzw. Port. listen(): Setze den Socket in den LISTEN State. accept(): Warte auf eingehende Verbindungen. Typeset by FoilTEX 11
13 Erzeugen eines TCP-Sockets socket(): Erzeuge den Socket. bind(): Optional kann der Socket an eine Adresse gebunden werden, um so z.b. das Netzwerkinterface festzulegen. connect(): Verbinde den Socket zu einem Server. Typeset by FoilTEX 12
14 Erzeugen eines UDP-Sockets socket(): Erzeuge den Socket. bind(): Falls ein Listener erzeugt werden soll, muß er an eine Adresse gebunden werden. connect(): Verbinde den Socket zu einem Server. Wird ein UDP-Socket zu einem Server verbunden, können statt den System Calls recvfrom() und sendto() die System Calls recv() und send() verwendet werden. Typeset by FoilTEX 13
15 Socket Optionen Jeder Socket besitzt verschiednene Parameter, die zur Laufzeit abgefragt und verändet werden können. Siehe man 7 socket, man 7 ip und man 7 tcp für eine Liste aller Socket Optionen inkl. Dokumentation. Zu beachten ist, daß manche Socketoptionen betriebssystemspezifisch sind und daher nicht auf allen Plattformen verfügbar sind. Typeset by FoilTEX 14
16 getsockopt() / setsockopt() int getsockopt(int s, int level, int optname, void *optval, socklen t *optlen); int setsockopt(int s, int level, int optname, const void *optval, socklen t optlen); s: Socket bei dem eine Socketoption ausgelesen bzw. gesetzt werden soll. level: SOL IP (Option auf IP-Ebene), SOL SOCKET (Option auf TCP- Ebene) optname: Name der Option (z.b. SO REUSEADDR oder SO RCVBUF) Typeset by FoilTEX 15
17 optval: Pointer auf den Wert für die Socket Option. optlen: Die Länge des optval Puffers. Typeset by FoilTEX 16
18 Adress-Strukturen 1 struct sockaddr 2 { 3 sa_family_t sa_family; 4 char sa_data[14]; 5 }; 1 struct sockaddr_in 2 { 3 sa_family_t sin_family; 4 in_port_t sin_port; 5 struct in_addr sin_addr; 6 unsigned char sin_zero[8]; 7 }; Typeset by FoilTEX 17
19 Socket Multiplexing Ohne weitere Hilfsmittel ist es nicht möglich, mehrere Sockets gleichzeitig zu behandeln. Mit Hilfe der System Calls select() bzw. poll() können (theoretisch) beliebig viele Sockets überwacht werden. Typeset by FoilTEX 18
20 select() int select(int n, fd set *readfds, fd set *writefds, fd set *exceptfds, struct timeval *timeout); n: Der größte zu überwachende Filedeskriptor plus 1. readfds, writefds, exceptfds: Sets von Sockets (Filedeskriptoren) die auf Lese-, Schreib- und Exception-Events überwacht werden sollen. timeout: Ein optionales Timeout für den select() call. Die drei Filedeskriptor-Sets sind üblicherweise als Bitfelder implementiert, bei denen ein gesetztes Bit an der i-ten Stelle dem Filedeskriptor i entspricht. Typeset by FoilTEX 19
21 Beispiel für select() 1 fd_set readset; 2 struct timeval tv; 3 int rc; 4 5 FD_ZERO(&readSet); 6 FD_SET(s, &readset); 7 8 tv.tv_sec = 5; 9 tv.tv_usec = 0; rc = select(s+1, &readset, NULL, NULL, &tv); Typeset by FoilTEX 20
22 Was ist bei select() zu beachten? Vor jedem Aufruf von select() müssen mit FD SET() alle zu überwachenden Sockets (neu) gesetzt werden. select() überschreibt nämlich den Inhalt dieser Bitfelder. Auch das Timeout sollte immer neu initialisiert werden, da es je nach Plattform von select() überschrieben wird. Der erste Parameter von select() gibt an, wie viele Filedeskriptoren aus den drei Sets in den Kernel kopiert werden. Er muß daher mindestens auf den Wert des größten Filedeskriptors plus 1 gesetzt werden. Typeset by FoilTEX 21
23 poll() int poll(struct pollfd *ufds, unsigned int nfds, int timeout); ufds: Pointer auf ein Array von pollfd Strukturen. nfds: Die Anzahl der pollfd Strukturen im Array. timeout: Ein Timeout in Millisekunden. 1 struct pollfd { 2 int fd; /* file descriptor */ 3 short events; /* requested events */ 4 short revents; /* returned events */ 5 }; Typeset by FoilTEX 22
24 Beispiel für poll() 1 struct pollfd fds[2]; 2 int rc; 3 int timeout; 4 5 fds[0].fd = s1; 6 fds[0].events = POLLIN 7 fds[1].fd = s2; 8 fds[1].events = POLLOUT; 9 10 int timeout = 5000; rc = poll(fds, 2, timeout); Typeset by FoilTEX 23
25 Was ist bei poll() zu beachten? Der Parameter nfds entspricht der Anzahl der pollfd Strukturen, die übergeben werden sollen, nicht der sizeof()! Jeder Aufruf von poll() verändert nur die revents der pollfd Strukturen. Die events müssen daher nicht immer neu initialisiert werden. Soll ein Socket vorrübergehend nicht überwacht werden, müssen die events auf 0 gesetzt werden. Wird ein Socket geschlossen, so muß der entsprechende pollfd Eintrag entfernt werden. Wird darauf vergessen, selektiert poll() das POLLNVAL event und kehrt immer sofort zurück. Typeset by FoilTEX 24
26 Non-blocking I/O Die System Calls recv() und recvfrom() können blockieren, wenn keine Daten im Empfangspuffer vorhanden sind. Der System Call send() blockiert so lange, bis der gesamte angegebene Puffer in den Sendepuffer übernommen worden ist. Weiters blockiert der System Call connect(), bis feststeht, ob der Verbindungsaufbau erfolgreich war oder fehlgeschlagen ist. Und accept() blockiert, bis ein Client eine Verbindung zum Listener aufgebaut hat. Manchmal ist es wünschenswert, daß keiner dieser System Calls blockiert. Dadurch ist es im Programmablauf möglich, anstatt zu blockieren etwas sinnvolles zu tun. Typeset by FoilTEX 25
27 Kombination mit poll() bzw. select() Wenn man mit poll() (bzw. select()) arbeitet, sollte zusätzlich immer non-blocking I/O verwendet werden. Über poll() kann nämlich nur festgestellt werden, ob z.b. Daten empfangen werden können, jedoch nicht, wie viel empfangen werden kann. Typeset by FoilTEX 26
28 Permanentes Umstellen 1 fcntl(f_getfl) 2 flags = O_NONBLOCK 3 fcntl(f_setfl) 4 5 fcntl(f_getfl) 6 flags &= ~O_NONBLOCK 7 fcntl(f_setfl) Typeset by FoilTEX 27
29 recv() und send() Die Calls recv() und recvfrom() geben den Returnwert -1 zurück und setzen errno auf EAGAIN. Bei send() unterscheidet man zwei Fälle. Wenn ein Teil des Puffers übernommen werden kann, entspricht der Returnwert der Anzahl an übernommenen Bytes. Ist der Sendepuffer voll, gibt send() ebenfalls -1 zurück und setzt errno auf EAGAIN. Typeset by FoilTEX 28
30 Non-blocking Connect 1/2 Der System Call connect() blockiert so lange, bis der Verbindungsaufbau geklappt hat oder gescheitert ist. Ein non-blocking connect erfolgt nach dem Setzen des O NONBLOCK Flags in folgenden Schritten 2 : Aufruf von connect() Ein Returnwert von 0 entspricht einem erfolgreichen Aufbau. Ein Returnwert von -1 und errno == EINPROGRESS 2 Siehe man 2 connect Typeset by FoilTEX 29
31 Non-blocking Connect 2/2 Mit select() bzw. poll() kann gewartet werden, bis die Verbindung aufgebaut ist. Dabei muß der Socket im Write-Set bzw. POLLOUT selektiert werden. Auslesen der Socketoption SOL SOCKET/SO ERROR, um festzustellen, ob der Verbindungsaufbau erfolgreich war. Typeset by FoilTEX 30
32 Datenübertragung Typeset by FoilTEX 31
33 Direkte Übertragung 1 struct Message 2 { 3 int i1; 4 char c; 5 /* etc. */ 6 }; Message m; 11 /* Initialize m */ 12 socket.send(&m, sizeof(m)); Typeset by FoilTEX 32
34 Nachteile einer direkten Übertragung Bei dieser direkten Übertragung ergeben sich jedoch folgende Probleme, sobald zwischen zwei verschiedenen Plattformen Daten ausgetauscht werden sollen: Ein int muß nicht überall gleich groß sein (32bit vs. 64bit). Die Byte-Order kann unterschiedlich sein (Little bzw. Big Endian). Das Byte Alignment kann je nach Plattform bzw. Compiler unterschiedlich sein, wodurch die Structs verschieden groß sind. Wird über die Struct ein Pointer auf eine andere Struct übertragen, kann der Peer mit diesem Pointer nichts anfangen. Typeset by FoilTEX 33
35 Einsatz einer direkten Übertragung Die einzig sinnvolle Einsatzmöglichkeit der direkten Übertragung besteht in der lokalen Kommunikation zwischen zwei Threads bzw. Prozessen einer Applikation. Hier kann auf eine Serialisierung der zu übertragenden Daten verzichtet werden, da der Sender und Empfänger auf der gleichen Maschine laufen und mit dem gleichen Compiler übersetzt worden sind. Typeset by FoilTEX 34
36 Serialisierung von Daten Bei einer Datenübertragung ist eine Serialisierung der lokalen Daten in eine plattformunabhängige Repräsentation (Data Description Language) und umgekehrt notwendig. Dies kann sowohl ASCII-basierend (z.b. XML) als auch in binärer Form (z.b. XDR 3 oder ASN.1/BER) erfolgen. Was für eine DDL verwendet wird, hängt letztendlich vom Einsatzzweck des Servers ab (z.b. ob ein Protokoll implementiert werden soll, daß per Definition eine bestimmte DDL verwendet). Siehe 06-codec.cpp für ein Binär- und ASCII-Beispiel einer DDL. 3 Wird u.a. für RPC verwendet. Siehe RFC1014 Typeset by FoilTEX 35
37 Designs für Server Typeset by FoilTEX 36
38 Allgemeine Richtlinien Bullet-Proofness: Egal was passiert, der Server muß immer einen definierten Zustand haben. Blockieren: Egal was passiert, der Server darf nie in einem System Call blockieren. Ausnahmen sind natürlich poll() und select(). :-) Prüfung empfangener Daten: Empfangenen Daten darf nie vertraut werden. Es ist immer eine Plausibilitätsprüfung notwendig. Typeset by FoilTEX 37
39 Bearbeiten von Requests Bearbeiten im Hauptprozeß Erzeugen eines Child-Prozesses pro Request. Erzeugen eines Threads pro Request. Typeset by FoilTEX 38
40 Direkte Bearbeitung im Hauptprozeß Leicht zu debuggen. Für kleinere Server durchaus ausreichend. Skaliert u.u. schlecht. Wenn der Prozeß abstürzt, ist der ganze Server weg. Typeset by FoilTEX 39
41 Child-Prozesse Günstig, wenn alle Requests voneinander unabhängig behandelt werden können (d.h. wenn kein Zugriff auf gemeinsame Datenstrukturen notwendig ist). Wenn ein Child abstürzt, laufen alle anderen Childs und der Parent (der eigentliche Server) ganz normal weiter. Das Erzeugen der Child-Prozesse kostet etwas Zeit, was sich auf die Latenz des Servers auswirkt. Auf Multiprozessormaschinen können die Child-Prozesse parallel ausgeführt werden. Typeset by FoilTEX 40
42 Threads 1/2 Günstig, wenn mehrere Requests voneinander abhängig sind, da alle Threads z.b. Zugriff auf globale Datenstrukturen im Heap haben. Threads können i.a. schneller erzeugt werden, als Child Prozesse. Auch Threadwechsel sind i.a. schneller, als Prozeßwechsel. Wenn ein Thread abstürzt, kann der ganze Server als abgestürzt betrachtet werden. Fehler im Design (z.b. Synchronisation) sind schwer zu finden und machen sich laut Murphy erst im Live-System bemerkbar. Typeset by FoilTEX 41
43 Threads 2/2 Threadwechsel können jederzeit (und unreproduzierbar) stattfinden, was die Fehlersuche und das Debugging sehr schwierig gestaltet. Ruft ein Thread close() auf einen Socket auf, der in einem anderen Thread per select() überwacht wird, blockiert close(), bis der andere Thread von select() zurückkehrt. Auf Multiprozessormaschinen können Threads zwar auch aufgeteilt werden. Allerdings kann durch die notwendige Synchronisation der Threads die Performance schlechter sein, als bei einer Einprozessormaschine. Typeset by FoilTEX 42
44 Design-Variationen Pool-Modelle: Beim Hochfahren des Servers kann ein Pool von Childs/Threads im Voraus angelegt werden. Dadurch entfällt beim Bearbeiten der Requests die Zeit für das Anlegen. Mehrfachbenutzung: Jeder Child/Thread kann auch mehrere Requests gleichzeitig behandeln. Somit sind weniger Childs/Threads notwendig. Aufgabentrennung: Meistens kann die Bearbeitung von Requests in mehrere Schritte aufgetrennt werden. Werden diese Schritte von separaten Childs/Threads behandelt, kann sich dadurch die Synchronisation und das Testen vereinfachen. Typeset by FoilTEX 43
45 Dokumentation Die man-pages der jeweiligen System Calls. :-) W. Richard Stevens Unix Network Programming Unix Socket FAQ: Usenet: de.comp.os.unix.programming Fefe Skalierbare Netzwerkprogrammierung (Folien zum 19C3 Vortrag) Typeset by FoilTEX 44
Rechnernetze II SS 2015. Betriebssysteme / verteilte Systeme [email protected] Tel.: 0271/740-4050, Büro: H-B 8404
Rechnernetze II SS 2015 Betriebssysteme / verteilte Systeme [email protected] Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 14. Juli 2015 Betriebssysteme / verteilte Systeme Rechnernetze
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
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
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
Tafelübung zu BS 4. Interprozesskommunikation
Tafelübung zu BS 4. Interprozesskommunikation Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund [email protected] http://ess.cs.uni-dortmund.de/~os/
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.
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.
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
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
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
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
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
CAN-Bus mit Linux und Python
CAN-Bus mit Linux und Python Grazer Linuxtage 2014 Jörg Faschingbauer 1 / 31 Inhaltsverzeichnis 1 Basics 2 CAN Interfaces 3 Programmierung 4 Hardware, Kernel 5 Schluss 2 / 31 Basics Übersicht 1 Basics
Übung zur Vorlesung Echtzeitsysteme
Technische Universität München Fakultät für Informatik Forschungs- und Lehreinheit Informatik VI Übung zur Vorlesung Echtzeitsysteme Aufgabe 3 Nadine Keddis [email protected] Stephan Sommer [email protected]
U7-1 Hinweise zur Evaluation. U7-2 Netzwerkkommunikation und Byteorder. U7-3 Sockets. Evaluation. Frage "eigener Aufwand zur Vor- und Nachbereitung"
U7 Interprozesskommunikation mit Sockets U7 Interprozesskommunikation mit Sockets U7-1 Hinweise zur Evaluation U7-1 Hinweise zur Evaluation Evaluation Frage "eigener Aufwand zur Vor- und Nachbereitung"
Schichtenmodelle Netzkommunikation - Sockets -RPCs - Server-Modelle
Folie 1 5. Netzwerkprogrammierung Schichtenmodelle Netzkommunikation - Sockets -RPCs - Server-Modelle Folie 2 5.1 Schichtenmodelle - Definitionen Schichtenmodelle zerlegen Aufgaben in verschiedene Abstraktionsebenen
Kommunikationsnetze. 2. Direkte TCP/IP-Verbindungen 2.1 Höhere Programmiersprachen
Kommunikationsnetze Gliederung 1. Socket-Programmierung unter C 2. Socket-Programmierung unter Java Gliederung Berkeley Sockets (Erste freie TCP/IP-Implementierung in Berkeley UNIX): SOCKET: Erzeugen eines
Sequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden )
Threads Sequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden ) Ein thread bearbeitet eine sequentielle Teilaufgabe innerhalb eines Prozesses Mehrere nebenläufige
1.) Nennen Sie Aufgaben und mögliche Dienste der Transportschicht (Transport Layer) des ISO/OSI-Schichtenmodells.
Übung 7 1.) Nennen Sie Aufgaben und mögliche Dienste der Transportschicht (Transport Layer) des ISO/OSI-Schichtenmodells. 2.) Charakterisieren Sie kurz das User Datagram Protokoll (UDP) aus der Internetprotokollfamilie
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.
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
Client/Server-Systeme
Client/Server-Systeme Prof. Dr.-Ing. Wilhelm G. Spruth WS 2003/2004 Teil 2 Sockets cs 0200 ww6 wgs 09-96 Literatur Socket-Schnittstelle J. Martin, J. Leben: TCP/IP Netzwerke. Prentice Hall, 1994, Kapitel
Sockets - Eine Programmierschnittstelle für Kommunikation im Netz
Sockets - Eine Programmierschnittstelle für Kommunikation im Netz M. Jäger - FB MNI - FH Gießen-Friedberg 24. November 2002 Inhaltsverzeichnis 1 Socket-Konzept 2 2 Internet-Sockets 2 2.1 Socket-Aufruf...................................
10. Vorlesung Betriebssysteme
Dr. Christian Baun 10. Vorlesung Betriebssysteme Hochschule Mannheim WS1213 1/63 10. Vorlesung Betriebssysteme Dr. Christian Baun Hochschule Mannheim Fakultät für Informatik [email protected] Dr.
Themen. Dienste der Transportschicht. 3-Wege-Handshake. TCP-Protokoll-Header. Real-Time-Protocol
Themen Dienste der 3-Wege-Handshake TCP-Protokoll-Header Real-Time-Protocol Dienste der Fehlerüberwachung Steuerung der Reihenfolge Wie kann eine korrekte Paket-Übertragung garantiert werden? Wie kann
Alles Text Sockets à la Plan 9
Alles Text Sockets à la Plan 9 Petra Gremeyer, Axel-Tobias Schreiner, Fachbereich Mathematik/Informatik, Universität Osnabrück Plan 9, das neue verteilte Betriebssystem der UNIX-Schöpfer, hat bekanntlich
Netzwerke. Netzwerk-Programmierung. Sven Hartmeier.
Netzwerk-Programmierung Netzwerke Sven Hartmeier [email protected] Übersicht Netzwerk-Protokolle Protokollfamilie TCP/IP Transmission Control Protocol (TCP) erste Schritte mit sockets Netzwerk-Programmierung
Zugriff auf die Modul-EEPROMs
MAX-P- und P-Bibliotheken EEPROM-Zugriff 1 Zugriff auf die Modul-EEPROMs Jedes X-Bus-Modul verfügt über ein EEPROM, in dem modulspezifische Daten gespeichert werden. Neben einigen Bereichen, die vom Betriebssystem
4.1 Sockets in der Programmiersprache C
Parallelverarbeitung Folie 4-1 4 Die Socket-Schnittstelle 4.1 Sockets in der Programmiersprache C Sockets wurden zum ersten Mal im Jahr 1982 mit BSD-UNIX 4.1c für VAX-Rechner der ehemaligen Firma Digital
TCP/UDP. Transport Layer
TCP/UDP Transport Layer Lernziele 1. Wozu dient die Transportschicht? 2. Was passiert in der Transportschicht? 3. Was sind die wichtigsten Protkolle der Transportschicht? 4. Wofür wird TCP eingesetzt?
1. Netzwerkprogrammierung für mobile Geräte
1. Netzwerkprogrammierung für mobile Geräte Lernziele 1. Netzwerkprogrammierung für mobile Geräte Themen/Lernziele: Konzepte der verbindungslosen Kommunikation beherrschen Client/Server-Anwendungen auf
Multiuser Client/Server Systeme
Multiuser /Server Systeme Christoph Nießner Seminar: 3D im Web Universität Paderborn Wintersemester 02/03 Übersicht Was sind /Server Systeme Wie sehen Architekturen aus Verteilung der Anwendung Protokolle
Grundlagen TCP/IP. C3D2 Chaostreff Dresden. Sven Klemm [email protected]
Grundlagen TCP/IP C3D2 Chaostreff Dresden Sven Klemm [email protected] Gliederung TCP/IP Schichtenmodell / Kapselung ARP Spoofing Relaying IP ICMP Redirection UDP TCP Schichtenmodell Protokolle der
Verteilte Systeme - 1. Übung
Verteilte Systeme - 1. Übung Dr. Jens Brandt Sommersemester 2011 1. Rechnerverbünde Kommunikationsverbund: Beispiele: E-Mail (SMTP, POP/IMAP), Instant Messaging (XMPP, IRC, ICQ,...), Newsgroups (NNTP)
TCP-Sockets in Java und C. Verteilte Systeme Hochschule Regensburg Vorlesung 4, 25.04.2012 Universitätsstraße 31, 93053 Regensburg
TCP-Sockets in Java und C Hochschule Regensburg Vorlesung 4, 25.04.2012 Universitätsstraße 31, 93053 Regensburg Prof. Dr. Jan Dünnweber Ziel: Threads sollen unabhängig von ihrer Position kommunizieren
shri Raw Sockets Prof. Dr. Ch. Reich
shri Raw Sockets Prof. Dr. Ch. Reich Szenario: Verschicken einer gespooften Ping-Message IP-Source-Adresse ist Adresse des Opfers Nachrichtenformat: IP-Header (normal, außer IP-Source-Address ist einstellbar)
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
Kapitel 4: Design von Client/Server-Software. Middleware in Java vieweg 2005 Steffen Heinzl, Markus Mathes
Kapitel 4: Design von Client/Server-Software Definition: Client und Server Client Ein Client ist ein Dienstnutzer, der von einem Server aktiv einen Dienst anfordert und anschließend darauf wartet, dass
Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein:
7. Intrusion Prevention System 7.1 Einleitung Sie konfigurieren das Intrusion Prevention System um das Netzwerk vor Angriffen zu schützen. Grundsätzlich soll nicht jeder TFTP Datenverkehr blockiert werden,
Programmieren mit sockets
Netzwerk-Programmierung Programmieren mit sockets Sven Hartmeier [email protected] Übersicht Datentypen und Konversionsfunktionen minimaler Client minimaler Server Netzwerk-Programmierung
TCP SYN Flood - Attack. Beschreibung Auswirkungen Zuordnung zu Gefährdungskategorie und Attacken-Art Gegenmaßnahmen Quellen
TCP SYN Flood - Attack Beschreibung Auswirkungen Zuordnung zu Gefährdungskategorie und Attacken-Art Gegenmaßnahmen Quellen TCP SYN Flood - Beschreibung TCP SYN Flood Denial of Service Attacke Attacke nutzt
Informatik B. Vorlesung 17 Netzwerkprogrammierung. Dr. Ralf Kunze
Vorlesung 17 Netzwerkprogrammierung 1 Rückblick URL-Objekt Socket Verbindung zu einem Server aufbauen Webserver aus Clientsicht 2 Serverimplementation Server bauen keine eigene Verbindung auf, sondern
OpenSSL Programmierung
OpenSSL Programmierung Florian Westphal 23. Juni 2005 1024D/1551F8FF 5E15 6DC2 67E2 FAC7 BBF3 56B0 1003 1058 1551 F8FF - OpenSSL Programmierung - Kurzvorstellung SSL Themenübersicht
Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free()
Übungspaket 29 Dynamische Speicherverwaltung malloc() und free() Übungsziele Skript In diesem Übungspaket üben wir das dynamische Alloziieren 1. und Freigeben von Speicherbereichen 2. von Zeichenketten
Grundlagen Rechnernetze und Verteilte Systeme
Grundlagen Rechnernetze und Verteilte Systeme Kapitel 4 Transportschicht SoSe 2015 Fakultät für Informatik Fachgebiet für Betriebssysteme Prof. Dr. Uwe Baumgarten, Sebastian Eckl Lehrstuhl für Netzarchitekturen
Intrusion Prevention mit IPTables. Secure Linux Administration Conference, 6. / 7. Dec 2007. Dr. Michael Schwartzkopff. iptables_recent, SLAC 2007 / 1
Intrusion Prevention mit IPTables Secure Linux Administration Conference, 6. / 7. Dec 2007 Dr. Michael Schwartzkopff iptables_recent, SLAC 2007 / 1 Übersicht Grundlagen Linux Firewalls: iptables Das recent
WS7073: Netzwerk- und Protokollprogrammierung. Dr. Florian Baumgartner Neubrückstrasse 10 3012 Bern
WS7073: Netzwerk- und Protokollprogrammierung Dr. Florian Baumgartner Neubrückstrasse 10 3012 Bern 1 Zur Person: F. Baumgartner Kontakt: Mobil: +41-76-4324154 Büro: +41-31-6318646 Email: [email protected]
Android VPN. Am Beispiel eines Netzwerktunnels für das Domain Name System (DNS) 1 Andiodine - Android DNS-VPN
Android VPN Am Beispiel eines Netzwerktunnels für das Domain Name System () 1 Inhalt VPN Framework in Android Übersicht zu Iodine Funktionsweise Demonstration 2 VPN und Android Verfügbar seit Android 4.0
Interprozesskommunikation (IPC)
Gliederung 1. Einführung und Übersicht 2. Prozesse und Threads 3. Interrupts Interprozesskommunikation (IPC) 4. Scheduling 5. Synchronisation 6. Interprozesskommunikation 7. Speicherverwaltung IPC Cl.
DynDNS für Strato Domains im Eigenbau
home.meinedomain.de DynDNS für Strato Domains im Eigenbau Hubert Feyrer Hubert Feyrer 1 Intro homerouter$ ifconfig pppoe0 pppoe0: flags=8851...
Netzwerk-Programmiermodelle und I/O Optimierungen für Unix Betriebssyteme
Netzwerk-Programmiermodelle und I/O Optimierungen für Unix Betriebssyteme Aktuelle Themen der Informatik WS 2006/2007 Prof. Dr. Friedbert Kaspar Furtwangen, 14. November 2006 Hagen Paul Pfeifer
Einleitung Sniffing, Analyzing, Scanning Scanning. Netzwerke. Bierfert, Feresst, Günther, Schuster. 21. März 2006
Sniffing, Analyzing, 21. März 2006 Sniffing, Analyzing, Sniffing, Analyzing, Transmission Control Protocol (RFC 793) Zwei Endpunkte, bezeichnet mit Server und Client Server und Client aus je einem geordneten
Vorab: Überblick TCP. Grundeigenschaften Punkt-zu-Punkt-Verbindung Streaming-Schnittstelle
Vorab: Überblick TCP Grundeigenschaften Punkt-zu-Punkt-Verbindung Streaming-Schnittstelle Byteorientiert keine Fragment-/Segmentgrenzen Zuverlässige Datenübertragung Verbindungsorientierte Übertragung
21 Netzwerkprogrammierung mit Sockets
302 21 Netzwerkprogrammierung mit Sockets Das Socket-API liegt zwischen den transportorientierten und den anwendungsorientierten Netzwerkschichten und tritt in der Praxis in 2 Formen auf: Ursprünglich
Python Programmierung. Dipl.-Ing.(FH) Volker Schepper
Python Programmierung String Operationen i = 25 text1 = "Ich bin " text2 = " Jahre alt" print (text1 + str(i) + text2) print ("ich bin", i, "Jahre alt") print ("ich bin %s Jahre alt" % i) >>> Ich bin 25
Geräte Treiber unter Unix/Linux
Geräte Treiber unter Unix/Linux Martin Schäf 7. Oktober 2004 1 Einleitung Die Programmierung von Geräte Treibern unter Linux ist ein sehr populäres Thema, da für viele Geräte keine, oder nur sehr primitive
FILE *fp; char fname[100];... fp = fopen (fname, rb ); if( fp == NULL ) { perror( fopen );... } // Fehlernachricht auf letzten Fehler, der aufkam
Aktuelle Fileposition ermitteln long pos; pos=ftell(fp); //aktuelle Bytenummer Filelaenge in Bytes fseek(fp,0,seek_end); pos=ftell(fp); Fileendeerkennung int rc; rc = feof (fp) //!= 0 bei Fileende // ==
Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007
Systemprogrammierung Projekt: Java RMI Wintersemester 2006 / 2007 Systemprogrammierung 1. Einleitung 2. Einführung in RPC 3. RMI 4. Code Beispiele 5. Live Vorstellung 6. Ausblick 7. Fazit 2 1. Einleitung
9. Transportprotokolle
Fakultät Informatik Institut Systemarchitektur Professur Rechnernetze WS 2014/2015 LV Rechnernetzpraxis 9. Transportprotokolle Dr. rer.nat. D. Gütter Mail: WWW: [email protected] http://www.guetter-web.de/education/rnp.htm
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)
Betriebssysteme Übung 2. Tutorium System Calls & Multiprogramming
Betriebssysteme Übung 2. Tutorium System Calls & Multiprogramming Task Wiederholung 1 System SysCalls (1) Wozu? Sicherheit Stabilität Erfordert verschiedene modes of execution: user mode privileged mode
1 Kommunikation im World-Wide-Web
1 Kommunikation im World-Wide-Web 1.1 Client und Server 1 1.2 Das Internet Protokoll (IP) 4 1.3 Das Transmission Control Protokoll (TCP) 6 1.3-1 Datagramme und Streams 6 1.3.2 Port-Nummern 8 1.4 Das Hypertext
Network Address Translation (NAT) Warum eine Übersetzung von Adressen?
Network Address Translation () Prof. B. Plattner Warum eine Übersetzung von Adressen? Adressknappheit im Internet Lösungen langfristig: IPv6 mit 128-bit Adressen einsetzen kurzfristig (und implementiert):
Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures
Vorbesprechung U8 Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures Basistypen Alignment der Basistypen auf deren Grösse Grössen (abhängig
Network Address Translation (NAT) Prof. B. Plattner
Network Address Translation (NAT) Prof. B. Plattner Warum eine Übersetzung von Adressen? Adressknappheit im Internet Lösungen langfristig: IPv6 mit 128-bit Adressen einsetzen kurzfristig (und implementiert):
Message Oriented Middleware am Beispiel von XMLBlaster
Message Oriented Middleware am Beispiel von XMLBlaster Vortrag im Seminar XML und intelligente Systeme an der Universität Bielefeld WS 2005/2006 Vortragender: Frederic Siepmann [email protected] bielefeld.de
Architektur Verteilter Systeme Teil 6: Interprozess-Kommunikation
Architektur Verteilter Systeme Teil 6: Interprozess-Kommunikation 09.05.15 1 Literatur [6-1] http://php.net/manual/de/book.sockets.php [6-2] http://de.wikipedia.org/wiki/socket_(software) [6-3] http://php.net/manual/de/book.network.php
Netzwerk-Programmiermodelle und I/O Optimierungen für Unix Betriebssyteme
Netzwerk-Programmiermodelle und I/O Optimierungen für Unix Betriebssyteme Hagen Paul Pfeifer Florian Westphal [email protected] [email protected] http://www.protocol-laboratories.net 14. Oktober 2006 Vortragsfahrplan
IP Adressen & Subnetzmasken
IP Adressen & Subnetzmasken Jörn Stuphorn [email protected] Universität Bielefeld Technische Fakultät Stand der Veranstaltung 13. April 2005 Unix-Umgebung 20. April 2005 Unix-Umgebung 27. April
Wie groß ist die Page Table?
Wie groß ist die Page Table? Im vorigen (typischen) Beispiel verwenden wir 20 Bits zum indizieren der Page Table. Typischerweise spendiert man 32 Bits pro Tabellen Zeile (im Vorigen Beispiel brauchten
Transportschicht (Schicht 4) des Internet
Transportschicht (Schicht 4) des Internet Es gibt zwei Transportprotokolle: TCP = Transmission Control Protocol UDP = User Datagram Protocol a) TCP: baut virtuelle Verbindung auf (verbindungsorientiert)
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
Projektaufgabe Peer-To-Peer Chat Programm
Projektaufgabe Peer-To-Peer Chat Programm Betreuer: Dipl. Ing. Thomas Kehrt [email protected] September 10, 2014 1 Einführung Im Rahmen des Vorkurses wird für fortgeschrittene Studenten eine Projektarbeit
Techniken der Projektentwicklung
Themen Threading Netzwerk Techniken der Projektentwicklung Threading & Netzwerkprogrammierung Ingo Lütkebohle Termin 13 Ingo Lütkebohle Techniken der Projektentwicklung 1 Themen heute Themen Threading
Netzwerke, Kapitel 3.1
Netzwerke, Kapitel 3.1 Fragen 1. Mit welchem anschaulichen Beispiel wurde das OSI-Schichtenmodell erklärt? Dolmetscher 2. Was versteht man unter Dienstprimitiven? Request, Indication, Response, Confirm
Mails in Python senden
Mails in Python senden Felix Döring, Felix Wittwer 14. November 2016 Python-Kurs Gliederung 1. Grundlagen: Mails senden Das Modul smtplib 2. Komplexere Mails senden Das Modul email 1 Die folgenden Folien
Scan-Techniken Ein Überblick
Scan-Techniken Ein Überblick Klaus Möller DFN-CERT GmbH Februar 2002 Agenda Was sind Scans? Scan-Techniken ICMP Scans TCP Scans UDP Scans Weitere Scan-Techniken Umgang mit Scans Was sind Scans? Einbruchszyklus:
