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

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

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

Transcript

1 Προγραµµατισµός ικτύων Ε-01 3η ιάλεξη ιδάσκων: Νίκος Ντάρµος [ Τµήµα Πληροφορικής Πανεπιστήµιο Ιωαννίνων

2 Στο σηµερινό µάθηµα... Η µετάβαση στο IPv6. Το πρωτόκολλο DNS. Εισαγωγή στα BSD sockets.

3 IPv6 Η µετάβαση στο IPv6

4 Η ανάγκη για το IPv6 IPv6 ιευθύνσεις Το PDU του IPv6 Πρωτόκολλα ανωτέρων επιπέδων Το IPv4 χρησιµοποιεί διευθύνσεις των 32 bits δισεκατοµµύρια διευθύνσεις! Οι διευθύνσεις ελέγχονται από την ΙΑΝΑ. Classless Inter-Domain Routing µετά το Τεράστιοι πίνακες δροµολόγησης στους routers. 80,000 εγγραφές. Ως πότε θα έχουµε διευθύνσεις; Το 2003 η πρόβλεψη ήταν ως το Το 2005 η πρόβλεψη ήταν ως το 2009 ή Σήµερα η πρόβλεψη είναι ως το 2011 το αργότερο! Προσωρινή λύση (;): Network Address Translation (NAT).

5 Η ανάγκη για το IPv6 IPv6 ιευθύνσεις Το PDU του IPv6 Πρωτόκολλα ανωτέρων επιπέδων Network Address Translation Υπολογιστές εντός «εταιρικών» δικτύων παίρνουν διευθύνσεις από την τάξη των «ιδιωτικών δικτύων». ροµολογητές στα άκρα των δικτύων µεταφράζουν (ΝΑΤ) τις (εκατοντάδες) εσωτερικές διευθύνσεις σε λίγες εξωτερικές (µη ιδιωτικές) διευθύνσεις. υνατότητα για ιεραρχία από τέτοια εσωτερικά δίκτυα. Προβλήµατα Καταρρίπτει την συνδεσιµότητα από άκρο σε άκρο. Ακατάλληλο για ορισµένα πρωτόκολλα. Ακατάλληλο για περιπτώσεις δικτύων µε «ειδικές απαιτήσεις». υσκολία στη διαχείριση και τη συντήρηση.

6 IPv6: Η απάντηση IPv6 ιευθύνσεις Το PDU του IPv6 Πρωτόκολλα ανωτέρων επιπέδων Ιστορία Η ανάπτυξή του ξεκίνησε το 1992 (RFC 1550). Πρώτη ολοκληρωµένη προσπάθεια προδιαγραφών το 1996 (RFC 2460). Η υποστήριξη από τα διάφορα Λειτουργικά Συστήµατα έρχεται σταδιακά: 1997: AIX, Tru64, OpenVMS. 2000: FreeBSD, NetBSD, OpenBSD. 2001: Cisco IOS, HP-UX. 2002: Windows XP & Server : DragonflyBSD, Mac OS X. 2005: Linux. 2007: Windows Vista. Τελευταία προσθήκη στα στάνταρντ το... Μάρτιο του 2009 (RFC 5454). ιεισδυτικότητα σήµερα: 1% (πηγή: Google).

7 IPv6: Η απάντηση IPv6 ιευθύνσεις Το PDU του IPv6 Πρωτόκολλα ανωτέρων επιπέδων Προσφέρει: ιευθύνσεις 128 bits, µε (τουλάχιστον) 65,536 υποδίκτυα (/48) ανά site. Αντίστοιχο του ενός class A δικτύου ανά site. 340,282,366,920,938,463,463,374,607,431,768,211,456 δυνατές διευθύνσεις σε σύγκριση µε τις 4,294,967,296 δυνατές διευθύνσεις του IPv τρις. «IPv4 Internets» ανά cm 2, συµπεριλαµβανοµένων και των ωκεανών διευθύνσεις ανά άνθρωπο στη Γη Το ΝΑΤ ϑεωρείται πλέον ξεπερασµένο. Μεθόδους αυτόµατης ϱυθµίσεις παραµέτρων δικτύου Το DHCP ϑεωρείται πλέον ξεπερασµένο. Καλύτερη ασφάλεια, µε το IPsec να είναι υποχρεωτικό.

8 IPv6: Η απάντηση IPv6 ιευθύνσεις Το PDU του IPv6 Πρωτόκολλα ανωτέρων επιπέδων Προσφέρει: Εξ αρχής υποστήριξη για συνάθροιση διευθύνσεων. Πίνακες δροµολόγησης το πολύ 8,192 εγγραφών. Υποχρεωτική υποστήριξη για multicast. Καλύτερη υποστήριξη για κινητούς χρήστες. Anycast επικοινωνία και scoped διευθύνσεις. Απλουστευµένη/βελτιστοποιηµένη µορφή πακέτων. Γρηγορότερη επεξεργασία των πακέτων στους δροµολογητές και µεγαλύτερη επεκτασιµότητα. Μεθόδους οµαλής µετάβασης από το IPv4. Dual stack, IPv6-over-IPv4 (6to4) & Teredo tunneling, relays.

9 ιευθύνσεις IPv6 ιευθύνσεις Το PDU του IPv6 Πρωτόκολλα ανωτέρων επιπέδων Μορφή διευθύνσεων Βασική µορφή: τετράδες δεκαεξαδικών ψηφίων, χωρισµένων από «:». 2001:0db8:0000:0000:0000:0000:0000:0001 (RFC 3849). 2001:4860:a003:0000:0000:0000:0000:0068 (ipv6.google.com). Κάθε µηδενικό πρόθεµα ανά τετράδα µπορεί να αγνοηθεί. 2001:db8:0:0:0:0:0: :4860:a003:0:0:0:0:68. ιαδοχικές µηδενικές τετράδες µπορούν να αντικατασταθούν µε «::». 2001:db8:: :4860:a003::68. Το «::» µπορεί να χρησιµοποιηθεί µόνο µία ϕορά ανά διεύθυνση. Προσθέτουµε στο τέλος το µήκος του προθέµατος δροµολόγησης. 2001:db8::/ :4860::/32. Εξ ορισµού 64 bits για διεύθυνση διεπαφής (interface) και 64 bits για διεύθυνση δικτύου.

10 ιευθύνσεις IPv6 ιευθύνσεις Το PDU του IPv6 Πρωτόκολλα ανωτέρων επιπέδων Μορφή διευθύνσεων

11 ιευθύνσεις IPv6 ιευθύνσεις Το PDU του IPv6 Πρωτόκολλα ανωτέρων επιπέδων Ειδικές κατηγορίες διευθύνσεων ::/128 «µη ϱυθµισµένη σύνδεση». ::1/128 loopback διεύθυνση. fe80::/10 link-local διευθύνσεις. fc00::/7 «µοναδικές τοπικές διευθύνσεις». ff00::/8 διευθύνσεις για multicast. ff02::1:ffxx:xxxx διευθύνσεις για την εύρεση γειτόνων. ::ffff:0:0/96 διευθύνσεις µεταφρασµένες από το IPv ::/3 διευθύνσεις για unicast. 2001::/32 διευθύνσεις Teredo tunnels. 2001:10::/28 ORCHID (RFC 4843). 2001:db8::/32 διευθύνσεις για παραδείγµατα. 2002::/16 διευθύνσεις για 6to4 tunnels.

12 Αυτόµατη ϱύθµιση διευθύνσεων IPv6 ιευθύνσεις Το PDU του IPv6 Πρωτόκολλα ανωτέρων επιπέδων Στο IPv4: 48-bit MAC διευθύνσεις. ARP/RARP BOOTP DHCP. DHCP: 1 Ο κόµβος στέλνει µία αίτηση µε broadcast. Εσωκλείει και την MAC διεύθυνσή του. Broadcast απαιτεί υποστήριξη από τους routers. 2 Ο εξυπηρετητής DHCP απαντά απευθείας στον κόµβο µε την νέα του IPv4 διεύθυνση. Απαιτείται η ύπαρξη εξυπηρετητή DHCP. Στο IPv6: 64-bit διευθύνσεις διεπαφής. Μπορεί να ϐασίζονται στην MAC διεύθυνση της διεπαφής (EUI-64 RFC 3596). Π.χ.: 00 : a0 : c9 : a6 : 64 : 4d 02a0 : c9ff : fea6 : 644d. 1 Neighbor Discovery Protocol (NDP -- RFC 4861). 2 Ο κόµβος στέλνει αίτηση στην «multicast» link-local διεύθυνση του δικτύου. 3 Ο router του δικτύου απαντά µε ένα σύνολο κατάλληλων ϱυθµίσεων. υνατότητα για χειροκίνητη ϱύθµιση αλλά και για DHCPv6.

13 Το PDU του IPv6 IPv6 ιευθύνσεις Το PDU του IPv6 Πρωτόκολλα ανωτέρων επιπέδων Βασική κεφαλίδα πακέτου IPv Version Traffic Class Flow Label Payload Length Next Header Hop Limit Source address Destination address Κεφαλίδα πακέτου IPv Version IHL Type of Service (TOS) Total Length Identification D M Fragment offset F F Time to live (TTL) Protocol Header checksum Source address Destination address Options Padding

14 Η ϐασική κεφαλίδα του IPv6 IPv6 ιευθύνσεις Το PDU του IPv6 Πρωτόκολλα ανωτέρων επιπέδων Version: Καθορίζει την έκδοση του IP στην οποία ανήκει το πακέτο (6 = 0110). Traffic class: Ορίζει την προτεραιότητα του πακέτου. Flow label: Ορίζει µία «ϱοή πακέτων» τα οποία πρέπει όλα να έχουν την ίδια αντιµετώπιση. Payload length: Το µέγεθος του πακέτου εκτός από την βασική κεφαλίδα. Next header: Ο τύπος των δεδοµένων που ακολουθούν την ϐασική κεφαλίδα. Hop limit: Οριο αλµάτων για το πακέτο (αντίστοιχο του πεδίου TTL του IPv4). Source/Destination address: Η 128-bit διεύθυνση του αποστολέα/παραλήπτη του πακέτου Version Traffic Class Flow Label Payload Length Next Header Hop Limit Source address Destination address

15 Σύγκριση µε την κεφαλίδα του IPv4 IPv6 ιευθύνσεις Το PDU του IPv6 Πρωτόκολλα ανωτέρων επιπέδων εν υπάρχουν τα πεδία: IHL: Η ϐασική κεφαλίδα έχει σταθερό µέγεθος (40 bytes). Don t Fragment (DF): Τα πακέτα του IPv6 δεν κατακερµατίζονται στην πορεία παρά µόνο στα άκρα της σύνδεσης. More Fragments (MF), Identification, Fragment Offset: Τα τµήµατα του πακέτου ταυτοποιούνται µε την κεφαλίδα κατακερµατισµού. Header checksum: Το IPv6 δεν χρησιµοποιεί έλεγχο για την κεφαλίδα. Τα ανώτερα πρωτόκολλα πρέπει υποχρεωτικά να παρέχουν τον έλεγχο αυτό! Options: Οι οποιεσδήποτε επεκτάσεις του ϐασικού πρωτοκόλλου ορίζονται µε πρόσθετες κεφαλίδες επέκτασης Εχουν αλλαχθεί τα πεδία: Total length: Εγινε payload length και µετράει µόνο το µέγεθος των δεδοµένων µετά την ϐασική κεφαλίδα. Protocol: Εγινε next header για να µπορεί να εκφράσει και κεφαλίδες επέκτασης εκτός από µόνο είδος SDU. TTL: Εγινε hop limit. IPv Version IPv4 Traffic Class Payload Length Source address Destination address Destination address Flow Label Next Header Version IHL Type of Service (TOS) Total Length Options Identification D M F F Fragment offset Time to live (TTL) Protocol Header checksum Source address Hop Limit Padding

16 Οι κεφαλίδες επέκτασης του IPv6 IPv6 ιευθύνσεις Το PDU του IPv6 Πρωτόκολλα ανωτέρων επιπέδων Το πεδίο next header επιτρέπει τη δηµιουργία αλυσίδων κεφαλίδων. Ορίζονται οι εξής κεφαλίδες επέκτασης (extension headers): Επιλογών ανά άλµα (Hop-by-hop options header). Επιλογών παραλήπτη (Destination options header). ροµολόγησης (Routing header). Κατακερµατισµού (Fragmentation header). Υποστήριξης IPsec: Αυθεντικοποίησης (Authentication Header). Ασφαλείας ενθυλάκωσης δεδοµένων (Encapsulating Security Payload header). Οι κεφαλίδες επέκτασης (εκτός από το hop-by-hop header) αφορούν µόνο τον τελικό παραλήπτη. Προτεινόµενη σειρά κεφαλίδων: IPv6 header Hop-by-hop options header Destination options header Routing header Fragmentation header Authentication header Encapsulating Security Payload header Destination options header SDU. Hop-by-hop options header Next header Hdr Ext Len Options Destination options header Next header Hdr Ext Len Options Routing header Next header Hdr Ext Len Routing type Segments left Type specific data Fragmentation header Next header RESERVED Fragment offset RES M Identification

17 Μέγεθος πακέτου IPv6 ιευθύνσεις Το PDU του IPv6 Πρωτόκολλα ανωτέρων επιπέδων Κατακερµατισµός Το IPv6 δεν υποστηρίζει κατακερµατισµό/επανασύθεση στα ενδιάµεσα άλµατα παρά µόνο στα άκρα της σύνδεσης. Τότε τι γίνεται όταν πρέπει να περάσουµε από δίκτυα µε διαφορετικό MTU; Λύση: Path MTU Discovery στην αρχή της επικοινωνίας και χρήση της Κεφαλίδας Κατακερµατισµού. Χρήση του ελάχιστου MTU που προβλέπει το IPv6 (1280 bytes). Jumbograms Η ϐασική κεφαλίδα έχει πεδίο µεγέθους 16 bits µέγιστο payload: 65,535 Bytes. Κι αν θέλω να µεταδώσω (πολύ) µεγαλύτερα πακέτα; Λύση: Jumbograms (RFC 2675). Υλοποιείται µε χρήση του hop-by-hop option header. Επιτρέπει πακέτα µεγέθους Gbytes.

18 Πρωτόκολλα ανωτέρων επιπέδων IPv6 ιευθύνσεις Το PDU του IPv6 Πρωτόκολλα ανωτέρων επιπέδων Οσα πρωτόκολλα λαµβάνουν υπόψιν την IP διεύθυνση αποστολέα/παραλήπτη πρέπει να αλλαχθούν. ICMPv6: Σχεδόν ίδιο µε το ICMPv4. UDP, TCP: Οπως και στο IPv4 (αλλάζει µόνο το checksum της ψευδοκεφαλίδας). Πρωτόκολλα πάνω από τα TCP/UDP: Καµία αλλαγή. HTTP, FTP, SMTP,... δουλεύουν ακριβώς όπως και στο IPv4. Μόνο αν χρησιµοποιούµε απευθείας διευθύνσεις IP στο πρωτόκολλο ϑα χρειαστεί κάποια αλλαγή FTP: PORT, PASV EPRT, EPSV (RFC 2428). HTTP: address>:<port number> address>] :<port number> (RFC 2732).

19 Domain Name System Domain Name System

20 Domain Name System Εγγραφές Μετάφραση ονοµάτων Η ανάγκη για το DNS Οι διευθύνσεις IP δεν είναι σχεδιασµένες για ανθρώπους. Λύση: Ποιος ϑυµάται την 2η διεύθυνση στα παραδείγµατα για το IPv6; Ποιος ϑυµάται την IP διεύθυνση του zeus; Συµβολικά ονόµατα που µεταφράζονται σε διευθύνσεις. Domain Name System.

21 Domain Name System Εγγραφές Μετάφραση ονοµάτων Πρωτόκολλο επιπέδου εφαρµογών. Χρησιµοποιεί το UDP και κατά σύµβαση την ϑύρα 53. Ιεραρχική δοµή ονοµάτων και χώρου διευθύνσεων. Top-Level Domains, domains, subdomains,...? 1 Root nameservers: Μεταφράζουν το. µετά το όνοµα. 13 root nameservers: [A-M].ROOT-SERVERS.NET. 2 TLD nameservers: ιαχειρίζονται και µεταφράζουν το τελευταίο τµήµα του ονόµατος. Π.χ. ανά χώρα (.gr) ή είδος διεύθυνσης (.com,.net,.org κτλ.) 3 Authoritative nameservers: ιαχειρίζονται τα ονόµατα ανά πάροχο (ISPs) ή άλλη οργανωτική δοµή. 4 Local nameservers: ιαχειρίζονται τα ονόµατα ανά οργανισµό. www cs uoi math gr uoa... uop... dig +trace Το πολύ 63 χαρακτήρες ανά επίπεδο, 255 χαρακτήρες στο συνολικό συµβολικό όνοµα (RFC 1034).

22 Domain Name System Εγγραφές Μετάφραση ονοµάτων Εγγραφές Κάθε εγγραφή αποτελείται από τα εξής πεδία (RFC 1035): NAME: Το «όνοµα» της εγγραφής. TYPE: Ορίζει το είδος της εγγραφής. CLASS: Ορίζει την τάξη της εγγραφής (για το ιαδίκτυο = IN). TTL: Ορίζει την διάρκεια ισχύος της εγγραφής αυτής (caching).. RDLENGTH: Μέγεθος του πεδίου RDATA. RDATA: Ανάλογα µε την τιµή του πεδίου TYPE, η αντιστοιχία στο «όνοµα». Παραδείγµατα τύπων εγγραφών: SOA: συµβολίζει την αρχή µίας «Ϲώνης εξουσίας». NS: αντιστοιχία ονόµατος υπεύθυνου nameserver. A: αντιστοιχία ονόµατος διεύθυνσης IPv4. AAAA: αντιστοιχία ονόµατος διεύθυνσης IPv6. PTR: αντιστοιχία διεύθυνσης IPv4/IPv6 ονόµατος. CNAME: αντιστοιχία alias κανονικού ονόµατος. MX: αντιστοιχία «ονόµατος δικτύου» mailserver. υνατότητες: Πολλά ονόµατα ανά κόµβο (aliases). Πολλοί κόµβοι ανά όνοµα (DNS Round Robin). Πολλούς εξυπηρετητές DNS, SMTP ανά domain. Ειδικού τύπου εγγραφές (TXT, HINFO, MINFO κτλ.)

23 Domain Name System Εγγραφές Μετάφραση ονοµάτων Μετάφραση ονοµάτων Η µετάφραση των ονοµάτων γίνεται σε ϐήµατα. 1 Η εφαρµογή ελέγχει την τοπική της cache ονοµάτων (αν έχει). 2 Η εφαρµογή ϱωτά το λειτουργικό σύστηµα. Αν το λειτουργικό έχει την απάντηση στην cache του, απαντά. 3 Το λειτουργικό σύστηµα ϱωτά τον τοπικό nameserver. Αν αυτός έχει την απάντηση στην cache του, απαντά. 4 Αν ο nameserver που ϱωτήσαµε στο προηγούµενο ϐήµα επιτρέπει αναδροµικά ερωτήµατα, περιµένουµε την απάντηση. 5 Αλλιώς, στέλνουµε το ερώτηµα σε έναν nameserver για το υψηλότερο επίπεδο που δεν έχουµε ακόµα µεταφράσει και επαναλαµβάνουµε τη διαδικασία για διαδοχικά χαµηλότερα επίπεδα στο συµβολικό όνοµα. Μπορεί να πάρουµε ως απάντηση είτε απευθείας την αντιστοιχία ονόµατος IP διεύθυνσης, είτε έναν «δείκτη» για να συνεχίσουµε την αναζήτηση. Σε κάθε περίπτωση, ψάχνουµε τον αντίστοιχο authoritative nameserver.

24 Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων BSD sockets

25 Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων Βασικές λειτουργίες Εσωτερική δοµή των sockets Μετατροπή διευθύνσεων Υπάρχει µόνο ένας τρόπος δικτυακής επικοινωνίας διεργασιών: µέσω αποστολής και λήψης µηνυµάτων. Ολα τα είδη επικοινωνίας ϐασίζονται σε µηνύµατα. Υπάρχει µόνο ένας τρόπος αποστολής και λήψης µηνυµάτων: χρησιµοποιώντας sockets. Ολες οι άλλες µορφές επικοινωνίας ϐασίζονται σε sockets. Επιτρέπουν την επικοινωνία διεργασιών που εκτελούνται είτε στον ίδιο κόµβο είτε σε αποµακρυσµένους κόµβους του δικτύου. Βασικές λειτουργίες: ιευθυνσιοδότηση: σε ποιόν κόµβο ϑα πάνε τα δεδοµένα; Πολυπλεξία: σε ποια διεργασία ϑα παραδοθούν τα δεδοµένα, όταν ϕτάσουν στον κόµβο; Βασική πληροφορία του socket: <IP address + port number> (ή filename για επικοινωνία τοπικά σε κάθε κόµβο). Κάθε σύνδεση έχει δύο sockets στα άκρα της. Ουσιαστικά υλοποιούν το επίπεδο συνεδρίας του µοντέλου OSI.

26 BSD sockets Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων Βασικές λειτουργίες Εσωτερική δοµή των sockets Μετατροπή διευθύνσεων Εχουν προδιαγραφεί πολλές διεπαφές προγραµµατισµού εφαρµογών (APIs) για προγραµµατισµό µε sockets: BSD sockets, XTI, TLI, OpenTransport, STREAMS, WinSock,... Τα BSD sockets όµως επικράτησαν. Τα BSD sockets πρωτοεµφανίστηκαν στο 4.2BSD (4.1c για την ακρίβεια) το 1982 και «καθιερώθηκαν» µε το 4.3BSD το Υποστηρίζονται τα πρωτόκολλα UDP, TCP και SCTP, καθώς και πρωτόκολλα χαµηλότερων επιπέδων (IPv4, IPv6, ICMP, IGMP, ARP,...)

27 Βασικές λειτουργίες Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων Βασικές λειτουργίες Εσωτερική δοµή των sockets Μετατροπή διευθύνσεων Το API των BSD sockets προσφέρει κλήσεις συστήµατος για: Μετατροπή δεδοµένων από/προς µορφή αναπαράστασης δικτύου (network/host byte order). htonl(3), htons(3), ntohl(3), ntohs(3). Μετάφραση ονοµάτων και διευθύνσεων. getpeername(2), getsockname(2), gethostbyname(3), gethostent(3), getprotoent(3), getaddrinfo(3), getnameinfo(3), inet_pton(3), inet_ntop(3),... Καθορισµό των άκρων επικοινωνίας. socket(2), socketpair(2), bind(2), listen(2). Αποστολή/αποδοχή αίτησης σύνδεσης. connect(2), accept(2). Αποστολή και λήψη δεδοµένων. read(2), recv(2), recvfrom(2), recvmsg(2), write(2), send(2), sendto(2), sendmsg(2). Τερµατισµό σύνδεσης. shutdown(2), close(2). ιαχείριση παραµέτρων και σφαλµάτων. setsockopt(2), getsockopt(2), gai_strerror(3).

28 Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων Network vs System Byte Ordering Βασικές λειτουργίες Εσωτερική δοµή των sockets Μετατροπή διευθύνσεων Το πρόβληµα του endianess Εστω η συµβολοσειρά «ΓΒΑ» Πώς αποθηκεύεται/µεταδίδεται; ύο απαντήσεις: Big-endian «ΓΒΑ». Little-endian «ΑΒΓ». Καθορίζεται από την αρχιτεκτονική του επεξεργαστή ή/και το λειτουργικό σύστηµα. x86/x86_64: little-endian, sun4u/powerpc: big-endian. test-endianess.c #include <unistd.h> #include <inttypes.h> int main() { uint32_t i = 0x ; // "3210" write(1, &i, sizeof(uint32_t)); return 0; } zeus (big-endian) zeus:~>./test-endianess 3210 ace (little-endian) ace:~>./test-endianess 0123

29 Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων Network vs System Byte Ordering Βασικές λειτουργίες Εσωτερική δοµή των sockets Μετατροπή διευθύνσεων Μετατροπή endianess Στα IP δίκτυα τα δεδοµένα µεταφέρονται σε big-endian σειρά (network byte ordering). Ολα τα πεδία των δοµών του API είναι σε network byte ordering! Κι αν ο υπολογιστής µου έχει διαφορετικό endianess; htons(3), htonl(3), ntohs(3), ntohl(3) (h: host, n: network, s: 16-bit int, l: 32-bit int). uint32_t htonl(uint32_t hostlong); uint16_t htons(uint16_t hostshort); uint32_t ntohl(uint32_t netlong); uint16_t ntohs(uint16_t netshort);

30 Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων «Στο UNIX όλα είναι αρχεία...» Βασικές λειτουργίες Εσωτερική δοµή των sockets Μετατροπή διευθύνσεων οµή ενός socket Ενα BSD socket είναι µία δοµή δεδοµένων σε kernel space File Descriptor Table stdin stdout stderr Το σύστηµα το χειρίζεται σαν αρχείο. Socket Data Structure Family (PF_INET) Service (SOCK_STREAM) Local Address Remote Address... Address Data Structure Address Family (AF_INET) Host IP ( ) Host Port Address Data Structure Address Family (AF_INET) Host IP ( ) Host Port 80

31 Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων Οι δοµές δεδοµένων struct sockaddr* Βασικές λειτουργίες Εσωτερική δοµή των sockets Μετατροπή διευθύνσεων struct sockaddr struct sockaddr { sa_family_t char }; sa_family; sa_data[14]; struct sockaddr_un struct sockaddr_un { unsigned char sun_len; sa_family_t sun_family; char sun_path[104]; }; struct sockaddr_in struct sockaddr_in { unsigned char sin_len; sa_family_t sin_family; in_port_t sin_port; struct in_addr sin_addr; char sin_zero[8]; }; struct sockaddr_in6 struct sockaddr_in6 { unsigned char sin6_len; sa_family_t sin6_family; in_port_t sin6_port; uint32_t sin6_flowinfo; struct in6_addr sin6_addr; uint32_t sin6_scope_id; }; struct in_addr struct in_addr { in_addr_t s_addr; }; struct in6_addr struct in6_addr { uint8_t u6_addr8[16]; }; #define s6_addr u6_addr8

32 Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων Οι δοµές δεδοµένων struct sockaddr* Βασικές λειτουργίες Εσωτερική δοµή των sockets Μετατροπή διευθύνσεων Πεδία των δοµών struct sockaddr* {sa,sun,sin,sin6}_len: πραγµατικό µέγεθος της δοµής σε bytes. {sa,sun,sin,sin6}_family: «οικογένεια» πρωτοκόλλων που περιγράφει η δοµή. AF_LOCAL: η διεύθυνση είναι ένα όνοµα αρχείου (unix-domain). AF_INET: διεύθυνση IPv4. AF_INET6: διεύθυνση IPv6. sin_port/sin6_port: ο αριθµός ϑύρας του άκρου επικοινωνίας. sin_addr/sin6_addr: η IP διεύθυνση του άκρου επικοινωνίας. sin6_flowinfo: καθορίζει την κλάση και τη ϱοή της σύνδεσης αυτής. sin6_scope_id: καθορίζει το scope της διεύθυνσης (link-local, site-local,...)

33 Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων Οι δοµές δεδοµένων struct sockaddr* Βασικές λειτουργίες Εσωτερική δοµή των sockets Μετατροπή διευθύνσεων Για λόγους µεταφερσιµότητας χρησιµοποιούνται οι τύποι δεδοµένων: sa_family_t (=uint32_t), in_addr_t (=uint32_t) και in_port_t (=uint16_t). Επίσης, για τους ίδιους λόγους, ορίζεται και η δοµή δεδοµένων struct sockaddr_storage η οποία είναι αρκετά µεγάλη για να «χωρά» οποιαδήποτε από τις προαναφερθείσες δοµές struct sockaddr*. struct sockaddr_storage struct sockaddr_storage { unsigned char ss_len; sa_family_t ss_family; char ss_pad1[_ss_padsize]; int64_t ss_align; char ss_pad2[_ss_padsize]; };

34 Μετατροπή διευθύνσεων Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων Βασικές λειτουργίες Εσωτερική δοµή των sockets Μετατροπή διευθύνσεων Ακόµα και οι προγραµµατιστές έχουν προβλήµατα µνήµης... Τα συµβολικά ονόµατα είναι σίγουρα προτιµότερα από τις διευθύνσεις IP... Οι ASCII αναπαραστάσεις είναι σίγουρα προτιµότερες από να γράφουµε απευθείας σε binary... Χρειαζόµαστε συναρτήσεις µετατροπής!

35 Μετατροπή διευθύνσεων Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων Βασικές λειτουργίες Εσωτερική δοµή των sockets Μετατροπή διευθύνσεων υαδική και ASCII µορφή Υπάρχουν πολλές συναρτήσεις µετατροπής ανάµεσα σε αυτές τις µορφές διευθύνσεων. int inet_aton(const char *cp, struct in_addr *pin); in_addr_t inet_addr(const char *cp); char * inet_ntoa(struct in_addr in); εν υποστηρίζουν IPv6 διευθύνσεις! Λύση: inet_ntop(3) και inet_pton(3).

36 Μετατροπή διευθύνσεων Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων Βασικές λειτουργίες Εσωτερική δοµή των sockets Μετατροπή διευθύνσεων Από δυαδική σε ASCII µορφή const char *inet_ntop(int af, const void *src, char *dst, socklen_t size); af: οικογένεια διεύθυνσης (AF_INET, AF_INET6). src: δείκτης σε αντίστοιχη δοµή διεύθυνσης (struct in_addr, struct in6_addr) σε network byte order. dst: δείκτης σε πίνακα χαρακτήρων όπου ϑα αποθηκευτεί το αποτέλεσµα. size: µέγεθος του πίνακα dst (µέγιστο INET_ADDRSTRLEN ή INET6_ADDRSTRLEN). Επιστρέφει δείκτη στον πίνακα του αποτελέσµατος σε επιτυχία ή NULL για αποτυχία. Από ASCII σε δυαδική µορφή int inet_pton(int af, const char *src, void *dst); af: όπως παραπάνω. src/dst: όπως το dst/src στην inet_ntop αντίστοιχα. Επιστρέφει 1 αν η µετατροπή πέτυχε, 0 αν η διεύθυνση στο src δεν ισχύει, -1 σε περίπτωση άλλου λάθους.

37 Μετατροπή διευθύνσεων Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων Βασικές λειτουργίες Εσωτερική δοµή των sockets Μετατροπή διευθύνσεων Συµβολικά ονόµατα και διευθύνσεις IP Υπάρχουν πολλές συναρτήσεις µετατροπής ανάµεσα σε αυτές τις µορφές διευθύνσεων/ονοµάτων ϑυρών. struct hostent * gethostbyname(const char *name); struct hostent * gethostbyname2(const char *name); struct hostent * gethostbyaddr(const void *addr, socklen_t len, int type); struct servent * getservbyname(const char *name, const char *proto); struct servent * getservbyport(int port, const char *proto); struct hostent { char *h_name; /* name of host */ char **h_aliases; /* alias list */ int h_addrtype; /* address type */ int h_length; /* address length */ char **h_addr_list; /* addr. from DNS */ }; #define h_addr h_addr_list[0] struct servent { char *s_name; /* name of service */ char **s_aliases; /* alias list */ int s_port; /* service port */ char *s_proto; /* service protocol */ };

38 Μετατροπή διευθύνσεων Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων Βασικές λειτουργίες Εσωτερική δοµή των sockets Μετατροπή διευθύνσεων Από hostname σε διεύθυνση IP και κάτι παραπάνω Οι περισσότερες από αυτές τις συναρτήσεις δεν υποστηρίζουν IPv6 διευθύνσεις. Ακόµα και αυτές που υποστηρίζουν (inet_pton(3), inet_ntop(3), gethostbyname2(3)) παίρνουν ως όρισµα το address family... Λύση: getaddrinfo(3): µετατροπή από διευθύνσεις (συµβολικές ή αριθµητικές) και υπηρεσίες (ονοµαστικά ή µε αριθµό ϑύρας) σε κατάλληλες δοµές δεδοµένων. getnameinfo(3): µετατροπή από δοµές δεδοµένων σε συµβολική/αριθµητική διεύθυνση και ονοµαστική/αριθµητική υπηρεσία.

39 Μετατροπή διευθύνσεων Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων Βασικές λειτουργίες Εσωτερική δοµή των sockets Μετατροπή διευθύνσεων getaddrinfo(3) int getaddrinfo(const char *hostname, const char *servname, const struct addrinfo *hints, struct addrinfo **res); void freeaddrinfo(struct addrinfo *ai); hostname: Συµβολικό όνοµα κόµβου ή IP διεύθυνση σε ASCII αναπαράσταση (ή NULL). servname: Συµβολικό όνοµα υπηρεσίας (services(5)) ή αριθµός ϑύρας σε ASCII αναπαράσταση (ή NULL). hints: δείκτης σε δοµή τύπου struct addrinfo (ή NULL) καθορίζει επιλογές του χρήστη όσον αφορά το είδος της σύνδεσης. res: δείκτης σε συνδεδεµένη λίστα µε τα αποτελέσµατα της µετατροπής. Επιστρέφει 0 για επιτυχία, κωδικού λάθους (gai_strerror(3)) για αποτυχία. Η freeadrinfo(3) απελευθερώνει τον χώρο που δέσµευσε η getaddrinfo(3) για το αποτέλεσµα (res).

40 Μετατροπή διευθύνσεων Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων Βασικές λειτουργίες Εσωτερική δοµή των sockets Μετατροπή διευθύνσεων Η δοµή δεδοµένων struct addrinfo struct addrinfo { int ai_flags; /* input flags */ int ai_family; /* PF_xxx or PF_UNSPEC*/ int ai_socktype; /* SOCK_xxx or 0 */ int ai_protocol; /* IPPROTO_xxx or 0 */ socklen_t ai_addrlen; /* length of socket-address */ struct sockaddr *ai_addr; /* socket-address for socket */ char *ai_canonname; /* canonical name */ struct addrinfo *ai_next; /* pointer to next in list */ }; ai_flags: AI_PASSIVE: η προς µετάφραση διεύθυνση ϑα χρησιµοποιηθεί ως «server». Αν το hostname είναι NULL τότε η IP ϑα τεθεί στην τιµή INADDR_ANY ή INADDR6_ANY_INIT. AI_CANONNAME: επέστρεψε το κανονικό συµβολικό όνοµα του κόµβου. AI_NUMERICHOST: το hostname έχει αριθµητική διεύθυνση IP. AI_ADDRCONFIG: επέστρεψε µόνο διευθύνσεις για πρωτόκολλα για τα οποία το τρέχον σύστηµα έχει διεύθυνση. AI_NUMERICSERV: το servname έχει αριθµό ϑύρας. Τα ai_family, ai_socktype και ai_protocol χρησιµοποιούνται στην socket(2).

41 Μετατροπή διευθύνσεων Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων Βασικές λειτουργίες Εσωτερική δοµή των sockets Μετατροπή διευθύνσεων getnameinfo(3) int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, size_t hostlen, char *serv, size_t servlen, int flags); sa, salen: δείκτης σε µία από τις δοµές sockaddr και το αντίστοιχο µέγεθός της. host: δείκτης σε χώρο µνήµης µεγέθους hostlen (µέγιστο NI_MAXHOST) στον οποίο ϑα γραφεί η διεύθυνση/το όνοµα του κόµβου. serv: δείκτης σε χώρο µνήµης µεγέθους servlen (µέγιστο NI_MAXSERV) στον οποίο ϑα γραφεί το συµβολικό όνοµα της υπηρεσίας. Αν το serv είναι NULL ή το servlen 0, τίποτα δε ϑα γραφεί εκεί. flags: NI_NOFQDN: Ϲητείται µόνο το «τοπικό» κοµµάτι του ονόµατος του κόµβου (χωρίς το domain). NI_NUMERICHOST: Ϲητείται η διεύθυνση IP του κόµβου. NI_NAMEREQD: Ϲητείται συµβολικό όνοµα. Αν αυτή η τιµή έχει τεθεί και δεν µπορεί να ϐρεθεί συµβολικό όνοµα, επιστρέφεται σφάλµα. Στην αντίθετη περίπτωση, επιστρέφεται η διεύθυνση IP. NI_NUMERICSERV: Ϲητείται ο αριθµός ϑύρας της υπηρεσίας (σε ASCII αναπαράσταση). NI_DGRAM: Ϲητείται υπηρεσία πρωτοκόλλου UDP (για ειδικές περιπτώσεις που στην ίδια ϑύρα υπάρχει άλλη υπηρεσία για TCP και UDP). Επιστρέφει 0 για επιτυχία, κωδικού λάθους (gai_strerror(3)) για αποτυχία.

42 «Ανοιγµα» ενός socket Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων ηµιουργία άκρου σύνδεσης Προετοιµασία άκρου σύνδεσης socket(2) int socket(int domain, int type, int protocol); ηµιουργεί το ένα άκρο της επικοινωνίας. domain: Καθορίζει το «µέσο» επικοινωνίας. PF_LOCAL/PF_UNIX: Τοπική επικοινωνία (unix-domain). PF_INET: Επικοινωνία πάνω από IPv4. PF_INET6: Επικοινωνία πάνω από IPv6. PF_LINK: Επικοινωνία πάνω από το επίπεδο συνδέσµου. PF_ROUTE: Επικοινωνία µε το µηχανισµό δροµολόγησης. type: καθορίζει το είδος της επικοινωνίας. SOCK_STREAM: Συνδεσµοστραφής επικοινωνία (π.χ. TCP, SCTP). SOCK_DGRAM: Ασυνδεσµική επικοινωνία µε datagrams (π.χ. UDP). SOCK_SEQPACKET: Ασυνδεσµική επικοινωνία ακολουθίας πακέτων (π.χ. SCTP). SOCK_RAW: «Επικοινωνία» απευθείας µε το κατώτερο επίπεδο. protocol: καθορίζει ένα συγκεκριµένο πρωτόκολλο προς χρήση µε το socket. default: 0. IPPROTO_IP, IPPROTO_TCP, IPPROTO_UDP,... Επιστρέφει: τον socket descriptor ( 0) ή -1 για σφάλµα.

43 «Ανοιγµα» ενός socket Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων ηµιουργία άκρου σύνδεσης Προετοιµασία άκρου σύνδεσης socketpair(2) int socketpair(int domain, int type, int protocol, int *sv); ηµιουργεί ένας Ϲεύγος συνδεδεµένων sockets Οι παράµετροι είναι όπως και στην socket(2). sv: Πίνακας δύο ϑέσεων στον οποίο επιστρέφονται οι socket descriptors. Επιστρέφει: 0 για επιτυχία ή -1 για σφάλµα.

44 Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων ηµιουργία άκρου σύνδεσης Προετοιµασία άκρου σύνδεσης Προετοιµασία ενός socket για εισερχόµενες συνδέσεις bind(2) int bind(int s, const struct sockaddr *addr, socklen_t addrlen); Χρησιµοποιείται στην πλευρά του εξυπηρετητή. Αντιστοιχίζει ένα socket µε µία διεύθυνση και µία ϑύρα. s: Ο socket descriptor. addr: είκτης σε µία δοµή τύπου struct sockaddr. addrlen: Το µέγεθος της δοµής στην οποία δείχνει το addr. Χρησιµοποιείται ο τύπος socklen_t (=32-bit ακέραιος) για µεταφερσιµότητα. Επιστρέφει: 0 για επιτυχία ή -1 για σφάλµα.

45 Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων ηµιουργία άκρου σύνδεσης Προετοιµασία άκρου σύνδεσης Προετοιµασία ενός socket για εισερχόµενες συνδέσεις listen(2) int listen(int s, int backlog); ηλώνει την «επιθυµία» της διεργασίας να δεχθεί συνδέσεις και καθορίζει ένα όριο στον αριθµό των εκκρεµών αιτήσεων σύνδεσης που ϑα υποστηρίζονται. Εχει νόηµα µόνο για το server κοµµάτι συνδεσµοστραφούς άκρου επικοινωνίας. s: Ο socket descriptor. backlog: Το µέγεθος της «ουράς» εκκρεµών αιτήσεων (στην πραγµατικότητα η ουρά έχει 1.5 αυτό το µέγεθος). Επιστρέφει: 0 για επιτυχία ή -1 για σφάλµα. Το µέγεθος της ουράς µπορεί να αλλαχθεί µε διαδοχικές κλήσεις για το ίδιο socket descriptor.

46 Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων Αποστολή αιτήµατος σύνδεσης Αποστολή αιτήµατος σύνδεσης Αποδοχή αιτήµατος σύνδεσης Τερµατισµός σύνδεσης connect(2) int connect(int s, const struct sockaddr *name, socklen_t namelen); Χρησιµοποιείται και για συνδεσµοστραφή αλλά και για ασυνδεσµική επικοινωνία. Συνδεσµοστραφής: αποστέλλει ένα αίτηµα σύνδεσης στην αποµακρυσµένη διεργασία (το στάδιο SYN του 3-way handshake) και περιµένει την απάντησή της (ACK) για να στείλει και την επιβεβαίωση της σύνδεσης (SYN+ACK). Ασυνδεσµική: ορίζει απλά σε ποια διεύθυνση ϑα στέλνονται τα datagrams και από ποια διεύθυνση ϑα περιµένουµε απαντήσεις. s: ο socket descriptor από τον οποίο ϑα αποσταλεί το αίτηµα σύνδεσης. name: δείκτης σε δοµή τύπου struct sockaddr στην οποία περιέχεται πληροφορία (διεύθυνση + ϑύρα / όνοµα αρχείου) για τον παραλήπτη του αιτήµατος σύνδεσης. namelen: το µέγεθος σε bytes του name. Επιστρέφει 0 για επιτυχία, -1 για αποτυχία.

47 Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων Αποδοχή αιτήµατος σύνδεσης Αποστολή αιτήµατος σύνδεσης Αποδοχή αιτήµατος σύνδεσης Τερµατισµός σύνδεσης accept(2) int accept(int s, struct sockaddr *addr, socklen_t * addrlen); Χρησιµοποιείται στην πλευρά του εξυπηρετητή συνδεσµοστραφούς επικοινωνίας. Υλοποιεί το στάδιο αποστολής επιβεβαίωσης (ACK) του 3-way handshake. s: ο socket descriptor στον οποίο ϑα λαµβάνονται οι εισερχόµενες συνδέσεις. addr: NULL ή δείκτης σε δοµή τύπου struct sockaddr στην οποία ϑα αποθηκευθεί πληροφορία για τον αποστολέα του αιτήµατος σύνδεσης. addrlen: NULL ή δείκτης σε ακέραιο στον οποίο αρχικά περιέχεται το µέγεθος σε bytes του addr και στον οποίο ϑα αποθηκευθεί το νέο µέγεθός του όταν επιστρέψει η συνάρτηση. Η κλήση αυτή (συνήθως) µπλοκάρει τον καλούντα έως ότου υπάρξει εισερχόµενη αίτηση σύνδεσης. Τότε δηµιουργεί ένα νέο socket το οποίο και συνδέει µε το αντίστοιχο της αποµακρυσµένης διεργασίας. Επιστρέφει τον socket descriptor του νέου socket ή -1 για αποτυχία.

48 Τερµατισµός σύνδεσης Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων Αποστολή αιτήµατος σύνδεσης Αποδοχή αιτήµατος σύνδεσης Τερµατισµός σύνδεσης close(2) int close(int d); Χρησιµοποιείται και για συνδεσµοστραφή αλλά και για ασυνδεσµική επικοινωνία. Και στις δύο περιπτώσεις: αποδεσµεύει την δοµή που κρατούσε ο kernel για το socket. Συνδεσµοστραφής: Αν η διεργασία που έκανε την κλήση είναι και η τελευταία που είχε αναφορά στο socket αυτό, τότε η κλήση αυτή αποστέλλει ή απορρίπτει όσα πακέτα εκκρεµούν και τερµατίζει την σύνδεση (αντιστοιχεί στο τελικό στάδιο (FIN/FIN+ACK) της επικοινωνίας). d: ο socket descriptor. Επιστρέφει 0 για επιτυχία, -1 για αποτυχία.

49 Τερµατισµός σύνδεσης Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων Αποστολή αιτήµατος σύνδεσης Αποδοχή αιτήµατος σύνδεσης Τερµατισµός σύνδεσης shutdown(2) int shutdown(int s, int how); Η κλήση αυτή απενεργοποιεί την αποστολή και λήψη δεδοµένων από ένα socket. Επιτρέπει την µετάβαση του socket σε κατάσταση half-closed (δεν υποστηρίζεται στο SCTP). s: ο socket descriptor. how: καθορίζει τον τύπο της λειτουργίας αυτής. SHUT_RD: απενεργοποιείται η λήψη δεδοµένων. SHUT_WR: απενεργοποιείται η αποστολή δεδοµένων. SHUT_RDWR: απενεργοποιείται και η λήψη και η αποστολή δεδοµένων. Η ακριβής λειτουργία και η τιµή επιστροφής στις περιπτώσεις SHUT_WR και εποµένως και SHUT_RDWR καθορίζεται από το πρωτόκολλο του socket. TCP και συνδεσµοστραφές SCTP: αποστέλλονται όλα τα εκκρεµόντα δεδοµένα, αναµένεται επιβεβαίωση και κατόπιν αποστέλλεται το FIN. Επιστρέφει 0. UDP: δεν αποστέλλει κάποιο µήνυµα ICMP. Επιστρέφει 0. Ασυνδεσµικό SCTP: δεν υποστηρίζεται αυτή η λειτουργία. Επιστρέφει -1. Στις υπόλοιπες περιπτώσεις, επιστρέφει 0 για επιτυχία, -1 για αποτυχία.

50 Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων Αποστολή & λήψη δεδοµένων Ροή δεδοµένων Αποστολή δεδοµένων σε πακέτα Ροή δεδοµένων Καθώς τα sockets είναι «αρχεία», µπορούµε να χρησιµοποιήσουµε τις ίδιες συναρτήσεις για Ε/Ε (read(2), write(2) κτλ.): ssize_t read(int d, void *buf, size_t nbytes); ssize_t write(int d, void *buf, size_t nbytes); d: ο socket descriptor (από την connect(2) ή την accept(2)). buf: δείκτης σε χώρο µνήµης από όπου ϑα διαβασθούν τα προς αποστολή δεδοµένα ή ϑα γραφούν τα ληφθέντα δεδοµένα. nbytes: το µέγεθος του buf σε bytes. Επιστρέφουν τον αριθµό των bytes που διαβάστηκαν/γράφηκαν από/στο socket, 0 για EOF και -1 για αποτυχία. Οι κλήσεις αυτές είναι συνήθως blocking: Η read(2) ϑα περιµένει έως ότου διαβάσει nbytes bytes. Η write(2) ϑα περιµένει έως ότου γράψει nbytes bytes (η αποστολή ϑα γίνει σε δεύτερο χρόνο από τον πυρήνα). Υπάρχει το ενδεχόµενο να διακοπούν, οπότε επιστρέφουν -1 και ϑέτουν το errno στην τιµή EINTR. Ισως διαβάσουν/γράψουν λιγότερα από nbytes bytes, ανάλογα µε την κατάσταση του δικτύου...

51 Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων Αποστολή δεδοµένων σε πακέτα Ροή δεδοµένων Αποστολή δεδοµένων σε πακέτα send(2) ssize_t send(int s, const void *msg, size_t len, int flags); Χρησιµοποιείται µόνο όταν το socket είναι σε συνδεδεµένη κατάσταση. s: ο socket descriptor. msg: δείκτης σε ϑέση µνήµης, µεγέθους len απ όπου ϑα διαβασθούν τα δεδοµένα. flags: καθορίζει ειδικές απαιτήσεις επικοινωνίας. MSG_OOB: στείλε «επείγοντα» δεδοµένα. MSG_DONTROUTE: παρέκαµψε την δροµολόγηση και στείλε τα δεδοµένα κατευθείαν στο interface. MSG_EOR: τέλος αποστολής εγγραφής, όταν το πρωτόκολλο υποστηρίζουν κάτι αντίστοιχο. MSG_EOF: κάλεσε τη shutdown(2) για την πλευρά µας και ειδοποίησε την άλλη πλευρά. MSG_NOSIGNAL: µη στείλεις SIGPIPE αν το socket είναι κλειστό. Επιστρέφει τον αριθµό των bytes που γράφηκαν στο socket ή -1 για σφάλµα. Αν τα δεδοµένα δε χωρούν σε ένα πακέτο, επιστρέφεται σφάλµα EMSGSIZE.

52 Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων Αποστολή δεδοµένων σε πακέτα Ροή δεδοµένων Αποστολή δεδοµένων σε πακέτα sendto(2) ssize_t sendto(int s, const void *msg, size_t len, int flags, constr struct sockaddr *to, socklen_t tolen); Χρησιµοποιείται οποτεδήποτε. s: ο socket descriptor. msg: δείκτης σε ϑέση µνήµης, µεγέθους len απ όπου ϑα διαβασθούν τα δεδοµένα. to: δείκτης σε δοµή τύπου struct sockaddr, µεγέθους tolen, που περιέχει πληροφορίες για τον παραλήπτη των δεδοµένων. Μπορεί να είναι NULL αν έχουµε προηγουµένως καλέσει την connect(2). flags: καθορίζει ειδικές απαιτήσεις επικοινωνίας, όπως και στην send(2). Επιστρέφει τον αριθµό των bytes που γράφηκαν στο socket ή -1 για σφάλµα. Αν τα δεδοµένα είναι πολλά για να σταλούν ως ένα πακέτο, επιστρέφεται σφάλµα EMSGSIZE.

53 Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων Αποστολή δεδοµένων σε πακέτα Ροή δεδοµένων Αποστολή δεδοµένων σε πακέτα sendmsg(2) ssize_t sendmsg(int s, const struct msghdr *msg, int flags); Χρησιµοποιείται οποτεδήποτε. s, flags και τιµή επιστροφής όπως και στην send(2). msg: δείκτης σε δοµή τύπου struct msghdr. Το πεδίο msg_name είναι δείκτης σε δοµή τύπου struct sockaddr µεγέθους msg_namelen και περιέχει την διεύθυνση του παραλήπτη, αν δεν έχουµε καλέσει προηγουµένως την connect(2). Τα πεδία msg_iov και msg_control χρησιµοποιούνται για «προχωρηµένες» λειτουργίες. struct msghdr struct msghdr { void* msg_name; /* optional address */ socklen_t msg_namelen; /* size of msg_name */ struct iovec* msg_iov; /* scatter/gather array */ int msg_iovlen; /* #elements in msg_iov */ void* msg_control; /* ancillary data */ socklen_t msg_controllen; /* size of msg_control */ int msg_flags; /* MSG_EOR, MSG_TRUNC, MSG_OOB, MSG_CTRUNC */ };

54 Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων Λήψη δεδοµένων σε πακέτα Ροή δεδοµένων Αποστολή δεδοµένων σε πακέτα recv(2) ssize_t recv(int s, void *buf, size_t len, int flags); Χρησιµοποιείται µόνο όταν το socket είναι σε συνδεδεµένη κατάσταση. s: ο socket descriptor. buf: δείκτης σε ϑέση µνήµης, µεγέθους len όπου ϑα γραφούν τα δεδοµένα. flags: καθορίζει ειδικές απαιτήσεις επικοινωνίας. MSG_OOB: διάβασε «επείγοντα» δεδοµένα. MSG_PEEK: διάβασε δεδοµένα χωρίς να τα ϐγάλεις από τον buffer του socket. MSG_WAITALL: περίµενε να έρθουν όλα τα δεδοµένα (ή επέστρεψε κατάλληλο σφάλµα στο errno αν αποτύχεις). MSG_DONTWAIT: non-blocking επικοινωνία. Επιστρέφει τον αριθµό των bytes που διαβάστηκαν από το socket ή -1 για σφάλµα.

55 Εισαγωγή Προετοιµασία για σύνδεση ηµιουργία και τερµατισµός σύνδεσης Αποστολή & λήψη δεδοµένων Λήψη δεδοµένων σε πακέτα Ροή δεδοµένων Αποστολή δεδοµένων σε πακέτα recvfrom(2)/recvmsg(2) ssize_t recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen); ssize_t recvmsg(int s, struct msghdr *msg, int flags); Χρησιµοποιούνται οποτεδήποτε. s, buf, flags και τιµή επιστροφής όπως στην recv(2). msg όπως και στην sendmsg(2). Το πεδίο from είναι δείκτης σε δοµή δεδοµένων τύπου struct sockaddr και περιέχει την διεύθυνση απ όπου περιµένουµε να λάβουµε δεδοµένα. Μπορεί να είναι NULL αν έχουµε προηγουµένως καλέσει την connect(2). ιαφορετικά, αν δεν έχουµε προηγουµένως καλέσει την connect(2), όταν η συνάρτηση επιστρέψει ϑα έχει πληροφορία για τον αποστολέα των δεδοµένων. Το *fromlen πρέπει αρχικά να περιέχει το µέγεθος του from, ενώ όταν επιστρέψει η συνάρτηση ϑα έχει το τελικό µέγεθος του τελευταίου.

56 Συνδεσµοστραφής επικοινωνία Ασυνδεσµική επικοινωνία Παραδείγµατα

57 Συνδεσµοστραφής επικοινωνία Ασυνδεσµική επικοινωνία Συνδεσµοστραφής επικοινωνία Βασική δοµή Πελάτης Εξυπηρετητής Βασική δοµή Client Server socket(2) socket(2) bind(2) listen(2) connect(2) Connection Request accept(2) Client Server I/O write(2) read(2) close(2) Connection Termination read(2) write(2) close(2)

58 Συνδεσµοστραφής επικοινωνία Ασυνδεσµική επικοινωνία Βασική δοµή Πελάτης Εξυπηρετητής Συνδεσµοστραφής επικοινωνία Πελάτης (1/2) #include <unistd.h> #include <stdlib.h> #include <string.h> #include <stdio.h> #include <errno.h> #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <arpa/inet.h> void error(char *str) { errno? perror(str) : fprintf(stderr, "%s\n", str); exit(1); } int main(int argc, char **argv) { int sd; char *ep; unsigned long port; struct sockaddr_in sin; const char *hello = "hello\n"; const int hello_len = strlen(hello) + 1; if (argc!= 3) error("usage: test-client <ip addr> <port>");

59 Συνδεσµοστραφής επικοινωνία Ασυνδεσµική επικοινωνία Βασική δοµή Πελάτης Εξυπηρετητής Συνδεσµοστραφής επικοινωνία Πελάτης (2/2) memset(&sin, 0, sizeof(sin)); sin.sin_family = AF_INET; port = strtoul(argv[2], &ep, 10); if (argv[2][0] == \0 errno!= 0 ep == NULL *ep!= \0 port > 0xffff) error("invalid port"); sin.sin_port = htons(port); if (inet_pton(af_inet, argv[1], &sin.sin_addr)!= 1) error("unrecognizable address"); if ((sd = socket(pf_inet, SOCK_STREAM, 0)) < 0) error("socket"); if (connect(sd, (struct sockaddr *)&sin, sizeof(sin)) < 0) error("connect"); if (write(sd, hello, hello_len)!= hello_len) error("write"); } close(sd); return 0;

60 Συνδεσµοστραφής επικοινωνία Ασυνδεσµική επικοινωνία Βασική δοµή Πελάτης Εξυπηρετητής Συνδεσµοστραφής επικοινωνία Εξυπηρετητής (1/3) #include <unistd.h> #include <stdlib.h> #include <string.h> #include <stdio.h> #include <errno.h> #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <arpa/inet.h> void error(char *str) { errno? perror(str) : fprintf(stderr, "%s\n", str); exit(1); } int main(int argc, char *argv[]) { char c, *ep; int sd, cd, tmp; unsigned long port; struct sockaddr_in sin; if (argc!= 2) error("usage: test-server <port>");

61 Συνδεσµοστραφής επικοινωνία Ασυνδεσµική επικοινωνία Βασική δοµή Πελάτης Εξυπηρετητής Συνδεσµοστραφής επικοινωνία Εξυπηρετητής (2/3) memset(&sin, 0, sizeof(sin)); sin.sin_family = AF_INET; sin.sin_addr.s_addr = htonl(inaddr_any); port = strtoul(argv[1], &ep, 10); if (argv[1][0] == \0 errno!= 0 ep == NULL *ep!= \0 port > 0xffff) error("invalid port"); sin.sin_port = htons(port); if ((sd = socket(pf_inet, SOCK_STREAM, 0)) < 0) error("socket"); if (bind(sd, (struct sockaddr*)&sin, sizeof(sin)) < 0) error("bind"); if (listen(sd, 5) < 0) error("listen");

62 Συνδεσµοστραφής επικοινωνία Ασυνδεσµική επικοινωνία Βασική δοµή Πελάτης Εξυπηρετητής Συνδεσµοστραφής επικοινωνία Εξυπηρετητής (3/3) while (1) { if ((cd = accept(sd, NULL, NULL)) < 0) error("accept"); for (;;) { if ((tmp = read(cd, &c, sizeof(char))) == 0) break; if (tmp < 0) { if (errno == EINTR) continue; else error("read"); } putchar(c); if (c == \n ) break; } if (close(cd) < 0) error("close"); } } if (close(sd) < 0) error("close"); return 0;

63 Ασυνδεσµική επικοινωνία Συνδεσµοστραφής επικοινωνία Ασυνδεσµική επικοινωνία Βασική δοµή Πελάτης Εξυπηρετητής Βασική δοµή Client Server socket(2) socket(2) Client Server I/O sendto(2) recvfrom(2) close(2) bind(2) recvfrom(2) sendto(2) close(2)

64 Συνδεσµοστραφής επικοινωνία Ασυνδεσµική επικοινωνία Ασυνδεσµική επικοινωνία Πελάτης (1/2) Βασική δοµή Πελάτης Εξυπηρετητής #include <unistd.h> #include <stdlib.h> #include <string.h> #include <stdio.h> #include <errno.h> #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <arpa/inet.h> void error(char *str) { errno? perror(str) : fprintf(stderr, "%s\n", str); exit(1); } int main(int argc, char **argv) { int sd; char *ep; unsigned long port; struct sockaddr_in sin; const char hello[16] = "hello\n"; if (argc!= 3) error("usage: test <ip addr> <port>");

65 Συνδεσµοστραφής επικοινωνία Ασυνδεσµική επικοινωνία Ασυνδεσµική επικοινωνία Πελάτης (2/2) Βασική δοµή Πελάτης Εξυπηρετητής memset(&sin, 0, sizeof(sin)); sin.sin_family = AF_INET; port = strtoul(argv[2], &ep, 10); if (argv[2][0] == \0 errno!= 0 ep == NULL *ep!= \0 port > 0xffff) error("invalid port"); sin.sin_port = htons(port); if (inet_pton(af_inet, argv[1], &sin.sin_addr)!= 1) error("unrecognizable address"); if ((sd = socket(pf_inet, SOCK_DGRAM, 0)) < 0) error("socket"); if (sendto(sd, hello, sizeof(hello), 0, (struct sockaddr*)&sin, sizeof(sin)) < 0) error("sendto"); if (close(sd) < 0) error("close"); } return 0;

66 Συνδεσµοστραφής επικοινωνία Ασυνδεσµική επικοινωνία Βασική δοµή Πελάτης Εξυπηρετητής Ασυνδεσµική επικοινωνία Εξυπηρετητής (1/2) #include <unistd.h> #include <stdlib.h> #include <string.h> #include <stdio.h> #include <errno.h> #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <arpa/inet.h> void error(char *str) { errno? perror(str) : fprintf(stderr, "%s\n", str); exit(1); } int main(int argc, char *argv[]) { int sd; char *ep, buf[16]; unsigned long port; struct sockaddr_in sin; if (argc!= 2) error("usage: test-server <port>");

67 Συνδεσµοστραφής επικοινωνία Ασυνδεσµική επικοινωνία Βασική δοµή Πελάτης Εξυπηρετητής Ασυνδεσµική επικοινωνία Εξυπηρετητής (2/2) memset(&sin, 0, sizeof(sin)); sin.sin_family = AF_INET; sin.sin_addr.s_addr = htonl(inaddr_any); port = strtoul(argv[1], &ep, 10); if (argv[1][0] == \0 errno!= 0 ep == NULL *ep!= \0 port > 0xffff) error("invalid port"); sin.sin_port = htons(port); if ((sd = socket(pf_inet, SOCK_DGRAM, 0)) < 0) error("socket"); if (bind(sd, (struct sockaddr*)&sin, sizeof(sin)) < 0) error("bind"); } while (1) { memset(buf, 0, sizeof(buf)); if (recvfrom(sd, buf, sizeof(buf), 0, NULL, NULL) < 0) error("recvfrom"); printf("%s", buf); } if (close(sd) < 0) error("close"); return 0;

68 Στο επόµενο µάθηµα... Μεταφέρσιµος προγραµµατισµός µε sockets. Σχεδιαστικά µοντέλα δικτυακών εφαρµογών. Εισαγωγή σε Ϲητήµατα υλοποίησης πελατών και εξυπηρετητών.

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

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

Διαβάστε περισσότερα

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

Προγραµµατισµός ικτύων Ε-01 Προγραµµατισµός ικτύων Ε-01 4η ιάλεξη ιδάσκων: Νίκος Ντάρµος [http://www.cs.uoi.gr/~ntarmos/courses/networkprogramming/] Τµήµα Πληροφορικής Πανεπιστήµιο Ιωαννίνων Στο σηµερινό µάθηµα...

Διαβάστε περισσότερα

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

Υποδοχείς (Sockets) Προγραμματισμός II 1 Υποδοχείς (Sockets) Προγραμματισμός II 1 lalis@inf.uth.gr Υποδοχείς Ειδικές δομές διαδιεργασιακής επικοινωνίας Προσπελάζονται μέσω περιγραφέων αρχείων μπορεί να χρησιμοποιηθούν οι read, write, close μπορεί

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4 Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4 1 Διαχείριση εργασιών fork(), exit(), exec() (βλ 2 ο Φροντ.) Επικοινωνία διεργασιών signals (βλ 2 ο Φροντ.) sockets και client/server,

Διαβάστε περισσότερα

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

Ζητήματα Σχεδίασης Λογισμικού Πελάτη Ζητήματα Σχεδίασης Λογισμικού Πελάτη Διαδικτυακός και Ταυτόχρονος Προγραμματισμός 1 Αναγνώριση Τοποθεσίας Εξυπηρετητή Για την αναγνώριση της διεύθυνσης και της θύρας ενός εξυπηρετητή ο πελάτης μπορεί να

Διαβάστε περισσότερα

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

Δικτυακός Προγραμματισμός (Sockets Programming) Εργαστήριο Γ Εξάμηνο, Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας Δικτυακός (Sockets Programming) Εργαστήριο Γ Εξάμηνο, Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας Δήλωση Οι διαφάνειες βασίζονται στα βιβλία: (1) Δικτυακός, Douglas E. Comer, David L. Stevens, Εκδόσεις ΙΩΝ,

Διαβάστε περισσότερα

Socket Application Programming Interface

Socket Application Programming Interface Socket Application Programming Interface Εισαγωγή Το socket είναι ένας τύπος διεπαφής μεταξύ των προγραμμάτων εφαρμογής και του λογισμικού πρωτοκόλλων Είναι ευρέως διαθέσιμο για να διασφαλίζεται η μεταφερσιμότητα

Διαβάστε περισσότερα

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

Εργαστήριο Δικτύων Υπολογιστών Εργαστήριο Δικτύων Υπολογιστών 3 η Διάλεξη: Δικτυακός Προγραμματισμός Unix Socket programming Μοντέλο client-server O βασικός τύπος δικτυακών εφαρμογών είναι client - server H σχέση server και client μπορεί

Διαβάστε περισσότερα

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

Δίκτυα Επικοινωνιών ΙΙ: Network Programming TCP Sockets Δίκτυα Επικοινωνιών ΙΙ: Network Programming TCP Sockets Δρ. Απόστολος Γκάμας Διδάσκων 407/80 gkamas@uop.gr Δίκτυα Επικοινωνιών ΙΙ Διαφάνεια 1 1 Δικτυακός Προγραμματισμός Βασικές Έννοιες: IP addresses,

Διαβάστε περισσότερα

ιαδίκτυα και το ιαδίκτυο (Internetworking and the Internet)

ιαδίκτυα και το ιαδίκτυο (Internetworking and the Internet) ιαδίκτυα και το ιαδίκτυο (Internetworking and the Internet) Περίληψη Πως τα διάφορα δίκτυα διαφέρουν µεταξύ τους Πως συνδέονται ανοµοιογενή δίκτυα µεταξύ τους Εικονικά κυκλώµατα συνδεδεµένα σε σειρά ιαδικτύωση

Διαβάστε περισσότερα

IPv6. Ιατρέλλης Όμηρος Καθηγητής Εφαρμογών

IPv6. Ιατρέλλης Όμηρος Καθηγητής Εφαρμογών IPv6 Ιατρέλλης Όμηρος Καθηγητής Εφαρμογών Περίληψη Έννοιες Διευθυνσιοδότηση Neighbor/Router Discovery Header Fields Security Headers Περίληψη/Ερωτήσεις Βασικές Έννοιες Protocol Επίσημη περιγραφή (συμφωνίες)

Διαβάστε περισσότερα

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

Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals Δρ. Απόστολος Γκάμας Διδάσκων 407/80 gkamas@uop.gr Δίκτυα Επικοινωνιών ΙΙ Διαφάνεια 1 1 UDP vs TCP Το UDP είναι ένα connectionless, μη αξιόπιστο,

Διαβάστε περισσότερα

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

Επικοινωνία Client/Server Υποδοχές Επικοινωνία Client/Server Υποδοχές Χάρης Μανιφάβας Τμήμα Εφ. Πληροφορικής & Πολυμέσων ΤΕΙ Κρήτης Επικοινωνία με Υποδοχές 1 Ορισμός των Υποδοχών (sockets) Τα sockets προσφέρουν μια γενικευμένη ικανότητα

Διαβάστε περισσότερα

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

2η Προγραµµατιστική Εργασία Προγραµµατισµός ικτύων (Ε-01) 2η Προγραµµατιστική Εργασία Επέκταση ϐασικής ϐιβλιοθήκης δικτυακού προγραµµατισµού και χρήση της για την υλοποίηση παράλληλου εξυπηρετητή πρωτοκόλλου µεταφοράς αρχείων ιδάσκων

Διαβάστε περισσότερα

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

Εργαστήριο Λειτουργικών Συστήματων 8ο εξάμηνο, Ακαδημαϊκή περίοδος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Εργαστήριο

Διαβάστε περισσότερα

Διαδίκτυα και το Διαδίκτυο (Internetworking and the Internet)

Διαδίκτυα και το Διαδίκτυο (Internetworking and the Internet) Διαδίκτυα και το Διαδίκτυο (Internetworking and the Internet) Περίληψη Πως τα διάφορα δίκτυα διαφέρουν μεταξύ τους Πως συνδέονται ανομοιογενή δίκτυα μεταξύ τους Εικονικά κυκλώματα συνδεδεμένα σε σειρά

Διαβάστε περισσότερα

Πρωτόκολλα Επικοινωνίας Πρωτόκολλο IP

Πρωτόκολλα Επικοινωνίας Πρωτόκολλο IP Πρωτόκολλα Επικοινωνίας Πρωτόκολλο IP Πρωτόκολλα επικοινωνίας Ορισμός Σύνολα προσυμφωνημένων κανόνων που απαιτούνται για τον καθορισμό του τρόπου με τον οποίο επιτυγχάνεται η ανταλλαγή δεδομένων, και επομένως

Διαβάστε περισσότερα

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

Προγραµµατισµός ικτύων Ε-01 Προγραµµατισµός ικτύων Ε-01 7η ιάλεξη ιδάσκων: Νίκος Ντάρµος [http://www.cs.uoi.gr/~ntarmos/courses/networkprogramming/] Τµήµα Πληροφορικής Πανεπιστήµιο Ιωαννίνων Στο σηµερινό µάθηµα...

Διαβάστε περισσότερα

3.2 Το αυτοδύναμο πακέτο IP (datagram) Δομή πακέτου

3.2 Το αυτοδύναμο πακέτο IP (datagram) Δομή πακέτου 3.2 Το αυτοδύναμο πακέτο IP (datagram) Δομή πακέτου 1 / 54 Το πρωτόκολλο Διαδικτύου (Internet Protocol -IP) ενθυλακώνει τα πακέτα δεδομένων που του προωθούνται από το ανώτερο επίπεδο σε αυτοδύναμα πακέτα

Διαβάστε περισσότερα

Επαναληπτικό µάθηµα επί των αρχών λειτουργίας του ιαδικτύου. ρ. Κωνσταντίνος Σ. Χειλάς. Ethernet

Επαναληπτικό µάθηµα επί των αρχών λειτουργίας του ιαδικτύου. ρ. Κωνσταντίνος Σ. Χειλάς. Ethernet Επαναληπτικό µάθηµα επί των αρχών λειτουργίας του ιαδικτύου ρ Κωνσταντίνος Σ Χειλάς Ethernet Ένα πλαίσιο (frame) Ethernet 00 d0 06 99 18 28 00 02 b3 0b 86 08 00 45 00 Η επικεφαλίδα του IP 0 ToS 0 ToS 00

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα Λειτουργικά Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:09 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

Διαβάστε περισσότερα

Δίκτυα Υψηλών Ταχυτήτων Ενότητα 7: Διευθυνσιοδότηση Internet Protocol (IP) v4

Δίκτυα Υψηλών Ταχυτήτων Ενότητα 7: Διευθυνσιοδότηση Internet Protocol (IP) v4 Δίκτυα Υψηλών Ταχυτήτων Ενότητα 7: Διευθυνσιοδότηση Internet Protocol (IP) v4 Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

Διαβάστε περισσότερα

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

Δικτυακός προγραμματισμός Δικτυακός προγραμματισμός (hands on) Εργαστήριο Δικτύων Υπολογιστών 2014-2015 Τμήμα Μηχανικών Η/Υ και Πληροφορικής Μοντέλο client-server O βασικός τύπος δικτυακών εφαρμογών είναι client - server H σχέση

Διαβάστε περισσότερα

ΔΡΟΜΟΛΟΓΗΣΗ ΠΑΚΕΤΩΝ. Η δρομολόγηση των πακέτων μπορεί να γίνει είτε κάνοντας χρήση ασυνδεσμικής υπηρεσίας είτε συνδεσμοστρεφούς υπηρεσίας.

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

Διαβάστε περισσότερα

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

Δίκτυα Υπολογιστών ΙΙ (Ασκήσεις Πράξης) TEI Σερρών Τμήμα Πληροφορικής και Επικοινωνιών Δίκτυα Υπολογιστών ΙΙ (Ασκήσεις Πράξης) Ανάλυση Πρωτοκόλλων Τομέας Τηλεπικοινωνιών και Δικτύων Δρ. Αναστάσιος Πολίτης Καθηγητής Εφαρμογών anpol@teiser.gr

Διαβάστε περισσότερα

Δίκτυα Επικοινωνιών ΙΙ : Εισαγωγή στην IPv6 τεχνολογία

Δίκτυα Επικοινωνιών ΙΙ : Εισαγωγή στην IPv6 τεχνολογία Δίκτυα Επικοινωνιών ΙΙ : Εισαγωγή στην IPv6 τεχνολογία Δρ. Απόστολος Γκάμας Διδάσκων 407/80 gkamas@uop.gr Δίκτυα Επικοινωνιών ΙΙ Διαφάνεια 1 1 Περιεχόμενα Αναφορά στις βασικές αρχές του IPv6 Περιορισμοί

Διαβάστε περισσότερα

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

HY-335a Project: microtcp *, μία lightweight TCP βιβλιοθήκη HY-335a Project: microtcp *, μία lightweight TCP βιβλιοθήκη Deadline πρώτης ϕάσης : 13 Δεκεμβρίου 2016, 23:59 * Εμπνευσμένο και υλοποιημένο από το Μανώλη Σουρλίγκα :) Γενική περιγραϕή Στο οικοσύστημα του

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΙΚΤΥΩΝ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΙΚΤΥΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΙΚΤΥΩΝ ΔΙΑΛΕΞΗ 2 ΔΙΔΑΣΚΩΝ: ΑΝΑΡΓΥΡΟΣ ΣΙΔΕΡΗΣ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΟΛΥΜΕΣΩΝ ΤΕΙ ΚΡΗΤΗΣ ΠΡΩΤΟΚΟΛΛΟ ΔΙΑΔΙΚΤΥΟΥ

Διαβάστε περισσότερα

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

Επικοινωνία Διεργασιών στο Internet με POSIX Sockets Επικοινωνία Διεργασιών στο Internet με POSIX Sockets ΣΤ Εξάμηνο, Κατεύθυνση Μηχανικών Δικτύων Τ.Ε. Τμήμα Μηχανικών Πληροφορικής Τ.Ε. ΤΕΙ Στερεάς Ελλάδας plam@inf.teilam.gr, 2016 Δήλωση Οι διαφάνειες βασίζονται

Διαβάστε περισσότερα

{ int pipe(int fd[ ]) close

{ 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

Διαβάστε περισσότερα

ΕΑΠ/ΠΛΗ22/ΑΘΗ.3 4 η ΟΣΣ 15/03/2014 Συμπληρωματικές Διαφάνειες

ΕΑΠ/ΠΛΗ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

Διαβάστε περισσότερα

Εγχειρίδιο Συναρτήσεων. 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) Socket *sopen(const int type, const int protocol, const char *host, const char *service) Στην περίπτωση ενός client, δημιουργεί μια νέα σύνδεση και κατασκευάζει μια δομή Socket που σχετίζεται με αυτή Σε

Διαβάστε περισσότερα

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ. Στρώμα δικτύου στο Internet. Δίκτυα Υπολογιστών

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ. Στρώμα δικτύου στο Internet. Δίκτυα Υπολογιστών ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Στρώμα δικτύου στο Internet Παράδοση πακέτων IP Για να παραδοθεί ένα πακέτο IP εμπλέκονται δύο διαφορετικές διεργασίες: 1. Προώθηση: Πώς θα μεταφερθεί το πακέτο από τη διεπαφή εισόδου

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΙΚΤΥΩΝ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΙΚΤΥΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΙΚΤΥΩΝ ΔΙΑΛΕΞΗ 3 ΔΙΔΑΣΚΩΝ: ΑΝΑΡΓΥΡΟΣ ΣΙΔΕΡΗΣ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΟΛΥΜΕΣΩΝ ΤΕΙ ΚΡΗΤΗΣ ΠΡΩΤΟΚΟΛΛΟ ΕΛΕΓΧΟΥ

Διαβάστε περισσότερα

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

Τεχνολογίες ιαδικτύου Τεχνολογίες ιαδικτύου Εισαγωγή Αρχιτεκτονική, Πρωτόκολλα και Πρότυπα Βασικών Υπηρεσιών Ιστορικά Στοιχεία ARPANET Ο «παππούς» των δικτύων Αναπτύχθηκε από την DARPA στα τέλη του 60 Το 83 διασπάται σε MILNET

Διαβάστε περισσότερα

Υποστήριξη Κινητικότητας στο Internet. Σαράντης Πασκαλής <paskalis@di.uoa.gr> Εθνικό και Καποδιστριακό Πανεπιστήµιο Αθηνών

Υποστήριξη Κινητικότητας στο Internet. Σαράντης Πασκαλής <paskalis@di.uoa.gr> Εθνικό και Καποδιστριακό Πανεπιστήµιο Αθηνών Υποστήριξη Κινητικότητας στο Internet Σαράντης Πασκαλής Εθνικό και Καποδιστριακό Πανεπιστήµιο Αθηνών 1 Mobile IP Ιστορικό Το πρωτόκολλο Internet σχεδιάστηκε για στατικούς υπολογιστές.

Διαβάστε περισσότερα

ΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ. Στρώμα δικτύου στο Internet. Δίκτυα Υπολογιστών

ΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ. Στρώμα δικτύου στο Internet. Δίκτυα Υπολογιστών ΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Στρώμα δικτύου στο Internet Παράδοση πακέτων IP Για να παραδοθεί ένα πακέτο IP εμπλέκονται δύο διαφορετικές διεργασίες: 1. Προώθηση: Πώς θα μεταφερθεί το πακέτο από τη διεπαφή εισόδου

Διαβάστε περισσότερα

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

Ζητήματα Σχεδίασης Λογισμικού Εξυπηρετητή Ζητήματα Σχεδίασης Λογισμικού Εξυπηρετητή Διαδικτυακός και Ταυτόχρονος Προγραμματισμός 1 Ταυτόχρονοι και Επαναληπτικοί Εξυπηρετητές Επαναληπτικός εξυπηρετητής: επεξεργάζεται μόνο μία αίτηση τη φορά. Ταυτόχρονος

Διαβάστε περισσότερα

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

Εργαστήριο Δικτύων Υπολογιστών Εργαστήριο Δικτύων Υπολογιστών 2 η Διάλεξη: TCP/UDP Δικτυακά πρωτόκολλα / εφαρμογές Ports Unix δικτυακές εντολές Transmission Control Protocol - TCP Πρωτόκολλο Mεταφοράς RFC 793 [Postel 1981] Xρησιμοποιεί

Διαβάστε περισσότερα

Πανεπιστήµιο Πατρών Πολυτεχνική Σχολή Τµήµα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής. Εισαγωγή στο IPv6 Από το IPv4 στο IPv6

Πανεπιστήµιο Πατρών Πολυτεχνική Σχολή Τµήµα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής. Εισαγωγή στο IPv6 Από το IPv4 στο IPv6 Πανεπιστήµιο Πατρών Πολυτεχνική Σχολή Τµήµα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Εισαγωγή στο IPv6 Από το IPv4 στο IPv6 Χρήστος Ι. Μπούρας Αναπληρωτής Καθηγητής Πανεπιστηµίου Πατρών Κωνσταντίνος

Διαβάστε περισσότερα

Δίκτυα Υπολογιστών Το επίπεδο δικτύου (network layer)

Δίκτυα Υπολογιστών Το επίπεδο δικτύου (network layer) Δίκτυα Υπολογιστών Το επίπεδο δικτύου (network layer) Κ. Βασιλάκης Περίγραμμα ενότητες που εξετάζονται Μοντέλα υπηρεσιών του επιπέδου δικτύου Προώθηση έναντι δρομολόγησης (forwarding vs routing) IP: Πρωτόκολλο

Διαβάστε περισσότερα

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

Επίπεδο δικτύου IP Forwading κτλ Επίπεδο δικτύου IP Forwading κτλ (IP για που το έβαλες) Εργαστήριο Δικτύων Υπολογιστών 2014-2015 Τμήμα Μηχανικών Η/Υ και Πληροφορικής Επίπεδο δικτύου (Network layer) Επίπεδο εφαρμογής (Application layer):

Διαβάστε περισσότερα

3.3 Πρωτόκολλα ανεύρεσης και απόδοσης διευθύνσεων, Address Resolution Protocol (ARP) και Dynamic Host Configuration Protocol (DHCP)

3.3 Πρωτόκολλα ανεύρεσης και απόδοσης διευθύνσεων, Address Resolution Protocol (ARP) και Dynamic Host Configuration Protocol (DHCP) 3.3 Πρωτόκολλα ανεύρεσης και απόδοσης διευθύνσεων, Address Resolution Protocol (ARP) και Dynamic Host Configuration Protocol (DHCP) 1 / 32 Σε έναν κόμβο ο οποίος επιθυμεί να αποστείλει δεδομένα σε κάποιον

Διαβάστε περισσότερα

Επίπεδο Δικτύου: Διαδικτύωση

Επίπεδο Δικτύου: Διαδικτύωση Επίπεδο Δικτύου: Διαδικτύωση Μάθημα «Δίκτυα Υπολογιστών» Τμήμα Πληροφορικής Οικονομικό Πανεπιστήμιο Αθηνών Εαρινό Εξάμηνο 2013-14 Γεώργιος Ξυλωμένος Γεώργιος Δ. Σταμούλης Βασίλειος Σύρης Εισαγωγή Υπάρχει

Διαβάστε περισσότερα

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 1999-2000 ΜΑΘΗΜΑ : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ : Θ. ΑΠΟΣΤΟΛΟΠΟΥΛΟΣ ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΗΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ CLIENT-SERVER(πελάτη-εξυπηρετητή)

Διαβάστε περισσότερα

ΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ. Στρώμα δικτύου στο Internet. Δίκτυα Υπολογιστών

ΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ. Στρώμα δικτύου στο Internet. Δίκτυα Υπολογιστών ΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Στρώμα δικτύου στο Internet Δίκτυα Υπολογιστών Εισαγωγή To IP (Internet Protocol) είναι το πρωτόκολλο του στρώματος δικτύου στο διαδίκτυο Η τρέχουσα έκδοση είναι η 4 (IPv4) Ορίζεται στο

Διαβάστε περισσότερα

ΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ. Στρώμα δικτύου στο Internet. Δίκτυα Υπολογιστών

ΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ. Στρώμα δικτύου στο Internet. Δίκτυα Υπολογιστών ΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Στρώμα δικτύου στο Internet Δίκτυα Υπολογιστών Εισαγωγή To IP (Internet Protocol) είναι το πρωτόκολλο του στρώματος δικτύου στο διαδίκτυο Η τρέχουσα έκδοση είναι η 4 (IPv4) Ορίζεται στο

Διαβάστε περισσότερα

7.5 Πρωτόκολλο IP. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

7.5 Πρωτόκολλο IP. Τεχνολογία ικτύων Επικοινωνιών ΙΙ Τεχνολογία ικτύων Επικοινωνιών ΙΙ 7.5 Πρωτόκολλο IP 38. Τι είναι το πρωτόκολλο ιαδικτύου (Internet Protocol, IP); Είναι το βασικό πρωτόκολλο του επιπέδου δικτύου της τεχνολογίας TCP/IP. Βασίζεται στα αυτοδύναµα

Διαβάστε περισσότερα

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Είσοδος/Έξοδος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Είσοδος/Έξοδος Μέχρι τώρα όποτε θέλαμε να διαβάσουμε χρησιμοποιούσαμε πάντα

Διαβάστε περισσότερα

Χρ. Μπούρας Αναπληρωτής Καθηγητής Πανεπιστηµίου Πατρών Επιστηµονικός Υπεύθυνος ΕΜ6/ΕΑΙΤΥ

Χρ. Μπούρας Αναπληρωτής Καθηγητής Πανεπιστηµίου Πατρών Επιστηµονικός Υπεύθυνος ΕΜ6/ΕΑΙΤΥ σελίδα 1 Χρ. Μπούρας Αναπληρωτής Καθηγητής Πανεπιστηµίου Πατρών Επιστηµονικός Υπεύθυνος ΕΜ6/ΕΑΙΤΥ Περιεχόµενα Αναφορά στις βασικές αρχές του IPv6 Περιορισµοί του IPv4, προσωρινές λύσεις σελίδα 2 Λόγοι

Διαβάστε περισσότερα

Α2. Να γράψετε τους αριθμούς 1-5 από τη Στήλη Α και δίπλα το γράμμα της Στήλης Β που δίνει τη σωστή αντιστοίχηση.

Α2. Να γράψετε τους αριθμούς 1-5 από τη Στήλη Α και δίπλα το γράμμα της Στήλης Β που δίνει τη σωστή αντιστοίχηση. ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ / Γ- ΕΠΑ.Λ. ΗΜΕΡΟΜΗΝΙΑ: 21-02- 2016 ΕΠΙΜΕΛΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ: Ι. ΜΙΧΑΛΕΑΚΟΣ-Α.ΚΑΤΡΑΚΗ ΘΕΜΑ Α. A1. Να γράψετε το γράμμα καθεμιάς από τις παρακάτω προτάσεις και δίπλα τη

Διαβάστε περισσότερα

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

4 η ιάλεξη: Signals UDP Sockets Εργαστήριο ικτύων Υπολογιστών 4 η ιάλεξη: ικτυακός Προγραμματισμός Signals UDP Sockets TCP sockets και signals Όταν σε ένα TCP server κάνουμε fork (γεννάμε διεργασίες-παιδιά servers για να εξυπηρετήσουμε

Διαβάστε περισσότερα

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

Βασικά Θέματα Επικοινωνίας. Κατανεμημένα Συστήματα 1 Βασικά Θέματα Επικοινωνίας Κατανεμημένα Συστήματα 1 lalis@inf.uth.gr Πρωτόκολλο επικοινωνίας Η/Υ Προσδιορίζει τους κανόνες που διέπουν την επικοινωνία ανάμεσα στα εμπλεκόμενα μέρη τα μηνύματα και (εν μέρει)

Διαβάστε περισσότερα

Δυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός II 1

Δυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός II 1 Δυναμική δέσμευση και αποδέσμευση μνήμης Προγραμματισμός II 1 lalis@inf.uth.gr Γιατί χρειάζεται η δυναμική μνήμη; Οι απαιτήσεις του προγράμματος σε μνήμη μπορεί να είναι άγνωστες την ώρα της συγγραφής

Διαβάστε περισσότερα

Γενικές Αρχές. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

Γενικές Αρχές. Τεχνολογία ικτύων Επικοινωνιών ΙΙ Τεχνολογία ικτύων Επικοινωνιών ΙΙ 7.1.1. Γενικές Αρχές 1. Τι ονοµάζεται επικοινωνιακό υποδίκτυο και ποιο είναι το έργο του; Το σύνολο όλων των ενδιάµεσων κόµβων που εξασφαλίζουν την επικοινωνία µεταξύ

Διαβάστε περισσότερα

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

Ιόνιο Πανεπιστήµιο Τµήµα Πληροφορικής Συστήµατα Επικοινωνίας. Μοντέλο TCP/IP. Ενότητα E. Πόσοι εµπλέκονται σε ένα Σύστηµα Επικοινωνίας Ιόνιο Πανεπιστήµιο Τµήµα Πληροφορικής ίκτυα Η/Υ Συστήµατα Επικοινωνίας (Ε) (PC) (N) Επικοινωνίες: Εφαρµογές Υπολογιστές ίκτυα Μοντέλο TCP/IP πολλές πολλοί N A N B Ενότητα E PC A PC B PC D PC E E A E B

Διαβάστε περισσότερα

ιαδίκτυα & Ενδοδίκτυα Η/Υ

ιαδίκτυα & Ενδοδίκτυα Η/Υ ιαδίκτυα & Ενδοδίκτυα Η/Υ ΠΡΩΤΟΚΟΛΛΑ ΙΑ ΙΚΤΥΩΣΗΣ (Kεφ. 15) IPV6 ΠΟΛΛΑΠΛΗ ΑΠΟΣΤΟΛΗ ΙΡ ΠΡΟΒΛΗΜΑΤΑ επί του κεφ. 15 Βιβλίο Μαθήµατος: Επικοινωνίες Υπολογιστών & εδοµένων, William Stallings, 6/e, 2000. ΕΥ -

Διαβάστε περισσότερα

Το Επίπεδο Δικτύου του Internet

Το Επίπεδο Δικτύου του Internet Το Επίπεδο Δικτύου του Internet Ε Εξάμηνο, Τμήμα Μηχανικών Πληροφορικής Τ.Ε. ΤΕΙ Στερεάς Ελλάδας Δήλωση Οι διαφάνειες βασίζονται στα βιβλία: (1) Computer Networking: A Top Down Approach Featuring the Internet,

Διαβάστε περισσότερα

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

Επίπεδο δικτύου IP διευθυνσιοδότηση Επίπεδο δικτύου IP διευθυνσιοδότηση (πες μου την IP σου να σου πω ποιος είσαι) Εργαστήριο Δικτύων Υπολογιστών 2014-2015 Τμήμα Μηχανικών Η/Υ και Πληροφορικής Επίπεδο δικτύου (Network layer) Επίπεδο εφαρμογής

Διαβάστε περισσότερα

Δίκτυα Υπολογιστών Το επίπεδο δικτύου (network layer)

Δίκτυα Υπολογιστών Το επίπεδο δικτύου (network layer) Δίκτυα Υπολογιστών Το επίπεδο δικτύου (network layer) Κ. Βασιλάκης Περίγραμμα ενότητες που εξετάζονται Μοντέλα υπηρεσιών του επιπέδου δικτύου Προώθηση έναντι δρομολόγησης (forwarding vs routing) IP: Πρωτόκολλο

Διαβάστε περισσότερα

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

1η Προγραµµατιστική Εργασία Προγραµµατισµός ικτύων (Ε-01) 1η Προγραµµατιστική Εργασία ηµιουργία ϐασικής ϐιβλιοθήκης δικτυακού προγραµµατισµού και χρήση της για την υλοποίηση απλού πελάτη και εξυπηρετητή ανταλλαγής αρχείων ιδάσκων

Διαβάστε περισσότερα

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

Προγραµµατισµός ικτύων Ε-01 Προγραµµατισµός ικτύων Ε-01 2η ιάλεξη ιδάσκων: Νίκος Ντάρµος [http://www.cs.uoi.gr/~ntarmos/courses/networkprogramming/] Τµήµα Πληροφορικής Πανεπιστήµιο Ιωαννίνων Λεπτοµέρειες πρωτοκόλλων

Διαβάστε περισσότερα

HY-335a Project: microtcp, μία lightweight TCP βιβλιοθήκη. Deadline πρώτης ϕάσης : 19/11/ :59

HY-335a Project: microtcp, μία lightweight TCP βιβλιοθήκη. Deadline πρώτης ϕάσης : 19/11/ :59 HY-335a Project: microtcp, μία lightweight TCP βιβλιοθήκη Deadline πρώτης ϕάσης : 19/11/2017 23:59 Γενική περιγραϕή Στο οικοσύστημα του Internet of Things (IoT) υπάρχει μια ευρεία γκάμα από δικτυακές συσκευές.

Διαβάστε περισσότερα

ΔΙΚΤΥΑ (20-22) Π. Φουληράς

ΔΙΚΤΥΑ (20-22) Π. Φουληράς ΔΙΚΤΥΑ (20-22) Π. Φουληράς Αυτοδύναμα Πακέτα IP και η Προώθησή τους Για να αντιμετωπισθεί η πιθανή ετερογένεια διαφόρων δικτύων που συνδέονται μέσω ενός δρομολογητή, ορίσθηκε μία μορφή πακέτων ανεξάρτητη

Διαβάστε περισσότερα

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

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο 2012-2013 Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη Project 2012-2013 Υλοποίηση ενός chat server-client Παράδοση: 7/2/2013

Διαβάστε περισσότερα

Τεχνολογία TCP/IP ΙΑ ΙΚΤΥΩΣΗ- INTERNET. Τεχνολογίες Τηλεκπαίδευσης & Εφαρµογές - Ιούλιος 09 1 http://creativecommons.org/licenses/by-nc-nd/3.

Τεχνολογία TCP/IP ΙΑ ΙΚΤΥΩΣΗ- INTERNET. Τεχνολογίες Τηλεκπαίδευσης & Εφαρµογές - Ιούλιος 09 1 http://creativecommons.org/licenses/by-nc-nd/3. Τεχνολογία TCP/IP ΙΑ ΙΚΤΥΩΣΗ- INTERNET Εφαρµογές - Ιούλιος 09 1 Εισαγωγή στην τεχνολογία TCP/IP Τεχνολογία TCP/IP TCP/IP Πρωτόκολλα TCP/IP ή τεχνολογία TCP/IP ή τεχνολογία ιαδικτύου (Internet)( ιαδίκτυο

Διαβάστε περισσότερα

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

Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας Βιβλιοθηκονοµίας. Μοντέλο TCP/IP. Ενότητα E. Συστήµατα Επικοινωνίας Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας Βιβλιοθηκονοµίας ίκτυα Η/Υ Μοντέλο TCP/IP Ενότητα E ρ. Ε. Μάγκος Συστήµατα Επικοινωνίας (Ε) (PC) (N) Επικοινωνίες: Εφαρµογές Υπολογιστές ίκτυα πολλές πολλοί N A N

Διαβάστε περισσότερα

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

Προγραµµατισµός ικτύων Ε-01 Προγραµµατισµός ικτύων Ε-01 1η ιάλεξη ιδάσκων: Νίκος Ντάρµος [http://www.cs.uoi.gr/~ntarmos/courses/networkprogramming/] Τµήµα Πληροφορικής Πανεπιστήµιο Ιωαννίνων Γενικά Υλη Βαθµολόγηση

Διαβάστε περισσότερα

Ethernet Ethernet ΙΕΕΕ CSMA/CD

Ethernet Ethernet ΙΕΕΕ CSMA/CD Ethernet Τα τοπικά δίκτυα είναι συνήθως τύπου Ethernet ή λέμε ότι ακολουθούν το πρότυπο ΙΕΕΕ 802.3 Ακολουθούν το μηχανισμό CSMA/CD (Πολλαπλή πρόσβαση με Ακρόαση Φέροντος και Ανίχνευση Συγκρούσεων). Πολλαπλή

Διαβάστε περισσότερα

ΔΙΚΤΥΑ (23-26) Π. Φουληράς

ΔΙΚΤΥΑ (23-26) Π. Φουληράς ΔΙΚΤΥΑ (23-26) Π. Φουληράς Μηχανισμός Αναφοράς Σφαλμάτων (ICMP) Πρωτόκολλο Μηνυμάτων Ελέγχου Διαδικτύου (Internet Control Message Protocol) Απαραίτητο για κάθε τυπική υλοποίηση του IP Το ότι το IP προσφέρει

Διαβάστε περισσότερα

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

Διαχείριση Δικτύων Εργαστήριο (Διαφάνειες) Διαχείριση Δικτύων Εργαστήριο (Διαφάνειες) 2016 Εντολή: ping Απλή και βασική εντολή ελέγχου σύνδεσης με κάποια IP διεύθυνση (πχ. υπολογιστή) ping Στέλνει επαναλαμβανόμενα μηνύματα στην IP

Διαβάστε περισσότερα

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128] ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

Διαβάστε περισσότερα

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

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Γ Τάξη ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΑ.Λ. ΤΕΤΡΑΔΙΟ ΜΑΘΗΤΗ Κωνσταντοπούλου Μ., Χρυσοστόμου Γ. ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Γ Τάξη ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΑ.Λ. ΤΕΤΡΑΔΙΟ ΜΑΘΗΤΗ Κωνσταντοπούλου Μ., Χρυσοστόμου Γ. Υποδείξεις απαντήσεων/λύσεων στις ερωτήσεις, ασκήσεις και δραστηριότητες του τετραδίου μαθητή, Κεφ.1

Διαβάστε περισσότερα

Συνοπτική Μεθοδολογία Ασκήσεων Κεφαλαίου 7. Ασκήσεις στο IP Fragmentation

Συνοπτική Μεθοδολογία Ασκήσεων Κεφαλαίου 7. Ασκήσεις στο IP Fragmentation Συνοπτική Μεθοδολογία Ασκήσεων Κεφαλαίου 7 Οι σημειώσεις που ακολουθούν περιγράφουν τις ασκήσεις που θα συναντήσετε στο κεφάλαιο 7. Η πιο συνηθισμένη και βασική άσκηση αναφέρεται στο IP Fragmentation,

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Δίκτυα Η/Υ στην Επιχείρηση Δίκτυα Η/Υ στην Επιχείρηση Δικτυακά πρωτόκολλα και εφαρμογές, Δρομολόγηση Γκάμας Βασίλειος, Εργαστηριακός Συνεργάτης Μοντέλο πελάτη-εξυπηρετητή Προκειμένου να χρησιμοποιήσουμε μια υπηρεσία του Internet

Διαβάστε περισσότερα

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

Τι είναι ένα δίκτυο υπολογιστών; Αρχιτεκτονική επιπέδων πρωτοκόλλων. Δικτυακά πρωτόκολλα Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15 Δίκτυα υπολογιστών (και το Διαδίκτυο) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι ένα δίκτυο υπολογιστών;

Διαβάστε περισσότερα

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ (Κεφάλαιο 2.7 και 12) Αρχεία στην C ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 14-1 Επανάληψη στην Αποθήκευση (Storage) Για να αποθηκεύσουµε δεδοµένα από ένα πρόγραµµα, πρέπει να χρησιµοποιήσουµε την ευτερεύουσα

Διαβάστε περισσότερα

Δίκτυα Υπολογιστών Ενότητα 8: Internet Protocol - IP

Δίκτυα Υπολογιστών Ενότητα 8: Internet Protocol - IP Δίκτυα Υπολογιστών Ενότητα 8: Internet Protocol - IP Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

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

Πρωτόκολλα Διαδικτύου Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Πρωτόκολλα Διαδικτύου 10 η Διάλεξη Δημοσθένης Κυριαζής Τετάρτη 3 Ιουνίου 2015 Σημερινή διάλεξη Σύνοψη 9ης διάλεξης Επίπεδο δικτύου Επίπεδο δικτύου του Internet

Διαβάστε περισσότερα

Α.Τ.Ε.Ι. ΑΡΤΑΣ Τμήμα Τηλεπληροφορικής και Διοίκησης

Α.Τ.Ε.Ι. ΑΡΤΑΣ Τμήμα Τηλεπληροφορικής και Διοίκησης Α.Τ.Ε.Ι. ΑΡΤΑΣ Τμήμα Τηλεπληροφορικής και Διοίκησης ΜΕΘΟΔΟΙ ΚΑΙ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΗΝ ΔΙΑΧΕΙΡΙΣΗ ΤΗΣ Ipv6 ΓΕΩΡΓΙΟΣ ΤΣΙΤΣΙΡΟΥΔΗΣ ΕΞΑΜΗΝΟ :ΠΤΥΧΙΟ A.M. 3557 ΑΡΤΑ 2006 1 Περιεχόμενα Εισαγωγή. 3 1.1 Επισκόπηση των

Διαβάστε περισσότερα

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

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15. Δίκτυα υπολογιστών. (και το Διαδίκτυο) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15 Δίκτυα υπολογιστών (και το Διαδίκτυο) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι ένα δίκτυο υπολογιστών;

Διαβάστε περισσότερα

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

ΠΡΩΤΟΚΟΛΛΟ TCP/IP ΜΑΚΡΟΠΟΥΛΟΣ ΝΙΚΟΛΑΟΣ ΠΡΩΤΟΚΟΛΛΟ TCP/IP ΜΑΚΡΟΠΟΥΛΟΣ ΝΙΚΟΛΑΟΣ Εισαγωγή ΑRPANET (1969) Τεχνική Μεταγωγής Πακέτων INTERNETTING PROJECT (1973) Σύνδεση διαφορετικών δικτύων Πρωτόκολλα IP, TCP (Κανόνες Ανταλλαγής Δεδομένων) Προσθήκη

Διαβάστε περισσότερα

ΔΙΑΓΩΝΙΣΜΑ ΤΕΛΙΚΗΣ ΕΠΑΝΑΛΗΨΗΣ ΣΤΙΣ ΕΝΟΤΗΤΕΣ

ΔΙΑΓΩΝΙΣΜΑ ΤΕΛΙΚΗΣ ΕΠΑΝΑΛΗΨΗΣ ΣΤΙΣ ΕΝΟΤΗΤΕΣ ΕΠΑ.Λ. Άμφισσας Σχολικό Έτος : 2011-2012 Τάξη : Γ Τομέας : Πληροφορικής Μάθημα : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ Διδάσκων : Χρήστος Ρέτσας Η-τάξη : tiny.cc/retsas-diktya2 ΔΙΑΓΩΝΙΣΜΑ ΤΕΛΙΚΗΣ ΕΠΑΝΑΛΗΨΗΣ ΣΤΙΣ ΕΝΟΤΗΤΕΣ

Διαβάστε περισσότερα

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

Διαβάστε περισσότερα

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

Προγραμματισμός Διαχείρισης Συστημάτων ΙΙ Προγραμματισμός Διαχείρισης Συστημάτων ΙΙ Μάθημα 8ο Δικτύωση TCP/IP Μιχαηλίδης Παναγιώτης Περιεχόμενα Δικτύωση TCP/IP Τι είναι το TCP/IP; Επίπεδα, διευθύνσεις, ΝΑΤ Πρωτόκολλα: ARP, DHCP TCP/IP H πιο κοινή

Διαβάστε περισσότερα

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

Δίκτυα Υπολογιστών Το επίπεδο μεταφοράς (transport layer) Δίκτυα Υπολογιστών Το επίπεδο μεταφοράς (transport layer) Κ. Βασιλάκης Περίγραμμα ενότητες που εξετάζονται Επισκόπηση του επιπέδου μεταφοράς Υπηρεσίες επιπέδου μεταφοράς Επίπεδο μεταφοράς έναντι επιπέδου

Διαβάστε περισσότερα

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

ίκτυα υπολογιστών Στόχοι κεφαλαίου ίκτυα Στόχοι κεφαλαίου ίκτυα υπολογιστών (Κεφαλαιο 15 στο βιβλιο) Περιγραφή των κύριων θεµάτων σχετικά µε τα δίκτυα υπολογιστών Αναφορά στα διάφορα είδη δικτύων Περιγραφή των διαφόρων τοπολογιών των τοπικών

Διαβάστε περισσότερα

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

Πρωτόκολλο FTP. Από τα παλαιότερα πρωτόκολλα του ArpaNet Το FTP είναι μια τυποποίηση του TCP/IP Πρόκειται για πρωτόκολο γενικού σκοπού Μεταφορά αρχείων Πρωτόκολλο FTP Από τα παλαιότερα πρωτόκολλα του ArpaNet Το FTP είναι μια τυποποίηση του TCP/IP Πρόκειται για πρωτόκολο γενικού σκοπού Είναι ανεξάρτητο του λειτουργικού συστήματος και του

Διαβάστε περισσότερα

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15) (Κεφάλαιο 2.7 και 12) Αρχεία στην C (Διάλεξη 15) 14-1 Επανάληψη στην Αποθήκευση (Storage) Για να αποθηκεύσουμε δεδομένα από ένα πρόγραμμα, πρέπει να χρησιμοποιήσουμε την Δευτερεύουσα Μνήμη 14-2 Επανάληψη

Διαβάστε περισσότερα

Έννοιες ιαδικτύωσης (Internetworking Concepts)

Έννοιες ιαδικτύωσης (Internetworking Concepts) Έννοιες ιαδικτύωσης (Internetworking Concepts) Η επικοινωνία εφαρµογών που τρέχουν σε ετερογενή συστήµατα τα οποία συνδέονται σε δίκτυα διαφορετικών τεχνολογιών Χρήστος Ηλιούδης, Πέτρος Λάµψας & Σπύρος

Διαβάστε περισσότερα

Network Address Translation (NAT)

Network Address Translation (NAT) HY335Α Δίκτυα Υπολογιστών Xειμερινό Εξάμηνο 2016-2017 Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών Network Address Translation (NAT) Network Layer Private IP Addresses Πρόβλημα: o χώρος των ΙΡ διευθύνσεων

Διαβάστε περισσότερα

Μεθόδων Επίλυσης Προβλημάτων

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 10 Αρχεία στην C Επανάληψη στην Αποθήκευση (Storage)

Διαβάστε περισσότερα

Δίκτυα Επικοινωνίας Υπολογιστών Ενότητα 8: Στρώμα δικτύου

Δίκτυα Επικοινωνίας Υπολογιστών Ενότητα 8: Στρώμα δικτύου Δίκτυα Επικοινωνίας Υπολογιστών Ενότητα 8: Στρώμα δικτύου Μιχαήλ Λογοθέτης Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Συνιστώμενο Βιβλίο: Δικτύωση Υπολογιστών Προσέγγιση

Διαβάστε περισσότερα

Χρήστος Ξενάκης Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιά

Χρήστος Ξενάκης Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιά Πρωτόκολλα Ασφάλειας Επιπέδου Internet (sec) Χρήστος Ξενάκης Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιά Το μοντέλο του Internet 2/37 Σχέσεις πρωτοκόλλων ασφαλείας και / στοίβας PGP. SET........ SSL

Διαβάστε περισσότερα

Διάλεξη 20: Χαμηλού Επιπέδου Προγραμματισμός II

Διάλεξη 20: Χαμηλού Επιπέδου Προγραμματισμός II Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 20: Χαμηλού Επιπέδου Προγραμματισμός II (Κεφάλαια 25.2, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132

Διαβάστε περισσότερα

Πρωτόκολλα Διαδικτύου Μέρος 2ο. Επικοινωνίες Δεδομένων Μάθημα 3 ο

Πρωτόκολλα Διαδικτύου Μέρος 2ο. Επικοινωνίες Δεδομένων Μάθημα 3 ο Πρωτόκολλα Διαδικτύου Μέρος 2ο Επικοινωνίες Δεδομένων Μάθημα 3 ο Internet Protocol (IP) Στο επίπεδο δικτύου της τεχνολογίας TCP/IP, συναντάμε το πρωτόκολλο IP. Η λειτουργία του IP βασίζεται αποκλειστικά

Διαβάστε περισσότερα

Εισαγωγή στο DNS lookup

Εισαγωγή στο DNS lookup Εισαγωγή στο DNS lookup DNS lookup made easy by finrod για την Κοινότητα Ελεύθερου Λογισμικού ΕΜΠ(2011) Εισαγωγικά... IP lookup Μετάφραση (resolution) μίας FQDN διεύθυνσης (Fully Qualified Domain Name)

Διαβάστε περισσότερα

ARP (Address Resolution Protocol).

ARP (Address Resolution Protocol). Επίπεδοδικτύου: Internet To βασικό πρωτόκολλο του διαδικτύου! Επίπεδο ικτύου: Internet σε ένα LAN δεν χρειάζεται δροµολόγηση. Χρησιµοποιώντας το κοινό µέσο χρησιµοποιεί τις λεγόµενες Φυσικές διευθύνσεις.

Διαβάστε περισσότερα