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

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

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

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

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

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

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

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

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

Απομακρυσμένη Πρόσβαση και Εντολές Ελέγχου και Υποστήριξης

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

Δικτυακός Προγραμματισμός (Sockets Programming) Εργαστήριο Γ Εξάμηνο, Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας

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

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

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

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

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

Socket Application Programming Interface

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

4 η ιάλεξη: Signals UDP Sockets

2η Προγραµµατιστική Εργασία

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 10. Δικτυακός προγραμματισμός Εισαγωγή

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

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

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

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

ΕΠΛ 012. Δίκτυα Τπολογιστών & Διαδίκτυο

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

ΑΤΜ PROJECT ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Άννα Τριανταφύλλου ΑΕΜ : 456. επιβλέπων καθηγητής: Μηνάς Δασυγένης

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

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

Διαχείριση Δικτύων Εργαστήριο (Διαφάνειες)

α. Το μέγιστο μήκος δεδομένων του ωφέλιμου φορτίου του πλαισίου Ethernet είναι 1500 οκτάδες. ΣΩΣΤΟ

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

{ int pipe(int fd[ ]) close

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

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

Δίκτυα Υπολογιστών Ενότητα 10: Ethernet και ARP

Δίκτυα Επικοινωνιών ΙΙ: Πληροφορίες σχετικά με το μάθημα

Διαχείριση Δικτύων Εργαστήριο (Διαφάνειες)

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

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

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

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

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

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

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

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

Εισαγωγή στην επιστήμη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 6ο ίκτυα υπολογιστών

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

Εισαγωγή στο διαδίκτυο

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

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

Διαχείριση Δικτύων με τη χρήση SNMP (5η άσκηση) Διαχείριση Δικτύων - Ευφυή Δίκτυα, 9 ο Εξάμηνο,

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

Κεφάλαιο 7 Διαδικτύωση-Internet. 7.2 Τεχνολογία TCP/IP

Διαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1

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

Οδηγός ιαχείρισης Λειτουργίας Σχολικού Εργαστηρίου Windows 2000 Server

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

Α5.1 Εισαγωγή στα Δίκτυα. Α Λυκείου

Μάθημα 6: Αρχιτεκτονική TCP/IP

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ

Προγραµµατισµός ικτύων Ε-01

Πρωτόκολλα Διαδικτύου

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

Σχήμα 4.1. Δίκτυο μη συγκεκριμένης τοπολογίας (mesh topology)

ΠΡΩΤΟΚΟΛΛΟ TCP/IP ΜΑΚΡΟΠΟΥΛΟΣ ΝΙΚΟΛΑΟΣ

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

Πρωτόκολλα Διαδικτύου

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

Προγραµµατισµός ικτύων Ε-01

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap

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

Επικοινωνία Διεργασιών στο Internet με POSIX Sockets

ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δίκτυα Υπολογιστών

ECE Operating Systems and Networking Laboratory

Πρωτόκολλα Διαδικτύου (ΨΣ-326 DS151)

Χρήση βασικών εργαλείων συλλογής πληροφοριών για τη διαμόρφωση και την κατάσταση λειτουργίας του δικτύου

Προγραμματισμός Διαχείρισης Συστημάτων ΙΙ

Δίκτυα και Διαδίκτυο

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ / ΕΠΑΛ(Α & Β ΟΜΑΔΑ) ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 11/12/2011 ΑΠΑΝΤΗΣΕΙΣ

Εισαγωγή στην Πληροφορική

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ

Σχεδιασμός Εικονικών Δικτύων Ενότητα 7: Μεταγλώττιση διευθύνσεων (ΝΑΤ)

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Υλοποίηση και Πειραματική Αξιολόγηση Ενός Αλγόριθμου Ατομικών Αντικειμένων Γραφής-Ανάγνωσης.

ΚΕΦ. 2 - Η Λειτουργία των Δικτύων

Εισαγωγή στην πληροφορική

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

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Γ Τάξη ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΑ.Λ. ΤΕΤΡΑΔΙΟ ΜΑΘΗΤΗ Κωνσταντοπούλου Μ., Χρυσοστόμου Γ.

7.2 Τεχνολογία TCP/IP

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ- Ακαδημαϊκό Φροντιστήριο ΕΠΑΛ-Κάνιγγος 13 Αθήνα Α2. Να επιλέξετε μια από τις παρακάτω επιλογές στην ερώτηση που δίνετσι:

Διάλεξη 1: Δομές Δεδομένων και Αλγόριθμοι - Εισαγωγή. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Transcript:

Προγραμματισμός με BSD Sockets σε περιβάλλον Linux Εργαστήριο Λειτουργικών Συστημάτων 8ο εξάμηνο, ΣΗΜΜΥ Εργαστήριο Υπολογιστικών Συστημάτων (CSLab) Απρίλιος 2016

Περίγραμμα παρουσίασης 1 Εισαγωγή 2 Δικτυακά Πρωτόκολλα - TCP/IP 3 Sockets - Βασικές Έννοιες 4 Sockets API 5 Χρήσιμα εργαλεία 04 / 2016 Sockets ΣΗΜΜΥ, 34358

Διαδιεργασιακή επικοινωνία Shared Memory: Δύο οι περισσότερες διεργασίες, load/store σε κοινή μνήμη Pipes: Μονόδρομη επικοινωνία ανάμεσα σε συγγενικές διεργασίες 04 / 2016 Sockets ΣΗΜΜΥ, 34358

Διαδιεργασιακή επικοινωνία Shared Memory: Δύο οι περισσότερες διεργασίες, load/store σε κοινή μνήμη Pipes: Μονόδρομη επικοινωνία ανάμεσα σε συγγενικές διεργασίες Berkeley Sockets Προγραμματιστική διεπαφή για επικοινωνία UNIX sockets, UDP και TCP πάνω από IPv4/IPv6 Δίκτυο: Διεργασίες σε οποιοδήποτε μηχάνημα 04 / 2016 Sockets ΣΗΜΜΥ, 34358

Επικοινωνία με sockets Server Αίτηση (Request) Απόκριση (Response) Client Client Client Μοντέλο Client-Server Local vs Internet sockets Datagram sockets (UDP) Connection-oriented sockets (TCP) 04 / 2016 Sockets ΣΗΜΜΥ, 34358

TCP/IP Internet Protocol (IP) Μοναδική διεύθυνση 32/128 bits ανά κόμβο (IPv4/IPv6) Αναξιόπιστη (best effort) μεταφορά πακέτων ανάμεσά τους 04 / 2016 Sockets ΣΗΜΜΥ, 34358

TCP/IP Internet Protocol (IP) Μοναδική διεύθυνση 32/128 bits ανά κόμβο (IPv4/IPv6) Αναξιόπιστη (best effort) μεταφορά πακέτων ανάμεσά τους Transmission Control Protocol (TCP) Αξιόπιστες συνδέσεις, πάνω από IP 04 / 2016 Sockets ΣΗΜΜΥ, 34358

TCP/IP Internet Protocol (IP) Μοναδική διεύθυνση 32/128 bits ανά κόμβο (IPv4/IPv6) Αναξιόπιστη (best effort) μεταφορά πακέτων ανάμεσά τους Transmission Control Protocol (TCP) Αξιόπιστες συνδέσεις, πάνω από IP Αμφίδρομο ρεύμα δεδομένων, με εγγυημένη παράδοση 04 / 2016 Sockets ΣΗΜΜΥ, 34358

TCP/IP Internet Protocol (IP) Μοναδική διεύθυνση 32/128 bits ανά κόμβο (IPv4/IPv6) Αναξιόπιστη (best effort) μεταφορά πακέτων ανάμεσά τους Transmission Control Protocol (TCP) Αξιόπιστες συνδέσεις, πάνω από IP Αμφίδρομο ρεύμα δεδομένων, με εγγυημένη παράδοση Αρίθμηση πακέτων, ανάκαμψη από σφάλματα 04 / 2016 Sockets ΣΗΜΜΥ, 34358

TCP/IP Internet Protocol (IP) Μοναδική διεύθυνση 32/128 bits ανά κόμβο (IPv4/IPv6) Αναξιόπιστη (best effort) μεταφορά πακέτων ανάμεσά τους Transmission Control Protocol (TCP) Αξιόπιστες συνδέσεις, πάνω από IP Αμφίδρομο ρεύμα δεδομένων, με εγγυημένη παράδοση Αρίθμηση πακέτων, ανάκαμψη από σφάλματα Δε διατηρεί πληροφορία για το όρια του μηνύματος (σε αντίθεση με UDP/SCTP) 04 / 2016 Sockets ΣΗΜΜΥ, 34358

Βασικές έννοιες των Sockets Χώρος ονομάτων - domain Local namespace - ονόματα αρχείων (PF_UNIX) Internet namespace - IPv4/IPv6 addresses (32/128 bit) (PF_INET, PF_INET6) 04 / 2016 Sockets ΣΗΜΜΥ, 34358

Βασικές έννοιες των Sockets Χώρος ονομάτων - domain Local namespace - ονόματα αρχείων (PF_UNIX) Internet namespace - IPv4/IPv6 addresses (32/128 bit) (PF_INET, PF_INET6) Στυλ επικοινωνίας - type Connection-oriented: Με σύνδεση, ρεύμα bytes, αξιόπιστη μεταφορά (SOCK_STREAM) Datagram: Χωρίς σύνδεση, αναξιόπιστη μεταφορά διακριτών πακέτων (SOCK_DGRAM) 04 / 2016 Sockets ΣΗΜΜΥ, 34358

Βασικές έννοιες των Sockets Χώρος ονομάτων - domain Local namespace - ονόματα αρχείων (PF_UNIX) Internet namespace - IPv4/IPv6 addresses (32/128 bit) (PF_INET, PF_INET6) Στυλ επικοινωνίας - type Connection-oriented: Με σύνδεση, ρεύμα bytes, αξιόπιστη μεταφορά (SOCK_STREAM) Datagram: Χωρίς σύνδεση, αναξιόπιστη μεταφορά διακριτών πακέτων (SOCK_DGRAM) Πρωτόκολλo επικοινωνίας - protocol Συγκεκριμένος τρόπος επικοινωνίας (0 default) 04 / 2016 Sockets ΣΗΜΜΥ, 34358

Η ζωή ενός client socket Server socket() bind() Client socket() listen() connect() Σύνδεση στον Server accept() Συνέχιση επικοινωνίας write() read() Αποστολή αίτησης Αποστολή απόκρισης read() write() Αποδοχή νέας σύνδεσης close() close() [client] close() [listening] Δημιουργία - σύνδεση - εγγραφή - ανάγνωση - κλείσιμο 04 / 2016 Sockets ΣΗΜΜΥ, 34358

Η ζωή ενός server socket Server socket() bind() Client socket() listen() connect() Σύνδεση στον Server accept() Συνέχιση επικοινωνίας write() read() Αποστολή αίτησης Αποστολή απόκρισης read() write() Αποδοχή νέας σύνδεσης close() close() [client] bind() - listen() close() [listening] accept() - close() (νέο socket για κάθε accepted client) 04 / 2016 Sockets ΣΗΜΜΥ, 34358

Sockets API API ανεξάρτητο του υφιστάμενου πρωτοκόλλου Χρήση γενικού struct sockaddr Κάθε socket είναι ένα file descriptor Οπότε: read(), write(), select(), close() 04 / 2016 Sockets ΣΗΜΜΥ, 34358

socket() int socket(int domain, int type, int protocol); domain: PF_{UNIX,LOCAL}, PF_INET type: SOCK_STREAM, SOCK_DGRAM, SOCK_SEQPACKET, protocol: IPPROTO_TCP, IPPROTO_UDP, ή 0 για το default Δημιουργεί το socket, επιστρέφει το file descriptor Παράδειγμα χρήσης #include <sys/typesh> #include <sys/socketh> int sd = socket(pf_inet, SOCK_STREAM, 0); if (sd < 0) { perror( socket ); exit(1); } 04 / 2016 Sockets ΣΗΜΜΥ, 34358

connect() int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen); Συνδέει το sockfd σε μία (απομακρυσμένη;) διεύθυνση addr: η διεύθυνση στην οποία συνδεόμαστε Παράδειγμα: struct sockaddr_in, από ip(7) struct sockaddr_in { sa_family_t sin_family; /* address family: AF_INET */ in_port_t sin_port; /* port in network byte order */ struct in_addr sin_addr; /* internet address */ }; Παράδειγμα χρήσης #include <sys/typesh> #include <sys/socketh> if (connect(sd, (struct sockaddr *)&sa, sizeof(sa)) < 0) { perror( connect ); exit(1); } 04 / 2016 Sockets ΣΗΜΜΥ, 34358

bind() int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen); Δένει το sockfd σε συγκεκριμένη διεύθυνση addr: η (τοπική) διεύθυνση στην οποία θα δεθεί το socket Παράδειγμα χρήσης #include <sys/typesh> #include <sys/socketh> if (bind(sockfd, (struct sockaddr *)&sa, sizeof(sa)) < 0) { perror ( bind ); exit(1); } 04 / 2016 Sockets ΣΗΜΜΥ, 34358

listen() int listen(int sockfd, int backlog); Κάνει το sockfd κατάλληλο να δεχτεί συνδέσεις backlog: μήκος ουράς για εισερχόμενες συνδέσεις Παράδειγμα χρήσης #include <sys/typesh> #include <sys/socketh> if (listen(sd, 5)) < 0) { perror( listen ); exit(1); } 04 / 2016 Sockets ΣΗΜΜΥ, 34358

accept() int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); Αποδέχεται μια νέα εισερχόμενη σύνδεση στο sockfd Η διεύθυνση του συνδεδεμένου πελάτη γράφεται στον δείκτη addr Επιστρέφει νέο συνδεδεμένο socket, για επικοινωνία με τον πελάτη Παράδειγμα χρήσης #include <sys/typesh> #include <sys/socketh> clientfd = accept(sd, (struct sockaddr *)&client_addr, &len); if (clientfd < 0) { perror( accept ); exit(1); } 04 / 2016 Sockets ΣΗΜΜΥ, 34358

Χρήσιμα εργαλεία netstat ~$ netstat -nutap Proto Recv-Q Send-Q Local Address Foreign Address State P tcp 0 0 0000:17500 0000:* LISTEN 2 tcp 1 0 19216824:41655 1991271802:80 CLOSE_WAIT 1 tcp 1 0 19216824:44547 1991271802:80 CLOSE_WAIT 1 tcp 0 0 19216824:44710 14710231:143 ESTABLISHED 2 telnet ~$ telnet wwwcslabecentuagr 80 Trying 1471023233 Connected to geronimocslabecentuagr Escape character is ^] GET / <html> netcat (nc) ~$ nc -v -z wwwcslabecentuagr 80 Connection to wwwcslabecentuagr 80 port [tcp/http] succeeded! 04 / 2016 Sockets ΣΗΜΜΥ, 34358

Επόμενα βήματα Σας δίνονται απλά παραδείγματα TCP/IP server και client Μελέτη των manpages, man 2 select Προσοχή στους δείκτες :) 04 / 2016 Sockets ΣΗΜΜΥ, 34358

Βιβλιογραφία UNIX Network Programming, Vol 1: The Sockets Networking API (3rd Edition), by W Richard Stevens, Bill Fenner, Andrew M Rudoff (2003) TCP/IP Illustrated, Volume 1: The Protocols (2nd Edition), by Kevin R Fall, W Richard Stevens (2011) The Linux Programming Interface, by Michael Kerrisk (2010) 04 / 2016 Sockets ΣΗΜΜΥ, 34358

Ερωτήσεις; Λίστα μαθήματος: os-lab@listscslabecentuagr 04 / 2016 Sockets ΣΗΜΜΥ, 34358