Anwendungen in Rechnernetzen Tobias Wawryniuk

Slides:



Advertisements
Ähnliche Präsentationen
Powerpoint-Präsentation
Advertisements

2. Link Layer Lernziele: Verstehen wie IP prinzipiell über eine Link Layer Verbindung übertragen wird.
Inhalt – Technische Grundlagen
Kapitel 4: Design von Client/Server-Software
2.4 Kommunikationsdienste des Betriebssystems
2 Kommunikationssysteme bieten Kommunikationsdienste an, die das Senden und Empfangen von Nachrichten erlauben (sending & receiving messages) bestehen.
Kirsten Kropmanns Allgemeine Technologien II 21. April 2009
Konfiguration eines VPN Netzwerkes
Vergleich von LAN - Protokollen
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Bs Kommunikation Kommunikation zwischen Benutzerprozessen (IPK) stellt andere Anforderungen als auftragsorientierte Kommunikation in mikrokernbasierten.
Offene Systeme, Rechnernetze und das Internet
Internet und seine Dienste
OSI-Schichtenmodell Unterschiedliche Rechner brauchen eine gemeinsame Basis, um sich miteinander zu „unterhalten“. Geklärt werden muss dabei u. a. Folgendes:
2. Link Layer Lernziele: – Verstehen wie IP prinzipiell über eine Link Layer Verbindung übertragen wird.
1. Einführung Lernziele: Auffrischen des Wissens aus Rechnernetze
Martin MauveUniversität Mannheim1 3.6 User Datagram Protocol (UDP) RFC 768. J. Postel. User Datagram Protocol unzuverlässiges Transportprotokoll.
Virtual Private Networks
Einführung in die Technik des Internets
Das OSI-Modell der ISO Fragen:
von Julia Pfander und Katja Holzapfel E 12/2
Internet-Protokolle Tanja Witze.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 4 Folie 2 Message Passing mittels Sockets (1) s.a.
Learning By Doing TCP/IP Netzwerke mit TCP/IP Das Internet verwendet weitgehend das rund 30-jährige TCP/IP-Protokoll (TCP: Transmission Control Protocol,
Peer-to-Peer-Netzwerke
Referent: Kiron Mirdha Betreuer: Rene Hilden Juli 2012
1 Übersicht Absicherung Internet Layer Absicherung Transport Layer Absicherung Application Layer.
Geschichte des Internet
Das OSI Schichtenmodell
Julia Grabsch Florian Hillnhütter Fabian Riebschläger
Netzwerkprogrammierung
Internet und SMS Internet und SMS Daniel Rickenbacher Jeremy Deuel.
Referat von Markus Hertel
Präsentation von Lukas Sulzer
Abgeleitet aus dem OSI-Referenzmodell sieben Schichten
Die Transportprotokolle: Transmission Control Protocol (TCP) User Datagram Protocol (UDP) Die Socket-Schnittstelle.
Meldungen über Ethernet mit FINS/UDP
Funktionsweise der 4. Schicht im OSI-Modell am Beispiel TCP und UDP.
Funktionsweise der 4. Schicht im OSI-Modell
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Peer-to-Peer- Netzwerke Christian Schindelhauer Sommersemester.
Christian Schindelhauer Sommersemester Vorlesung
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Systeme II Christian Schindelhauer Sommersemester 2006.
Virtual Private Network
VPN – Virtual Private Network
Willkommen zum Brückensemester
prof. dr. dieter steinmannfachhochschule trier © prof. dr. dieter steinmann Folie 1 vom ISO/OSI Referenzmodell.
Agenda 1. Definition (TCP/ IP Protokollfamilie) 2.
von Prof. Thomas Deutsch
Internet-Grundtechnologien. Client / Server Client („Kunde“): fordert Information / Datei an im Internet: fordert Internetseite an, z.B.
 Sind Adresskomponenten (an der IP- Adresse angehängt, von ihr durch Doppelpunkt getrennt)  Werden in Netzwerkprotokollen eingesetzt um Datenpakete.
Ein Referat von Rahul Chanana, Sebastian Callian und Steffen Klikar.
TCP/IP.
Schutzvermerk nach DIN 34 beachten TCP / IP. Schutzvermerk nach DIN 34 beachten TCP / IP und das OSI-Referenzmodell Process / Application Host-to-Host.
Webserver Apache & Xampp Referenten: Elena, Luziano und Sükran
VLAN Virtual Local Area Network
Kirsten Kropmanns Allgemeine Technologien II 9. März 2009
Network Address Translation (NAT)
Lisa Huber DHBW Mannheim
IS: Datenbanken, © Till Hänisch 2000 Windows Netzwerke TCP/IP oder was ?
LINUX II Harald Wegscheider
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Netzwerke Alexander Sczyrba Jan Krüger.
1. Einführung Lernziele: Auffrischen des Wissens aus Rechnernetze
2 Kommunikationssysteme
ISO / OSI Referenzmodell
Othmar Gsenger Erwin Nindl Christian Pointner
Camil Bartkowiak Serhat Cinar Leonardo Di Lella Jan Finsel
Netzwerke Netzwerkgrundlagen.
TCP/IP Transmission Control Protocol/Internet Protocol
 Präsentation transkript:

Anwendungen in Rechnernetzen Tobias Wawryniuk RAW Sockets Anwendungen in Rechnernetzen Tobias Wawryniuk

Vorgeschichte: Sockets Was ist ein Socket? Ursprung im 4.2 BSD System Schnittstelle für Zugriff auf Netzwerkdienste Bereitstellung als ‚file descriptor‘ I/O- Handling wie bei Dateien Verbindungspunkte zwischen entfernten Anwendungen Socket := Port + Protokollflag + Adresse

Sockets Windows vs. UNIX Eigener Datentyp (SOCKET) Winsock 1.1 – in Anlehnung an BSD Sockets Winsock 2 – Erweiterungen für diverse Protokolle UNIX: ‚file descriptor‘ – Abstraktion im Dateisystem-Stil Funktionen wie ‚read()‘ und ‚write()‘ möglich IPC - interprocess communication

Internet Socket Stream Socket SOCK_STREAM Datagram Sockets SOCK_DGRAM verbindungsorientiert Verbindungsaufbau / -abbau Flusskontrolle Datagram Sockets SOCK_DGRAM verbindungslos Reihenfolge und Empfang wird nicht gesichert Beide: Multiplexing, Demultiplexing durch Ports

RAW Socket Was ist nun ein RAW-Socket? Zugriff auf Ebene der Vermittlungsschicht Empfang von Paketen, die nicht TCP od. UDP sind Kontrolle über Einträge der Headerfelder Eigene Transportprotokolle implementierbar

RAW Socket – MS Windows Einschränkungen mit Windows XP SP 2 und Winsock 2 Empfang von IP-Paketen mit RAW Sockets möglich TCP-Pakete können nicht gesendet werden UDP-Pakete müssen eine ‚lokale‘ IP-Adresse haben Quelle: Michael Howard's Web Log

RAW Sockets – UNIX Process, der RAW Socket erstellen will benötigt superuser (root UID=0) Rechte Empfang und Senden von Datagrammen für RAW Socket wird ein Protokoll spezifiziert

OSI-Standard – TCP/IP-Standard application layer (7) application layer (4) presentation layer (6) session layer (5) transport layer (4) TCP, UDP transport layer (3) network layer (3) IP internet layer (2) data link layer (2) ETH , TR network (access) layer (1) physical layer (1)

TCP / IP Stack konkrete Implementierung des TCP / IP Standards Diensterbringer für die Anwendungschicht Programme, die über IP netzwerken wollen Dienste wie ftp, http, smtp, etc. Dienstnutzer der Netzwerkschicht z.B. Ethernet oder TokenRing

Sockets - Programmierung connect(…) bind(…) listen(…) send(…) / sendto(…) recv(…) / recvfrom(…) close(…)

RAW-Sockets: Socket anlegen int socket(int domain, int type, int protocol) domain: PF_LOCAL, PF_INET, PF_IPX, … type: SOCK_STREAM, SOCK_DGRAM SOCK_RAW, … protocol: IPPROTO_ICMP, IPPROTO_TCP, IPPROTO_NONE, IPPROTO_RAW, … RFC 1700 Assigned Numbers

RAW Sockets: Socket anlegen RAW-Socket auf Ebene des network layers int socket(PF_INET, SOCK_RAW, int protocol); RAW-Socket auf Ebene des data link layers int socket(PF_PACKET, SOCK_RAW, int protocol); SOCK_PACKET gilt als veraltet Socket schließen: int close(int fd);

RAW-Sockets: Optionen festlegen int setsockopts(int s, int level, int optname, void *optval, socklen_t *optlen); level: Art bzw. Bereich der Option SOL_SOCKET … direkt auf Socket bezogen IPPROTO_IP ….. Option bezieht sich auf Internet Protokoll optname: Identifizierung der Option IP_HDRINCL ….. vor Payload im Puffer befindet sich der Header IPPROTO_RAW impliziert IP_HDRINCL SOL_SOCKET -> SO_BROADCAST

RAW Sockets – UNIX

RAW-Socket: Verbindung aufbauen int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen); optional; je nach Verwendungszweck Struktur der Adresse wird durch Adressraum des Sockets bestimmt Portnummer in struct sockaddr_in spezifiziert Protokoll, wird beim Senden nicht berücksichtig

RAW-Socket: struct sockaddr

Network Byte Order Interpretation der Bits und Bytes little-endian höherwertigstes Oktett ist rechts niederwertigstes Oktett ist links big-endian höherwertigste Oktett ist links niederwertigste Oktett ist rechts analoges gilt für die Bits im Oktett NUXI – Problem -> als 2 Byte Words im Speicher abgelegt UNIX

Network Byte Order Sicherstellen der Konvertierung relevanter Werte (bei mehreren Oktetten) Funktionen: uint32_t htonl(uint32_t hostlong); uint16_t htons(uint16_t hostshort); uint32_t ntohl(uint32_t netshort); uint16_t ntohs(uint16_t netshort);

RAW-Sockets: Hello World

Diagramm des IP-Headers

Beispiel 1 – Ping request/reply Request senden, auf Antwort warten Endlosschleife (UNIX) Zählschleife (Windows) IP-Header muss nicht modifiziert werden Sequenznummer erhöhen ICMP Checksumme zurücksetzen Schleifen, durch Parameter definierbar, auch Datenmenge

RAW-Sockets: IP-Header erstellen für Beispiel angepasste Funktion keine Optionen, viele Felder werden vom Kernel gesetzt Vom Kernel gesetzt: totalllength, id, checksum

ICMP Header Request: Typ 0x08 Reply: Typ 0x00 Code: 0x00 Identifier: Zuordnung von reply zu request Sequence Number: Erhöhung bei neuem request

RAW-Sockets: ICMP-Header setzen

RAW-Sockets: Paket senden ssize_t send(int s, const void *buf, size_t len, int flags); ssize_t sendto(send(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); Flags hier nicht nötig, z.B. MSG_DONTROUTE MSG_DONTROUTE - nicht routen, nur lokales Netz (Diagnoseprogramme)

RAW-Sockets: Pakete empfangen ssize_t recv(int s, void *buf, size_t len, int flags); ssize_t recvfrom(int s, void *buf, size_t len, int flags, struct aockaddr *from, socklen_t *fromlen); Flags hier ebenfalls nicht notwendig* Paket testen, ob Prozess Empfänger ist Hier Test: hdrIcmp->type == 0x00 && hdrIcmp->un.echo.id = id Tests können je nach Anwendungsfall gestaltet werden. Empfängt Socket überhaupt femde Pakete *TimeOut einbauen: MSG_DONTWAIT – non-Blocking mode

RAW-Socktes: PingCode

Big-little-endian example

Prüfsummen zum Berechnen der Prüfsumme ist das Feld selbst auf 0 gesetzt Felder werden in der Regel als 16-Bit Worte aufgefasst 1-er Komplement der Summe aller 1-er Komplemente der 16-Bit-Worte ICMP: über ICMP-Header (incl. Datenbereich bei Typ 8 und 3) Ist die Prüfsumme ungültig erhält man keine Antwort, Auch IP-Pakete mit ungültiger Prüfsumme werden nicht geroutet

Beispiel 2 – TCP - Flooder Flooder: Server/ Dienst mit Anfagen überfluten -> DoS-Attacke TCP – Verbindungsaufbau nach 3 – Wege – Handshake (1) Verbindungswunsch vom Client (2) Bestätigung / Akzeptanz vom Server (3) Bestätigung vom Client

TCP Header Prüfsumme: pseudo header, tcp header und payload

RAW-Sockets: TCP-Header erstellen ebenfalls beispielhafte Funktion Sequenz und Acknowledge Nummer hier keine Bedeutung, da ja nur ein Paket gesendet werden soll Offset ist statisch, da im auch keine Optionen sind

TCP-Flooder Code

Nach 2 sek. Ca 100.000 Pakete Ein paar ICMP

UDP-Header

Prüfsummen bei TCP und UDP Wird in der Regel aus Header und Payload gebildet weiterhin wird ein Pseudo-Header verwendet, bestehend aus: IP-Adressen aus dem IP-Header Zero-Padding (ein Oktett) Protokollnummer (TCP / UDP) Gesamtlänge (TCP / UDP) Pseudoheader: Schutz gegen fehlgeroutete Segmente

Beispiel 3 – TCP - Sniffer Pakete, die an einem Interface ankommen werden aufgenommen RAW-Socket erhält eine Kopie int bind(int sockfd, const struct sockaddr *my_addr, socklen_t addlen);

TCP - SnifferCode

TCP-Sniffer Output

Die Alternative: TLI TLI – Transport Layer Interface eingeführt von AT&T mit System V Release 3.0 (Streams I/O Systems) [1986] Bindeglied zwischen: transport endpoints (miteinander kommunizierende (User-)Prozesse) transport provider (z.B. TCP / IP ) vom Diensterbringer unabhängig Strukturen: t_netbuf, t_bind, t_call, t_info Funktionen: t_open, t_bind(), t_connect(), … Standardisiert unter XTI, X/Open

Fazit Sinnvoller Einsatz: für neue (eigene) Protokolle Protokolle ohne direkte Benutzerschnittstelle Ab Linux 2.2 können alle Header-Felder per Socketoption gesetzt/gelesen werden

Literatur / Quellen Printmedien / PDF Webseiten: Netzwerkprogrammierung unter LINUX und UNIX Embedded Internet in der Industrieautomation Beej’s Guide to Network Programming Using Internet Sockets (PDF) Netzwerkprogrammierung mit BSD-Sockets (PDF) Programmierung in der Unix-Umgebung Webseiten: http://www.wikipedia.de; 31.10.2006 http://www.codeproject.com/csharp/pktcap.asp http://en.wikipedia.org/wiki/Internet_socket http://en.wikipedia.org/wiki/Raw_socket http://www.zotteljedi.de/doc/socket-tipps/index.html Stefan Fischer, Walter Müller; UNIX easy Klaus-D. Walter; Hüthing Brain „Beej“ Hall Felix Opatz - Zotteljedi W. Richard Stevens; Addison-Wesley

Literatur / Quellen LINUX ManPages RFC – Request For Comment Section 7 – socket Section 7 – raw Section 7 – ip Section 7 – icmp RFC – Request For Comment RFC 791 - Internet Protocol RFC 793 - Transmission Control Protocol RFC 768 - User Datagram Protocoll RFC 1700 - Internet Assigned Numbers

RAW Sockets Haben Sie Fragen?