Πρωτόκολλο Έναρξης Συνόδου (SIP)

Σχετικά έγγραφα
Τεχνολογία Πολυμέσων. Ενότητα # 19: Τηλεδιάσκεψη Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Π.χ SIP Domain A. Π.χ. SIP Domain B

«Ανωνυµία σε SIP δίκτυα»

Τμήμα :Ψηφιακών Συστημάτων και Διδακτικής της Τεχνολογίας ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ

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

7.3 Πρωτόκολλο TCP. 1. Το TCP πρωτόκολλο παρέχει υπηρεσίες προσανατολισµένες σε σύνδεση. Σ Λ

4.1.1 Πρωτόκολλο TCP - Δομή πακέτου

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ : ΑΚΡΩΤΗΡΙΑΝΑΚΗΣ ΜΙΧΑΗΛ

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

Μηχανισμός εντοπισμού κακοσχηματισμένων SIP μηνυμάτων

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

ιπλωµατική Εργασία ΟΜΗ ΥΠΗΡΕΣΙΩΝ ΣΤΑ ΙΚΤΥΑ ΕΠΟΜΕΝΗΣ ΓΕΝΙΑΣ (NGN)

Συνεχής ροή πολυµέσων

Κεφάλαιο 7.3. Πρωτόκολλο TCP

Δίκτυα Θεωρία

Αποµακρυσµένη κλήση διαδικασιών

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 7ο ΚΕΦΑΛΑΙΟ


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

7.4 Πρωτόκολλο UDP. 3. Στη περίπτωση που ένα μήνυμα χωράει σε ένα τμήμα, χρησιμοποιούμε το πρωτόκολλο TCP.

Πρωτόκολλα Επικοινωνίας και Τείχος Προστασίας

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

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

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ

Τεχνολογία Δικτύων Επικοινωνιών (Ενότητα Πρωτόκολλα και Αρχιτεκτονική Δικτύου)

ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ Α. α. Πριν εμφανιστεί η τεχνολογία ISDN οι υπηρεσίες φωνής, εικόνας και δεδομένων απαιτούσαν διαφορετικά δίκτυα.

Τηλεφωνία. Νοήμον Δίκτυο

6.2 Υπηρεσίες Διαδικτύου

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

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

Network Address Translation (NAT)

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΣΤΑ ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ Γ Τάξη Ε.Π.Α.Λ.

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

ΤΕΧΝΟΛΟΓΙΑ ΤΗΣ ΕΠΙΚΟΙΝΩΝΙΑΣ. VoIP H.323 / SIP. Ιωάννης Αναγνωστόπουλος

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

7.7 Πρωτόκολλο ARP. 1. Το πρωτόκολλο ARP μετατρέπει τις διευθύνσεις IP στις αντίστοιχες φυσικές. Σ Λ

LAYER 3 ( NETWORΚ LEVEL ) - ΣΤΡΩΜΑ 3 ( ΕΠΙΠΕ Ο ΙΚΤΥΟΥ)

ΥλοποίησητωνΑλλαγών στηνυπηρεσία EPP. Γιώργος Σ. Αγγελέτος Αναλυτής Συστηµάτων Η/Υ

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

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

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

Μάθημα 5: To Μοντέλο Αναφοράς O.S.I.

Συστήματα Πολυμέσων. Ενότητα 17: Διανομή Πολυμέσων - Πρωτόκολλα πραγματικού χρόνου. Θρασύβουλος Γ. Τσιάτσος Τμήμα Πληροφορικής

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

Σκοπιµότητα των firewalls

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

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

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

1 Παραστατικών Πωλήσεων

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

Υλοποίηση Δικτυακών Υποδομών και Υπηρεσιών: Ηλεκτρονικό Ταχυδρομείο - SMTP

ιαχείριση Τηλεφωνικών Κλήσεων

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

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

Διαχειριστικό σύστημα ονομάτων χώρου

ΤΕΛΟΣ 1ΗΣ ΑΠΟ 6 ΣΕΛΙΔΕΣ

ΠΡΩΤΟΚΟΛΟ HTTP ΕΝΤΟΛΩΝ ΔΙΑΣΥΝΔΕΣΗΣ ΕΚΔΟΣΗ 1.2

ΠΡΟΤΥΠΗ ΥΛΟΠΟΙΗΣΗ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΠΑΡΑΜΕΤΡΩΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΕΞΙΣΟΡΡΟΠΗΣΗΣ ΦΟΡΤΟΥ ΣΕ ΠΕΡΙΒΑΛΛΟΝΤΑ SIP

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

Για την ενεργοποίηση και τη ρύθμιση ενός gateway σε Cisco router απαιτούνται οι εξής εντολές:

Ενημέρωση σε Windows 8.1 από τα Windows 8

3.3.2 Το πρωτόκολλο δυναμικής διευθέτησης υπολογιστή DHCP

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

Δίκτυα Θεωρία

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

Υλοποίηση Δικτυακών Υποδομών και Υπηρεσιών: Υπηρεσία Ηλεκτρονικού Ταχυδρομείου - SMTP

Δίκτυα Υπολογιστών Ενότητα 7: Internet Control Message Protocol - ICMP

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

Οδηγίες Προσωπικoύ Τηλεφωνητή COSMOTE

Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που

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

Εγχειρίδιο διαχείρισης χρηστών και λιστών διανομής για τον Υπεύθυνο Φορέα του Δικτύου "Σύζευξις" -1-

Εργαστήριο 4 Ασκήσεις: Διαχείριση Δικτύου (nmap, iptables) και Προχωρημένες Εντολές Unix (grep, ps, cut, find)

Ενότητα 1. Εισαγωγή στις βασικές έννοιες των ικτύων ΗΥ

Εγχειρίδιο Λειτουργίας Τράπεζας Χρόνου

Οδηγός χρήσης ηλεκτρονικού καταλόγου (Sierra)

Ψιαχούλιας Σ. Αργύριος

ΚΕΦΑΛΑΙΟ 1.7. Πρωτόκολλα και Αρχιτεκτονική Δικτύου

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

Επικοινωνία. Ηλεκτρονικό ταχυδρομείο. Δημιουργία λογαριασμού. Λήψη ηλεκτρονικού μηνύματος. Αποστολή ηλεκτρονικού μηνύματος. Απάντηση και προώθηση

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

ΚΕΦΑΛΑΙΟ Web Services

Δίκτυα Υπολογιστών. Δίκτυα υπολογιστών και το Διαδίκτυο Εισαγωγή. Κ. Βασιλάκης

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

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

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

1.5.1 ΓΕΦΥΡΑ (BRIDGE) Εικόνα Επίπεδα λειτουργίας επαναλήπτη, γέφυρας, δρομολογητή και πύλης ως προς το μοντέλο OSI.

2. Να δηλωθεί ότι το πρόθεμα για τη ζώνη gunet.gr είναι το «00».

BlackBerry Internet Service. Οδηγός χρήστη

4.1 Άνοιγμα υπάρχοντος βιβλίου εργασίας

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

Δίκτυα ΙΙ. Κεφάλαιο 7

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο

Εισαγωγή. E-03: Λειτουργικά Συστήµατα ΙΙ 6. Εαρινό Εξάµηνο Κατανεµηµένα συστήµατα αρχείων. Μέρη κατανεµηµένου συστήµατος αρχείων

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10

Ολοκληρωµένο Σύστηµα ιαχείρισης Ασφαλισµένου

Ροή πολυμέσων. Εισαγωγή Ροή από εξυπηρετητές ιστοσελίδων Ροή από εξυπηρετητές μέσων Το πρωτόκολλο RTSP

Δροµολόγηση (Routing)

Πρωτόκολλο TCP Διάλεξη Ι

Transcript:

Πρωτόκολλο Έναρξης Συνόδου (SIP)

ΠΕΡΙΕΧΟΜΕΝΑ 1.1 ΓΕΝΙΚΑ 1 1.2 ΑΝΑΛΥΣΗ ΤΗΣ ΛΕΙΤΟΥΡΓΙΚΟΤΗΤΑΣ ΤΟΥ SIP 2 1.3 ΤΡΟΠΟΣ ΛΕΙΤΟΥΡΓΙΑΣ ΤΟΥ SIP 3 1.3.1 Συναλλαγές SIP 11 1.3.2 Τύποι πληρεξούσιων εξυπηρετητών 11 1.4 ΟΜΗ ΤΟΥ ΠΡΩΤΟΚΟΛΛΟΥ SIP 11 1.5 ΤΥΠΟΙ ΜΗΝΥΜΑΤΩΝ SIP 13 1.5.1 οµή Αιτηµάτων 14 1.5.2 οµή Απαντήσεων 14 1.5.3 οµή πεδίων κεφαλίδας 15 1.5.3.1 Μορφότυπο πεδίων κεφαλίδας 15 1.5.3.2 Ταξινόµηση των πεδίων της κεφαλίδας 17 1.5.3.3 Συντετµηµένη µορφή κεφαλίδας 18 1.5.4 οµή σώµατος µηνύµατος 18 1.5.4.1 Τύπος σώµατος µηνύµατος 18 1.5.4.2 Μήκος σώµατος µηνυµάτων 18 1.5.5 Πλαισιοποίηση µηνυµάτων SIP 18 1.6 ΓΕΝΙΚΗ ΣΥΜΠΕΡΙΦΟΡΑ ΠΡΑΚΤΟΡΩΝ ΧΡΗΣΤΩΝ (UA) 19 1.6.1 Συµπεριφορά του UAC (εκτός διαλόγου) 19 1.6.1.1 Παραγωγή του αιτήµατος 19 1.6.1.2 Αποστολή του αιτήµατος 24 1.6.1.3 Επεξεργασία των απαντήσεων 24 1.6.2 Συµπεριφορά του UAS (εκτός διαλόγου) 28 1.6.2.1 Επιθεώρηση µεθόδου 28 1.6.2.2 Επιθεώρηση κεφαλίδας 28 1.6.2.3 Επεξεργασία Περιεχοµένου 30 1.6.2.4 Εφαρµογή των επεκτάσεων 30 1.6.2.5 Επεξεργασία του αιτήµατος 31 1.6.2.6 ηµιουργία της απάντησης 31 1.6.2.7 Συµπεριφορά του Stateless - UAS 31 1.6.3 Εξυπηρετητές επαναπροσανατολισµού (redirect servers) 32 1.7 ΚΑΤΑΧΩΡΗΣΗ / ΕΓΓΡΑΦΗ (REGISTRATION) 34 1.7.1 Γενικά 34

1.7.2 οµή της αίτησης REGISTER 35 1.7.2.1 Προσθήκη δεσµεύσεων (bindings) 37 1.7.2.2 Αφαίρεση δεσµεύσεων (bindings) 38 1.7.2.3 Προσκόµιση δεσµεύσεων (fetching bindings) 38 1.7.2.4 Ανανέωση δεσµεύσεων (Refreshing Bindings) 38 1.7.2.5 Ρύθµιση του εσωτερικού ρολογιού 39 1.7.2.6 Ανακάλυψη ενός γραµµατέα 39 1.7.2.7 ιαβίβαση αιτήµατος 39 1.7.2.8 Απαντήσεις λάθους 39 1.7.3 Επεξεργασία των αιτηµάτων REGISTER 39 1.8 ΙΑΛΟΓΟΙ 42 1.8.1 ηµιουργία ενός διαλόγου 43 1.8.1.1 Συµπεριφορά του UAS 43 1.8.1.2 Συµπεριφορά του UAC 44 1.8.2 Αιτήµατα µέσα σε ένα διάλογο 45 1.8.2.1 Συµπεριφορά του UAC στα πλαίσια του διαλόγου 45 1.8.2.2 Συµπεριφορά του UAS 47 1.8.3 Λήξη ενός διαλόγου 49 1.9 ΕΝΑΡΞΗ ΜΙΑΣ ΣΥΝΟ ΟΥ 49 1.9.1 Επισκόπηση 49 1.9.2 Επεξεργασία στο UAC 50 1.9.2.1 ηµιουργώντας του αρχικού INVITE 50 1.9.2.2 Επεξεργασία των απαντήσεις INVITE 51 1.9.3 Επεξεργασία στο UAS 53 1.9.3.1 Επεξεργασία του INVITE 53 1.10 ΤΡΟΠΟΠΟΙΗΣΗ ΜΙΑΣ ΥΠΑΡΧΟΥΣΑΣ ΣΥΝΟ ΟΥ 56 1.10.1 Συµπεριφορά του UAC 56 1.10.2 Συµπεριφορά του UAS 57 1.11 ΤΕΡΜΑΤΙΣΜΟΣ ΜΙΑΣ ΣΥΝΟ ΟΥ 58 1.11.1 Λήξη µιας συνόδου µέσω αιτήµατος BYE 60 1.11.1.1 Συµπεριφορά του UAC 60 1.11.1.2 Συµπεριφορά του UAS 60 1.12 ΣΥΜΠΕΡΙΦΟΡΑ ΤΟΥ ΠΛΗΡΕΞΟΥΣΙΟΥ 60 1.12.1 Επισκόπηση 60 1.12.2 Πληρεξούσιος Stateful 61 1.12.3 Επικύρωση αιτήµατος 63 1.12.4 Προεπεξεργασία των πληροφοριών δροµολόγησης 64 1.12.5 Καθορισµός των στόχων του αιτήµατος 65 1.12.6 Προώθηση του αιτήµατος στον κάθε στόχο 67

1.12.7 Επεξεργασία απάντησης 67 1.12.8 Επεξεργασία του χρονοµρτριτή-c (Timer C) 68 1.12.9 Χειρισµός λαθών µεταφοράς 68 1.12.10 Επεξεργασία του CANCEL 69 1.12.11 Πληρεξούσιος Stateless 69 1.12.12 Περίληψη της επεξεργασίας διαδροµών πληρεξούσιου 70 1.13 ΣΥΝΑΛΛΑΓΕΣ 71 1.13.1 Συναλλαγή πελάτη 72 1.13.1.1 Συναλλαγή πελάτη INVITE 73

Πρωτόκολλο Έναρξης Συνόδου 1.1 ΓΕΝΙΚΑ Το παρόν κεφάλαιο περιγράφει το Πρωτόκολλο Έναρξης Συνόδου (Session Initiation Protocol - SIP), το οποίο είναι ένα πρωτόκολλο ελέγχου στο επίπεδο εφαρµογής. Το SIP είναι πρωτόκολλο σηµατοδοσίας για τη δηµιουργία, µεταβολή και τερµατισµό συνόδων µε έναν ή περισσότερους συµµετέχοντες. Σύµφωνα µε το πρωτόκολλο SDP, η πολυµεσική σύνοδος είναι ένα σύνολο αποστολέων και αποδεκτών πολυµέσων καθώς επίσης και των ρευµάτων δεδοµένων που ρέουν από τους αποστολείς στους αποδέκτες. Μια διάσκεψη πολυµέσων είναι ένα παράδειγµα συνόδου πολυµέσων. Αναλυτικότερα, σαν σύνοδος θεωρείται κάθε οµάδα επικοινωνούντων τερµατικών σηµείων, τα οποία κατά την πραγµατοποίηση µιας συγκεκριµένης επικοινωνιακής εφαρµογής ανταλλάσουν πολυµεσικά δεδοµένα (πραγµατικού χρόνου όπως φωνή και βίντεο, µηνύµατα κειµένου, κλπ.). Οι σύνοδοι δηµιουργούνται µέσω προσκλήσεων-sip (SIP invitations) που περιλαµβάνουν περιγραφές της προτεινόµενης συνόδου και επιτρέπουν στους συµµετέχοντες να συµφωνήσουν σε ένα σύνολο συµβατών τύπων µέσων. Το SIP λειτουργεί πάνω από διαφορετικά πρωτοκόλλα µεταφοράς και οι σύνοδοι που υλοποιεί να περιλαµβάνουν τηλεφωνικές IP κλήσεις, διανοµή πολυµέσων, συνδιασκέψεις πολυεκποµπής (multicast conferences) πολυµέσων, κλπ. Τα τερµατικά σηµεία µπορεί να είναι χρήστες, βάσεις δεδοµένων ή οποιασδήποτε µορφή επικοινωνούσας οντότητας, που στα πλαίσια του SIP αναφέρονται ως πράκτορες πελάτη (user agents - UA). Οι σύγχρονες εφαρµογές απαιτούν τη δηµιουργία και τη διαχείριση συνόδων που να επιτρέπουν µια σύνθετη συµπεριφορά των επικοινωνούντων οντοτήτων. Για παράδειγµα, οι χρήστες µπορούν να µετακινούνται µεταξύ διαφορετικών τερµατικών σταθµών, να χρησιµοποιούν διαφορετικά αναγνωριστικά ονόµατα και να επικοινωνούν χρησιµοποιώντας ταυτόχρονα διαφορετικά µέσα. Το SIP παρέχει τη δυνατότητα στους UA να ανακαλύπτουν ο ένας τον άλλον και να συµφωνούν στο είδος και στις προδιαγραφές της συνόδου που επιθυµούν να µοιραστούν. Για τον εντοπισµό των πιθανών συµµετεχόντων σε µία σύνοδο και για την υποστήριξη άλλων λειτουργιών, το SIP υποστηρίζει τη δηµιουργία µίας υποδοµής εξυπηρετητών δικτύου ειδικού σκοπού, οι οποίοι καλούνται πληρεξούσιοι εξυπηρετητές (proxy servers). Οι πληρεξούσιοι εξυπηρετητές είναι κεντρικές οντότητες που διαχειρίζονται τη δροµολόγηση αιτηµάτων (εγγραφές, προσκλήσεις σε σύνοδο, κλπ) στην τρέχουσα θέση των UA, πιστοποιούν και εξουσιοδοτούν τους χρήστες για τη χρήση υπηρεσιών, υλοποιούν πολιτικές δροµολόγησης των κλήσεων που εφαρµόζουν οι πάροχοι και τέλος προσφέρουν ειδικές λειτουργίες στους χρήστες. Το SIP προσφέρει επίσης µία λειτουργία εγγραφής (registration), η οποία επιτρέπει στους χρήστες να ενηµερώνουν τους πληρεξούσιους εξυπηρετητές σχετικά µε την τρέχουσα φυσική τους θέση. 1

1.2 ΑΝΑΛΥΣΗ ΤΗΣ ΛΕΙΤΟΥΡΓΙΚΟΤΗΤΑΣ ΤΟΥ SIP Session Initiation Protocol (SIP) - RFC 3261 Το SIP παρέχει υπηρεσίες αποκατάστασης, µεταβολής και τερµατισµού συνόδων, καθώς επίσης πρόσκλησης νέων συµµετεχόντων σε ήδη υπάρχουσες συνόδους και ενεργοποίησης (πρόσθεσης) ή απενεργοποίησης (αφαίρεσης) διαφορετικών µέσων πληροφορίας. Το SIP υποστηρίζει υπηρεσίες απεικόνισης ονοµάτων και αναδροµολόγησης (redirection) κλήσεων, οι οποίες υποστηρίζουν την κινητικότητα του χρήστη (personal mobility). Αυτό επιτρέπει στον κάθε χρήστη να αναγνωρίζεται πάντοτε µέσα από ένα µοναδικό ατοµικό αναγνωριστικό ταυτότητας (identifier ID), ανεξάρτητα από τη φυσική του θέση µέσα στο δίκτυο. Το SIP υποστηρίζει την αποκατάσταση και τον τερµατισµό των επικοινωνιών πολυµέσων λαµβάνοντας υπόψη του διάφορες πλευρές, όπως: Θέση χρήση (User location): καθορισµός του τερµατικού συστήµατος που θα χρησιµοποιηθεί για την επικοινωνία. ιαθεσιµότητα χρήστη (User availability): καθορισµός της διαθεσιµότητας του καλουµένου να συµµετέχει στην επικοινωνία. Χαρακτηριστικά χρήστη (User capabilities): καθορισµός των µέσων και των παραµέτρων που θα χρησιµοποιηθούν κατά τη διάρκεια της συνόδου. Αρχικοποίηση συνόδου (Session setup): αποστολή «κλητήριου σήµατος» για την αποκατάσταση των παραµέτρων συνόδου µεταξύ καλούντα και καλούµενων πρακτόρων πελάτη. ιαχείριση συνόδου (Session management): περιλαµβάνει τη µεταφορά και τον τερµατισµό συνόδων, τη µεταβολή των παραµέτρων συνόδου και την ενεργοποίηση υπηρεσιών. Το SIP δεν είναι ένα κάθετα ολοκληρωµένο σύστηµα επικοινωνιών, το οποίο να περιλαµβάνει και τα επτά επίπεδα του OSI. Το SIP είναι ένα ανεξάρτητο πρωτόκολλο που χρησιµοποιείται σε συνεργασία µε άλλα πρωτόκολλα της IETF ώστε να δηµιουργηθεί µία ολοκληρωµένη πολυµεσική αρχιτεκτονική. Συνήθως, µία τέτοια αρχιτεκτονική περιλαµβάνει τα παρακάτω πρωτόκολλα: Real-time Transport Protocol (RTP) (RFC 1889) για τη µεταφορά δεδοµένων πραγµατικού χρόνου και για την ενηµέρωση σε σχέση µε την ποιότητα εξυπηρέτησης (QoS), Real-Time streaming protocol (RTSP) (RFC 2326) που ελέγχει την «παράδοση» (delivery) συρµών δεδοµένων (streaming media), Media Gateway Control Protocol (MEGACO) (RFC 3015) που ελέγχει τους ελεγκτές πύλης (gateways) στο δηµόσιο επιλογικό τηλεφωνικό δίκτυο (PSTN), και Session Description Protocol (SDP) (RFC 2327) που περιγράφει τις συνόδους πολυµέσων. UDP TCP IPv4 και IPv6 Σηµειώνεται ότι το SIP παρότι χρησιµοποιείται πάντοτε σε συνδυασµό µε άλλα πρωτόκολλα, ώστε να προσφέρει πλήρεις υπηρεσίες στους χρήστες, η βασική του λειτουργικότητα και λειτουργία δεν εξαρτάται από κανένα άλλο πρωτόκολλο. 2

Το SIP δεν παρέχει υπηρεσίες, αλλά αρχέτυπα (primitives) τα οποία χρησιµοποιούνται για να υλοποιηθούν διαφορετικές υπηρεσίες. Για παράδειγµα χρησιµοποιείται το SIP για να εντοπιστεί ένας χρήστης και στη συνέχεια να του παραδοθεί ένα αντικείµενο στη θέση που ευρίσκεται. Το αρχέτυπο χρησιµοποιηείται για την παράδοση της περιγραφή της συνόδου (π.χ. δοµηµένη σύµφωνα µε το SDP) και τα τερµατικά σηµεία επιλέγουν/συµφωνούν για τις παραµέτρους της συνόδου. Εάν όµως µε την περιγραφή της συνόδου, το ίδιο το αρχέτυπο παραδώσει και µία φωτογραφία του καλούντα, τότε µπορεί εύκολα να υλοποιηθεί µία διαφορετική υπηρεσία, η υπηρεσία ταυτότητας καλούντα. Συνεπώς το ίδιο αρχέτυπο SIP χρησιµοποιείται για την παροχή διαφορετικών υπηρεσιών. Το SIP δεν προσφέρει υπηρεσίες ελέγχου διάσκεψης, όπως έλεγχο βήµατος οµιλητή ή ψηφοφορία και δεν περιγράφει τον τρόπο διαχείρισης µίας διάσκεψης. Το SIP χρησιµοποιείται για την έναρξη µίας συνόδου, η οποία χρησιµοποιεί κάποιο άλλο πρωτόκολλο ελέγχου διάσκεψης. Ενώ τα µηνύµατα SIP και οι σύνοδοι που αποκαθίστανται µε αυτά, µπορούν να χρησιµοποιούν πολλά διαφορετικά δίκτυα, το SIP δεν προσφέρει τρόπους δέσµευσης πόρων δικτύου. Το SIP παρέχει ένα σύνολο υπηρεσιών ασφάλειας, όπως αποτροπή άρνησης προσφοράς υπηρεσίας (denial-of-service prevention), επαλήθευση ταυτότητας (χρήστη-µε-χρήστη, πληρεξουσίου εξυπηρετητή-µε-χρήστη), προστασία ακεραιότητας (integrity protection), κρυπτογράφηση (encryption) και απόρρητο (privacy). 1.3 ΤΡΟΠΟΣ ΛΕΙΤΟΥΡΓΙΑΣ ΤΟΥ SIP Το SIP παρέχει τις παρακάτω τέσσερεις βασικές λειτουργίες: εντοπισµός ενός τερµατικού σηµείου, ένδειξη επιθυµίας για επικοινωνία, διαπραγµάτευση των παραµέτρων συνόδου για την αποκατάσταση της συνόδου και διάλυση της συνόδου µετά την αποκατάστασή της. Το Σχήµα 1 παρουσιάζει ένα τυπικό παράδειγµα ανταλλαγής µηνυµάτων SIP µεταξύ δύο χρηστών της Alice και του Bob. (Κάθε µήνυµα χαρακτηρίζεται από το γράµµα "F" και έναν αριθµό για να διευκολύνεται η αναφορά στο κείµενο.) Στο παράδειγµα, η Alice χρησιµοποιεί το διαδίκτυο και µία εφαρµογή SIP στον προσωπικό της υπολογιστή (που αναφέρεται ως τηλέφωνο λογισµικού (softphone) για να καλέσει στο τηλέφωνο SIP του Bob (το τηλέφωνο SIP έχει τη µορφή µίας κανονικής τηλεφωνικής συσκευής). Επίσης παρουσιάζονται δύο πληρεξούσιοι εξυπηρετητές SIP, οι οποίοι ενεργούν για λογαριασµό των Alice και Bob, ώστε να διευκολύνουν την αποκατάσταση της συνόδου. Η τυπική αυτή οργάνωση, αναφέρεται συχνά ως το "τραπεζοειδές SIP (SIP trapezoid)", όπως φαίνεται και από το σχήµα που δηµιουργείται από τις γραµµές µε κουκίδες του Σχήµατος 1. Η Alice «καλεί» τον Bob χρησιµοποιώντας την ταυτότητα SIP του Bob, η οποία είναι ένας τύπος Ενοποιηµένου Αναγνωριστή Πόρων (Uniform Resource Identifier -URI), που καλείται SIP-URI. Ο SIP-URI έχει αντίστοιχη µορφή µε µία διεύθυνση ηλεκτρονικού ταχυδροµείου, περιέχοντας συνήθως ένα όνοµα χρήστη και ένα όνοµα εξυπηρετητή. Στο παράδειγµα, το SIP-URI του Bob είναι sip:bob@biloxi.com, όπου biloxi.com είναι ο εξυπηρετητής υπηρεσιών SIP του Bob. Αντίστοιχα, το SIP-URI της Alice είναι sip:alice@atlanta.com. Η Alice για να καλέσει τον Bob πληκτρολογεί το 3

SIP-URI του Bob ή να κάνει κλικ σε έναν υπερσύνδεσµο (hyperlink) ή σε µία καταχώρηση σε ένα βιβλίο διευθύνσεων. Το SIP διαθέτει επίσης και έναν ασφαλή αναγνωριστή (secure URI), ο οποίος καλείται SIPS- URI. Ένα παράδειγµα είναι sips:bob@biloxi.com. Μία κλήση που γίνεται µε τη χρήση ενός SIPS- URI διασφαλίζει τη χρήση µιας ασφαλούς κωδικοποιηµένης µεταφοράς (τύπου TLS) όλων των µηνυµάτων SIP του καλούντα στον τοµέα (domain) του καλούµενου. Μέσα στον τοµέα του καλούµενου, το αίτηµα µεταφέρεται ασφαλώς στον καλούµενο µε τη χρήση των εσωτερικών µηχανισµών ασφαλείας του καλούµενου τοµέα. atlanta.com... biloxi.com. proxy proxy... Alice's.................... Bob's softphone SIP Phone INVITE F1 ---------------> INVITE F2 100 Trying F3 ---------------> INVITE F4 <--------------- 100 Trying F5 ---------------> <-------------- 180 Ringing F6 180 Ringing F7 <--------------- 180 Ringing F8 <--------------- 200 OK F9 <--------------- 200 OK F10 <--------------- 200 OK F11 <--------------- <--------------- ACK F12 -------------------------------------------------> Media Session <================================================> BYE F13 <------------------------------------------------- 200 OK F14 -------------------------------------------------> Σχήµα 1: Παράδειγµα αποκατάστασης συνόδου SIP µε το τραπεζοειδές SIP Το SIP βασίζεται σε ένα µοντέλο συναλλαγής (transaction) αιτηµάτων και αποκρίσεων παρόµοιο µε αυτό που χρησιµοποιείται από το πρωτόκολλο HTTP. Κάθε συναλλαγή αποτελείται από ένα αίτηµα που ενεργοποιεί µία συγκεκριµένη µέθοδο ή λειτουργία στον εξυπηρετητή και τουλάχιστον µία απόκριση. Σαν µέθοδος (method) αναφέρεται η αρχική λειτουργία την οποία καλεί ένα αίτηµα σε έναν εξυπηρετητή. Ο τύπος της µεθόδου µεταφέρεται µέσα στο ίδιο το µήνυµα του αιτήµατος. Σαν παραδείγµατα µεθόδων αναφέρονται η INVITE και η BYE. Στο παράδειγµα αυτό, η συναλλαγή ξεκινά µε το τηλέφωνο λογισµικού της Alice να στέλνει ένα αίτηµα πρόσκλησης INVITE προς τον SIP-URI του Bob. Το INVITE είναι ένα παράδειγµα µίας µεθόδου SIP που καθορίζει τη συναλλαγή, την οποία ο αιτών (Alice) επιθυµεί να εκτελέσει ο εξυπηρετητής (Bob). Το αίτηµα INVITE περιλαµβάνει ένα σύνολο από πεδία κεφαλίδας (header fields) που ονοµάζονται ιδιοχαρακτηριστικά (attributes) και τα οποία παρέχουν επιπλέον πληροφορίες 4

για ένα µήνυµα. Τα υποχρεωτικά ιδιοχαρακτηριστικά σε ένα αίτηµα INVITE περιλαµβάνουν ένα µοναδικό αναγνωριστή για την κλήση, τη διεύθυνση προορισµού, τη διεύθυνση του καλούντα (της Alice) και την πληροφορία για τον τύπο της συνόδου που ο καλών (Alice) επιθυµεί να αποκαταστήσει µε τον καλούµενο (Bob). Παραδείγµατος χάριν, η µέθοδος INVITE, η οποία περιέχεται στο κωδικοποιηµένο σε κείµενο (text-encoded) µήνυµα F1 στο Σχήµατος 1, µπορεί να έχει την παρακάτω µορφή: INVITE sip:bob@biloxi.com SIP/2.0 Via: SIP/2.0/UDP pc33.atlanta.com; branch=z9hg4bk776asdhds Max-Forwards: 70 To: Bob <sip:bob@biloxi.com> From: Alice <sip:alice@atlanta.com>; tag=1928301774 Call-ID: a84b4c76e66710@pc33.atlanta.com CSeq: 314159 INVITE Contact: <sip:alice@pc33.atlanta.com> Content-Type: application/sdp Content-Length: 142 (Alice's SDP not shown) Η πρώτη γραµµή του µηνύµατος περιλαµβάνει το όνοµα της µεθόδου ( INVITE ). Οι γραµµές που ακολουθούν αποτελούν ένα σύνολο από πεδία κεφαλίδας. Το παρών παράδειγµα έχει το ελάχιστο απαιτούµενο σύνολο από πεδία κεφαλίδας, τα οποία παρουσιάζονται εν συντοµία στη συνέχεια. Το πεδίο Via περιλαµβάνει τη διεύθυνση (pc33.atlanta.com) στην οποία η Alice περιµένει τις αποκρίσεις στο αίτηµα της ( INVITE ). Επιπλέον περιλαµβάνει µία παράµετρο κλάδου (branch parameter), η οποία ταυτοποιεί αυτή τη συναλλαγή. Το πεδίο Max-Forwards χρησιµοποιείται για να περιορίσει τον αριθµό των αλµάτων (hops) που επιτρέπεται να κάνει ένα αίτηµα µέχρις ότου φτάσει στον προορισµό του. Αποτελείται από έναν ακέραιο αριθµό που αυξάνει κατά ένα σε κάθε άλµα. Το πεδίο To περιέχει το όνοµα παρουσίασης (display name) του παραλήπτη (Bob) και έναν SIP-URI ή SIPS-URI (sip:bob@biloxi.com), στον οποίο απευθύνεται το αίτηµα. Το πεδίο From περιέχει το όνοµα παρουσίασης του αποστολέα (Alice) και έναν SIP-URI ή SIPS-URI (sip:alice@atlanta.com), που παρουσιάζουν την αφετηρία του αιτήµατος. ιαθέτει επίσης µία µικρή ετικέτα (tag parameter) που εξυπηρετεί σκοπούς ταυτοποίησης. Η ετικέτα περιλαµβάνει µια τυχαία στοιχειοσειρά (string) (1928301774) η οποία προστέθηκε στον SIP-URI από το τηλέφωνο λογισµικού. Το πεδίο Call-ID περιέχει ένα µοναδικό αναγνωριστή (globally unique identifier) για την κλήση αυτή, που παράγεται από το συνδυασµό µιας τυχαίας στοιχειοσειράς και του ονόµατος του εξυπηρετητή ή της διεύθυνσης IP του τηλεφώνου λογισµικού. 5

Ο συνδυασµός των ετικετών των πεδίων κεφαλίδας To και From, καθώς και το πεδίο Call-ID, καθορίζουν πλήρως µία οµότιµη (peer-to-peer) σχέση SIP µεταξύ της Alice και του Bob, η οποία αναφέρεται ως διάλογος (dialog). Το πεδίο Command Sequence - CSeq περιλαµβάνει έναν ακέραιο αριθµό, ο οποίος δείχνει τη σειρά της τρέχουσας εντολής, καθώς επίσης και το όνοµα της µεθόδου ( INVITE στο παράδειγµα) που περιγράφει το αίτηµα. Η τιµή του CSeq αυξάνεται κατά ένα σε κάθε νέο αίτηµα εντός ενός διαλόγου. Το πεδίο Contact περιέχει έναν SIP-SIP ή SIPS-URI, ο οποίος αναπαριστά την άµεση διαδροµή επικοινωνίας µε τον αποστολέα του αιτήµατος (Alice), και συνήθως απαρτίζεται από ένα όνοµα χρήστη (username) µέσα σε ένα πλήρως κατοχυρωµένο όνοµα τοµέα (Fully Qualified Domain Name - FQDN). Η χρήση του FQDN είναι προτιµητέα, αλλά δεδοµένου ότι πολλά τερµατικά συστήµατα δεν διαθέτουν κατοχυρωµένα ονόµατα τοµέα (domain), επιτρέπεται παράλληλα και η χρήση των διευθύνσεων IP. Η διαφορά των πεδίων Via και Contact έγκειται στο ότι το πεδίο Via ενηµερώνει τα άλλα στοιχεία για το που θα στείλουν την απάντησή τους, ενώ το πεδίο Contact τα ενηµερώνει για τη διεύθυνση αποστολής των µελλοντικών αιτηµάτων τους. Το πεδίο Content-Type περιλαµβάνει την περιγραφή του σώµατος του µηνύµατος (δεν παρουσιάζεται στο παράδειγµα ). Το πεδίο Content-Length περιλαµβάνει τον αριθµό των bytes που περιέχονται στο σώµα του µηνύµατος. Επισηµαίνεται ότι το SIP δεν χρησιµοποιείται για να περιγράψει λεπτοµέρειες της συνόδου, όπως π.χ. τον τύπο των χρησιµοποιούµενων µέσων, τους κωδικοποιητές ή το ρυθµό δειγµατοληψίας. Συνήθως, η περιγραφή της συνόδου περιλαµβάνεται στο σώµα του µηνύµατος SIP και κωδικοποιείται σύµφωνα µε το µορφότυπο (format) κάποιου άλλου πρωτόκολλου, όπως π.χ. το SDP. Το µήνυµα SDP µεταφέρεται από το µήνυµα SIP (δεν δείχνεται µήνυµα SDP στο παραπάνω παράδειγµα), όπως π.χ. ένα επισυναπτόµενο αρχείο κειµένου µεταφέρεται από ένα µήνυµα ηλεκτρονικού ταχυδροµείου, ή µία σελίδα ιστού (web page) µεταφέρεται εντός ενός µηνύµατος HTTP. Επειδή το τηλέφωνο λογισµικού δεν γνωρίζει τη φυσική θέση του Bob ή τον εξυπηρετητή SIP στον τοµέα biloxi.com, στέλνει το αίτηµα INVITE στον εξυπηρετητή SIP που εξυπηρετεί τον τοµέα της Alice, δηλαδή στον atlanta.com. Η διεύθυνση του εξυπηρετητή SIP στον τοµέα atlanta.com, µπορεί να είχε ήδη οριστεί στις ρυθµίσεις του τηλεφώνου λογισµικού της Alice. Ο εξυπηρετητής SIP του τοµέα atlanta.com είναι ένας τύπος εξυπηρετητή SIP, που είναι γνωστός ως πληρεξούσιος εξυπηρετητής (proxy server). Η βασική λειτουργία του πληρεξούσιος εξυπηρετητής είναι να λαµβάνει αιτήµατα SIP και να τα προωθεί για λογαριασµό του αιτούντα. Στο παράδειγµα αυτό, ο πληρεξούσιος εξυπηρετητής λαµβάνει το αίτηµα INVITE και επιστρέφει µία απάντηση Trying (σηµατοδοτείται από τον αριθµό 100) στο τηλέφωνο λογισµικού της Alice. Η απάντηση Trying δηλώνει ότι το αίτηµα INVITE έχει ληφθεί και ο πληρεξούσιος εξυπηρετητής προσπαθεί να το δροµολογήσει στον προορισµό του για λογαριασµό της Alice. Οι αποκρίσεις στο SIP χρησιµοποιούν ένα τριψήφιο κωδικό ακολουθούµενο από µία περιγραφική φράση. Η απόκριση αυτή περιλαµβάνει τις ίδιες παραµέτρους To, From, Call-ID, 6

CSeq και Via (πεδίο κλάδου (branch) όπως στο INVITE, επιτρέποντας έτσι στο τηλέφωνο λογισµικού της Alice να συσχετίσει αυτή την απόκριση µε το αποσταλθέν INVITE. Ο πληρεξούσιος εξυπηρετητής atlanta.com χρησιµοποιώντας ένα συγκεκριµένο τύπο αναζήτησης, πιθανότατα τον DNS (Domain Name Service), εντοπίζει τον πληρεξούσιο εξυπηρετητή SIP (δηλαδή βρίσκει την IP διεύθυνσή του) που υποστηρίζει τον τοµέα biloxi.com. Στη συνέχεια προωθεί (proxies) το αίτηµα INVITE στον πληρεξούσιο εξυπηρετητή του biloxi.com. Προτού προωθήσει το αίτηµα, ο πληρεξούσιος εξυπηρετητής του atlanta.com προσθέτει µία επιπλέον τιµή στο πεδίο επικεφαλίδας Via το οποίο περιλαµβάνει τη δική του διεύθυνση (το αίτηµα INVITE περιέχει ήδη τη διεύθυνση της Alice στο πρώτο πεδίο επικεφαλίδας Via ). Ο πληρεξούσιος εξυπηρετητής του biloxi.com λαµβάνει το αίτηµα INVITE και ανταποκρίνεται µε µία απάντηση µε κωδικό 100 (Trying) στον πληρεξούσιο εξυπηρετητή του atlanta.com για να του δείξει ότι έχει λάβει το αίτηµα INVITE και το επεξεργάζεται. Ο εξυπηρετητής αυτός συµβουλεύεται µία βάση δεδοµένων, (που συνήθως ονοµάζεται υπηρεσία εντοπισµού), η οποία περιλαµβάνει την τρέχουσα διεύθυνση IP του Bob. Ο πληρεξούσιος εξυπηρετητής του biloxi.com προσθέτει µία ακόµη τιµή στο πεδίο κεφαλίδας Via του αιτήµατος INVITE µε τη δική του διεύθυνση και το προωθεί στο τηλέφωνο SIP του Bob. Το τηλέφωνο SIP του Bob λαµβάνει το αίτηµα INVITE και ενηµερώνει το Bob για την εισερχόµενη κλήση από την Alice, ώστε να αποφασίσει εάν θα απαντήσει ή όχι την κλήση, δηλαδή το τηλέφωνο του Bob χτυπά. Το τηλέφωνο SIP δείχνει ότι αυτή είναι µία απόκριση Ringing (σηµατοδοτείται από τον αριθµό 180), η οποία δροµολογείται µέσω των δύο πληρεξουσίων εξυπηρετητών στην αντίστροφη κατεύθυνση. Κάθε πληρεξούσιος εξυπηρετητής χρησιµοποιεί το πεδίο κεφαλίδας Via για να καθορίσει το πού θα στείλει την απόκριση και αφαιρεί τη δική του διεύθυνση από την κορυφή. Ως αποτέλεσµα, ενώ για τη δροµολόγηση του αρχικού αιτήµατος INVITE απαιτήθηκε η χρήση του DNS και της υπηρεσίας εντοπισµού, η απόκριση 180 (Ringing) µπορεί να επιστραφεί στον καλούντα χωρίς αναζήτηση και χωρίς η κατάστασή του να διατηρείται στους πληρεξούσιους εξυπηρετητές. Με τον τρόπο αυτό κάθε πληρεξούσιος εξυπηρετητής, ο οποίος βλέπει το αίτηµα INVITE, έχει τη δυνατότητα να βλέπει επίσης και όλες τις αποκρίσεις που αφορούν στο συγκεκριµένο INVITE. Λαµβάνοντας την απόκριση 180 (Ringing), το τηλέφωνο λογισµικού της Alice ενηµερώνει την Alice, είτε εκπέµποντας κατάλληλο ηχητικό σήµα είτε µε την παρουσίαση σχετικού µηνύµατος στην οθόνη της. Όταν ο Bob αποφασίσει να απαντήσει στην κλήση, σηκώνει το ακουστικό και το SIP τηλέφωνό του στέλνει µία απόκριση OK (µε κωδικό 200) για να δείξει ότι η κλήση απαντήθηκε. Η απόκριση OK περιλαµβάνει ένα σώµα µηνύµατος (δοµηµένο σύµφωνα µε το πρωτόκολλο SDP) µε τον τύπο της συνόδου που ο Bob µπορεί να αποκαταστήσει µε την Alice. Στο συγκεκριµένο παράδειγµα, η εγκαθίδρυση της συνόδου (σύνδεσης) είναι το αποτέλεσµα, µιας ανταλλαγής µηνυµάτων SDP σε δύο φάσεις: Η Alice έστειλε ένα µήνυµα στο Bob και ο Bob έστειλε ένα άλλο µήνυµα πίσω στην Alice. Αυτή η ανταλλαγή δύο φάσεων παρέχει δυνατότητες βασικής διαπραγµάτευσης και βασίζεται σε ένα απλό µοντέλο ανταλλαγής προσφοράς / απάντησης (offer/answer exchange model). 7

Εάν ο Bob δεν επιθυµούσε να απαντήσει στην κλήση ή εάν ήταν κατειληµµένος, αντί της απόκρισης OK, θα στελνόταν ένα µήνυµα λάθους, µε αποτέλεσµα να µην αποκατασταθεί η σύνοδος. Η απόκριση OK (µήνυµα F9 στο Σχήµα 1), όπως την στέλνει ο Bob, µπορεί να έχει την παρακάτω µορφή: SIP/2.0 200 OK Via: SIP/2.0/UDP server10.biloxi.com ;branch=z9hg4bknashds8;received=192.0.2.3 Via: SIP/2.0/UDP bigbox3.site3.atlanta.com ;branch=z9hg4bk77ef4c2312983.1;received=192.0.2.2 Via: SIP/2.0/UDP pc33.atlanta.com ;branch=z9hg4bk776asdhds ;received=192.0.2.1 To: Bob <sip:bob@biloxi.com>;tag=a6c85cf From: Alice <sip:alice@atlanta.com>;tag=1928301774 Call-ID: a84b4c76e66710@pc33.atlanta.com CSeq: 314159 INVITE Contact: <sip:bob@192.0.2.4> Content-Type: application/sdp Content-Length: 131 (Bob's SDP not shown) Η πρώτη γραµµή της απάντησης περιέχει τον κώδικα απάντησης (200) και το OK, το οποίο αποτελεί τη φράση αιτιολόγησης (reason phrase). Οι υπόλοιπες γραµµές περιέχουν τα πεδία κεφαλίδας. Τα πεδία κεφαλίδας Via, To, :From, Call-ID και CSeq αντιγράφονται από την αίτηση INVITE. Υπάρχουν τρία πεδία κεφαλίδας Via : α) ένα που προστέθηκε από το τηλέφωνο SIP της Alice, β ) ένα που προστέθηκε από τον πληρεξούσιο εξυπηρετητή atlanta.com, και γ) ένα που προστέθηκε από τον πληρεξούσιο εξυπηρετητή biloxi.com ). Το τηλέφωνο SIP του Bob πρόσθεσε µία επιπλέον παράµετρο ετικέτας στο πεδίο επικεφαλίδας To. Αυτή η παράµετρος ενσωµατώνεται και από τα δύο τερµατικά σηµεία του διαλόγου και περιλαµβάνεται σε όλες τις µελλοντικές αιτήσεις και απαντήσεις εντός της συγκεκριµένης συνόδου. Το πεδίο κεφαλίδας Contact περιλαµβάνει το SIP-URI στο οποίο βρίσκεται το τηλέφωνο SIP του Bob. Τα πεδία κεφαλίδας Content-Type και Content-Length αναφέρονται στο σώµα του µηνύµατος (δεν φαίνεται στο σχήµα) που περιέχει τις πληροφορίες µέσων SDP του Bob. Επιπλέον των υπηρεσιών DNS και του εντοπισµού της θέσης που παρουσιάζονται στο παράδειγµα, οι πληρεξουσίοι εξυπηρετητές µπορούν να λάβουν ευέλικτες αποφάσεις δροµολόγησης, για το που θα στείλουν µία αίτηση. Για παράδειγµα, εάν το τηλέφωνο SIP του Bob επέστρεφε µία απάντηση 486 (Busy Here), ο πληρεξούσιος εξυπηρετητής biloxi.com µπορεί να µεταφέρει το αίτηµα INVITE στον εξυπηρετητή φωνητικού ταχυδροµείου του Bob. Ένας πληρεξούσιος εξυπηρετητής µπορεί επίσης να στείλει ένα αίτηµα INVITE σε περισσότερες από µία θέσεις/στόχους την ίδια στιγµή. Αυτός ο τύπος παράλληλης αναζήτησης ονοµάζεται διχάλωση - forking. Στο παράδειγµα, η απάντηση 200 (OK) δροµολογείται µέσω των δύο πληρεξουσίων εξυπηρετητών και λαµβάνεται από το τηλέφωνο λογισµικού της Alice, το οποίο σταµατά να δίνει το κλητήριο σήµα (ringback tone) και δείχνει ότι η κλήση απαντήθηκε. Τέλος, το τηλέφωνο λογισµικού 8

της Alice στέλνει ένα µήνυµα αναγνώρισης (acknowledgement message - ACK), στο τηλέφωνο SIP του Bob για να επιβεβαιώσει τη λήψη της τελικής απόκρισης/απάντησης 200 (OK). Στο παράδειγµα, το µήνυµα ACK στέλνεται απευθείας από το τηλέφωνο λογισµικού της Alice στο τηλέφωνο SIP του Bob, παρακάµπτοντας τους δύο πληρεξούσιους εξυπηρετητές. Η απευθείας αυτή επικοινωνία των τερµατικών αναφέρεται σαν επικοινωνία οµότιµων µερών (peer-to-peer communication). Η απευθείας επικοινωνία είναι εφικτή καθότι τα τερµατικά σηµεία έχουν ήδη µάθει τις διευθύνσεις το ένα του άλλου από τα πεδία κεφαλίδας Contact µέσω της ανταλλαγής του ζεύγους µηνυµάτων INVITE/200 (OK), οι οποίες διευθύνσεις δεν ήσαν γνωστές όταν στάλθηκε το αρχικό µήνυµα INVITE. Οι υπηρεσίες εντοπισµού (lookups) των δύο πληρεξουσίων εξυπηρετητών δεν χρειάζονται πλέον, οπότε οι δύο εξυπηρετητές βγαίνουν από τη διαδικασία ροής της κλήσης. Έτσι, ολοκληρώνεται η επικοινωνία/χειραψία τριών µερών (three-way handshake) INVITE/200/ACK που χρησιµοποιήθηκε για την εγκαθίδρυση της συνόδου SIP. Η σύνοδος µέσων των Alice και Bob ξεκινά οπότε αρχίζει η ανταλλαγή πακέτων µέσων χρησιµοποιώντας το µορφότυπο (format) το οποίο συµφώνησαν µε την ανταλλαγή των µηνυµάτων SDP. Γενικά, τα πακέτα µέσων που ανταλλάσσονται από άκρο σε άκρο, ακολουθούν διαφορετικές διαδροµές από τα µηνύµατα σηµατοδοσίας SIP. Κατά τη διάρκεια της συνόδου, η Alice ή ο Bob µπορούν να αλλάξουν τα χαρακτηριστικά της συνόδου µέσων. Αυτό επιτυγχάνεται µε την αποστολή ενός µηνύµατος re-invite, το οποίο περιλαµβάνει µία νέα περιγραφή µέσων. Αυτό το µήνυµα re- INVITE αναφέρεται στον υπάρχοντα διάλογο, έτσι ώστε το άλλο άκρο να γνωρίζει ότι είναι πρόταση µετατροπής µίας υπάρχουσας συνόδου και όχι η εγκαθίδρυση µιας νέας συνόδου. Το άλλο άκρο στέλνει ένα µήνυµα 200 (OK) για να αποδεχθεί την αλλαγή. Ο αιτών απαντά στο µήνυµα 200 (OK) µε ένα µήνυµα ACK. Εάν το άλλο άκρο δεν αποδεχθεί την αλλαγή, στέλνει ένα µήνυµα λάθους όπως το 488 (Not Acceptable Here), το οποίο επίσης λαµβάνει ένα µήνυµα ACK. Η αποτυχία του µηνύµατος re-invite δεν έχει ως αποτέλεσµα την αποτυχία της υπάρχουσας συνόδου, καθότι η σύνοδος συνεχίζεται µε τα χαρακτηριστικά που συµφωνήθηκαν προηγουµένως. Στο τέλος της κλήσης, ο Bob αποσυνδέεται (κατεβάζει το ακουστικό) και παράγει ένα µήνυµα BYE, το οποίο δροµολογείται απευθείας στο τηλέφωνο λογισµικού της Alice, παρακάµπτοντας τους πληρεξούσιους εξυπηρετητές. Η Alice επιβεβαιώνει τη λήψη του µηνύµατος BYE µε την απόκριση 200 (OK), η οποία τερµατίζει τη σύνοδο και την συναλλαγή BYE. εν στέλνεται µήνυµα ACK, καθότι το µήνυµα ACK στέλνεται µόνο ως απόκριση σε ένα αίτηµα INVITE. Οι λόγοι για την ειδική µεταχείριση του µηνύµατος INVITE σχετίζονται µε τους µηχανισµούς αξιοπιστίας του SIP, τη διάρκεια του χρόνου που µπορεί να το χρειαστεί µέχρι να απαντηθεί ένα τηλέφωνο που χτυπά και τη διαδικασία forking. Για το λόγο αυτό, η διαχείριση αιτηµάτων στο SIP συχνά κατατάσσεσαι ως INVITE ή non-invite, όπου η non-invite αναφέρεται σε όλες τις άλλες µεθόδους εκτός της INVITE. Σε µερικές περιπτώσεις, µπορεί να είναι χρήσιµο για τους πληρεξουσίους εξυπηρετητές που συµµετέχουν στη διαδροµή (path) σηµατοδοσίας SIP, να βλέπουν όλα τα µηνύµατα που ανταλλάσσονται µεταξύ των τερµατικών σηµείων κατά τη διάρκεια της συνόδου. Για παράδειγµα, εάν ο πληρεξούσιος εξυπηρετητής biloxi.com επιθυµεί να παραµείνει στη διαδροµή σηµατοδοσίας SIP 9

µετά το αρχικό µήνυµα INVITE, τοποθετεί στο µήνυµα INVITE ένα υποχρεωτικό πεδίο κεφαλίδας, που ονοµάζεται Record- Route, το οποίο περιλαµβάνει τον SIP-URI που αποτυπώνει το όνοµα του οικείου εξυπηρετητή (hostname) ή τη διεύθυνση IP του πληρεξούσιου εξυπηρετητή. Η πληροφορία αυτή λαµβάνεται τόσο από το τηλέφωνο SIP του Bob όσο και από το τηλέφωνο λογισµικού της Alice (εξαιτίας του πεδίου κεφαλίδας Record-Route, το οποίο θα περιλαµβανόταν στο µήνυµα 200 (OK)) και αποθηκεύεται καθ όλη τη διάρκεια του διαλόγου. Ο πληρεξούσιος εξυπηρετητής biloxi.com λαµβάνει και πληρεξουσιοδοτούσε (proxy) στο µήνυµα BYE µηνύµατα ACK, BYE και OK. Κάθε πληρεξούσιος εξυπηρετητής µπορεί ανεξάρτητα να επιλέγει να λαµβάνει τα επόµενα µηνύµατα. Τα µηνύµατα θα περάσουν επίσης από όλους τους πληρεξουσίους εξυπηρετητές που θα έχουν επιλεγεί να τα λάβουν. Η ικανότητα αυτή χρησιµοποιείται συχνά από πληρεξουσίους εξυπηρετητές που παρέχουν δυνατότητες κατά την διάρκεια της κλήσης (mid-call features). Μια άλλη συνήθης λειτουργία στο SIP είναι η καταχώρηση / εγγραφή (registration). Με τη διαδικασία της εγγραφής ο πληρεξούσιος εξυπηρετητής biloxi.com µπορεί να ενηµερωθεί για την τρέχουσα φυσική θέση του Bob. Κατά την αρχικοποίηση και σε περιοδικά διαστήµατα, το τηλέφωνο SIP του Bob στέλνει µηνύµατα εγγραφής REGISTER σε έναν εξυπηρετητή στον τοµέα (domain) biloxi.com που ονοµάζεται γραµµατέας (ή αρχειογράφος ή ληξίαρχος) SIP (SIP registrar). Τα µηνύµατα REGISTER συσχετίζουν τον SIP-URI ή SIPS-URI του Bob (sip:bob@biloxi.com) µε το τερµατικό που χρησιµοποιεί τη στιγµή της επικοινωνίας (το οποίο µεταφέρεται ως ένας SIP-URI ή SIPS-URI στο πεδίο Contact της κεφαλίδας). Ο γραµµατέας SIP γράφει αυτή τη συσχέτιση, που ονοµάζεται σύνδεση (binding), σε µία βάση δεδοµένων, που ονοµάζεται υπηρεσία εντοπισµού (location service), από όπου µπορεί να χρησιµοποιηθεί από τον πληρεξούσιο εξυπηρετητή του τοµέα biloxi.com. Συχνά ο εξυπηρετητής γραµµατέα SIP ενός τοµέα «συστεγάζεται» µε τον πληρεξούσιο εξυπηρετητή του ίδιο τοµέα. Είναι σηµαντικό να επισηµανθεί ότι η διάκριση µεταξύ των διαφορετικών τύπων εξυπηρετητών SIP είναι λογική και όχι φυσική. Ο Bob δεν περιορίζεται να εγγραφεί σε µία µόνο συσκευή. Για παράδειγµα, το τηλέφωνο SIP που έχει στο σπίτι αλλά και στο γραφείο του, έχουν τη δυνατότητα να στέλνουν µηνύµατα εγγραφής. Η πληροφορία αυτή καταγράφεται συνολικά στην υπηρεσία εντοπισµού και επιτρέπει σε έναν πληρεξούσιο εξυπηρετητή να εκτελεί διαφορετικούς τύπους αναζήτησης για να εντοπίσει το Bob. Επίσης, επιτρέπεται στην ίδια συσκευή και στην ίδια χρονική στιγµή να έχουν εγγραφεί ταυτόχρονα περισσότεροι από ένας χρήστες. Η υπηρεσία εντοπισµού είναι µία αφηρηµένη έννοια. Γενικά περιλαµβάνει πληροφορίες που επιτρέπουν σε έναν πληρεξούσιο εξυπηρετητή να εισαγάγει έναν νέο URI και να λαµβάνει έναν οποιοδήποτε αριθµό από URIs, οι οποίοι να τον καθοδηγούν στο που να στείλει το αίτηµα. Η καταχώρηση / εγγραφή είναι ένας τρόπος δηµιουργίας αυτής της πληροφορίας, αλλά δεν είναι ο µοναδικός. Κατά την κρίση του διαχειριστή, µπορούν επίσης να ενεργοποιηθούν αυθαίρετες λειτουργίες χαρτογράφησης (arbitrary mapping functions). Επίσης, είναι σηµαντικό να σηµειωθεί ότι στο SIP, η καταχώρηση / εγγραφή χρησιµοποιείται µόνο για τη δροµολόγηση των εισερχοµένων αιτηµάτων SIP και όχι για τον έλεγχο της προώθησης ή µη των εξερχόµενων αιτηµάτων. Το SIP διαχειρίζεται τις διαδικασίες αδειοδότησης και ταυτοποίησης 10

(authorization and authentication) είτε στη βάση του κάθε αιτήµατος χωριστά, µε τη χρήση ενός µηχανισµού πρόκλησης / απόκρισης, είτε µε τη χρήση ενός σχήµατος χαµηλότερου επιπέδου. Το SIP περιλαµβάνει και επιπλέον λειτουργίες, όπως π.χ. η αποστολή του αιτήµατος OPTIONS µε ερωτήσεις σχετικές µε τις δυνατότητες ενός εξυπηρετητή ή πελάτη SIP, ή η αποστολή του αιτήµατος CANCEL για την ακύρωση ενός εκκρεµούντος αιτήµατος. 1.3.1 Συναλλαγές SIP Μια συναλλαγή SIP εµφανίζεται πάντοτε µεταξύ ενός πελάτη και ενός εξυπηρετητή και περιλαµβάνει όλα τα µηνύµατα από το πρώτο αίτηµα που στέλνεται από τον πελάτη στον εξυπηρετητή µέχρι µια τελική απάντηση τύπου non-1xx που στέλνεται από τον εξυπηρετητή στον πελάτη. Εάν το αίτηµα είναι INVITE και η τελική απάντηση είναι ένα non-2xx, η συναλλαγή περιλαµβάνει στην απάντηση επίσης ένα ACK. Το ACK για µια απάντηση τύπου non-2xx σε ένα αίτηµα INVITE είναι µια χωριστή συναλλαγή. 1.3.2 Τύποι πληρεξούσιων εξυπηρετητών Οι πληρεξούσιοι εξυπηρετητές διακρίνονται σε τρεις κατηγορίες. Στην πρώτη περιλαµβάνονται όσοι διατηρούν την κατάσταση συναλλαγής µεταξύ ενός πελάτη και ενός εξυπηρετητή κατά τη διάρκεια της επεξεργασίας ενός αιτήµατος και ονοµάζονται stateful πληρεξούσιοι. Στην δεύτερη κατηγορία περιλαµβάνονται όσοι δεν διατηρούν αυτήν την κατάσταση συναλλαγής και ονοµάζονται stateless πληρεξούσιοι. Ένα stateless πληρεξούσιο διαβιβάζει κατά συρρευµατικό τρόπο (downstream) κάθε αίτηµα που και κατά αντιρρευµατικό τρόπο (upstream) κάθε απάντηση που λαµβάνει. Σε µια τρίτη κατηγορία πληρεξούσιων εξυπηρετητών εντάσσονται αυτοί που διατηρούν την κατάστασή τους καθ όλη τη διάρκεια µιας συνόδου, δηλαδή από την εµφάνιση του αιτήµατος INVITE και µέχρι την εξυπηρέτηση του τελιού µηνύµατος BYE. Οι εξυπηρετητές αυτοί ονοµάζονται cal-stateful, ενώ στην αντίθετη περίπτωση ονοµάζεται cal-stateless. Το stateful πληρεξούσιο συναλλαγής δεν είναι το ίδιο µε ένα cal-stateful πληρεξούσιο. Ένα cal-stateful πληρεξούσιο είναι πάντα stateful πληρεξούσιο συναλλαγής, αλλά το αντίστροφο δεν ισχύει απαραιτήτως. 1.4 ΟΜΗ ΤΟΥ ΠΡΩΤΟΚΟΛΛΟΥ SIP Στο SIP κάθε επικοινωνιακή σύνδεση αποτελείται από τµήµατα (sections), όπου το κάθε τµήµα υλοποιείται µε ένα σύνολο από διαφορετικά στοιχεία (elements). Για να καταστεί δυνατή η περιγραφή της συµπεριφοράς του SIP, το σύνολο των σταδίων επεξεργασίας που πραγµατοποιούνται από τα στοιχεία αυτά έχουν οργανωθεί σε πολλά επίπεδα. Συνεπώς, το SIP είναι δοµηµένο ως ένα πολυεπίπεδο πρωτόκολλο, τα στοιχεία δε που καθορίζονται από το SIP είναι λογικά και όχι φυσικά. Το χαµηλότερο επίπεδο του SIP είναι το επίπεδο συντακτικού και κωδικοποίησης (syntax and encoding). Η κωδικοποίηση καθορίζεται µε τη χρήση µίας επαυξηµένης γραµµατικής Backus-Naur Form (BNF). Το δεύτερο επίπεδο είναι το επίπεδο µεταφοράς (transport layer). Καθορίζει τον τρόπο που ένας πελάτης στέλνει αιτήµατα και λαµβάνει αποκρίσεις και τον τρόπο µε τον οποίο ένας 11

εξυπηρετητής λαµβάνει αιτήµατα και στέλνει αποκρίσεις χρησιµοποιώντας το δίκτυο. Όλα τα στοιχεία SIP περιέχουν ένα επίπεδο µεταφοράς. Το τρίτο επίπεδο είναι το επίπεδο συναλλαγής (transaction layer). Οι συναλλαγές αποτελούν το δοµικό συστατικό του SIP. Μια συναλλαγή είναι ένα αίτηµα που στέλνεται από έναν πελάτη (µε τη χρήση του επιπέδου µεταφοράς) σε έναν εξυπηρετητή, µαζί µε όλες τις αποκρίσεις σε αυτό το αίτηµα που στέλνονται από τον εξυπηρετητή στον πελάτη. Το επίπεδο συναλλαγής χειρίζεται όλες τις συναλλαγές του επιπέδου εφαρµογής, το ταίριασµα των αποκρίσεων στα αιτήµατα και τους εξωχρονισµούς (timeouts) του επιπέδου εφαρµογής. Το επίπεδο συναλλαγής έχει ένα στοιχείο πελάτη (το οποίο αναφέρεται ως συναλλαγή πελάτη) και ένα συστατικό εξυπηρετητή (αναφέρεται ως συναλλαγή εξυπηρετητή), καθένα από τα οποία παριστάνεται από µία µηχανή πεπερασµένων καταστάσεων (finite state machine) που κατασκευάζεται για να επεξεργαστεί ένα συγκεκριµένο αίτηµα. Οι πράκτορες χρηστών (UAs) περιέχουν ένα επίπεδο συναλλαγής, όπως αντίστοιχα και οι πληρεξουσίοι εξυπηρετητές, το οποίο είναι τύπου call-stateless. Αντίθετα, οι πληρεξουσίοι εξυπηρετητές τύπου call-stateless δεν περιέχουν επίπεδο συναλλαγής. Ο UA είναι µια λογική οντότητα που µπορεί να ενεργήσει είτε ως πράκτορα χρήστη πελάτη (User Agent Client - UAC), είτε ως πράκτορα χρήστη εξυπηρετητή (User Agent Server - UAS). Ο UAC είναι µια λογική οντότητα που δηµιουργεί ένα νέο αίτηµα, και στη συνέχεια το στέλνει χρησιµοποιώντας το µηχανισµό ελέγχου της κατάστασης συναλλαγών του πελάτη Ο ρόλος του UAC διαρκεί όσο µια συναλλαγή. Ο UAS είναι µια λογική οντότητα που παράγει µια απάντηση σε ένα αίτηµα SIP. Η απάντηση µπορεί να αποδέχεται, να απορρίπτει, ή να επαναπροσανατολίζει (redirect) το αίτηµα. Ο ρόλος αυτός διαρκεί όσο διαρκεί η συγκεκριµένη συναλλαγή. Με άλλα λόγια, εάν ένα τµήµα λογισµικού αρχίζει ένα αίτηµα, τότε το λογισµικό αυτό ενεργεί ως UAC καθ όλη τη διάρκεια της συναλλαγής αυτής. Εάν αργότερα το λογισµικό αυτό λάβει ένα αίτηµα, τότε αυτό προσλαµβάνει το ρόλο ενός UAS για την επεξεργασία της νέας αυτής συναλλαγής. Αντίθετα, εάν ένα τµήµα λογισµικού ανταποκρίνεται σε ένα αίτηµα, τότε ενεργεί ως UAS κατά τη διάρκεια αυτής της συναλλαγής. Εάν το τµήµα αυτό του λογισµικού δηµιουργήσει αργότερα ένα νέο αίτηµα, τότε το τµήµα αυτό του λογισµικού αποκτά το ρόλο UAC για την επεξεργασία της νέας αυτής συναλλαγής. Επάνω από το επίπεδο συναλλαγής υπάρχει ένα τέταρτο επίπεδο, το επίπεδο επεξεργασίας του SIP που αναφέρεται σαν χρήστης συναλλαγής (transaction user - TU). Κάθε οντότητα του SIP, εκτός από τον πληρεξούσιο εξυπηρετητή τύπου call-stateless, είναι ένας TU. Όταν ένας TU επιθυµεί να στείλει ένα αίτηµα, δηµιουργεί µία υπόσταση συναλλαγής πελάτη (client transaction instance) και µεταφέρει το αίτηµα µαζί µε τη διεύθυνση IP του προορισµού, τη θύρα (port), και τη µεταφορά (transport) στην οποία θα στείλει το αίτηµα. Ένας TU που δηµιουργεί µία συναλλαγή πελάτη µπορεί επίσης να την ακυρώσει. Όταν ένας UA ακυρώνει µία συναλλαγή, ζητά από τον εξυπηρετητή να σταµατήσει την περαιτέρω επεξεργασία της, να γυρίσει πίσω στην κατάσταση που ίσχυε πριν την έναρξη της συναλλαγής και να παράγει ένα συγκεκριµένο µήνυµα λάθους για αυτή τη συναλλαγή. Αυτό γίνεται µε το αίτηµα CANCEL, το οποίο ναι µεν συνιστά από µόνο του µία συναλλαγή, αλλά αναφέρεται στη συναλλαγή που πρόκειται να ακυρωθεί. 12

Τα στοιχεία του SIP, δηλαδή τα UACs και τα UASs, οι πληρεξουσίοι εξυπηρετητές τύπου call-stateless και call-stateful και οι γραµµατείς (registrars), περιέχουν ένα πυρήνα (core) που τα ξεχωρίζει µεταξύ τους. Οι πυρήνες αυτοί είναι TUs, εκτός από την περίπτωση του πληρεξούσιου εξυπηρετητή τύπου call-stateless. Οι πυρήνες UAC και UAS είναι το σύνολο των λειτουργιών επεξεργασίας που απαιτούνται από ένα UAC και ένα UAS, αντίστοιχα, που εδρεύουν επάνω από τα επίπεδα συναλλαγής και µεταφορών. Παρότι η συµπεριφορά των πυρήνων UAC και UAS εξαρτάται από τη µέθοδο, εν τούτοις υπάρχουν κάποιοι κοινοί κανόνες για όλες τις µεθόδους. Στον UAC, οι κανόνες αυτοί καθορίζουν τη δοµή του αιτήµατος, ενώ στον UAS καθορίζουν την επεξεργασία του αιτήµατος και τη δηµιουργία της απόκρισης. Επειδή στο SIP οι εγγραφές είναι πολύ σηµαντικές, ο UAS που χειρίζεται ένα αίτηµα REGISTER είναι ο γραµµατέας SIP. Το SIP επιτρέπει επίσης, κάποια αιτήµατα να στέλνονται κατά τη διάρκεια του διαλόγου. Ένας διάλογος είναι µία σχέση SIP µεταξύ δύο οµότιµων UAs που διαρκεί για κάποιο χρονικό διάστηµα. Ο διάλογος διευκολύνει την αλληλουχία των µηνυµάτων και την ορθή δροµολόγηση αιτηµάτων µεταξύ των UAs. Η µέθοδος INVITE είναι ο µόνος τρόπος για την αποκατάσταση ενός διαλόγου. Όταν κατά τη διάρκεια ενός διαλόγου, ένας UAC στέλνει ένα αίτηµα, το αίτηµα αυτό πρέπει να ακολουθεί συγκεκριµένους κοινούς κανόνες για τους UAC. Τα αιτήµατα αυτά αναφέρονται ως αιτήµατα µέσου διαλόγου (mid-dialog requests). Στο SIP, η πιο σηµαντική µέθοδος είναι η INVITE, η οποία χρησιµοποιείται για την αποκατάσταση µίας συνόδου µεταξύ πολλών συµµετεχόντων. Μία σύνοδος SIP είναι ένα σύνολο από συµµετέχοντες και ένα σύνολο από συρµούς µέσων µεταξύ των συµµετεχόντων αυτών που χρειάζονται για τους σκοπούς της επικοινωνίας των. Η έναρξη της συνόδων είναι το αποτέλεσµα ενός ή περισσοτέρων διαλόγων SIP. 1.5 ΤΥΠΟΙ ΜΗΝΥΜΑΤΩΝ SIP Το SIP χρησιµοποιεί το σύνολο χαρακτήρων UTF-8 που καθορίζεται από την προδιαγραφή RFC 2279. Ένα µήνυµα SIP είναι είτε ένα αίτηµα από έναν πελάτη σε έναν εξυπηρετητή, είτε µια απάντηση από έναν εξυπηρετητή σε έναν πελάτη. Οι δύο τύποι µηνυµάτων SIP, αίτηµα και απάντηση, χρησιµοποιούν το βασικό µορφότυπο που καθορίζει το RFC 2822, ακόµα κι αν διαφέρει η σύνταξη σε ότι αφορά στο σύνολο των χαρακτήρων και στο συντακτικό. Το SIP επιτρέπει στα πεδία της κεφαλίδας (header) να µην είναι πλήρως συµβατά µε αυτά που καθορίζει, για παράδειγµα το RFC 2822. Και οι δύο τύποι µηνυµάτων αποτελούνται από µια γραµµή έναρξης, ένα ή περισσότερα πεδία κεφαλίδας, µια κενή γραµµή που δείχνουν το τέλος των πεδίων της κεφαλίδας, και ένα προαιρετικό σώµα µηνύµατος. generic-message = γραµµή έναρξης (start-line) κεφαλίδα (*message-header) κενή γραµµή (είναι απλά ένα CRLF) σώµα µηνύµατος [ message-body ] start-line = Request-Line / Status-Line 13

Η γραµµή έναρξης, το κάθε πεδίο κεφαλίδας και η κενή γραµµή πρέπει να τελειώνουν µε ένα CRLF (carriage-return line-feed sequence). Η κενή γραµµή πρέπει να παρουσιάζεται πάντοτε, έστω και αν δεν υπάρχει σώµα µηνύµατος. Το συντακτικό του µηνύµατος SIP, σε µεγάλο ποσοστό, είναι ταυτόσηµο µε αυτό του HTTP/1.1 (RFC 2616). 1.5.1 οµή Αιτηµάτων Τα αιτήµατα SIP διακρίνονται από την ύπαρξη στην γραµµή έναρξης του Request-Line. Το Request-Line περιέχει το όνοµα µιας µεθόδου, ένα Request-URI, και την έκδοση του πρωτοκόλλου που διαχωρίζονται µεταξύ τους µε ένα κενό διάστηµα (single space - SP character). Request-Line = Method SP Request-URI SP SIP-Version CRLF Method SP: Καθορίζονται έξι (6) µέθοδοι: REGISTER για την καταχώρηση των στοιχείων επαφής, INVITE, ACK, και CANCEL για την οργάνωση συνόδων, BYE για τη λήξη συνόδων, και OPTIONS για την άντληση των ικανοτήτων των εξυπηρετητών. Πρόσθετες µέθοδοι µπορούν να καθορίσουν σαν επεκτάσεις του SIP. Request-URI: Το Request-URI είναι ένας SIP-URI ή SIPS-URI ή ένας γενικός URI, όπως καθορίζεται στο RFC 2396. είχνει το χρήστη ή την υπηρεσία στους οποίους απευθύνεται το αίτηµα. Το Request-URI δεν πρέπει να περιέχει unescaped spaces ή χαρακτήρες ελέγχου (control characters) και δεν πρέπει να εσωκλείεται σε "<>". Τα στοιχεία SIP µπορεί να υποστηρίζουν Request-URIs µε σχήµατα διαφορετικά των "sip" και "sips", όπως για παράδειγµα το "tel" που δίνεται στο RFC 2806. Τα στοιχεία SIP µπορεί να µεταφράζουν non-sip-uris χρησιµοποιώντας οποιοδήποτε µηχανισµό που έχουν στη διάθεσή τους, και να παράγουν ένας SIP-URI ή SIPS-URI ή κάποιο άλλο σχέδιο. SIP-Version: Τα µηνύµατα αιτήµατος και απάντησης περιλαµβάνουν την έκδοση του SIP που ακολουθούν (η έκδοση HTTP αντικαταστάθηκε από την SIP, και η HTTP/1.1 από την SIP/2.0). Το πεδίο της έκδοσης πρέπει να αναγράφεται µε κεφαλαία γράµµατα. 1.5.2 οµή Απαντήσεων Οι απαντήσεις SIP διακρίνονται από τις ερωτήσεις από ένα Status-Line που διαθέτουν στο startline. Το Status-Line αποτελείται από τρία διαδοχικά πεδία: το SIP-Version, το Status-Code και ένα κείµενο ( Reason-Phrase ). Τα πεδία αυτά διαχωρίζονται µε SP και τερµατίζουν µε ένα CRLF. Status-Line = SIP-Version SP Status-Code SP Reason-Phrase CRLF Το Status-Code είναι ένας ακέραιος τριψήφιος αριθµός που δείχνει την έκβαση µιας προσπάθειας να γίνει κατανοητό και να ικανοποιηθεί ένα αίτηµα. Το Reason-Phrase δίνει µια σύντοµη περιγραφή κειµένου στον Status-Code. Ο Status- Code ερµηνεύεται αυτόµατα από τον πελάτη, ενώ η Reason-Phrase ερµηνεύεται από τον άνθρωποχρήστη. Ο πελάτης δεν απαιτείται να εξετάσει ή να επιδείξει τη Reason-Phrase. Παρότι το SIP 14

προτείνει συγκεκριµένη διατύπωση για τη Reason-Phrase, οι εφαρµογές µπορούν επιλέγουν ένα οποιοδήποτε κείµενο. Το πρώτο ψηφίο του Status-Code καθορίζει την κατηγορία (class) της απάντησης. Τα τελευταία δύο ψηφία δεν έχουν οποιοδήποτε ρόλο κατηγοριοποίησης. Για το λόγο αυτό, οποιαδήποτε απάντηση µε έναν κώδικα θέσης µεταξύ 100 και 199 αναφέρεται ως απάντηση "1xx", οποιαδήποτε απάντηση µε ένα κώδικα θέσης µεταξύ 200 και 299 ως απάντηση "2xx", κλπ. Η έκδοση SIP/2.0 επιτρέπει έξι τιµές για το πρώτο ψηφίο: 1xx: 2xx: 3xx: 4xx: 5xx: 6xx: Προσωρινό (το αίτηµα ελήφθη, συνεχίζεται η επεξεργασία του αιτήµατος) Επιτυχές (η δράση παραλήφθηκε επιτυχώς, έγινε κατανοητή και έγινε αποδεκτή) Επαναπροσανατολισµός (πρέπει να ληφθούν περαιτέρω µέτρα προκειµένου να συµπληρωθεί το αίτηµα) Για την εξυπηρέτηση του Status-Code τύπου 3xx, το SIP έχει ορίσει έναν ειδικό εξυπηρετητή πράκτορα πελάτη (UAS) που ονοµάζεται εξυπηρετητής επανακατεύθυνσης (redirect server) και ο οποίος παράγει απαντήσεις τύπου "3xx" στα αιτήµατα που λαµβάνει, κατευθύνοντας τον πελάτη για να έρθει σε επαφή µε ένα εναλλακτικό σύνολο από URIs. Λάθος στον πελάτη (το αίτηµα περιέχει κακή σύνταξη ή δεν µπορεί να εκπληρωθεί από αυτόν τον εξυπηρετητή) Λάθος στον εξυπηρετητή (ο εξυπηρετητής απέτυχε να εξυπηρετήσει ένα προφανώς έγκυρο αίτηµα) Σφαιρική αποτυχία (το αίτηµα δεν µπορεί να εξυπηρετηθεί σε οποιονδήποτε εξυπηρετητή) 1.5.3 οµή πεδίων κεφαλίδας Τα πεδία της κεφαλίδας SIP είναι παρόµοια µε αυτά του HTTP τόσο στη σύνταξη όσο και στη σηµασιολογία. Ειδικότερα, ακολουθούν τους ορισµούς της προδιαγραφής [H4.2] σε ότι αφορά στη σύνταξης της κεφαλίδας και στους κανόνες επέκτασης των πεδίων της κεφαλίδας σε περισσότερες από µια γραµµές. Η επέκταση γίνεται µε τη χρήση ενός κενού διαστήµατος (whitespace) και µε δίπλωση (folding). Επίσης, επιτρέπει την ύπαρξη πολλών πεδίων κεφαλίδας που να αναφέρονται στο ίδιο πεδίο-όνοµα (field name). Τα πεδία αυτά οργανώνονται σαν ένας κατάλογος που τα επιµέρους πεδία διαχωρίζονται µε κόµµα. Συγκεκριµένα, η γραµµατική σύνταξη της κεφαλίδας SIP είναι της µορφής: header = "header-name" HCOLON header-value *(COMMA header-value) 1.5.3.1 Μορφότυπο πεδίων κεφαλίδας Τα πεδία της κεφαλίδας ακολουθούν το ίδιο γενικό µορφότυπο (format) κεφαλίδων του RFC 2822. Κάθε πεδίο κεφαλίδας αποτελείται από ένα πεδίο-όνοµα (field name) που ακολουθείται από µια άνω και κάτω τελεία (":" γνωστή ως HCOLON) και αυτή ακολουθείται από ένα πεδίο-τιµή (field -value). field-name: field-value 15

Η επίσηµη γραµµατική ενός πεδίου κεφαλίδας επιτρέπει ένα αυθαίρετο αριθµό από κενά διαστήµατα (whitespace) στην κάθε πλευρά της ":". Εντούτοις, οι εφαρµογές πρέπει να αποφεύγουν τα διαστήµατα µεταξύ του πεδίου-όνοµα και της ":" και να χρησιµοποιήσουν ένα ενιαίο διαστηµικό (single space - SP) µεταξύ της ":" και του πεδίου-τιµή. Subject: lunch Subject : lunch Subject : lunch Subject: lunch Τα ανωτέρω παραδείγµατα είναι όλα έγκυρα και ισοδύναµα, αλλά το τελευταίο είναι η προτιµώµενη µορφή. Τα πεδία της κεφαλίδας µπορούν να επεκταθούν µε πολλαπλές γραµµές θέτοντας πριν από κάθε γραµµή ένα χαρακτήρα SP ή οριζόντια tab (HT). Το σπάσιµο γραµµών και το whitespace στην αρχή της επόµενης γραµµής αντιµετωπίζονται ως ενιαίος χαρακτήρας SP. Κατά συνέπεια, τα ακόλουθα είναι ισοδύναµα: Subject: I know you're there, pick up the phone and talk to me! Subject: I know you're there, pick up the phone and talk to me! Ο τρόπος διάταξης των πεδίων της κεφαλίδας µε διαφορετικά πεδία-ονόµατος δεν είναι σηµαντικός. Εντούτοις, συνιστάται τα πεδία της κεφαλίδας (π.χ. Via, Route, Record-Route, Proxy-Require, Max-Forwards και Proxy-Authorization ) που απαιτούνται για την επεξεργασία στον πληρεξούσιο εξυπηρετητή να εµφανίζονται προς την κορυφή του µηνύµατος ώστε να διευκολύνουν τη γρήγορη ανάλυση (parsing). Επίσης, είναι σηµαντική και η σχετική διάταξη των σειρών των πεδίων της κεφαλίδας µε το ίδιο πεδίο-όνοµα. Σε ένα µήνυµα, µπορεί να υπάρχουν πολλαπλές σειρές πεδίων κεφαλίδας µε το ίδιο πεδίοόνοµα εάν και µόνο εάν ολόκληρη η τιµή του πεδίου αυτού ορίζεται ως ένας κατάλογος διαχωριζόµενος µε κόµµα. Πρέπει να µπορούν να συνδυαστούν οι πολλαπλές σειρές πεδίων κεφαλίδας µέσα σε µια ακολουθία "field-name: field-value" χωρίς αλλαγή της σηµασιολογίας του µηνύµατος, µε την επισύναψη (appending) κάθε επόµενου πεδίου-τιµών στο προηγούµενό του (κάθε ακολουθία διαχωρίζεται µε ένα κόµµα). Εξαίρεση στον κανόνα αυτό αποτελούν τα πεδία κεφαλίδας: WWW-Authenticate, Authorization, Proxy- Authenticate, και Proxy-Authorization. Οι υλοποιήσεις του SIP πρέπει να είναι σε θέση να επεξεργάζονται πολλαπλές σειρές πεδίων κεφαλίδας µε το ίδιο όνοµα και σε οποιοδήποτε συνδυασµό του πεδίου-τιµής (δηλαδή µια ή πολλές γραµµές). Οι παρακάτω οµάδες πεδίων κεφαλίδας είναι έγκυρες και ισοδύναµες: Route: <sip:alice@atlanta.com> Subject: Lunch Route: <sip:bob@biloxi.com> Route: <sip:carol@chicago.com> Route: <sip:alice@atlanta.com>, <sip:bob@biloxi.com> Route: <sip:carol@chicago.com> Subject: Lunch 16

Subject: Lunch Route: <sip:alice@atlanta.com>, <sip:bob@biloxi.com>, <sip:carol@chicago.com> Session Initiation Protocol (SIP) - RFC 3261 τους: Κάθε µια από τις παρακάτω πλοκάδες (blocks) είναι έγκυρες αλλά µη ισοδύναµες µεταξύ Route: <sip:alice@atlanta.com> Route: <sip:bob@biloxi.com> Route: <sip:carol@chicago.com> Route: Route: Route: Route: <sip:bob@biloxi.com> <sip:alice@atlanta.com> <sip:carol@chicago.com> <sip:alice@atlanta.com>,<sip:carol@chicago.com>, <sip:bob@biloxi.com> Το µορφότυπο ενός πεδίου-τιµής καθορίζεται ανά κεφαλίδα και είναι είτε µια αδιαφανής ακολουθία κειµένου (TEXT-UTF8 octets), είτε ένας συνδυασµός από κενά διαστήµατα (whitespace), σηµεία, διαχωριστές και σειρές από χαρακτήρες και όλα αυτά µέσα σε εισαγωγικά (< >, quotes). Πολλά υλοποιηµένα πεδία κεφαλίδας ακολουθούν στις τιµές τους τη γενική µορφή που ακολουθείται από το ; και στη συνέχεια από ένα ζευγάρι: παράµετρος-όνοµα και παράµετρος-τιµή : field-name: field-value *(;parameter-name=parameter-value) Στο πεδίο-τιµή της κεφαλίδας µπορεί να συνδεθεί ένας οποιοσδήποτε αριθµός ζευγαριών παραµέτρου, όµως µία συγκεκριµένη παράµετρος-όνοµα δεν πρέπει να εµφανιστεί περισσότερο από µία φορά. Επιπρόσθετα, τα πεδία-ονόµατος της κεφαλίδας SIP είναι σταθερά και ανεξάρτητα της χρήσης πεζών ή κεφαλαίων στοιχείων στην υλοποίηση. Οµοίως και στα πεδία-τιµές, παράµετροιόνοµα και παράµετροι-τιµή, εκτός αν αυτά ορίζονται αλλιώς. Παραδείγµατος χάριν το: είναι ισοδύναµο µε το: και το: είναι ισοδύναµο µε το: Contact CONTACT: <sip:alice@atlanta.com>;expires=3600 Content-Disposition: <sip:alice@atlanta.com>;expires=3600 session;handling=optional content-disposition: Session;HANDLING=OPTIONAL Τα επόµενα δύο πεδία κεφαλίδας δεν είναι ισοδύναµα: Warning: 370 devnull "Choose a bigger pipe" Warning: 370 devnull "CHOOSE A BIGGER PIPE" 1.5.3.2 Ταξινόµηση των πεδίων της κεφαλίδας Μερικά πεδία της κεφαλίδας έχουν νόηµα µόνο σε αιτήµατα ή σε απαντήσεις. Τα πεδία αυτά ονοµάζονται πεδία κεφαλίδας αίτησης και πεδία κεφαλίδας απάντησης, αντίστοιχα. Εάν ένα πεδίο 17