SIP (Session Initiation Protocol)

Support HackTricks

Basic Information

SIP (Session Initiation Protocol) είναι ένα ** πρωτόκολλο σήμανσης και ελέγχου κλήσεων** που χρησιμοποιείται ευρέως για την εγκαθίδρυση, τροποποίηση και τερματισμό πολυμεσικών συνεδριών, συμπεριλαμβανομένων φωνής, βίντεο και άμεσων μηνυμάτων, μέσω δικτύων IP. Αναπτύχθηκε από την Internet Engineering Task Force (IETF), το SIP ορίζεται στο RFC 3261 και έχει γίνει το de facto πρότυπο για VoIP και ενοποιημένες επικοινωνίες.

Ορισμένα βασικά χαρακτηριστικά του SIP περιλαμβάνουν:

  1. Πρωτόκολλο βασισμένο σε κείμενο: Το SIP είναι ένα πρωτόκολλο βασισμένο σε κείμενο, το οποίο το καθιστά αναγνώσιμο από ανθρώπους και πιο εύκολο στην αποσφαλμάτωση. Βασίζεται σε ένα μοντέλο αιτήματος-απάντησης, παρόμοιο με το HTTP, και χρησιμοποιεί μεθόδους όπως INVITE, ACK, BYE και CANCEL για τον έλεγχο των συνεδριών κλήσεων.

  2. Κλιμάκωση και Ευελιξία: Το SIP είναι εξαιρετικά κλιμακωτό και μπορεί να χρησιμοποιηθεί σε μικρές αναπτύξεις καθώς και σε μεγάλες επιχειρηματικές και carrier-grade περιβάλλοντα. Μπορεί να επεκταθεί εύκολα με νέες δυνατότητες, καθιστώντας το προσαρμόσιμο σε διάφορες περιπτώσεις χρήσης και απαιτήσεις.

  3. Διαλειτουργικότητα: Η ευρεία υιοθέτηση και τυποποίηση του SIP εξασφαλίζουν καλύτερη διαλειτουργικότητα μεταξύ διαφορετικών συσκευών, εφαρμογών και παρόχων υπηρεσιών, προάγοντας την απρόσκοπτη επικοινωνία σε διάφορες πλατφόρμες.

  4. Μοναδικός Σχεδιασμός: Το SIP συνεργάζεται με άλλα πρωτόκολλα όπως το RTP (Real-time Transport Protocol) για τη μετάδοση μέσων και το SDP (Session Description Protocol) για την περιγραφή πολυμεσικών συνεδριών. Αυτός ο μοναδικός σχεδιασμός επιτρέπει μεγαλύτερη ευελιξία και συμβατότητα με διαφορετικούς τύπους μέσων και κωδικοποιητές.

  5. Proxy και Redirect Servers: Το SIP μπορεί να χρησιμοποιεί proxy και redirect servers για να διευκολύνει τη δρομολόγηση κλήσεων και να παρέχει προηγμένες δυνατότητες όπως προώθηση κλήσεων, μεταφορά κλήσεων και υπηρεσίες φωνητικού ταχυδρομείου.

  6. Παρουσία και Άμεσες Μηνύματα: Το SIP δεν περιορίζεται μόνο στην επικοινωνία φωνής και βίντεο. Υποστηρίζει επίσης την παρουσία και τα άμεσα μηνύματα, επιτρέποντας μια ευρεία γκάμα εφαρμογών ενοποιημένης επικοινωνίας.

Παρά τα πολλά πλεονεκτήματά του, το SIP μπορεί να είναι περίπλοκο να ρυθμιστεί και να διαχειριστεί, ιδιαίτερα όταν πρόκειται για ζητήματα NAT traversal και firewall. Ωστόσο, η ευελιξία, η κλιμάκωση και η εκτενή υποστήριξή του σε όλη τη βιομηχανία το καθιστούν δημοφιλή επιλογή για VoIP και πολυμεσική επικοινωνία.

SIP Methods

Οι βασικές μέθοδοι SIP που ορίζονται στο RFC 3261 περιλαμβάνουν:

  1. INVITE: Χρησιμοποιείται για να ξεκινήσει μια νέα συνεδρία (κλήση) ή να τροποποιήσει μια υπάρχουσα. Η μέθοδος INVITE μεταφέρει την περιγραφή της συνεδρίας (συνήθως χρησιμοποιώντας SDP) για να ενημερώσει τον παραλήπτη σχετικά με τις λεπτομέρειες της προτεινόμενης συνεδρίας, όπως τύποι μέσων, κωδικοποιητές και πρωτόκολλα μεταφοράς.

  2. ACK: Αποστέλλεται για να επιβεβαιώσει την παραλαβή μιας τελικής απάντησης σε ένα αίτημα INVITE. Η μέθοδος ACK εξασφαλίζει την αξιοπιστία των συναλλαγών INVITE παρέχοντας αναγνώριση από άκρο σε άκρο.

  3. BYE: Χρησιμοποιείται για να τερματίσει μια καθιερωμένη συνεδρία (κλήση). Η μέθοδος BYE αποστέλλεται από οποιοδήποτε μέρος της συνεδρίας για να υποδείξει ότι επιθυμεί να τερματίσει την επικοινωνία.

  4. CANCEL: Αποστέλλεται για να ακυρώσει ένα εκκρεμές αίτημα INVITE πριν καθιερωθεί η συνεδρία. Η μέθοδος CANCEL επιτρέπει στον αποστολέα να ακυρώσει μια συναλλαγή INVITE αν αλλάξει γνώμη ή αν δεν υπάρχει απάντηση από τον παραλήπτη.

  5. OPTIONS: Χρησιμοποιείται για να ερωτήσει τις δυνατότητες ενός SIP server ή user agent. Η μέθοδος OPTIONS μπορεί να αποσταλεί για να ζητήσει πληροφορίες σχετικά με υποστηριζόμενες μεθόδους, τύπους μέσων ή άλλες επεκτάσεις χωρίς να καθιερωθεί πραγματικά μια συνεδρία.

  6. REGISTER: Χρησιμοποιείται από έναν user agent για να καταχωρήσει την τρέχουσα τοποθεσία του σε έναν SIP registrar server. Η μέθοδος REGISTER βοηθά στη διατήρηση μιας ενημερωμένης αντιστοίχισης μεταξύ του SIP URI ενός χρήστη και της τρέχουσας διεύθυνσης IP του, διευκολύνοντας τη δρομολόγηση και την παράδοση κλήσεων.

Σημειώστε ότι για να καλέσετε κάποιον δεν είναι απαραίτητο να χρησιμοποιήσετε το REGISTER για οτιδήποτε. Ωστόσο, είναι πιθανό ότι προκειμένου να εκτελέσετε ένα INVITE ο καλών χρειάζεται να αυθεντικοποιηθεί πρώτα ή θα λάβει μια απάντηση 401 Unauthorized.

Εκτός από αυτές τις βασικές μεθόδους, υπάρχουν πολλές επεκτάσεις μεθόδων SIP που ορίζονται σε άλλα RFC, όπως:

  1. SUBSCRIBE: Ορισμένο στο RFC 6665, η μέθοδος SUBSCRIBE χρησιμοποιείται για να ζητήσει ειδοποιήσεις σχετικά με την κατάσταση ενός συγκεκριμένου πόρου, όπως η παρουσία ή η κατάσταση κλήσης ενός χρήστη.

  2. NOTIFY: Επίσης ορισμένο στο RFC 6665, η μέθοδος NOTIFY αποστέλλεται από έναν server για να ενημερώσει έναν εγγεγραμμένο user agent σχετικά με αλλαγές στην κατάσταση ενός παρακολουθούμενου πόρου.

  3. REFER: Ορισμένο στο RFC 3515, η μέθοδος REFER χρησιμοποιείται για να ζητήσει από τον παραλήπτη να εκτελέσει μια μεταφορά ή να παραπέμψει σε τρίτο μέρος. Αυτό χρησιμοποιείται συνήθως για σενάρια μεταφοράς κλήσεων.

  4. MESSAGE: Ορισμένο στο RFC 3428, η μέθοδος MESSAGE χρησιμοποιείται για να στείλει άμεσα μηνύματα μεταξύ SIP user agents, επιτρέποντας κειμενική επικοινωνία εντός του πλαισίου SIP.

  5. UPDATE: Ορισμένο στο RFC 3311, η μέθοδος UPDATE επιτρέπει την τροποποίηση μιας συνεδρίας χωρίς να επηρεάζεται η κατάσταση του υπάρχοντος διαλόγου. Αυτό είναι χρήσιμο για την ενημέρωση παραμέτρων συνεδρίας, όπως κωδικοποιητές ή τύποι μέσων, κατά τη διάρκεια μιας σε εξέλιξη κλήσης.

  6. PUBLISH: Ορισμένο στο RFC 3903, η μέθοδος PUBLISH χρησιμοποιείται από έναν user agent για να δημοσιεύσει πληροφορίες κατάστασης γεγονότων σε έναν server, καθιστώντας τις διαθέσιμες σε άλλα ενδιαφερόμενα μέρη.

SIP Response Codes

  • 1xx (Προσωρινές Απαντήσεις): Αυτές οι απαντήσεις υποδεικνύουν ότι το αίτημα ελήφθη και ο server συνεχίζει να το επεξεργάζεται.

  • 100 Trying: Το αίτημα ελήφθη και ο server εργάζεται πάνω σε αυτό.

  • 180 Ringing: Ο καλούμενος ειδοποιείται και θα απαντήσει στην κλήση.

  • 183 Session Progress: Παρέχει πληροφορίες σχετικά με την πρόοδο της κλήσης.

  • 2xx (Επιτυχείς Απαντήσεις): Αυτές οι απαντήσεις υποδεικνύουν ότι το αίτημα ελήφθη, κατανοήθηκε και έγινε αποδεκτό.

  • 200 OK: Το αίτημα ήταν επιτυχές και ο server το έχει εκπληρώσει.

  • 202 Accepted: Το αίτημα έγινε αποδεκτό για επεξεργασία, αλλά δεν έχει ολοκληρωθεί ακόμη.

  • 3xx (Απαντήσεις Ανακατεύθυνσης): Αυτές οι απαντήσεις υποδεικνύουν ότι απαιτείται περαιτέρω ενέργεια για την εκπλήρωση του αιτήματος, συνήθως επικοινωνώντας με έναν εναλλακτικό πόρο.

  • 300 Multiple Choices: Υπάρχουν πολλές διαθέσιμες επιλογές και ο χρήστης ή ο πελάτης πρέπει να επιλέξει μία.

  • 301 Moved Permanently: Ο ζητούμενος πόρος έχει ανατεθεί σε ένα νέο μόνιμο URI.

  • 302 Moved Temporarily: Ο ζητούμενος πόρος είναι προσωρινά διαθέσιμος σε διαφορετικό URI.

  • 305 Use Proxy: Το αίτημα πρέπει να σταλεί σε έναν καθορισμένο proxy.

  • 4xx (Απαντήσεις Σφάλματος Πελάτη): Αυτές οι απαντήσεις υποδεικνύουν ότι το αίτημα περιέχει κακή σύνταξη ή δεν μπορεί να εκπληρωθεί από τον server.

  • 400 Bad Request: Το αίτημα ήταν κακώς διαμορφωμένο ή μη έγκυρο.

  • 401 Unauthorized: Το αίτημα απαιτεί αυθεντικοποίηση χρήστη.

  • 403 Forbidden: Ο server κατάλαβε το αίτημα αλλά αρνείται να το εκπληρώσει.

  • 404 Not Found: Ο ζητούμενος πόρος δεν βρέθηκε στον server.

  • 408 Request Timeout: Ο server δεν έλαβε ένα ολοκληρωμένο αίτημα εντός του χρόνου που ήταν προετοιμασμένος να περιμένει.

  • 486 Busy Here: Ο καλούμενος είναι αυτή τη στιγμή απασχολημένος και δεν μπορεί να απαντήσει στην κλήση.

  • 5xx (Απαντήσεις Σφάλματος Server): Αυτές οι απαντήσεις υποδεικνύουν ότι ο server απέτυχε να εκπληρώσει ένα έγκυρο αίτημα.

  • 500 Internal Server Error: Ο server συνάντησε ένα σφάλμα κατά την επεξεργασία του αιτήματος.

  • 501 Not Implemented: Ο server δεν υποστηρίζει τη λειτουργικότητα που απαιτείται για την εκπλήρωση του αιτήματος.

  • 503 Service Unavailable: Ο server είναι αυτή τη στιγμή ανίκανος να χειριστεί το αίτημα λόγω συντήρησης ή υπερφόρτωσης.

  • 6xx (Παγκόσμιες Απαντήσεις Αποτυχίας): Αυτές οι απαντήσεις υποδεικνύουν ότι το αίτημα δεν μπορεί να εκπληρωθεί από κανέναν server.

  • 600 Busy Everywhere: Όλοι οι πιθανοί προορισμοί για την κλήση είναι απασχολημένοι.

  • 603 Decline: Ο καλούμενος δεν επιθυμεί να συμμετάσχει στην κλήση.

  • 604 Does Not Exist Anywhere: Ο ζητούμενος πόρος δεν είναι διαθέσιμος πουθενά στο δίκτυο.

Examples

SIP INVITE Example

INVITE sip:jdoe@example.com SIP/2.0
Via: SIP/2.0/UDP pc33.example.com;branch=z9hG4bK776asdhds
Max-Forwards: 70
To: John Doe <sip:jdoe@example.com>
From: Jane Smith <sip:jsmith@example.org>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 INVITE
Contact: <sip:jsmith@pc33.example.com>
User-Agent: ExampleSIPClient/1.0
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO
Content-Type: application/sdp
Content-Length: 142

v=0
o=jsmith 2890844526 2890842807 IN IP4 pc33.example.com
s=-
c=IN IP4 pc33.example.com
t=0 0
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000te
Κάθε Παράμετρος Εξηγημένη
  1. Request-Line: INVITE sip:jdoe@example.com SIP/2.0 - Αυτή η γραμμή υποδεικνύει τη μέθοδο (INVITE), το URI αιτήματος (sip:jdoe@example.com), και την έκδοση SIP (SIP/2.0).

  2. Via: Via: SIP/2.0/UDP pc33.example.com;branch=z9hG4bK776asdhds - Η κεφαλίδα Via καθορίζει το πρωτόκολλο μεταφοράς (UDP) και τη διεύθυνση του πελάτη (pc33.example.com). Η παράμετρος "branch" χρησιμοποιείται για την ανίχνευση βρόχων και την αντιστοίχιση συναλλαγών.

  3. Max-Forwards: Max-Forwards: 70 - Αυτό το πεδίο κεφαλίδας περιορίζει τον αριθμό των φορών που μπορεί να προωθηθεί το αίτημα από τους μεσολαβητές για να αποφευχθούν οι άπειροι βρόχοι.

  4. To: To: John Doe <sip:jdoe@example.com> - Η κεφαλίδα To καθορίζει τον παραλήπτη της κλήσης, συμπεριλαμβανομένου του ονόματος εμφάνισης τους (John Doe) και του SIP URI (sip:jdoe@example.com).

  5. From: From: Jane Smith <sip:jsmith@example.org>;tag=1928301774 - Η κεφαλίδα From καθορίζει τον αποστολέα της κλήσης, συμπεριλαμβανομένου του ονόματος εμφάνισης τους (Jane Smith) και του SIP URI (sip:jsmith@example.org). Η παράμετρος "tag" χρησιμοποιείται για να προσδιορίσει μοναδικά τον ρόλο του αποστολέα στη συνομιλία.

  6. Call-ID: Call-ID: a84b4c76e66710 - Η κεφαλίδα Call-ID προσδιορίζει μοναδικά μια συνεδρία κλήσης μεταξύ δύο χρηστών.

  7. CSeq: CSeq: 314159 INVITE - Η κεφαλίδα CSeq περιέχει έναν αριθμό ακολουθίας και τη μέθοδο που χρησιμοποιείται στο αίτημα. Χρησιμοποιείται για την αντιστοίχιση απαντήσεων σε αιτήματα και την ανίχνευση μηνυμάτων εκτός σειράς.

  8. Contact: Contact: <sip:jsmith@pc33.example.com> - Η κεφαλίδα Contact παρέχει μια άμεση διαδρομή προς τον αποστολέα, η οποία μπορεί να χρησιμοποιηθεί για επόμενα αιτήματα και απαντήσεις.

  9. User-Agent: User-Agent: ExampleSIPClient/1.0 - Η κεφαλίδα User-Agent παρέχει πληροφορίες σχετικά με το λογισμικό ή το υλικό του αποστολέα, συμπεριλαμβανομένου του ονόματος και της έκδοσης.

  10. Allow: Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO - Η κεφαλίδα Allow απαριθμεί τις μεθόδους SIP που υποστηρίζονται από τον αποστολέα. Αυτό βοηθά τον παραλήπτη να κατανοήσει ποιες μέθοδοι μπορούν να χρησιμοποιηθούν κατά τη διάρκεια της επικοινωνίας.

  11. Content-Type: Content-Type: application/sdp - Η κεφαλίδα Content-Type καθορίζει τον τύπο μέσου του σώματος του μηνύματος, στην προκειμένη περίπτωση, SDP (Πρωτόκολλο Περιγραφής Συνεδρίας).

  12. Content-Length: Content-Length: 142 - Η κεφαλίδα Content-Length υποδεικνύει το μέγεθος του σώματος του μηνύματος σε bytes.

  13. Message Body: Το σώμα του μηνύματος περιέχει την περιγραφή συνεδρίας SDP, η οποία περιλαμβάνει πληροφορίες σχετικά με τους τύπους μέσων, τους κωδικοποιητές και τα πρωτόκολλα μεταφοράς για την προτεινόμενη συνεδρία.

  • v=0 - Έκδοση πρωτοκόλλου (0 για SDP)

  • o=jsmith 2890844526 2890842807 IN IP4 pc33.example.com - Δημιουργός και αναγνωριστικό συνεδρίας

  • s=- - Όνομα συνεδρίας (ένα μόνο παύλα υποδεικνύει ότι δεν υπάρχει όνομα συνεδρίας)

  • c=IN IP4 pc33.example.com - Πληροφορίες σύνδεσης (τύπος δικτύου, τύπος διεύθυνσης και διεύθυνση)

  • t=0 0 - Πληροφορίες χρονοδιάγραμμα (χρόνοι έναρξης και λήξης, 0 0 σημαίνει ότι η συνεδρία δεν είναι περιορισμένη)

  • m=audio 49170 RTP/AVP 0 - Περιγραφή μέσου (τύπος μέσου, αριθμός θύρας, πρωτόκολλο μεταφοράς και λίστα μορφών). Σε αυτή την περίπτωση, υποδεικνύει μια ροή ήχου χρησιμοποιώντας RTP/AVP (Πρωτόκολλο Μεταφοράς Σε Πραγματικό Χρόνο / Προφίλ Ήχου Βίντεο) και μορφή 0 (PCMU/8000).

  • a=rtpmap:0 PCMU/8000 - Χαρακτηριστικό που αντιστοιχεί τη μορφή (0) στον κωδικοποιητή (PCMU) και τη συχνότητα ρολογιού του (8000 Hz).

Παράδειγμα SIP REGISTER

Η μέθοδος REGISTER χρησιμοποιείται στο Πρωτόκολλο Έναρξης Συνεδρίας (SIP) για να επιτρέψει σε έναν χρήστη (UA), όπως ένα τηλέφωνο VoIP ή ένα softphone, να καταχωρήσει την τοποθεσία του σε έναν διακομιστή καταχώρησης SIP. Αυτή η διαδικασία ενημερώνει τον διακομιστή πού να δρομολογήσει τις εισερχόμενες SIP αιτήσεις που προορίζονται για τον καταχωρημένο χρήστη. Ο διακομιστής καταχώρησης είναι συνήθως μέρος ενός διακομιστή μεσολάβησης SIP ή ενός αφιερωμένου διακομιστή καταχώρησης.

Ακολουθεί ένα λεπτομερές παράδειγμα των μηνυμάτων SIP που εμπλέκονται σε μια διαδικασία αυθεντικοποίησης REGISTER:

  1. Αρχικό REGISTER αίτημα από τον UA προς τον διακομιστή καταχώρησης:

REGISTER sip:example.com SIP/2.0
Via: SIP/2.0/UDP 192.168.1.100:5060;branch=z9hG4bK776asdhds
Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=565656
To: Alice <sip:alice@example.com>
Call-ID: 1234567890@192.168.1.100
CSeq: 1 REGISTER
Contact: <sip:alice@192.168.1.100:5060>;expires=3600
Expires: 3600
Content-Length: 0

Αυτό το αρχικό μήνυμα REGISTER αποστέλλεται από τον UA (Alice) στον διακομιστή καταχώρισης. Περιλαμβάνει σημαντικές πληροφορίες όπως τη ζητούμενη διάρκεια καταχώρισης (Expires), το SIP URI του χρήστη (sip:alice@example.com), και τη διεύθυνση επαφής του χρήστη (sip:alice@192.168.1.100:5060).

  1. 401 Unauthorized απάντηση από τον διακομιστή καταχώρισης:

cssCopy codeSIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 192.168.1.100:5060;branch=z9hG4bK776asdhds
From: Alice <sip:alice@example.com>;tag=565656
To: Alice <sip:alice@example.com>;tag=7878744
Call-ID: 1234567890@192.168.1.100
CSeq: 1 REGISTER
WWW-Authenticate: Digest realm="example.com", nonce="abcdefghijk", algorithm=MD5, qop="auth"
Content-Length: 0

Ο διακομιστής μητρώου απαντά με ένα μήνυμα "401 Unauthorized", το οποίο περιλαμβάνει μια κεφαλίδα "WWW-Authenticate". Αυτή η κεφαλίδα περιέχει πληροφορίες που απαιτούνται για να πιστοποιήσει τον εαυτό του το UA, όπως το authentication realm, nonce, και αλγόριθμο.

  1. REGISTER αίτημα με διαπιστευτήρια πιστοποίησης:

REGISTER sip:example.com SIP/2.0
Via: SIP/2.0/UDP 192.168.1.100:5060;branch=z9hG4bK776asdhds
Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=565656
To: Alice <sip:alice@example.com>
Call-ID: 1234567890@192.168.1.100
CSeq: 2 REGISTER
Contact: <sip:alice@192.168.1.100:5060>;expires=3600
Expires: 3600
Authorization: Digest username="alice", realm="example.com", nonce="abcdefghijk", uri="sip:example.com", response="65a8e2285879283831b664bd8b7f14d4", algorithm=MD5, cnonce="lmnopqrst", qop=auth, nc=00000001
Content-Length: 0

Ο UA στέλνει ένα άλλο αίτημα REGISTER, αυτή τη φορά περιλαμβάνοντας την κεφαλίδα "Authorization" με τα απαραίτητα διαπιστευτήρια, όπως το όνομα χρήστη, το realm, το nonce και μια τιμή απόκρισης που υπολογίζεται χρησιμοποιώντας τις παρεχόμενες πληροφορίες και τον κωδικό πρόσβασης του χρήστη.

Αυτός είναι ο τρόπος με τον οποίο υπολογίζεται η απόκριση Authorization:

import hashlib

def calculate_sip_md5_response(username, password, realm, method, uri, nonce, nc, cnonce, qop):
# 1. Calculate HA1 (concatenation of username, realm, and password)
ha1_input = f"{username}:{realm}:{password}"
ha1 = hashlib.md5(ha1_input.encode()).hexdigest()

# 2. Calculate HA2 (concatenation of method and uri)
ha2_input = f"{method}:{uri}"
ha2 = hashlib.md5(ha2_input.encode()).hexdigest()

# 3. Calculate the final response value (concatenation of h1, stuff and h2)
response_input = f"{ha1}:{nonce}:{nc}:{cnonce}:{qop}:{ha2}"
response = hashlib.md5(response_input.encode()).hexdigest()

return response

# Example usage
username = "alice"
password = "mysecretpassword"
realm = "example.com"
method = "REGISTER"
uri = "sip:example.com"
nonce = "abcdefghijk"
nc = "00000001"
cnonce = "lmnopqrst"
qop = "auth"

response = calculate_sip_md5_response(username, password, realm, method, uri, nonce, nc, cnonce, qop)
print(f"MD5 response value: {response}")
  1. Επιτυχής καταχώριση απάντηση από τον διακομιστή καταχώρισης:

SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.1.100:5060;branch=z9hG4bK776asdhds
From: Alice <sip:alice@example.com>;tag=565656
To: Alice <sip:alice@example.com>;tag=7878744
Call-ID: 1234567890@192.168.1.100
CSeq: 2 REGISTER
Contact: <sip:alice@192.168.1.100:5060>;expires=3600
Expires: 3600
Content-Length: 0

Μετά την επαλήθευση των παρεχόμενων διαπιστευτηρίων από τον διακομιστή μητρώου, στέλνει μια απάντηση "200 OK" για να υποδείξει ότι η εγγραφή ήταν επιτυχής. Η απάντηση περιλαμβάνει τις καταχωρημένες πληροφορίες επαφής και τον χρόνο λήξης για την εγγραφή. Σε αυτό το σημείο, ο χρήστης (Άλις) είναι επιτυχώς εγγεγραμμένος με τον διακομιστή SIP και οι εισερχόμενες SIP αιτήσεις για την Άλις μπορούν να δρομολογηθούν στη σωστή διεύθυνση επαφής.

Παράδειγμα Κλήσης

Δεν αναφέρεται, αλλά ο Χρήστης Β πρέπει να έχει στείλει ένα REGISTER μήνυμα στον Proxy 2 πριν μπορέσει να λάβει κλήσεις.

Support HackTricks

Last updated