Topic 5: Sockets. *Ευχαριστίες στους Jim Kurose, Keith Ross, Τάκη Σταµατόπουλο, Αλέξη ελή, και Αντώνη ελιγιαννάκη

Σχετικά έγγραφα
Δίκτυα Υπολογιστών. Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης

Προγραμματισμός με BSD Sockets σε περιβάλλον Linux

Δίκτυα Υπολογιστών. Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης

Επίπεδο Μεταφοράς. (ανεβαίνουμε προς τα πάνω) Εργαστήριο Δικτύων Υπολογιστών Τμήμα Μηχανικών Η/Υ και Πληροφορικής

Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4

Δίκτυα Επικοινωνιών ΙΙ: Network Programming TCP Sockets

Εισαγωγή Επανάληψη. ΤΕΙ Στερεάς Ελλάδας. ΣT Εξάμηνο, Κατεύθυνση Μηχανικών Δικτύων Τ.Ε. Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Διαδικτυακός Προγραμματισμός

Εργαστήριο Δικτύων Υπολογιστών

(C) 2010 Pearson Education, Inc. All rights reserved.

Υποδοχείς (Sockets) Προγραμματισμός II 1

Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals

Πρωτόκολλα Διαδικτύου. Άγγελος Ρούσκας Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιώς

Εργαστήριο Λειτουργικών Συστήματων 8ο εξάμηνο, Ακαδημαϊκή περίοδος

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol

Επίπεδο δικτύου IP Forwading κτλ

ιαδικτυακές Εφαρµογές

Εργαστήριο Δικτύων Υπολογιστών

Επίπεδο δικτύου IP διευθυνσιοδότηση

Λειτουργικά Συστήματα

Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας - Βιβλιοθηκονοµίας. Υπηρεσίες Internet. ίκτυα Η/Υ. Επίπεδο Εφαρµογής. Ενότητα θ

Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας Βιβλιοθηκονοµίας. Μοντέλο TCP/IP. Ενότητα E. Συστήµατα Επικοινωνίας

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη

CYTA Cloud Server Set Up Instructions

Internet protocol stack Encapsulation Connection oriented VS connectionless services Circuit Switching Packet Switching Store-and-forward switches

Δικτυακός προγραμματισμός

Ειδικά Θέματα Προγραμματισμού

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα

Τεχνολογίες Παγκόσμιου Ιστού. 1η διάλεξη

Ιόνιο Πανεπιστήµιο Τµήµα Πληροφορικής Συστήµατα Επικοινωνίας. Μοντέλο TCP/IP. Ενότητα E. Πόσοι εµπλέκονται σε ένα Σύστηµα Επικοινωνίας

Τεχνολογίες ιαδικτύου

PortSip Softphone. Ελληνικά Ι English 1/20

The Simply Typed Lambda Calculus

ΤΕΧΝΟΛΟΓΙΑ ΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

Εισαγωγή στα Πληροφοριακά Συστήματα. Ενότητα 11: Αρχιτεκτονική Cloud

ΤΕΙ ΗΠΕΙΡΟΥ. ΜΑΘΗΜΑ: Πρωτόκολλα Επικοινωνίας ιαδικτύου. Εξάµηνο: 3ον. Κεφάλαιο 8 ον : ΕπίπεδοΕφαρµογής (Application Layer) Στεργίου Ελευθέριος

Κατανεμημένα Συστήματα. Javascript LCR example

Διδάσκων: Παναγιώτης Ανδρέου

Κεφάλαιο 1ο Πολυπρογραμματισμός Πολυδιεργασία Κατηγορίες Λειτουργικών Συστημάτων

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. ίκτυα Υπολογιστών Ι. To Μοντέλο OSI. Αναπλ. Καθηγ. Π. εμέστιχας

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών Δίκτυα υπολογιστών. (και το Διαδίκτυο)

Στο εστιατόριο «ToDokimasesPrinToBgaleisStonKosmo?» έξω από τους δακτυλίους του Κρόνου, οι παραγγελίες γίνονται ηλεκτρονικά.

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας

Πρωτόκολλο FTP. Από τα παλαιότερα πρωτόκολλα του ArpaNet Το FTP είναι μια τυποποίηση του TCP/IP Πρόκειται για πρωτόκολο γενικού σκοπού

MusicOnCloud: Μια cloud-based υπηρεσία online streaming μουσικής

ίκτυα υπολογιστών Στόχοι κεφαλαίου ίκτυα

Connected Threat Defense

Δίκτυα Υπολογιστών ΙΙ (Ασκήσεις Πράξης)

Modbus basic setup notes for IO-Link AL1xxx Master Block

SOAP API. Table of Contents

Instruction Execution Times

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Phys460.nb Solution for the t-dependent Schrodinger s equation How did we find the solution? (not required)

Στρατηγικές Ασφάλειας

Network Address Translation (NAT)

HY335 4ο Φροντιστήριο

Ζητήματα Σχεδίασης Λογισμικού Πελάτη

1. Εισαγωγή. Περιγραφή Μαθήματος. Ιστορική Αναδρομή. Ορισμοί Ηλεκτρονικού Εμπορίου

Τι είναι ένα δίκτυο υπολογιστών; Αρχιτεκτονική επιπέδων πρωτοκόλλων. Δικτυακά πρωτόκολλα

Connected Threat Defense

Δίκτυα Υπολογιστών Το επίπεδο μεταφοράς (transport layer)

TMA4115 Matematikk 3

Επικοινωνία Client/Server Υποδοχές (Παραδείγματα)

Τεχνολογία TCP/IP ΙΑ ΙΚΤΥΩΣΗ- INTERNET. Τεχνολογίες Τηλεκπαίδευσης & Εφαρµογές - Ιούλιος

Block Ciphers Modes. Ramki Thurimella

1.2.2 Το μοντέλο δικτύωσης TCP/IP 1 / 26

Υπολογιστές και ίκτυα Η/Υ.

Υπολογιστές και ίκτυα Η/Υ.

Εγχειρίδιο Συναρτήσεων. Socket *sopen(const int type, const int protocol, const char *host, const char *service)

ίκτυα - Internet Υπηρεσίες Internet O Παγκόσµιος Ιστός (World Wide Web) Ηλεκτρονική Αλληλογραφία ( ) Υπηρεσία FTP (File Transfer Protocol)

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 5: Component Adaptation Environment (COPE)

Άσκηση 2 η Πρωτόκολλο επικοινωνίας TCP/IP

Επικοινωνία Client/Server Υποδοχές

Ιόνιο Πανεπιστήµιο. ίκτυα Η/Υ. Επίπεδο Εφαρµογής. Ενότητα Θ. Υπηρεσίες Internet. ρ. Ε. Μάγκος

HY-335a Project: microtcp *, μία lightweight TCP βιβλιοθήκη

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

HOMEWORK 4 = G. In order to plot the stress versus the stretch we define a normalized stretch:

Συστήματα Ηλεκτρονικής Μάθησης Centra & BigBlueBubon

Εγκατάσταση λογισμικού και αναβάθμιση συσκευής Device software installation and software upgrade

Βασικά Θέματα Επικοινωνίας. Κατανεμημένα Συστήματα 1

Ζητήματα Σχεδίασης Λογισμικού Εξυπηρετητή

Δίκτυα Η/Υ στην Επιχείρηση

6.003: Signals and Systems. Modulation

Connecto. Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Άγγελος Σφακιανάκης. Επιφάνεια Άμεσης Σύνδεσης

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΜΣ «ΠΡΟΗΓΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΠΛΗΡΟΦΟΡΙΚΗΣ» ΚΑΤΕΥΘΥΝΣΗ «ΕΥΦΥΕΙΣ ΤΕΧΝΟΛΟΓΙΕΣ ΕΠΙΚΟΙΝΩΝΙΑΣ ΑΝΘΡΩΠΟΥ - ΥΠΟΛΟΓΙΣΤΗ»

Δίκτυα Υπολογιστών I

MICROSOFT INTERNET LOCATOR SERVER

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Capacitors - Capacitance, Charge and Potential Difference

The challenges of non-stable predicates

EE512: Error Control Coding

14. Δικτύωση με Java Δικτύωση με Java Sockets Δημιουργία της σύνδεσης Διευθυνσιοδότηση της σύνδεσης

Potential Dividers. 46 minutes. 46 marks. Page 1 of 11

Κ. Στάµος Μηχανικός Η/Υ και Πληροφορικής, Πανεπιστήµιο Πατρών Μηχανικός Έρευνας και Ανάπτυξης, ΕΜ6/ΕΑΙΤΥ

Κεφάλαιο 6ο ΕΠΙΠΕΔΟ ΕΦΑΡΜΟΓΗΣ. Εισαγωγή

7.2.2 Σχέση OSI και TCP/IP

Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό Ενότητα 1: Εισαγωγή. Καθ. Ιωάννης Γαροφαλάκης Πολυτεχνική Σχολή Μηχανικών Η/Υ & Πληροφορικής

ΤΕΙ ΗΠΕΙΡΟΥ Τμήμα Τηλεπληροφορικής & Διοίκησης

Βασικές Υπηρεσίες Διαδικτύου. Επικοινωνίες Δεδομένων Μάθημα 2 ο

the total number of electrons passing through the lamp.

Transcript:

Topic 5: Sockets *Ευχαριστίες στους Jim Kurose, Keith Ross, Τάκη Σταµατόπουλο, Αλέξη ελή, και Αντώνη ελιγιαννάκη

Επικοινωνία διεργασιών σε διαφορετικούς υπολογιστές Έχουµε δει(ή θαδούµε) διαδιεργασιακή επικοινωνία στο ίδιο µηχάνηµα Μέσω αρχείων Σήµατα Αγωγοί Κοινόχρηστη µνήµη... Τι γίνεται αν ενδιάµεσα υπάρχει ένα δίκτυο; 2

Επικοινωνία διεργασιών σε διαφορετικούς υπολογιστές Συνήθως µοντέλο πελάτη- ( client-server ) εξυπηρετητή Ο εξυπηρετητής παρέχει κάποια υπηρεσία Ο εξυπηρετητής περιµένει να δεχτεί συνδέσεις από πελάτες Πολλοί πελάτες συνδέονται για να χρησιµοποιήσουν την υπηρεσία Πελάτης-εξυπηρετητής µιλάνε απευθείας 3

Μερικές εφαρµογές/ υπηρεσίες δικτύου E-mail Web Instant messaging Remote login P2P file sharing Multi-user network games Streaming stored video clips Internet telephone Real-time video conference Massive parallel computing

Μοντέλα Επικοινωνίας Client-server Peer-to-peer (P2P) Hybrid of client-server and P2P

Client-server architecture server: always-on host permanent IP address server farms for scaling clients: communicate with server may be intermittently connected may have dynamic IP addresses do not communicate directly with each other

Pure P2P architecture no always-on server arbitrary end systems directly communicate peers are intermittently connected and change IP addresses example: Gnutella Highly scalable but difficult to manage

Hybrid of client-server and P2P Skype Internet telephony app Finding address of remote party: centralized server(s) Client-client connection is direct (not through server) Instant messaging Chatting between two users is P2P Presence detection/location centralized: User registers its IP address with central server when it comes online User contacts central server to find IP addresses of buddies

Processes communicating Process: program running within a host. within same host, two processes communicate using interprocess communication (defined by OS). processes in different hosts communicate by exchanging messages Client process: process that initiates communication Server process: process that waits to be contacted Note: applications with P2P architectures have client processes & server processes

Transport Services Offered by OS OS deals with host to host data transfer Did the data get there? What to do when the data gets there? Supplies the application layer with a socket API (connect, send, receive) When data arrives at a host from the net, determines which appl process is to get it Applications typically use one of TCP UDP

What transport service does an app need? Data loss some apps (e.g., audio) can tolerate some loss other apps (e.g., file transfer, telnet) require 100% reliable data transfer Timing some apps (e.g., Internet telephony, interactive games) require low delay to be effective Bandwidth some apps (e.g., multimedia) require minimum amount of bandwidth to be effective other apps ( elastic apps ) make use of whatever bandwidth they get

Internet transport protocols services TCP service: connection-oriented: setup required between client and server processes reliable transport between sending and receiving process flow control: sender won t overwhelm receiver congestion control: throttle sender when network overloaded does not provide: timing, minimum bandwidth guarantees UDP service: unreliable data transfer between sending and receiving process does not provide: connection setup, reliability, flow control, congestion control, timing, or bandwidth guarantee Q: why bother? Why is there a UDP?

TCP versus UDP Applications using TCP: HTTP (WWW), FTP (file transfer), Telnet (remote login), SMTP (email) Applications using UDP: streaming media, teleconferencing, DNS, Internet telephony Πως θα διαλέγατε ανάµεσα στο TCP & UDP?

Processes communicating Process: program running within a host. within same host, two processes communicate using interprocess communication (defined by OS). processes in different hosts communicate by exchanging messages Client process: process that initiates communication Server process: process that waits to be contacted Note: applications with P2P architectures have client processes & server processes

Sockets (Υποδοχές) process sends/receives messages to/from its socket socket analogous to door sending process shoves message out door sending process relies on transport infrastructure on other side of door which brings message to socket at receiving process host or server process socket TCP with buffers, variables controlled by app developer controlled by OS Internet host or server process socket TCP with buffers, variables API: (1) choice of transport protocol OS will use; (2) ability to fix a few parameters

Addressing processes to receive messages, process must have identifier host device has unique 32- bit IP address Q: does IP address of host on which process runs suffice for identifying the process?

Addressing processes to receive messages, process must have identifier host device has unique 32-bit IP address Q: does IP address of host on which process runs suffice for identifying the process? Answer: NO, many processes can be running on same host identifier includes both IP address and port numbers associated with process on host. Example port numbers: HTTP server: 80 Mail server: 25 to send HTTP message to www.di.uoa.gr web server: IP address: 147.52.17.2 Port number: 80

Application protocol defines Types of messages exchanged, e.g., request, response Message syntax: what fields in messages & how fields are delineated Message semantics meaning of information in fields Rules for when and how processes send & respond to messages Public-domain protocols: defined in RFCs allows for interoperability e.g., HTTP, SMTP Proprietary protocols: e.g., KaZaA

Socket programming Goal: learn how to build client/server application that communicate using sockets Socket API introduced in BSD4.1 UNIX, 1981 explicitly created, used, released by apps client/server paradigm two types of transport service via socket API: unreliable datagram reliable, byte stream-oriented socket a host-local, applicationcreated, OS-controlled interface (a door ) into which application process can both send and receive messages to/from another application process

Σύγκριση TCP-UDP TCP UDP ΑΠΑΙΤΗΣΗ ΣΥΝ ΕΣΗ ΝΑΙ ΌΧΙ ΑΞΙΟΠΙΣΤΙΑ ΝΑΙ ΌΧΙ ΟΡΙΑ ΜΗΝΥΜΑΤΩΝ ΌΧΙ ΝΑΙ ΙΑ ΟΧΙΚΟΤΗΤΑ ΜΗΝΥΜΑΤΩΝ ΝΑΙ ΌΧΙ ΕΙ ΟΣ ΥΠΟ ΟΧΗΣ SOCK_STREAM SOCK_DGRAM 20

Socket-programming using TCP Socket: a door between application process and end-end-transport protocol (UDP or TCP) TCP service: reliable transfer of bytes from one process to another controlled by application developer controlled by operating system process socket TCP with buffers, variables internet process socket TCP with buffers, variables controlled by application developer controlled by operating system host or server host or server

Socket programming with TCP Client must contact server server process must first be running server must have created socket (door) that welcomes client s contact Client contacts server by: creating client-local TCP socket specifying IP address, port number of server process When client creates socket: client TCP establishes connection to server TCP When contacted by client, server TCP creates new socket for server process to communicate with client allows server to talk with multiple clients source port numbers used to distinguish clients application viewpoint TCP provides reliable, in-order transfer of bytes ( pipe ) between client and server

Πρωτόκολλο TCP Αναµονή συνδέσεων (welcoming socket) Εδώ τελικά επικοινωνεί µε τον πελάτη 23

Πολλοί Πελάτες 24

Σειριακός Εξυπηρετητής ΠΑΝΤΑ ΜΕΙΟΝΕΚΤΗΜΑΤΑ 1) Ένα πελάτη τη φορά, µέχρι να τελειώσει ο πελάτης 2) Αιτήσεις άλλων πελατών περιµένουν και µπορεί να αποτύχουν 25

Πιο Σύνηθες Ο εξυπηρετητής γεννάει ένα παιδί για κάθε πελάτη ΜΕΙΟΝΕΚΤΗΜΑ Πάρα πολλά παιδιά αν πολλοί πελάτες 26

Λειτουργία Λειτουργία Πατέρα Λειτουργία Παιδιού ΠΑΝΤΑ 27

Ερωτήσεις Γιατί ο εξυπηρετητής να κλείνει τους περιγραφείς; Για να µηξεµείνει από περιγραφείς Για να µπορεί ο πελάτης να διαγνώσει EOF µε τηread (όπως στους σωλήνες, αν δεν υπάρχουν άλλα δεδοµένα και η άλλη πλευρά κλείσει το άκρο) 28

Εναλλακτικό Μοντέλο Το ίδιο γίνεται και µε νήµατα Αντί για µια καινούργια διεργασία ανά πελάτη, δηµιουργεί ένα καινούργιο νήµα. ΜΕΙΟΝΕΚΤΗΜΑ Συγχρονισµός νηµάτων για διάβασµα δεδοµένων πελατών (πχ από σωλήνα) 29

Χρήσιµες Γνώσεις Πχ, SUN (big-endian) vs Intel (little-endian) αρχιτεκτονικές 30

Χρήσιµες Γνώσεις (2) ήαf_inet (standard) 31

οµές για ορισµό διευθύνσεων υποδοχών #include <netinet/in.h> struct sockaddr_in { sa_family_t sin_family; /*AF_INET */ in_port sin_port; /* port number */ struct in_addr sin_addr; /* IPv4 address */ }; struct in_addr { in_addr_t s_addr; /* IPv4 unsigned 32 bit int */ };

Συνάρτηση bind 33

Συναρτήσεις connect, listen, accept 5 Συνδέσου εδώ 34

Συναρτήσεις bzero, bcopy Αντίθετα από memcpy 35

Πρακτικές λύσεις Αν ο εξυπηρετητής πάει να γράψει σε socket που έχει κλείσει ο πελάτης, τότε σήµα SIGPIPE Να βάζετε στην αρχή χειριστή του σήµατος SIGPIPE Για γρήγορη επαναχρησιµοποίηση των ports ενός socket, κάντε χρήση της συνάρτησης setsockopt (µε ενεργοποίηση της επιλογής SO_REUSEADDR δείτε το βιβλίο για λεπτοµέρειες) 36

TCP Επικοινωνία 37

Παράδειγµα int_str_server.c 38

Παράδειγµα int_str_server.c (2) 39

40

Αποτέλεσµα Εκτέλεσης 41

Χρήσιµες Γνώσεις INADDR_ANY (0.0.0.0) Αντιστοιχεί στο άκου σε «όλες οι διευθύνσεις» port = 0 Αφήνει το λειτουργικό να επιλέξει port. setsockopt() Θέτει ειδικές ιδιότητες του socket Θα δούµε χρήση παρακάτω shutdown(int socket_fd, int how) Κλείνει τη µια κατεύθυνση ενός αµφίδροµου socket how = SHUT_RD, SHUT_WR, or SHUT_RDWR Example: HTTP client sends request, then shutdown(shut_wr) to tell server I am done sending, but can still receive 42

Χρήσιµες Γνώσεις Που είναι συνδεδεµένο το socket; Τι θύρα επέλεξε το λειτουργικό; getsockname(int sock_fd, struct sockaddr *sa, int *sa_len) διεύθυνσηόπουέχειγίνειτο socket bind. getpeername(int sock_fd, struct sockaddr *sa, int *sa_len) διεύθυνση στο άλλο άκρο της σύνδεσης. 43

Πρωτόκολλο UDP User Datagram Protocol Επικοινωνία χωρίς σταθερή σύνδεση Ανταλλαγή απλών µηνυµάτων µεταξύ εξυπηρετητή-πελατών Μηνύµατα µπορούν να χαθούν, φτάσουν µε λάθος σειρά 44

UDP Επικοινωνία 45

Συναρτήσεις sendto, recvfrom UDP 46

Εκτέλεση Προγράµµατος 47

Παράδειγµα int_dgr_server.c Αυτόµατη επιλογή Βρες πραγµατικό port 48

Παράδειγµα int_dgr_client.c 49

Εκτέλεση Προγράµµατος 50

Εξέταση Ενεργών Sockets Εντολή netstat Πχ: netstat n l p είξε µενούµερα (-n) τα LISTEN-ing sockets (-l) και τις διεργασίες στις οποίες ανήκουν (-p) Ακόµα... -t / -u TCP/UDP -a socket σε όλα τα states TCP states LISTEN, ESTABLISHED, TIME_WAIT 51

Παράδειγµα rls.c 52

Παράδειγµα rlsd.c 53

(. συν ) Παράδειγµα rlsd.c Αντί για ανακατεύθυνση εντολής σε αρχείο, popen. Μπορώ να διαβάσω ή γράψω µε popen. ΌΧΙ και τα 2 µαζί 54

Εκτέλεση Προγράµµατος 55