Επικοινωνία Διεργασιών στο Internet με POSIX Sockets
|
|
- Ενυώ Βαμβακάς
- 7 χρόνια πριν
- Προβολές:
Transcript
1 Επικοινωνία Διεργασιών στο Internet με POSIX Sockets ΣΤ Εξάμηνο, Κατεύθυνση Μηχανικών Δικτύων Τ.Ε. Τμήμα Μηχανικών Πληροφορικής Τ.Ε. ΤΕΙ Στερεάς Ελλάδας 2016
2 Δήλωση Οι διαφάνειες βασίζονται στα βιβλία: (1) Δικτυακός, Douglas E. Comer, David L. Stevens, Εκδόσεις ΙΩΝ, 2005 (2) Unix Network Programming, W. Richard Stevens, Prentice-Hall,
3 Δήλωση (συνέχεια) Για τη δημιουργία των διαφανειών χρησιμοποιήθηκε υλικό των μαθημάτων: (1) Κατανεμημένα Συστήματα, Σπύρος Λάλης & Αλέξανδρος Καρυπίδης, ΤΜΗΥΤΔ, Πανεπιστήμιο Θεσσαλίας (2) Εργαστήριο Δικτύων Υπολογιστών, Ε. Βαρβαρίγος & Κ. Βλάχος, ΤΜΗΥΠ, Πανεπιστήμιο Πατρών 2016
4 Στόχοι της ενότητας Η παρουσίαση αρχιτεκτονικών επικοινωνίας διεργασιών σε διαδίκτυο Η παρουσίαση του ΑΡΙ των υποδοχών (POSIX sockets API) για τον προγραμματισμό δικτυακών εφαρμογών Η παρουσίαση βημάτων για την ανάπτυξη πελατών και εξυπηρετητών με χρήση των πρωτοκόλλων TCP και UDP 4
5 Υποδοχές (Sockets) Προγραμματιστική διεπαφή η οποία: παρέχει συναρτήσεις για δημιουργία/καταστροφή υποδοχών. Η υποδοχή θεωρείται το τελικό σημείο (endpoint) της επικοινωνίας σε ένα δίκτυο παρέχει συναρτήσεις για την αίτηση σύνδεσης και την αποδοχή σύνδεσης υποδοχών Παρέχει συναρτήσεις για την αποστολή και λήψη δεδομένων μέσω των υποδοχών Επιχειρεί να αποκρύψει τις λεπτομέρειες της μεταφοράς δεδομένων μέσω του δικτύου 5
6 Υποδοχές 6
7 Υποδοχές και θύρες (ports) 7
8 Υποδοχές και πολύπλεξη 8
9 Επικοινωνία ροής / datagram Επικοινωνία ροής (SOCK_STREAM): αξιόπιστη, με «σύνδεση» (connection oriented) πρωτόκολλο μεταφοράς: TCP Επικοινωνία datagram (SOCK_DGRAM): χωρίς σύνδεση (connectionless) πρωτόκολλο μεταφοράς: UDP (μη αξιόπιστη μεταφορά) χρησιμοποιείται συνήθως σε εφαρμογές που λειτουργούν σε τοπικό δίκτυο ή απαιτούν υψηλές ταχύτητες μετάδοσης χωρίς ανάγκη απόλυτης αξιοπιστίας η όποια αξιοπιστία απαιτείται, επαφίεται στην εφαρμογή 9
10 TCP: Παροχή Αξιόπιστης Υπηρεσίας στις Εφαρμογές Υπηρεσία με Σύνδεση (Connection- Oriented Service) ή Επικοινωνία Ροής (Stream) 2016
11 Κλήσεις συστήματος για εφαρμογή πελάτη εξυπηρετητή στο TCP 11
12 Σύνοψη λειτουργιών και κλήσεων συστήματος 12
13 Κλήσεις συστήματος για εφαρμογή πελάτη-εξυπηρετητή TCP Εξυπηρετητής: δημιουργία υποδοχής (socket()) δέσμευση σε διεύθυνση (bind()) προσδιορισμός μεγέθους ουράς (listen()) αναμονή για σύνδεση (accept()) μεταφορά δεδομένων (read(), write()) Πελάτης: δημιουργία υποδοχής (socket()) σύνδεση με τον εξυπηρετητή (connect()) μεταφορά δεδομένων (write(), read()) 13
14 Η αντίληψη των υποδοχών από τα προγράμματα 14
15 Υλοποίηση Πελάτη TCP 2016
16 Πελάτης TCP Βήματα πελάτη για τη σύνδεση: δημιουργεί μια υποδοχή (ή τελικό σημείο - endpoint) Προαιρετικά: δεσμεύει την υποδοχή στην επιθυμητή τοπική δικτυακή διεύθυνση Συνήθως υπάρχει μόνο μια κάρτα δικτύου / διεύθυνση Γενικά το ΛΣ μπορεί να επιλέγει αυτόματα Υπάρχουν περιπτώσεις που απαιτείται (firewalls) ζητά από το ΛΣ να συνδέσει την υποδοχή με κάποια υποδοχή στη διεύθυνση αποδέκτη (τη διεύθυνση αποδέκτη την παρέχει ο πελάτης) 16
17 Δομές για Ονόματα και Διευθύνσεις IPv4 και IPv6 2016
18 Δομές για την αποθήκευση τελικού σημείου στο Internet IPv4 struct sockaddr { unsigned short sa_family; // address family char sa_data[14]; // 14 bytes of protocol address }; sa_family: AF_INET (IPv4) ή AF_INET6 (IPv6) sa_data: περιέχει τη διεύθυνση και τη θύρα προορισμού 18
19 Δομές για την αποθήκευση τελικού σημείου στο Internet ΙPv4 struct sockaddr_in {//struct to hold an address }; u_short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; sin_family: sa_family // type of address // protocol port number // IPv4 address // unused (set to zero) sin_port: ο αριθμός θύρας σε network byte order (δες παρακάτω) sin_addr: η διεύθυνση ΙΡv4 του τελικού σημείου sin_zero: πρέπει να είναι 0 (με τη συνάρτηση memset()) 19
20 Δομές για την αποθήκευση τελικού σημείου στο Internet ΙPv4 struct in_addr { // IPv4 Internet address }; uint32_t s_addr; // Α 32-bit int (4 bytes) Το πεδίο της δομής sockaddr_in που περιέχει τη διεύθυνση ΙΡ είναι τύπου in_addr. Άρα, αν σε ένα πρόγραμμα υπάρχει η ακόλουθη δήλωση: struct sockaddr_in address; Μπορούμε να αναφερθούμε στην ΙΡv4 διεύθυνση με τον παρακάτω τρόπο: address.sin_addr.s_addr /* διεύθυνση IPv4 σε Network Byte Order */ 20
21 Δομές για την αποθήκευση τελικού σημείου στο Internet ΙPv6 // (IPv6 only) struct sockaddr_in6 { }; u_int16_t sin6_family; // address family, AF_INET6 u_int16_t sin6_port; Byte Order u_int32_t sin6_flowinfo; information // port number, Network 21 // IPv6 flow struct in6_addr sin6_addr; // IPv6 address u_int32_t sin6_scope_id; struct in6_addr { }; // Scope ID unsigned char s6_addr[16]; // IPv6 address
22 Δομές για την αποθήκευση τελικού σημείου στο Internet ΙPv6 Υπάρχουν κλήσεις για τις οποίες δεν γνωρίζουμε εκ των προτέρων αν επιστρέφουν διευθύνσεις IPv4 ή IPv6 Σε αυτές τις κλήσεις περνάμε τη δομή struct sockaddr_storage που είναι αρκετά μεγάλη ώστε να χωράει τόσο δομές IPv4 όσο και IPv6 Η δομή αυτή είναι παρόμοια με τη struct sockadrr αλλά μεγαλύτερη 22
23 Δομές για την αποθήκευση τελικού σημείου στο Internet ΙPv4 και 6 struct sockaddr_storage { sa_family_t ss_family; // address family /* all this is padding, implementation specific, ignore it: */ }; char ss_pad1[_ss_pad1size]; int64_t ss_align; char ss_pad2[_ss_pad2size]; Τρόπος χρήσης: ελέγχουμε το πεδίο ss_family (αν είναι AF_INET ή AF_INET6) και ανάλογα μετατρέπουμε (type cast) αυτή τη δομή σε struct sockaddr_in ή struct sockaddr_in6 23
24 Δομή δεδομένων για τήρηση διευθύνσεων ΙΡ IPv4 sockaddr_in length AF_INET αριθμός θύρας (16bit) διεύθυνση ΙΡ (32 bit) IPv6 sockaddr_in6 length AF_INET6 αριθμός θύρας (16bit) ετικέτα ροής (32 bit) (unused) διεύθυνση ΙΡv6 (128 bit) μέγεθος: 16 bytes 24 μέγεθος: 24 bytes
25 Δομή για την αποθήκευση τελικού σημείου στο Internet ΙPv6 struct addrinfo { }; int ai_flags; // AI_PASSIVE, AI_CANONNAME, etc. int ai_family;// AF_INET, AF_INET6, AF_UNSPEC int ai_socktype; // SOCK_STREAM, SOCK_DGRAM int ai_protocol; // use 0 for "any«size_t ai_addrlen;// size of ai_addr in bytes struct sockaddr *ai_addr;// sockaddr_in or _in6 char *ai_canonname; // full canonical hostname struct addrinfo *ai_next;//linked list, next node 25
26 Δομή για την αποθήκευση τελικού σημείου στο Internet ΙPv6 Μπορείτε να εξαναγκάσετε να χρησιμοποιήσει IPv4 ή IPv6 στο πεδίο ai_family, ή να το αφήσετε AF_UNSPEC Ο κώδικάς σας έτσι είναι IP version-agnostic Η δομή αυτή είναι μια συνδεδεμένη λίστα: το ai_next δείχνει στο επόμενο στοιχείο (μπορεί να υπάρχουν πολλά αποτελέσματα και να χρειάζεται κανείς να διαλέξει) 26
27 Κλήσεις Συστήματος Υποδοχών 2016
28 Δημιουργία υποδοχής int socket ( family, type, protocol ); family int type int protocol int Οικογένεια πρωτοκόλλων ή διευθύνσεων (PF_INET για TCP/IP) Τύπος υπηρεσίας (SOCK_STREAM για TCP ή SOCK_DGRAM για UDP) Αριθμός πρωτοκόλλου που θα χρησιμοποιηθεί ή 0 για χρήση του καθορισμένου πρωτοκόλλου για συγκεκριμένο family και type 28
29 Δημιουργία υποδοχής TCP int main(int argc, char *argv[]) { int sock, ret; sock = socket (PF_INET, SOCK_STREAM, 0); if (sock == -1) { // error check perror ("Failed to create socket"); return -1; } } PF_INET: Protocol Family Internet, SOCK_STREAM: Υποδοχή TCP. Επιστρέφει έναν ακέραιο (sock) που είναι ο περιγραφέας της υποδοχής (socket descriptor) 29
30 BSD Socket Πρόκειται για Δομή δεδομένων σε kernel space 30
31 Σύνδεση με τον εξυπηρετητή Ι int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen); sockfd int serv_addr &sock_addr addrlen int Ο τοπικός περιγραφέας υποδοχής που θα συνδεθεί Η διεύθυνση τελικού σημείου του εξυπηρετητή με την οποία θα συνδεθεί ο περιγραφέας Το μέγεθος (σε bytes) της διεύθυνσης 31
32 Σύνδεση με τον εξυπηρετητή ΙΙ struct sockaddr_in address; address.sin_family = AF_INET; address.sin_addr.s_addr = htonl(inaddr_loopback); address.sin_port = htons(15000); ret = connect (sock, (struct sockaddr *) &address, sizeof(address)); Σύνδεση με τη διεργασία εξυπηρετητή που βρίσκεται στη διεύθυνση address 32
33 Δημιουργία σύνδεσης (κλήσεις συστήματος) socket() connect() (μπλοκάρει) client server socket(), bind(), listen(), accept() (μπλοκάρει) επιστρέφει η connect() αποστολή αίτησης χρόνος 33 χρόνος επιστρέφει η accept() ανάγνωση δεδομένων αποστολή απόκρισης
34 Κλήσεις Συστήματος για Ονόματα και Διευθύνσεις IPv4 και IPv6 2016
35 Πως βρίσκουμε τη διεύθυνση ΙΡv4 του εξυπηρετητή; struct hostent { }; char *h_name; /* Official name of host.*/ char **h_aliases; /* Alias list. */ int h_addrtype; /* Host address type. */ int h_length; /* Length of address. */ char **h_addr_list; /* List of addresses from name server. */ # define h_addr h_addr_list[0]; #include <netdb.h> struct hostent *gethostbyname(const char *hostname); 35
36 Η δομή hostent 36
37 Ανάλυση (resolve) ενός ονόματος με τη gethostbyname() I struct hostent *phe; /* pointer to host information entry (IPv4 only) */ char *host; struct sockaddr_in address; if ( phe = gethostbyname(host) ) memcpy(&address.sin_addr, phe->h_addr, phe-> h_length); else if ( (sin.sin_addr.s_addr = inet_addr(host)) == INADDR_NONE ) errexit("can't get \"%s\" host entry\n", host); 37
38 Ανάλυση (resolve) ενός ονόματος με τη gethostbyname() II struct hostent *hptr; struct sockaddr_in peeraddr; char *examplenam = "merlin.cs.purdue.edu"; (ή char *examplenam = argv[1];) if (hptr = gethostbyname (examplenam )) { /* IP address is now in hptr ->h_addr */ } else { /* error in name - handle it */ } peeraddr.sin_family = AF_INET; peeraddr.sin_addr.s_addr = ((struct in_addr *) (hptr->h_addr))->s_addr; 38
39 Πως βρίσκουμε τον αριθμό θύρας που ακούει ο εξυπηρετητής; struct servent { }; char *s_name; /*official service name */ char **s_aliases; /*other aliases */ int s_port; /*port for this service */ char *s_proto; /*protocol to use */ όπου: s_name το επίσημο όνομα της υπηρεσίας (π.χ. daytime), s_port ο αριθμός θύρας για την υπηρεσία στη διάταξη των bytes στο δίκτυο (δες παρακάτω) και s_proto το όνομα του πρωτοκόλλου που θα χρησιμοποιηθεί για αυτή την υπηρεσία 39
40 Αναζήτηση προκαθορισμένης θύρας #include <netdb.h> struct servent *getservbyname(const char *servname, const char *protoname); #include <netdb.h> struct servent *getservbyport(int port, const char *protoname); 40
41 Αναζήτηση προκαθορισμένης θύρας με τη getservbyname() I struct servent *sptr; if (sptr = getservbyname ("smtp","tcp" )) { /* port number is now in sptr ->s_port */ } else { /* error occurred - handle it */ } peeraddr.sin_port = sptr->s_port; Η χρήση συναρτήσεων όπως οι παραπάνω, οδηγεί σε μεγαλύτερη μεταφερσιμότητα, λειτουργικότητα και γενικότητα στην πλευρά του πελάτη, αφού είναι εφικτό το πέρασμα παραμέτρων. Λειτουργούν μόνο για IPv4 41
42 Αναζήτηση προκαθορισμένης θύρας με τη getservbyname() II struct servent *pse; /* pointer to service information entry */ char *service, *transport; struct sockaddr_in address; if ( pse = getservbyname(service, transport) ) address.sin_port = pse->s_port; else if ((sin.sin_port = htons((unsigned short)atoi(service))) == 0) errexit("can't get \"%s\" service entry\n", service); 42
43 Δημιουργία τελικού σημείου με την getaddrinfo() I #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> int getaddrinfo( const char *node,// e.g. " or IP const char *service, // e.g. "http" or port number const struct addrinfo *hints, struct addrinfo **res ); 43
44 Δημιουργία τελικού σημείου με την getaddrinfo() IΙ Η getaddrinfo() παίρνει τρεις παραμέτρους: την παράμετρο node, που είναι το όνομα του ΥΣ ή μια διεύθυνση ΙΡ την παράμετρο service, που είναι το όνομα μιας υπηρεσίας (σύμφωνα με την ΙΑΝΑ) ή ο αριθμός θύρας της υπηρεσίας την παράμετρο hints, που «δείχνει» σε ένα struct addrinfo που έχετε ήδη γεμίσει με τις απαραίτητες πληροφορίες 44
45 Παράδειγμα κλήσης της getaddrinfo() int status; struct addrinfo hints; struct addrinfo *servinfo; /* will point to the results */ memset(&hints, 0, sizeof hints); /* make sure the struct is empty */ hints.ai_family = AF_UNSPEC;// don't care IPv4 or IPv6 hints.ai_socktype = SOCK_STREAM; // TCP stream sockets // get ready to connect status = getaddrinfo(" "3490", &hints, &servinfo); /* servinfo now points to a linked list of 1 or more struct addrinfos */ 45
46 Μετατροπή μεταξύ διαφόρων μορφών διευθύνσεων IPv4 Ι #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> char *inet_ntoa(struct in_addr in); int inet_aton(const char *cp, struct in_addr *inp); in_addr_t inet_addr(const char *cp); 46
47 Μετατροπή μεταξύ διαφόρων μορφών διευθύνσεων IPv4 ΙΙ Οι συναρτήσεις αυτές μετατρέπουν από struct in_addr σε δεκαδικό συμβολισμό με τελείες (inet_ntoa) και αντίστροφα (inet_aton) n = network, a = ASCII (για ιστορικούς λόγους). Οι λειτουργίες και τα ορίσματα είναι προφανή Η συνάρτηση inet_addr() είναι παλαιότερη και κάνει ότι και η inet_aton() Οι συναρτήσεις αυτές έχουν αντικατασταθεί από τις inet_pton() και inet_ntop() 47
48 Μετατροπή μεταξύ διαφόρων μορφών διευθύνσεων IPv6 Ι #include <arpa/inet.h> const char *inet_ntop(int af, const void *src, char *dst, socklen_t size); int inet_pton(int af, const char *src, void *dst); n = network, p = presentation ή printable Και οι δύο παίρνουν την οικογένεια διευθύνσεων στην παράμετρο af (AF_INET ή AF_INET6) Στην inet_ntop() η παράμετρος src θα πρέπει να είναι ένα δείκτης είτε σε struct in_addr ή σε struct in6_addr που θα περιέχουν τη διεύθυνση που πρέπει να μετατραπεί σε συμβολοσειρά 48
49 Αναπαράσταση διευθύνσεων IPv6 Στην inet_pton() η παράμετρος src είναι μια συμβολοσειρά που περιέχει τη διεύθυνση ΙΡ σε εκτυπώσιμη μορφή Η παράμετρος dst δείχνει που θα αποθηκευθεί το αποτέλεσμα, που θα είναι struct in_addr ή struct in6_addr Προφανώς και στις δύο συναρτήσεις χρειάζεται κατάλληλη μετατροπή τύπων όπου η παράμετρος είναι τύπου void * 49
50 Διάταξη των bytes στο Δίκτυο (Network byte Ordering) 2016
51 Μορφή big-endian και little-endian Οι μορφές αυτές περιγράφουν τη διάταξη των bytes (byte order) στη μνήμη του υπολογιστή αλλά κατά τη μετάδοση πάνω από κύκλωμα Τα bytes μπορεί να αναπαρίστανται στη μνήμη με μορφή big-endian ή little-endian Στη μορφή big-endian το πιο σημαντικό byte μιας «λέξης» αποθηκεύεται σε μια θέση μνήμης και τα ακόλουθα στις επόμενες μεγαλύτερες θέσεις μνήμης 51
52 Μορφή big-endian και little-endian Στη μορφή little-endian αντιστρέφεται η σειρά και αποθηκεύεται το λιγότερο σημαντικό byte στη χαμηλότερη θέση μνήμης ενώ το πιο σημαντικό byte αποθηκεύεται στη μεγαλύτερη θέση μνήμης Γιατί όμως μας απασχολεί κάτι τέτοιο; 52
53 Little endian vs big endian Έστω η ανάθεση: int a = 1 και έστω ότι sizeof(int) = 2 bytes περισσότερο σημαντικό byte λιγότερο σημαντικό byte
54 Little endian vs big endian int a=1; Λιγότερο σημαντικό byte Περισσότερο σημαντικό byte little endian int a=1; big endian
55 Μορφή big-endian και little-endian Η μεταβλητή x με τιμή 0x θα αποθηκευθεί όπως φαίνεται παρακάτω: 55
56 Διάταξη των bytes στο δίκτυο Υποθέστε ότι γράφετε ακεραίους σε ένα αρχείο σε ένα υπολογιστικό σύστημα (ΥΣ) little endian και στη συνέχεια μεταφέρετε αυτό το αρχείο σε ένα ΥΣ big endian Αν δεν υπάρχει μετασχηματισμός από little endian σε big endian, το ΥΣ που λειτουργεί με big endian θα διαβάσει διαφορετικούς ακεραίους από το αρχείο! 56
57 Διάταξη των bytes στο δίκτυο και το υπολογιστικό σύστημα Το TCP/IP αναπαριστά τους ακέραιους που χρησιμοποιούνται στις επικεφαλίδες των πρωτοκόλλων με πρώτο το πιο σημαντικό byte (network byte order) Δηλαδή, τα πεδία περιγράφονται από αριστερά προς τα δεξιά, με το πιο σημαντικό byte αριστερά, και το λιγότερο σημαντικό byte δεξιά H χρήση κατάλληλων ρουτινών μετατροπής κάνει τον κώδικα μεταφέρσιμο (ανεξάρτητα από τη διάταξη των bytes στο τοπικό ΥΣ) 57
58 Επεξεργαστές και αναπαράσταση Οι Intel-based επεξεργαστές είναι little endians. Οι επεξεργαστές ARM ήταν little endians Η τρέχουσα γενιά επεξεργαστών ARM είναι bi-endian Οι επεξεργαστές Motorola 68K είναι big endians. Οι επεξεργαστές PowerPC (από τη Motorola) και οι SPARK (από τη Sun) είναι big endian Οι τρέχουσες εκδόσεις αυτών των επεξεργαστών είναι bi-endians 58
59 Διάταξη των bytes στο δίκτυο και το υπολογιστικό σύστημα #include <netinet.h> uint16_t htons(uint16_t hostshort) Μετατροπή από τη διάταξη των bytes στο ΥΣ (h: host) στη διάταξη των bytes του δικτύου (n: network) για μικρούς ακεραίους (s: short int 16 bit). Αντίστοιχα, οι παρακάτω συναρτήσεις κάνουν μετατροπές για s και l (l: int 32 bit) uint32_t htonl(uint32_t hostlong) uint16_t ntohs(uint16_t netshort) uint32_t ntohl(uint32_t netlong) 59
60 Παράδειγμα κώδικα πελάτη TCP I #include<stdio.h> #include<string.h> //strlen #include<sys/socket.h> #include<arpa/inet.h> //inet_addr int main(int argc, char *argv[]) { int socket_desc; struct sockaddr_in server; 60
61 Παράδειγμα κώδικα πελάτη TCP II char *message, server_reply[2000]; //Create socket socket_desc = socket(af_inet, SOCK_STREAM, 0); if (socket_desc == -1) { } printf("could not create socket"); 61
62 Παράδειγμα κώδικα πελάτη TCP III server.sin_addr.s_addr = inet_addr(" "); server.sin_family = AF_INET; server.sin_port = htons( 80 ); //Connect to remote server if (connect(socket_desc, (struct sockaddr *)&server, sizeof(server)) < 0) { puts("connect error"); return 1; } 62
63 Παράδειγμα κώδικα πελάτη TCP IV puts("connected\n"); //Send some data message = "GET / HTTP/1.1\r\n\r\n"; if( send(socket_desc, message, strlen(message), 0) < 0) { } puts("send failed"); return 1; 63
64 Παράδειγμα κώδικα πελάτη TCP V puts("data Send\n"); //Receive a reply from the server if( recv(socket_desc, server_reply, 2000, 0) < 0) { } } puts("recv failed"); puts("reply received\n"); puts(server_reply); return 0; 64
65 Υλοποίηση Εξυπηρετητή TCP 2016
66 Εξυπηρετητής TCP Βήματα εξυπηρετητή για τη σύνδεση: δημιουργεί μια υποδοχή δεσμεύει την υποδοχή στην επιθυμητή τοπική δικτυακή διεύθυνση τελικού σημείου ζητά από το ΛΣ να ακούει για συνδέσεις εισέρχεται σε κατάσταση όπου αναμένει διαρκώς (σύγχρονα ή ασύγχρονα) να του παραδώσει μια σύνδεση το ΛΣ 66
67 Δημιουργία υποδοχής TCP int main(int argc, char *argv[]) { int serversocket; serversocket = socket (PF_INET, SOCK_STREAM, 0); if (serversocket == -1) { // error check perror ("Failed to create socket"); return -1; } } PF_INET: Protocol Family Internet, SOCK_STREAM: Υποδοχή TCP 67
68 Δέσμευση της υποδοχής σε τελικό σημείο Πρέπει να ορίσουμε τη διεύθυνση στην οποία θα αναμένουμε συνδέσεις Στο TCP/IP το ουσιαστικό ζητούμενο είναι η δημιουργία τελικού σημείου επικοινωνίας (endpoint) που αποτελείται από διεύθυνση ΙΡ και αριθμό θύρας πρωτοκόλλου Οι πελάτες πρέπει να γνωρίζουν τη διεύθυνση αυτή για να μπορέσουν να συνδεθούν Το ΛΣ δεν επιτρέπει σε άλλο πρόγραμμα να δεσμεύσει τη διεύθυνση αυτή 68
69 Διεύθυνση αναμονής σύνδεσης struct sockaddr_in address; address.sin_family = AF_INET; address.sin_addr.s_addr = htonl (INADDR_ANY); address.sin_port = htons (15000); Δημιουργία Τελικού Σημείου Εξυπηρετητή sin_family: πρέπει να είναι αντίστοιχο του socket family sin_addr: ακέραιος 32bit. Αντιστοιχεί σε ένα μοναδικό μηχάνημα sin_port: ακέραιος 16bit. Αντιστοιχεί σε ένα μοναδικό πρόγραμμα στον εξυπηρετητή 69
70 Δέσμευση υποδοχής στη διεύθυνση αναμονής (bind()) int bind ( socket, localaddr, addrlen ); socket int localaddr &sockaddr addrlen int Περιγραφέας υποδοχής που δημιουργείται από τη socket() Η διεύθυνση μιας δομής που προσδιορίζει μια διεύθυνση IP και τον αριθμό θύρας πρωτοκόλλου Μέγεθος του δεύτερου ορίσματος σε bytes 70
71 bind() ret = bind (serversocket, (struct sockaddr *) &address, sizeof (address)); if (ret == -1) { // error check } perror ("Failed to bind socket"); return -1; Δέσμευση Υποδοχής σε Τοπική Διεύθυνση 71
72 Τοποθέτηση σε παθητική κατάσταση int listen( socket, queuelen ); socket int Ένας περιγραφέας υποδοχής που έχει δημιουργηθεί από την κλήση socket() queuelen int Το μέγεθος της ουράς των εισερχόμενων αιτήσεων σύνδεσης (εξ ορισμού 5) 72
73 listen() ret = listen (serversocket, 10); if (ret == -1) { // error check } perror ("Failed to start listening on socket"); return -1; Τοποθέτηση υποδοχής εξυπηρετητή σε παθητική κατάσταση (δηλ. κατάσταση αναμονής αιτήσεων μέσω της υποδοχής, με μέγιστο μέγεθος ουράς 10 αιτήσεις) 73
74 Αποδοχή αίτησης για σύνδεση: accept() I int accept( int s, struct sockaddr *addr, socklen_t *addrlen ); Η accept() δέχεται ως ορίσματα: την υποδοχή που αναμένει για αιτήσεις σύνδεσης μια δομή διεύθυνσης που συμπληρώνει με τα στοιχεία του πελάτη τη διεύθυνση ακεραίου (socklen_t) που: αρχικά έχει το μέγεθος της δομής διεύθυνσης στην επιστροφή έχει το μέγεθος που χρησιμοποιήθηκε 74
75 Αποδοχή αίτησης για σύνδεση: accept() II int accept(int s, struct sockaddr *addr, socklen_t *addrlen); Επιστρέφει μια νέα υποδοχή! Η αρχική συνεχίζει να χρησιμοποιείται για την αναμονή αιτήσεων και τη δημιουργία συνδέσεων Η νέα χρησιμοποιείται για την ανταλλαγή δεδομένων για τη συγκεκριμένη σύνδεση 75
76 Ενημέρωση για τη διεύθυνση του αποστολέα struct sockaddr_in remoteaddress; int addresslength, clientsocket; addresslength = sizeof (remoteaddress); clientsocket = accept (serversocket, (struct sockaddr *) &remoteaddress, &addresslength); if (clientsocket == -1) { // error check perror ("Error while accepting connection"); return -1; } printf ("Connection has been established\n"); Παραδίδεται η πρώτη αίτηση σύνδεσης από την ουρά. Η δομή remoteaddress και η addresslength περιέχουν τη διεύθυνση τελικού σημείου του πελάτη 76
77 Αποδοχή αίτησης για σύνδεση: accept() ΙII Από την στιγμή που η accept() επιστρέφει τη νέα υποδοχή, η σύνδεση µε τον πελάτη έχει εγκατασταθεί Μέχρι να ξανακληθεί η accept(), o εξυπηρετητής δεν ικανοποιεί αιτήσεις Οι αιτήσεις που φτάνουν όσο ο εξυπηρετητής δεν βρίσκεται στην accept() τοποθετούνται σε μια ουρά (εξορισμού μεγέθους 5 μπορεί να αλλάξει µε την listen()) 77
78 Αποδοχή αίτησης για σύνδεση: accept() ΙV Ένας τρόπος επεξεργασίας της αίτησης είναι η δημιουργία διεργασιών ή νημάτων, που είναι παιδιά της αρχικής διεργασίας του εξυπηρετητή Με τον τρόπο αυτό ο πελάτης επικοινωνεί µε έναν «αφοσιωµένο» σε αυτόν τμήμα του εξυπηρετητή Ο «αρχικός» εξυπηρετητής επιστρέφει για να συνεχίσει να αναμένει για νέες αιτήσεις σύνδεσης (επιστροφή στην accept()) 78
79 Δημιουργία σύνδεσης (κλήσεις συστήματος) socket() connect() (μπλοκάρει) client server socket(), bind(), listen(), accept() (μπλοκάρει) επιστρέφει η connect() αποστολή αίτησης χρόνος 79 χρόνος επιστρέφει η accept() ανάγνωση αίτησης αποστολή απόκρισης
80 Αποστολή και Λήψη Δεδομένων σε Υποδοχές TCP 2016
81 Αποστολή και λήψη δεδομένων σε υποδοχές TCP Γίνεται όπως η ανάγνωση/εγγραφή σε αρχεία με χρήση των συναρτήσεων Ε/Ε: read()/write() Επίσης, μπορούν να χρησιμοποιηθούν οι συναρτήσεις: send()/recv() Η λειτουργικότητα είναι αντίστοιχη 81
82 Ενδιάμεση αποθήκευση (TCP Buffers) Το ΛΣ παρέχει μια περιοχή ενδιάμεσης αποθήκευσης (TCP buffer) Τα πακέτα, με την άφιξή τους τοποθετούνται στον TCP buffer Η read() παραδίδει τα δεδομένα στη διεργασία Ανάλογη λειτουργικότητα με την listen() και την ουρά εισερχόμενων συνδέσεων 82
83 send() / recv() count = send(sock, buf, buflen, flags) int count, sock, buflen, flags; char *buf; count = recv(sock, buf, buflen, flags) int count, sock, buflen, flags; char *buf; 83
84 Αξιόπιστη υπηρεσία Η send() μπλοκάρει αν ο παραλήπτης δεν μπορεί να λάβει τα δεδομένα με το ρυθμό που στέλνονται (έλεγχος ροής) Ο buffer του ΛΣ χρησιμοποιείται για την παράδοση των δεδομένων στην εφαρμογή με τη σειρά που εστάλησαν Ο buffer έχει κάθε φορά συγκεκριμένο παράθυρο λήψης (έλεγχος ροής) 84
85 Ανάγνωση από σύνδεση TCP Το TCP κατά την παραλαβή δε διατηρεί την ομαδοποίηση με την οποία εστάλησαν τα δεδομένα (πρωτόκολλο ροής χαρακτήρων) Κάθε πρόγραμμα που διαβάζει δεδομένα από μια σύνδεση TCP πρέπει να είναι έτοιμο να δεχθεί τα δεδομένα σε διαφορετικά τμήματα από αυτά που εστάλησαν Γενικά, το πλήθος των αναγνώσεων μπορεί να μην είναι ίσο με το πλήθος των εγγραφών 85
86 Κώδικας ανταλλαγής δεδομένων σε σύνδεση TCP I /* Example code segment */ #define BLEN 120 /*Buffer length to use*/ char *req = "request of some sort"; char buf [BLEN] ; /*Buffer for answer*/ char *bptr; /* Pointer to Buffer*/ int n; /*Number of bytes read*/ int buflen; /*space left in buffer*/ bptr = buf; buflen= BLEN; 86
87 Κώδικας ανταλλαγής δεδομένων σε σύνδεση TCP II /*Send request*/ send(s, req, strlen(req), 0); /*Read response (may come in many pieces)*/ while ((n=recv(s, bptr, buflen, 0)>0) { bptr += n; buflen-=n; } 87
88 Ανάγνωση με διακοπές Η ανάγνωση μπορεί να γίνεται με διακοπές: λόγω άφιξης σήματος επειδή η υποδοχή ορίστηκε O_NONBLOCK η μεταβλητή errno σε αυτή την περίπτωση λαμβάνει τιμή EINTR ή EAGAIN αντίστοιχα Ο κώδικας θα πρέπει να είναι γραμμένος έτσι ώστε να διαχωρίζει αυτές τις περιπτώσεις από περιπτώσεις λαθών 88
89 Τερματισμός σύνδεσης Όταν τα προγράμματα τελειώσουν την ανταλλαγή δεδομένων, πρέπει να τερματίζουν τη σύνδεση (απελευθέρωση περιγραφέα, δομών δεδομένων για την υποδοχή, buffer ΛΣ) Το ΛΣ: ενημερώνει με ειδικά πακέτα (FIN) το άλλο άκρο ώστε να γνωρίζει ότι πλέον η σύνδεση είναι άκυρη απελευθερώνει τους πόρους που υποστηρίζουν τη λειτουργία της σύνδεσης 89
90 close() int close(int sock); Ίδια ακριβώς χρήση και στα δυο άκρα Δεδομένα που έχει στείλει το άλλο πρόγραμμα πριν κλείσει τη σύνδεση, παραδίδονται από την ενδιάμεση αποθήκευση του ΛΣ Μετά από μια κλήση στην close() ο περιγραφέας υποδοχής αχρηστεύεται 90
91 Μερικός τερματισμός shutdown() int shutdown ( sock, direction ); Ο πελάτης δηλώνει ότι δε θα μεταφέρει δεδομένα (προς κάποια κατεύθυνση) και δεν αποδεσμεύει την υποδοχή Η εφαρμογή εξυπηρετητή λαμβάνει ένα σήμα end-of-file Ο εξυπηρετητής θα κλείσει τη σύνδεση μετά την τελευταία απόκριση Ιδιαίτερα χρήσιμο για πρωτόκολλα που ανταλλάσσουν αυθαίρετα μεγάλες ποσότητες δεδομένων 91
92 Επικοινωνία διεργασιών με χρήση UDP Υπηρεσία Χωρίς Σύνδεση (Connectionless Service) ή Επικοινωνία Δεδομενογραφημάτων (Datagram) 2016
93 Αλληλεπίδραση πελάτη εξυπηρετητή στο UDP 93
94 Σύνοψη λειτουργιών και κλήσεων συστήματος 94
95 Κλήσεις συστήματος για επικοινωνία υποδοχών UDP Εξυπηρετητής: δημιουργία τελικού σημείου (socket()) δέσμευση διεύθυνσης (bind(), όπως στο TCP) ανταλλαγή δεδομένων (sendto(), recvfrom()) Πελάτης: δημιουργία τελικού σημείου (socket()) ανταλλαγή δεδομένων (sendto(), recvfrom()) 95
96 Χαρακτηριστικά του UDP Χωρίς σύνδεση (datagram-based) πιθανή άφιξη των πακέτων με διαφορετική σειρά η παράδοση των δεδομένων στον παραλήπτη δεν είναι εγγυημένη Χωρίς έλεγχο ροής Αποθήκευση ολόκληρων πακέτων (δεν είναι εφικτή η ανάγνωση μέρους του πακέτου) Μέγιστο μέγεθος πακέτου τα 64ΚΒ (επικεφαλίδα + φορτίο (payload)) 96
97 Επικοινωνία χωρίς σύνδεση Μέσα από την ίδια υποδοχή UDP ένα πρόγραμμα μπορεί: να στείλει πακέτα σε οποιοδήποτε άλλο πρόγραμμα στο Internet να λάβει πακέτα από οποιοδήποτε άλλο πρόγραμμα στο Internet Συγκρίνετε με το TCP όπου: οι υποδοχές συνδέονται σε ζεύγη ανταλλαγή δεδομένων υπάρχει μόνο μεταξύ συνδεδεμένων ζευγών 97
98 Χώρος θυρών TCP και UDP Η επικεφαλίδα του ΙΡ περιέχει το πρωτόκολλο επιπέδου μεταφοράς για το οποίο προορίζεται ένα πακέτο Οι χώροι διευθύνσεων τελικού σημείου (θύρες) UDP και TCP είναι διαφορετικοί (μια υποδοχή TCP με αριθμό θύρας Χ μπορεί να συνυπάρχει στο ίδιο σύστημα με μια υποδοχή UDP με αριθμό θύρας Χ) Τα πακέτα TCP με αριθμό θύρας Χ θα παραδοθούν σε διαφορετική διεργασία από τα πακέτα UDP με αριθμό θύρας X 98
99 Δημιουργία πακέτων Σχηματισμός πακέτων: Στο TCP γίνεται από το ΛΣ διαδοχικές send() μπορεί να ενωθούν στο ίδιο πακέτο μεγάλες send() μπορεί να σπάσουν σε > 1 πακέτα Στο UDP ελέγχεται από τον προγραμματιστή κάθε sendto() μπαίνει σε ένα πακέτο κλήση στη sendto() με δεδομένα > 64K επιστρέφει λάθος 99
100 Ανάγνωση δεδομένων Ι Ο τρόπος δημιουργίας πακέτων επηρεάζει τον τρόπο ανάγνωσης δεδομένων: Στο TCP: η recv() λειτουργεί πάνω σε μια ροή (stream) εισερχόμενων bytes της ενδιάμεσης αποθήκευσης του ΛΣ, που δεν έχει καμιά σχέση με τη δημιουργία πακέτων 100
101 Ανάγνωση δεδομένων ΙΙ Στο UDP: κάθε recvfrom() παραλαμβάνει ακριβώς ένα πακέτο αν στην recvfrom() δεν υπάρχει αρκετός χώρος στο σημείο όπου τοποθετούνται τα εισερχόμενα δεδομένα, τα bytes του πακέτου αποκόπτονται 101
102 Δημιουργία υποδοχής UDP int main(int argc, char *argv[]) { int sock; sock = socket (PF_INET, SOCK_DGRAM, 0); if (sock == -1) { // error check perror ("Failed to create socket"); return -1; } } PF_INET: Protocol Family Internet, SOCK_DGRAM: Υποδοχή UDP. Επιστρέφει έναν ακέραιο (sock) που είναι ο περιγραφέας της υποδοχής (socket descriptor) 102
103 Αποστολή και λήψη δεδομένων int sendto(sock, buf, buflen, flags, to, tolen) int sock, buflen, flags, tolen; char *buf; struct sockaddr *to; int recvfrom(sock, buf, buflen, flags, from, fromlen) int sock, buflen, flags, *fromlen; char *buf; struct sockaddr *from; 103
104 sendto() sock int Ένας περιγραφέας υποδοχής buff &char Ένας δείκτης στο μήνυμα buflen int flags int Bits ελέγχου to Το μέγεθος του μηνύματος σε bytes &sockaddr Δείκτης στη δομή της διεύθυνσης tolen int Το μέγεθος της διεύθυνσης 104
105 recvfrom() sock int Ένας περιγραφέας υποδοχής buff &char Η προσωρινή μνήμη που θα μπει το μήνυμα buflen int Μέγεθος της προσωρινής μνήμης flags int Bits ελέγχου from &sockaddr Θα τοποθετηθεί η διεύθυνση του αποστολέα fromlen &int Επιστρέφει το μέγεθος του from 105
106 Παράδειγμα UDP time server struct sock_addr_in fsin; unsigned int alen; time_t now; while (1) { } alen = sizeof(fsin); if (recvfrom(sock, buf, sizeof(buf), 0, (struct sockaddr *)&fsin, &alen) < 0) errexit("recvfrom: %s\n", strerror(errno)); time(&now); now = htonl((unsigned long)(now + UNIXEPOCH)); sendto(sock, (char *)&now, sizeof(now), 0, (struct sockaddr *)&fsin, sizeof(fsin)); 106
107 connect() Εφόσον αποστέλλουμε συνεχώς σε συγκεκριμένο παραλήπτη μπορούμε να χρησιμοποιήσουμε την connect() Η connect() στο UDP δε δημιουργεί σύνδεση Για δική μας ευκολία, η υποδοχή έχει έναν προκαθορισμένο αποδέκτη (μπορεί πλέον να χρησιμοποιείται η send()) Μπορεί κανείς να στείλει και σε άλλους αποδέκτες καλώντας την sendto() αντί για την send() 107
108 Παράδειγμα int main(int argc, char *argv[]) { int sock, ret; struct sockaddr_in recvadr; recvadr.sin_family = AF_INET; inet_aton ( , &recvadr.sin_addr); recvadr.sin_port = htons (15000); connect (sock, &recvadr, sizeof (recvadr)); send (sock, data, DATASIZE, 0); send (sock, moredata, DATASIZE, 0); } Αφού χρησιμοποιηθεί η connect() δεν απαιτείται ο προσδιορισμός παραλήπτη στη send() 108
109 Προχωρημένα Θέματα Επικοινωνίας Διεργασιών 2016
110 Σήματα (Signals) Signal id default SIGKILL 9 Terminate SIGALRM 14 Terminate SIGSYS 12 Core SIGCHLD 20 Ignore 110
111 Σήματα Μπορούμε να καθορίσουμε επακριβώς την συμπεριφορά μίας διεργασίας, ύστερα από την λήψη ενός σήματος εκτέλεση μίας συνάρτησης (signal handler) καμία ενέργεια (SIG_IGN) προκαθορισμένη συμπεριφορά (SIG_DFL) Τα σήματα SIGKILL και SIGSTOP δεν μπορούν ούτε να αγνοηθούν ούτε να «πιαστούν» από μία συνάρτηση (signal handler) 111
112 Χειρισμός κλήσεων συστήματος που διακόπτονται Όταν μια κλήση συστήματος που μπλοκάρει (π.χ. accept()) διακοπεί από ένα σήμα, μετά την επιστροφή από το χειριστή σήματος η κλήση συστήματος θέτει τη μεταβλητή errno ίση με EINTR Ο πυρήνας δεν είναι βέβαιο ότι θα επανεκιννήσει την κλήση συστήματος Θα πρέπει ο προγραμματιστής να φροντίζει για την επανεκκίνηση της κλήσης συστήματος 112
113 Χειρισμός κλήσεων συστήματος που διακόπτονται for ( ; ; ) { clilen = sizeof(cliaddr); if ((connfd = accept(listenfd, (sockaddr *)&cliaddr, &clilen)) < 0) { } if (errno == EINTR) continue; else perror( accept error ); 113
114 Βιβλιογραφία BSD Sockets: cis307s96/readings/docs/sockets.html Socket Guide by GNU: manual/html_node/sockets.html#sockets Beej's Guide to Network Programming Using Internet Sockets: multipage/index.html οδηγός για το TCP/IP: 114
Δικτυακός Προγραμματισμός (Sockets Programming) Εργαστήριο Γ Εξάμηνο, Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας
Δικτυακός (Sockets Programming) Εργαστήριο Γ Εξάμηνο, Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας Δήλωση Οι διαφάνειες βασίζονται στα βιβλία: (1) Δικτυακός, Douglas E. Comer, David L. Stevens, Εκδόσεις ΙΩΝ,
Διαβάστε περισσότεραΖητήματα Σχεδίασης Λογισμικού Πελάτη
Ζητήματα Σχεδίασης Λογισμικού Πελάτη Διαδικτυακός και Ταυτόχρονος Προγραμματισμός 1 Αναγνώριση Τοποθεσίας Εξυπηρετητή Για την αναγνώριση της διεύθυνσης και της θύρας ενός εξυπηρετητή ο πελάτης μπορεί να
Διαβάστε περισσότεραΠρογραμματισμός με BSD Sockets σε περιβάλλον Linux
Προγραμματισμός με BSD Sockets σε περιβάλλον Linux Εργαστήριο Λειτουργικών Συστημάτων 8ο εξάμηνο, ΣΗΜΜΥ Εργαστήριο Υπολογιστικών Συστημάτων (CSLab) Απρίλιος 2016 Περίγραμμα παρουσίασης 1 Εισαγωγή 2 Δικτυακά
Διαβάστε περισσότεραΔίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals
Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals Δρ. Απόστολος Γκάμας Διδάσκων 407/80 gkamas@uop.gr Δίκτυα Επικοινωνιών ΙΙ Διαφάνεια 1 1 UDP vs TCP Το UDP είναι ένα connectionless, μη αξιόπιστο,
Διαβάστε περισσότεραΔίκτυα Επικοινωνιών ΙΙ: Network Programming TCP Sockets
Δίκτυα Επικοινωνιών ΙΙ: Network Programming TCP Sockets Δρ. Απόστολος Γκάμας Διδάσκων 407/80 gkamas@uop.gr Δίκτυα Επικοινωνιών ΙΙ Διαφάνεια 1 1 Δικτυακός Προγραμματισμός Βασικές Έννοιες: IP addresses,
Διαβάστε περισσότεραΕργαστήριο Δικτύων Υπολογιστών
Εργαστήριο Δικτύων Υπολογιστών 3 η Διάλεξη: Δικτυακός Προγραμματισμός Unix Socket programming Μοντέλο client-server O βασικός τύπος δικτυακών εφαρμογών είναι client - server H σχέση server και client μπορεί
Διαβάστε περισσότεραΥποδοχείς (Sockets) Προγραμματισμός II 1
Υποδοχείς (Sockets) Προγραμματισμός II 1 lalis@inf.uth.gr Υποδοχείς Ειδικές δομές διαδιεργασιακής επικοινωνίας Προσπελάζονται μέσω περιγραφέων αρχείων μπορεί να χρησιμοποιηθούν οι read, write, close μπορεί
Διαβάστε περισσότεραΚ. Στάµος Μηχανικός Η/Υ και Πληροφορικής, Πανεπιστήµιο Πατρών Μηχανικός Έρευνας και Ανάπτυξης, ΕΜ6/ΕΑΙΤΥ
σελίδα 1 Κ. Στάµος Μηχανικός Η/Υ και Πληροφορικής, Πανεπιστήµιο Πατρών Μηχανικός Έρευνας και Ανάπτυξης, ΕΜ6/ΕΑΙΤΥ Περιεχόµενα Αναφορά στις αλλαγές που επιφέρει το IPv6 στην ανάπτυξη δικτυακών εφαρµογών
Διαβάστε περισσότεραΠρογραµµατισµός ικτύων Ε-01
Προγραµµατισµός ικτύων Ε-01 4η ιάλεξη ιδάσκων: Νίκος Ντάρµος [http://www.cs.uoi.gr/~ntarmos/courses/networkprogramming/] Τµήµα Πληροφορικής Πανεπιστήµιο Ιωαννίνων Στο σηµερινό µάθηµα...
Διαβάστε περισσότεραΖητήματα Σχεδίασης Λογισμικού Εξυπηρετητή
Ζητήματα Σχεδίασης Λογισμικού Εξυπηρετητή Διαδικτυακός και Ταυτόχρονος Προγραμματισμός 1 Ταυτόχρονοι και Επαναληπτικοί Εξυπηρετητές Επαναληπτικός εξυπηρετητής: επεξεργάζεται μόνο μία αίτηση τη φορά. Ταυτόχρονος
Διαβάστε περισσότεραSocket Application Programming Interface
Socket Application Programming Interface Εισαγωγή Το socket είναι ένας τύπος διεπαφής μεταξύ των προγραμμάτων εφαρμογής και του λογισμικού πρωτοκόλλων Είναι ευρέως διαθέσιμο για να διασφαλίζεται η μεταφερσιμότητα
Διαβάστε περισσότεραΝτίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4
Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4 1 Διαχείριση εργασιών fork(), exit(), exec() (βλ 2 ο Φροντ.) Επικοινωνία διεργασιών signals (βλ 2 ο Φροντ.) sockets και client/server,
Διαβάστε περισσότεραΔικτυακός προγραμματισμός
Δικτυακός προγραμματισμός (hands on) Εργαστήριο Δικτύων Υπολογιστών 2014-2015 Τμήμα Μηχανικών Η/Υ και Πληροφορικής Μοντέλο client-server O βασικός τύπος δικτυακών εφαρμογών είναι client - server H σχέση
Διαβάστε περισσότερα4 η ιάλεξη: Signals UDP Sockets
Εργαστήριο ικτύων Υπολογιστών 4 η ιάλεξη: ικτυακός Προγραμματισμός Signals UDP Sockets TCP sockets και signals Όταν σε ένα TCP server κάνουμε fork (γεννάμε διεργασίες-παιδιά servers για να εξυπηρετήσουμε
Διαβάστε περισσότεραΕργαστήριο Λειτουργικών Συστήματων 8ο εξάμηνο, Ακαδημαϊκή περίοδος
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Εργαστήριο
Διαβάστε περισσότεραΛειτουργικά Συστήματα
Λειτουργικά Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:09 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών
Διαβάστε περισσότεραΕπικοινωνία Client/Server Υποδοχές
Επικοινωνία Client/Server Υποδοχές Χάρης Μανιφάβας Τμήμα Εφ. Πληροφορικής & Πολυμέσων ΤΕΙ Κρήτης Επικοινωνία με Υποδοχές 1 Ορισμός των Υποδοχών (sockets) Τα sockets προσφέρουν μια γενικευμένη ικανότητα
Διαβάστε περισσότερα{ int pipe(int fd[ ]) close
104 { { { { { { 105 pipe { int pipe(int fd[ ]) { fd[0] fd[1] {, -,,, write read { close { pipe 0-1 106 pipe /* File: pipe_demo.c */ #include /* For printf */ #define READ 0 /* Read end of pipe
Διαβάστε περισσότεραΕγχειρίδιο Συναρτήσεων. Socket *sopen(const int type, const int protocol, const char *host, const char *service)
Socket *sopen(const int type, const int protocol, const char *host, const char *service) Στην περίπτωση ενός client, δημιουργεί μια νέα σύνδεση και κατασκευάζει μια δομή Socket που σχετίζεται με αυτή Σε
Διαβάστε περισσότεραΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη
ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο 2012-2013 Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη Project 2012-2013 Υλοποίηση ενός chat server-client Παράδοση: 7/2/2013
Διαβάστε περισσότεραΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ
ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 1999-2000 ΜΑΘΗΜΑ : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ : Θ. ΑΠΟΣΤΟΛΟΠΟΥΛΟΣ ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΗΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ CLIENT-SERVER(πελάτη-εξυπηρετητή)
Διαβάστε περισσότεραΠρογραµµατισµός ικτύων Ε-01
Προγραµµατισµός ικτύων Ε-01 3η ιάλεξη ιδάσκων: Νίκος Ντάρµος [http://www.cs.uoi.gr/~ntarmos/courses/networkprogramming/] Τµήµα Πληροφορικής Πανεπιστήµιο Ιωαννίνων Στο σηµερινό µάθηµα...
Διαβάστε περισσότεραΕπίπεδο Μεταφοράς. (ανεβαίνουμε προς τα πάνω) Εργαστήριο Δικτύων Υπολογιστών Τμήμα Μηχανικών Η/Υ και Πληροφορικής
Επίπεδο Μεταφοράς (ανεβαίνουμε προς τα πάνω) Εργαστήριο Δικτύων Υπολογιστών 2014-2015 Τμήμα Μηχανικών Η/Υ και Πληροφορικής Επίπεδο Μεταφοράς(Transport layer) Επίπεδο εφαρμογής (Application layer): Συντονισμός
Διαβάστε περισσότεραΕιδικά Θέματα Προγραμματισμού
Ειδικά Θέματα Προγραμματισμού Ενότητα 11: Sockets Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό
Διαβάστε περισσότεραΗ Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα
Η Υλοποίηση της Επικοινωνίας στα Κατανεµηµένα Συστήµατα ιαφάνειες στα πλαίσια του µαθήµατος: Κατανεµηµένα Συστήµατα Ε Εξάµηνο, Τµήµα Πληροφορικής και Τεχνολογίας Υπολογιστών, ΤΕΙ Λαµίας Πέτρος Λάµψας 2002
Διαβάστε περισσότεραΕισαγωγή Επανάληψη. ΤΕΙ Στερεάς Ελλάδας. ΣT Εξάμηνο, Κατεύθυνση Μηχανικών Δικτύων Τ.Ε. Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Διαδικτυακός Προγραμματισμός
Εισαγωγή Επανάληψη ΣT Εξάμηνο, Κατεύθυνση Μηχανικών Δικτύων Τ.Ε. Τμήμα Μηχανικών Πληροφορικής Τ.Ε. ΤΕΙ Στερεάς Ελλάδας Δήλωση Οι διαφάνειες βασίζονται στα βιβλία: (1) Computer Networking: A Top Down Approach
Διαβάστε περισσότεραΚεφάλαιο 7.3. Πρωτόκολλο TCP
Κεφάλαιο 7.3 Πρωτόκολλο TCP Πρωτόκολλο TCP Το πρωτόκολλο Ελέγχου Μετάδοσης (Transmission Control Protocol, TCP) είναι το βασικό πρωτόκολο του Επιπέδου Μεταφοράς του μοντέλου TCP/IP. Παρέχει υπηρεσίες προσανατολισμένες
Διαβάστε περισσότεραΔιαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1
Διαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1 lalis@inf.uth.gr Συνεργασία ανάμεσα σε διεργασίες Για ασφάλεια/ανεξαρτησία, το ΛΣ εξασφαλίζει πλήρη απομόνωση ανάμεσα στις
Διαβάστε περισσότεραΠρωτόκολλα Διαδικτύου
Πρωτόκολλα Διαδικτύου Μέρος 1ο Επικοινωνίες Δεδομένων Μάθημα 3 ο Εισαγωγή στην Τεχνολογία TCP/IP To TCP/IP σημαίνει Transmission Control Protocol / Internet Protocol και θα μπορούσε να θεωρηθεί ότι πρόκειται
Διαβάστε περισσότεραHY-335a Project: microtcp *, μία lightweight TCP βιβλιοθήκη
HY-335a Project: microtcp *, μία lightweight TCP βιβλιοθήκη Deadline πρώτης ϕάσης : 13 Δεκεμβρίου 2016, 23:59 * Εμπνευσμένο και υλοποιημένο από το Μανώλη Σουρλίγκα :) Γενική περιγραϕή Στο οικοσύστημα του
Διαβάστε περισσότερα2η Προγραµµατιστική Εργασία
Προγραµµατισµός ικτύων (Ε-01) 2η Προγραµµατιστική Εργασία Επέκταση ϐασικής ϐιβλιοθήκης δικτυακού προγραµµατισµού και χρήση της για την υλοποίηση παράλληλου εξυπηρετητή πρωτοκόλλου µεταφοράς αρχείων ιδάσκων
Διαβάστε περισσότερα14. Δικτύωση με Java Δικτύωση με Java Sockets Δημιουργία της σύνδεσης Διευθυνσιοδότηση της σύνδεσης
14. Δικτύωση με Java Τελειώνοντας αυτό το κεφάλαιο θα μπορείτε: Να δημιουργείτε έναν ελάχιστο εξυπηρέτη TCP/IP σε Java Να δημιουργείτε έναν ελάχιστο εξυπηρετούμενο TCP/IP σε Java Να κατανοείτε πώς υλοποιούνται
Διαβάστε περισσότεραικτύωσησε Java Κατανεµηµένα Συστήµατα 08-1
ικτύωσησε Java ιευθύνσεις IP Υποδοχές ρεύµατος Σειριακοποίηση αντικειµένων Υποδοχές δεδοµενογραφηµάτων Υποδοχές πολυεκποµπής Οµοιόµορφοι Εντοπιστές Πόρων Κατανεµηµένα Συστήµατα 08-1 Υποδοχές σε C ικτύωσησε
Διαβάστε περισσότεραΕργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ Σχεδιασμός και υλοποίηση υποδομής σημείωσης διεργασιών στον
Διαβάστε περισσότερα4.1.1 Πρωτόκολλο TCP - Δομή πακέτου
4.1.1 Πρωτόκολλο TCP - Δομή πακέτου 1 / 38 Παράδειγμα Έστω ότι θέλουμε να αποστείλουμε ένα μήνυμα μέσω ηλεκτρονικού ταχυδρομείου. Αρχικά η εφαρμογή χρησιμοποιώντας τα πρωτόκολλα του επιπέδου εφαρμογής
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Ένα Ακόμα Παράδειγμα #include int main(int argc, char* argv[]) { } putchar('h'); putchar('e'); putchar('l');
Διαβάστε περισσότεραΔίκτυα Υπολογιστών ΙΙ (Ασκήσεις Πράξης)
TEI Σερρών Τμήμα Πληροφορικής και Επικοινωνιών Δίκτυα Υπολογιστών ΙΙ (Ασκήσεις Πράξης) Ανάλυση Πρωτοκόλλων Τομέας Τηλεπικοινωνιών και Δικτύων Δρ. Αναστάσιος Πολίτης Καθηγητής Εφαρμογών anpol@teiser.gr
Διαβάστε περισσότεραΒασικά Θέματα Επικοινωνίας. Κατανεμημένα Συστήματα 1
Βασικά Θέματα Επικοινωνίας Κατανεμημένα Συστήματα 1 lalis@inf.uth.gr Πρωτόκολλο επικοινωνίας Η/Υ Προσδιορίζει τους κανόνες που διέπουν την επικοινωνία ανάμεσα στα εμπλεκόμενα μέρη τα μηνύματα και (εν μέρει)
Διαβάστε περισσότεραΑποµακρυσµένη κλήση διαδικασιών
Αποµακρυσµένηκλήση διαδικασιών Τοπική κλήση διαδικασιών Αποµακρυσµένη κλήση διαδικασιών Μεταβίβαση παραµέτρων Πρωτόκολλα επικοινωνίας Αντιγραφή µηνυµάτων Προδιαγραφές διαδικασιών RPC στο σύστηµα DCE Κατανεµηµένα
Διαβάστε περισσότεραΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ. Παράδοση Ασκήσεων Κεφάλαιο 2 Ασκήσεις 3,6,8,9,15,22,24,26. Γεωργόπουλος Άλκης Α.Μ.: 39 Κοντογιώργης Αναστάσιος A.M.
ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Παράδοση Ασκήσεων Κεφάλαιο 2 Ασκήσεις 3,6,8,9,15,22,24,26 Γεωργόπουλος Άλκης Α.Μ.: 39 Κοντογιώργης Αναστάσιος A.M.: 43 Άσκηση 3 Μια αξιόπιστη multicast υπηρεσία επιτρέπει σε έναν
Διαβάστε περισσότεραΕπικοινωνία Client/Server Απομακρυσμένη Κλήση Διαδικασιών
Επικοινωνία Client/Server Απομακρυσμένη Κλήση Διαδικασιών Χάρης Μανιφάβας Τμήμα Εφ. Πληροφορικής & Πολυμέσων ΤΕΙ Κρήτης Επικοινωνία -RPC 1 Υλοποίηση RPC Προκειμένου να επιτευχθεί διαφάνεια στην κλήση RPC,
Διαβάστε περισσότεραΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact: nifantop@unipi.gr Περιεχόμενα ενότητας Διεργασίες Κλήσεις δημιουργίας και τερματισμού διεργασιών Επικοινωνία διεργασιών μέσω
Διαβάστε περισσότεραΔιαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα
Διαβάστε περισσότεραΒιβλιοθήκη stdio. Προγραμματισμός II 1
Βιβλιοθήκη 1 lalis@inf.uth.gr Δεδομένα και ερμηνεία (ξανά) Τα δεδομένα στον Η/Υ έχουν δυαδική μορφή (bytes) Η ερμηνεία των bytes εξαρτάται από το πρόγραμμα που παράγει/καταναλώνει τα δεδομένα Μια δημοφιλής
Διαβάστε περισσότεραΕισαγωγή. E-03: Λειτουργικά Συστήµατα ΙΙ 6. Εαρινό Εξάµηνο SUN RPC. Κλήση Αποµακρυσµένων ιαδικασιών (RPC) Σύνδεση: Port Mapper.
Εισαγωγή Ε-03: Λειτουργικά Συστήµατα ΙΙ Εαρινό Εξάµηνο 2005-06 Sun RPC MPI «Sun RPC & MPI» ρ. Παναγιώτης Χατζηδούκας (Π..407/80) E-03: Λειτουργικά Συστήµατα ΙΙ 1 E-03: Λειτουργικά Συστήµατα ΙΙ 2 Κλήση
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16
Διαβάστε περισσότεραΔυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός II 1
Δυναμική δέσμευση και αποδέσμευση μνήμης Προγραμματισμός II 1 lalis@inf.uth.gr Γιατί χρειάζεται η δυναμική μνήμη; Οι απαιτήσεις του προγράμματος σε μνήμη μπορεί να είναι άγνωστες την ώρα της συγγραφής
Διαβάστε περισσότεραΓενικές Αρχές. Τεχνολογία ικτύων Επικοινωνιών ΙΙ
Τεχνολογία ικτύων Επικοινωνιών ΙΙ 7.1.1. Γενικές Αρχές 1. Τι ονοµάζεται επικοινωνιακό υποδίκτυο και ποιο είναι το έργο του; Το σύνολο όλων των ενδιάµεσων κόµβων που εξασφαλίζουν την επικοινωνία µεταξύ
Διαβάστε περισσότεραΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 7ο ΚΕΦΑΛΑΙΟ
ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 7ο ΚΕΦΑΛΑΙΟ ΕΡΩΤΗΣΕΙΣ - ΑΣΚΗΣΕΙΣ 1. Για να διεκπεραιωθεί η μεταφορά των πακέτων από την πηγή στον προορισμό μεταξύ των κόμβων του επικοινωνιακού υποδικτύου απαιτείται η
Διαβάστε περισσότεραΕικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1
Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 lalis@inf.uth.gr Μνήμη και επικοινωνία διεργασιών Κάθε διεργασία έχει δική της ιδιωτική μνήμη Μια διεργασία δεν μπορεί να γράψει/διαβάσει από/σε θέσεις
Διαβάστε περισσότεραΠρογραμματισμός συστημάτων UNIX/POSIX
Προγραμματισμός συστημάτων UNIX/POSIX Προχωρημένη διαδιεργασιακή επικοινωνία: επώνυμοι αγωγοί (FIFOs) ουρές μηνυμάτων (message queues) κοινόχρηστη μνήμη (shared memory) Ανάγκη Ότι είδαμε μέχρι τώρα μπορεί
Διαβάστε περισσότεραNetwork Address Translation (NAT)
HY335Α Δίκτυα Υπολογιστών Xειμερινό Εξάμηνο 2016-2017 Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών Network Address Translation (NAT) Network Layer Private IP Addresses Πρόβλημα: o χώρος των ΙΡ διευθύνσεων
Διαβάστε περισσότεραΔιάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος
Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας
Διαβάστε περισσότεραΑνάπτυξη και Σχεδίαση Λογισμικού
Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Δυναμική Κατανομή Μνήμης Δυναμική εκχώρηση μνήμης Σωρός Συναρτήσεις malloc(), calloc(), realloc(), free() Δυναμικές δομές
Διαβάστε περισσότεραTopic 5: Sockets. *Ευχαριστίες στους Jim Kurose, Keith Ross, Τάκη Σταµατόπουλο, Αλέξη ελή, και Αντώνη ελιγιαννάκη
Topic 5: Sockets *Ευχαριστίες στους Jim Kurose, Keith Ross, Τάκη Σταµατόπουλο, Αλέξη ελή, και Αντώνη ελιγιαννάκη Επικοινωνία διεργασιών σε διαφορετικούς υπολογιστές Έχουµε δει(ή θαδούµε) διαδιεργασιακή
Διαβάστε περισσότεραΔίκτυα Υψηλών Ταχυτήτων Ενότητα 7: Διευθυνσιοδότηση Internet Protocol (IP) v4
Δίκτυα Υψηλών Ταχυτήτων Ενότητα 7: Διευθυνσιοδότηση Internet Protocol (IP) v4 Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative
Διαβάστε περισσότεραΣυστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 4: MPI_ANY_TAG,MPI_ANY_SOURCE,MPI_Bcast, MPI_Wtime, MPI_Wait, MPI_Test, MPI_Scatter Δρ. Μηνάς Δασυγένης
Διαβάστε περισσότεραΠρογραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Είσοδος/Έξοδος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Είσοδος/Έξοδος Μέχρι τώρα όποτε θέλαμε να διαβάσουμε χρησιμοποιούσαμε πάντα
Διαβάστε περισσότεραΔομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Διαβάστε περισσότεραΕικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1
Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 lalis@inf.uth.gr Μνήμη και επικοινωνία διεργασιών Κάθε διεργασία έχει δική της ιδιωτική μνήμη Μια διεργασία δεν μπορεί να γράψει/διαβάσει από/σε θέσεις
Διαβάστε περισσότεραΑρχιτεκτονική υπολογιστών
1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 9 : Ομάδες Εντολών: Ιδιότητες και Λειτουργίες Ευάγγελος Καρβούνης Παρασκευή, 15/01/2016 Τι είναι ομάδα εντολών;
Διαβάστε περισσότεραΠρογραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε
Διαβάστε περισσότεραΚατανεμημένα Συστήματα. Ενότητα # 4: Μηχανισμοί Επικοινωνίας Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής
Κατανεμημένα Συστήματα Ενότητα # 4: Μηχανισμοί Επικοινωνίας Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου
Διαβάστε περισσότερα(C) 2010 Pearson Education, Inc. All rights reserved.
Connectionless transmission with datagrams. Connection-oriented transmission is like the telephone system You dial and are given a connection to the telephone of fthe person with whom you wish to communicate.
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15
Διαβάστε περισσότεραΔίκτυα Θεωρία
Δίκτυα Θεωρία 2016-17 Κεφάλαιο 4 1. Γιατί η μεταφορά των δεδομένων δεν καλύπτεται επαρκώς από το Επίπεδο Δικτύου; Επειδή το επίπεδο δικτύου από τη φύση του είναι αναξιόπιστο, τα πακέτα φθάνουν καθυστερημένα,
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16
Διαβάστε περισσότεραΕργαστήριο Δικτύων Υπολογιστών
Εργαστήριο Δικτύων Υπολογιστών 2 η Διάλεξη: TCP/UDP Δικτυακά πρωτόκολλα / εφαρμογές Ports Unix δικτυακές εντολές Transmission Control Protocol - TCP Πρωτόκολλο Mεταφοράς RFC 793 [Postel 1981] Xρησιμοποιεί
Διαβάστε περισσότεραιαδικτυακές Εφαρµογές
ιαδικτυακές Εφαρµογές µε Java2 Στοιχεία ικτυακής Επικοινωνίας Όροι IP address 32bit αριθµός που χρησιµοποιείται από το Internet Protocol για την παράδοση δεδοµένων στο σωστό υπολογιστή στο δίκτυο. Port
Διαβάστε περισσότεραΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών
ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών Διδάσκων: Δρ. Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy www.ece.ucy.ac.cy/courses/ece213 Ορίσματα στο QtSpim (set parameters
Διαβάστε περισσότεραΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών
ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών Διδάσκων: Δρ. Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy www.ece.ucy.ac.cy/courses/ece213 Μετατροπή ASCII σε Δεκαδικό
Διαβάστε περισσότεραΔομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Διαβάστε περισσότεραΔιαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 3 η Είσοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή
Διαβάστε περισσότεραΔίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας
Δίκτυα Υπολογιστών Firewalls Χάρης Μανιφάβας 1 Επικοινωνία Βασίζεται στη μεταβίβαση μηνυμάτων (λόγω απουσίας διαμοιραζόμενης μνήμης) Απαιτείται συμφωνία φόρμας μηνυμάτων Πρότυπο Στόχος τυποποίησης = Συνεργασία
Διαβάστε περισσότεραΤι είναι το πρωτόκολλο Διαδικτύου (Internet Protocol, IP);
7.5. Πρωτόκολλο IP Τι είναι το πρωτόκολλο Διαδικτύου (Internet Protocol, IP); Είναι το βασικό πρωτόκολλο του επιπέδου δικτύου της τεχνολογίας TCP/IP. Βασίζεται στα αυτοδύναμα πακέτα που μεταφέρονται ανεξάρτητα
Διαβάστε περισσότεραΔιδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 23: Εισαγωγή στην Δικτύωση (Networking) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Διευθύνσεις και Θύρες - Sockets και ServerSockets Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ233 Αντικειμενοστρεφής
Διαβάστε περισσότεραΒιβλιοθήκη stdio. Προγραμματισμός II 1
Βιβλιοθήκη 1 lalis@inf.uth.gr Σύνοψη Ορίστηκε από τον Dennis Ritchie το 1975 Μέρος του προτύπου ANSI C Λειτουργίες εισόδου/εξόδου υψηλού επίπεδου και ανεξάρτητες λειτουργικού συστήματος Υποστήριξη για
Διαβάστε περισσότεραΠρωτόκολλο TCP Διάλεξη Ι
Πρωτόκολλο TCP Διάλεξη Ι Εισαγωγή Οι υπηρεσίες μεταβίβασης δεδομένων ανάμεσα σε δύο επικοινωνούντες πόρους κατατάσσονται σε δύο κατηγορίες: Connectionless ή datagram Connection-oriented Οι υπηρεσίες της
Διαβάστε περισσότεραΠρογραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Εγγραφές Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Η Ανάγκη Ομαδοποίησης Πολλές φορές έχουμε πληροφορίες διαφορετικού τύπου οι οποίες όμως έχουν μεγάλη
Διαβάστε περισσότεραΔομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Διαβάστε περισσότεραΑΤΜ PROJECT ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ 2011-2012. Άννα Τριανταφύλλου ΑΕΜ : 456. επιβλέπων καθηγητής: Μηνάς Δασυγένης
Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΑΤΜ PROJECT Άννα Τριανταφύλλου ΑΕΜ : 456 επιβλέπων καθηγητής: Μηνάς Δασυγένης Περιεχόμενα 1. 2. 3.
Διαβάστε περισσότεραΜετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη. (Διάλεξη. Πανεπιστήμιο Κύπρου
Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & Άνοιγμα αρχείου μέσα από τo SPIM, διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη (Διάλεξη 3) 1 Μετατροπή χαρακτήρων ASCII σε ακέραιο Ο πιο κάτω κώδικας
Διαβάστε περισσότεραΕΑΠ/ΠΛΗ22/ΑΘΗ.3 4 η ΟΣΣ 15/03/2014 Συμπληρωματικές Διαφάνειες
ΕΑΠ/ΠΛΗ22/ΑΘΗ.3 4 η ΟΣΣ 5/03/204 Συμπληρωματικές Διαφάνειες Νίκος Δημητρίου ΟΣΣ/5.03.204/Ν.Δημητρίου ΟΣΣ/5.03.204/Ν.Δημητρίου 2 ΟΣΣ/5.03.204/Ν.Δημητρίου 3 ΟΣΣ/5.03.204/Ν.Δημητρίου 4 Θεωρία Aloha/Slotted
Διαβάστε περισσότεραΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Γ Τάξη ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΑ.Λ. ΤΕΤΡΑΔΙΟ ΜΑΘΗΤΗ Κωνσταντοπούλου Μ., Χρυσοστόμου Γ.
ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Γ Τάξη ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΑ.Λ. ΤΕΤΡΑΔΙΟ ΜΑΘΗΤΗ Κωνσταντοπούλου Μ., Χρυσοστόμου Γ. Υποδείξεις απαντήσεων/λύσεων στις ερωτήσεις, ασκήσεις και δραστηριότητες του τετραδίου μαθητή, Κεφ.1
Διαβάστε περισσότεραΠρωτόκολλα Επικοινωνίας Πρωτόκολλο IP
Πρωτόκολλα Επικοινωνίας Πρωτόκολλο IP Πρωτόκολλα επικοινωνίας Ορισμός Σύνολα προσυμφωνημένων κανόνων που απαιτούνται για τον καθορισμό του τρόπου με τον οποίο επιτυγχάνεται η ανταλλαγή δεδομένων, και επομένως
Διαβάστε περισσότεραΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET
ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET Κεφάλαιο 4: Τεχνικές Μετάδοσης ΜΕΤΑΓΩΓΗ Τεχνική µεταγωγής ονομάζεται ο τρόπος µε τον οποίο αποκαθίσταται η επικοινωνία ανάµεσα σε δύο κόµβους με σκοπό την
Διαβάστε περισσότεραΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ
ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Βασικοί Τύποι Πίνακες (μέρος 1) Συμβολοσειρές Ο Προεπεξεργαστής Τελευταία ενημέρωση: Σεπτέμβριος 2016 Εισαγωγή - 2 short:
Διαβάστε περισσότεραΚατανεμημένα Συστήματα. Ενότητα # 11: Μηνυματοστρεφές ενδιάμεσο λογισμικό Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής
Κατανεμημένα Συστήματα Ενότητα # 11: Μηνυματοστρεφές ενδιάμεσο λογισμικό Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού
Διαβάστε περισσότεραΜνήμη Διευθύνσεις Δείκτες. Προγραμματισμός II 1
Μνήμη Διευθύνσεις Δείκτες Προγραμματισμός II 1 lalis@inf.uth.gr Μνήμη Η/Υ Ειδικό υλικό, ξεχωριστό από τον επεξεργαστή Χρησιμεύει για την αποθήκευση δεδομένων και της κατάστασης εκτέλεσης του προγράμματος
Διαβάστε περισσότεραΠρογραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως
Διαβάστε περισσότεραΕισαγωγή εκτελέσιμου κώδικα σε διεργασίες
0x375 - Thessaloniki Tech Talks Sessions Event 0x2 19 Μαρτίου 2010 Περιεχόμενα 1 Εισαγωγή 2 Η κλήση συστήματος ptrace 3 Νήματα 4 Το πρόγραμμα εισαγωγής κώδικα prez 5 Επίλογος Γιατί; Πολλές φορές θέλουμε
Διαβάστε περισσότεραΣύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap
Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap Version 2.00 Επιμέλεια Σημειώσεων: Δημήτρης Κόγιας Πατρικάκης Χαράλαμπος Πίνακας περιεχομένων TELNET... 2 PING...
Διαβάστε περισσότεραΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών
ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών Διδάσκων: Δρ. Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy www.ece.ucy.ac.cy/courses/ece213 Μετατροπή ASCII σε Δεκαδικό
Διαβάστε περισσότεραΜετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη
Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη ( ιάλεξη 3) ιδάσκων: Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy
Διαβάστε περισσότεραΗ πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης
Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται
Διαβάστε περισσότεραΜάθημα 4: Πρότυπα, Πρωτόκολλα & Υπηρεσίες
Μάθημα 4: Πρότυπα, Πρωτόκολλα & Υπηρεσίες 4.1 Γενικά Σκοπός ενός δικτύου υπολογιστών είναι οι χρήστες να έχουν τη δυνατότητα να διαμοιράζονται πληροφορίες και συσκευές του δικτύου. Η σχεδίαση και η ανάπτυξη
Διαβάστε περισσότεραυναµική έσµευση Μνήµης (συν.) ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 Εφαρµογή
υναµική έσµευση Μνήµης (συν.) Στην ενότητα αυτή θα µελετηθούν: Μια εφαρµογή συνδεδεµένων λιστών ιπλά συνδεδεµένες Λίστες ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1 Εφαρµογή Ζητούµενο: Πρόγραµµα που παίρνει σαν
Διαβάστε περισσότεραΟυρές Μηνυμάτων (Message Queues in System V) Προγραμματισμός II 1
Ουρές Μηνυμάτων (Message Queues in System V) Προγραμματισμός II 1 lalis@inf.uth.gr Ουρά μηνυμάτων Αποθήκη μηνυμάτων στην μνήμη του λειτουργικού Περιορισμένος αριθμός / όγκος μηνυμάτων Κάθε μήνυμα είναι
Διαβάστε περισσότεραΑγωγοί/Σωλήνες (Pipes) Προγραμματισμός II 1
Αγωγοί/Σωλήνες (Pipes) Προγραμματισμός II 1 lalis@inf.uth.gr Τι είναι ένας αγωγός; Μηχανισμός/συσκευή επικοινωνίας διεργασιών Μετάδοση μιας ροής από bytes (μονής κατεύθυνσης) First-in-first-out (FIFO):
Διαβάστε περισσότερα