SIP - การส่งข้อความ
ข้อความ SIP มีสองประเภท - requests และ responses.
บรรทัดเปิดของคำร้องขอประกอบด้วยวิธีการที่กำหนดคำร้องขอและ Request-URI ที่กำหนดตำแหน่งที่จะส่งคำร้องขอ
ในทำนองเดียวกันบรรทัดเปิดของการตอบกลับมีรหัสตอบกลับ
ขอวิธีการ
SIP requestsคือรหัสที่ใช้สร้างการสื่อสาร เพื่อเสริมพวกเขามีSIP responses ซึ่งโดยทั่วไปจะระบุว่าคำขอสำเร็จหรือล้มเหลว
คำขอ SIP เหล่านี้ซึ่งเรียกว่า METHODS ทำให้ข้อความ SIP สามารถทำงานได้
วิธีการสามารถถือได้ว่าเป็นคำขอ SIP เนื่องจากพวกเขาร้องขอการดำเนินการเฉพาะที่จะดำเนินการโดยตัวแทนผู้ใช้หรือเซิร์ฟเวอร์อื่น
วิธีการแบ่งออกเป็นสองประเภท -
วิธีการหลัก
วิธีการขยาย
วิธีการหลัก
มีหกวิธีหลักตามที่กล่าวไว้ด้านล่าง
เชิญ
INVITE ใช้เพื่อเริ่มเซสชันกับตัวแทนผู้ใช้ กล่าวอีกนัยหนึ่งคือใช้เมธอด INVITE เพื่อสร้างเซสชันสื่อระหว่างตัวแทนผู้ใช้
INVITE สามารถมีข้อมูลสื่อของผู้โทรในเนื้อหาข้อความ
เซสชันจะได้รับการพิจารณาจัดตั้งขึ้นหาก INVITE ได้รับการตอบกลับสำเร็จ (2xx) หรือมีการส่ง ACK
คำขอเชิญที่ประสบความสำเร็จจะสร้างไฟล์ dialog ระหว่างตัวแทนผู้ใช้ทั้งสองซึ่งดำเนินต่อไปจนกว่า BYE จะถูกส่งไปเพื่อยุติเซสชัน
คำเชิญที่ส่งภายในกล่องโต้ตอบที่สร้างขึ้นเรียกว่าไฟล์ re-INVITE.
Re-INVITE ใช้เพื่อเปลี่ยนลักษณะของเซสชันหรือรีเฟรชสถานะของกล่องโต้ตอบ
เชิญตัวอย่าง
รหัสต่อไปนี้แสดงวิธีการใช้ INVITE
INVITE sips:[email protected] SIP/2.0
Via: SIP/2.0/TLS client.ANC.com:5061;branch = z9hG4bK74bf9
Max-Forwards: 70
From: Alice<sips:[email protected]>;tag = 1234567
To: Bob<sips:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sips:[email protected]>
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
Supported: replaces
Content-Type: application/sdp
Content-Length: ...
v = 0
o = Alice 2890844526 2890844526 IN IP4 client.ANC.com
s = Session SDP
c = IN IP4 client.ANC.com
t = 3034423619 0
m = audio 49170 RTP/AVP 0
a = rtpmap:0 PCMU/8000
บาย
BYE เป็นวิธีที่ใช้ในการยุติเซสชันที่กำหนดขึ้น นี่คือคำขอ SIP ที่สามารถส่งโดยผู้โทรหรือผู้รับสายเพื่อสิ้นสุดเซสชัน
ไม่สามารถส่งโดยพร็อกซีเซิร์ฟเวอร์
โดยปกติคำขอ BYE จะกำหนดเส้นทางตั้งแต่ต้นจนจบโดยข้ามพร็อกซีเซิร์ฟเวอร์
ไม่สามารถส่ง BYE ไปยัง INVITE ที่รอดำเนินการหรือเซสชันที่ยังไม่ได้สร้าง
ลงทะเบียน
คำขอ REGISTER ดำเนินการลงทะเบียนตัวแทนผู้ใช้ คำร้องขอนี้ถูกส่งโดยตัวแทนผู้ใช้ไปยังเซิร์ฟเวอร์ผู้รับจดทะเบียน
คำขอ REGISTER อาจถูกส่งต่อหรือพร็อกซีจนกว่าจะถึงผู้รับจดทะเบียนที่มีสิทธิ์ของโดเมนที่ระบุ
มันมี AOR (Address of Record) ในไฟล์ To ส่วนหัวของผู้ใช้ที่กำลังลงทะเบียน
คำขอลงทะเบียนประกอบด้วยช่วงเวลา (3600 วินาที)
ตัวแทนผู้ใช้รายหนึ่งสามารถส่งคำขอ REGISTER ในนามของตัวแทนผู้ใช้อื่น นี้เรียกว่าthird-party registration. ที่นี่From แท็กมี URI ของบุคคลที่ส่งการลงทะเบียนในนามของบุคคลที่ระบุไว้ใน To หัวข้อ.
ยกเลิก
CANCEL ใช้เพื่อยุติเซสชันที่ไม่ได้สร้างขึ้น ตัวแทนผู้ใช้ใช้คำขอนี้เพื่อยกเลิกการพยายามโทรที่รอดำเนินการก่อนหน้านี้
สามารถส่งโดยตัวแทนผู้ใช้หรือพร็อกซีเซิร์ฟเวอร์
ยกเลิกคือไฟล์ hop by hop การร้องขอกล่าวคือมันผ่านองค์ประกอบระหว่างตัวแทนผู้ใช้และรับการตอบสนองที่สร้างโดยองค์ประกอบสถานะถัดไป
ACK
ACK ใช้เพื่อรับทราบคำตอบสุดท้ายของวิธีการเชิญ ACK ไปในทิศทางของ INVITE.ACK เสมออาจมีเนื้อหา SDP (ลักษณะของสื่อ) หากไม่มีใน INVITE
ไม่สามารถใช้ ACK เพื่อแก้ไขคำอธิบายสื่อที่ส่งไปแล้วใน INVITE เริ่มต้น
พร็อกซีที่มีสถานะที่ได้รับ ACK ต้องพิจารณาว่าควรส่งต่อ ACK แบบดาวน์สตรีมไปยังพร็อกซีหรือตัวแทนผู้ใช้อื่นหรือไม่
สำหรับการตอบกลับ 2xx ครั้ง ACK จะสิ้นสุดลง แต่สำหรับการตอบกลับสุดท้ายอื่น ๆ ทั้งหมดจะทำงานแบบกระโดดต่อฮอปเมื่อมีพร็อกซีที่เกี่ยวข้อง
ตัวเลือก
เมธอด OPTIONS ใช้เพื่อสอบถามตัวแทนผู้ใช้หรือพร็อกซีเซิร์ฟเวอร์เกี่ยวกับความสามารถและค้นหาความพร้อมใช้งานในปัจจุบัน การตอบกลับคำขอแสดงรายการความสามารถของตัวแทนผู้ใช้หรือเซิร์ฟเวอร์ พร็อกซีไม่เคยสร้างคำขอ OPTIONS
วิธีการขยาย
ติดตาม
SUBSCRIBE ถูกใช้โดยตัวแทนผู้ใช้เพื่อสร้างการสมัครสมาชิกเพื่อวัตถุประสงค์ในการรับการแจ้งเตือนเกี่ยวกับเหตุการณ์เฉพาะ
ประกอบด้วยไฟล์ Expires ฟิลด์ส่วนหัวที่ระบุระยะเวลาของการสมัครสมาชิก
หลังจากระยะเวลาผ่านไปการสมัครสมาชิกจะสิ้นสุดลงโดยอัตโนมัติ
การสมัครสมาชิกสร้างกล่องโต้ตอบระหว่างตัวแทนผู้ใช้
คุณสามารถสมัครใหม่ได้อีกครั้งโดยส่ง SUBSCRIBE อื่นภายในกล่องโต้ตอบก่อนถึงเวลาหมดอายุ
จะได้รับ 200 OK สำหรับการสมัครสมาชิกจาก User
ผู้ใช้สามารถยกเลิกการสมัครได้โดยการส่งวิธีการสมัครอื่นที่มีค่าหมดอายุเป็น 0 (ศูนย์)
แจ้ง
ตัวแทนผู้ใช้ใช้ NOTIFY เพื่อรับเหตุการณ์เฉพาะ โดยปกติการแจ้งเตือนจะทริกเกอร์ภายในกล่องโต้ตอบเมื่อมีการสมัครสมาชิกระหว่างผู้สมัครสมาชิกและผู้แจ้ง
ทุกการแจ้งเตือนจะได้รับการตอบสนอง 200 ตกลงหากได้รับการแจ้งเตือน
NOTIFY มีไฟล์ Event ฟิลด์ส่วนหัวระบุเหตุการณ์และไฟล์ subscriptionstate ฟิลด์ส่วนหัวที่ระบุสถานะปัจจุบันของการสมัครสมาชิก
การแจ้งเตือนจะถูกส่งเสมอเมื่อเริ่มต้นและสิ้นสุดการสมัครสมาชิก
เผยแพร่
PUBLISH ถูกใช้โดยตัวแทนผู้ใช้เพื่อส่งข้อมูลสถานะเหตุการณ์ไปยังเซิร์ฟเวอร์
PUBLISH มีประโยชน์มากเมื่อมีแหล่งข้อมูลเหตุการณ์หลายแหล่ง
คำขอเผยแพร่คล้ายกับการแจ้งเตือนยกเว้นว่าจะไม่ถูกส่งในกล่องโต้ตอบ
คำขอเผยแพร่ต้องมีไฟล์ Expires ฟิลด์ส่วนหัวและ Min-Expires ฟิลด์ส่วนหัว
อ้างอิง
REFER ถูกใช้โดยตัวแทนผู้ใช้เพื่ออ้างถึงตัวแทนผู้ใช้อื่นเพื่อเข้าถึง URI สำหรับไดอะล็อก
REFER ต้องมีไฟล์ Refer-Toหัวข้อ. นี่เป็นส่วนหัวที่จำเป็นสำหรับการอ้างอิง
REFER สามารถส่งภายในหรือภายนอกกล่องโต้ตอบ
ก 202 Accepted จะทริกเกอร์การร้องขอการอ้างอิงซึ่งระบุว่าตัวแทนผู้ใช้รายอื่นยอมรับการอ้างอิง
ข้อมูล
เอเจนต์ผู้ใช้ใช้ INFO เพื่อส่งข้อมูลการส่งสัญญาณการโทรไปยังตัวแทนผู้ใช้รายอื่นซึ่งมีการสร้างเซสชันสื่อ
นี่คือคำขอแบบ end-to-end
พร็อกซีจะส่งต่อคำขอ INFO เสมอ
อัปเดต
UPDATE ใช้เพื่อแก้ไขสถานะของเซสชันหากไม่ได้สร้างเซสชัน ผู้ใช้สามารถเปลี่ยน Codec ด้วย UPDATE
หากมีการสร้างเซสชันจะใช้การเชิญซ้ำเพื่อเปลี่ยนแปลง / อัปเดตเซสชัน
PRACK
PRACK ใช้เพื่อรับทราบการรับโอนการตอบสนองชั่วคราวที่เชื่อถือได้ (1XX)
โดยทั่วไป PRACK ถูกสร้างขึ้นโดยไคลเอนต์เมื่อได้รับการตอบสนองชั่วคราวที่มีไฟล์ RSeq หมายเลขลำดับที่เชื่อถือได้และก supported:100rel หัวข้อ.
PRACK มีค่า (RSeq + CSeq) ในรูปแบบ rack หัวข้อ.
วิธีการ PRACK ใช้กับการตอบกลับชั่วคราวทั้งหมดยกเว้นการตอบกลับแบบพยายาม 100 ครั้งซึ่งไม่มีการขนส่งอย่างน่าเชื่อถือ
PRACK อาจมีเนื้อหาของข้อความ อาจใช้เพื่อแลกเปลี่ยนข้อเสนอ / คำตอบ
ข้อความ
ใช้เพื่อส่งข้อความโต้ตอบแบบทันทีโดยใช้ SIP โดยปกติ IM จะประกอบด้วยข้อความสั้น ๆ ที่แลกเปลี่ยนกันแบบเรียลไทม์โดยผู้เข้าร่วมสนทนาด้วยข้อความ
MESSAGE สามารถส่งภายในกล่องโต้ตอบหรือภายนอกกล่องโต้ตอบ
เนื้อหาของ MESSAGE จะอยู่ในเนื้อหาของข้อความเป็นไฟล์ MIME ไฟล์แนบ.
ก 200 OK โดยปกติจะได้รับการตอบกลับเพื่อระบุว่าข้อความถูกส่งไปที่ปลายทางแล้ว