Tải bản đầy đủ (.pdf) (64 trang)

Tìm hiểu giao thức SIP và xây dựng ứng dụng minh họa

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.04 MB, 64 trang )


i
LI CM N

Li đu tiên em xin chân thành cm n thy Hunh Minh Quang là
ngi đã tn tình hng dn, ch bo em trong lúc thc hin đ tài. Nhng
ý kin ca thy là vô cùng quý giá đi vi em không nhng trong lúc thc
hin đ tài này mà còn là kinh nghim hu ích cho em sau này.

Em cng xin chân thành cm n các thy cô trong khoa Tin Hc
trng đi hc M TP.HCM đã nhit tình dy d và cung cp cho em
nhng kin thc hu dng trong cuc sng.

Xin cm n bn bè, anh ch em đã đng viên và chia s thông tin cho
em trong khi thc hin đ tài.

Cui cùng con xin cm n ba m đã chm sóc, nuôi dng con thành
ngi.

Mc dù đã c gng nhng vi nhng hiu bit gii hn chc chn s
không tránh khi nhng thiu sót. Rt mong thy cô và các bn cm thông
và ch bo.





Sinh viên thc hin
Lu Mnh Hùng

iii


Mc lc

Li cm n i
Nhn xét ca giáo viên hng dn ii
Mc lc iii
Phn I
Gii thiu đ tài 1
Chng 1 Tng quan, vai trò và ý ngha ca SIP 1
1.1. Tng quan 1
1.2. Vai trò và ý ngha ca SIP 2
1.3. Các loi dch v s dng SIP 3
1.3.1. Các dch v qun lý phiên c bn 3
1.3.2. Các dch v điu khin nâng cao 4
1.3.3. Các dch v đa phng tin 4
1.3.4. Các dch v hi ngh 5
1.4. Mc tiêu ca lun vn 5
Phn II
C s lý lun 6
Chng 2 Cu trúc mng SIP 6
2.1. a ch SIP 6
2.2. Chc nng SIP 6
2.2.1. Cài đt, chnh sa và kt thúc phiên 6
2.2.2. nh v ngi dùng 8
2.3. Các thành phn 9
2.3.1. User Agents (UAs) 9
2.3.2. Proxy server 9
2.3.3. Redirect Server 10
2.3.4. Registrars 11
2.3.5. Location service 11
Chng 3 T chc ca giao thc SIP 12

3.1.Thông đip SIP 12
3.1.1.Khái nim Dialog 12
3.1.2.Yêu cu 14
3.1.3.Các câu tr li 15
3.1.4.Field header 17
3.2.SIP identity 24
3.3.Giao thc SDP 25
Chng 4 Mã tình trng SIP 28
4.1.Nhóm 1 (1xx Provisional Codes) 28
4.2.Nhóm 2 (2xx Successful Status Codes) 29
4.3.Nhóm 3 (3xx Redirection Status Codes) 30
4.4.Nhóm 4 (4xx Client Failure Status Codes) 31
4.5.Nhóm 5 (5xx Server Failure Status Codes) 37
4.6.Nhóm 6 (6xx Global Failure Status Codes) 38
Chng 5 Th tc đng ký và thành lp phiên trong mng SIP 40
5.1. Th tc đng ký 40
5.1.1 .ng ký c bn 40
5.1.2. Khai báo s kin 41
5.2. Thành lp mt phiên trong SIP 42
5.2.1. Truy cp mng 42

iv
5.2.2. Khi to cuc gi 42
5.2.3. Yêu cu t máy khách 44
5.2.4. Tr li t máy ch 44
5.2.5. nh tuyn SIP 45
5.3. Chnh sa phiên SIP 46
5.4. Chm dt phiên SIP 46
Chng 6 Bo mt SIP 47
5.1. Các tn công mng 47

6.1.1. Registration Hijacking 47
6.1.2. Session Hijacking 47
6.1.3. Impersonating a Server 47
6.1.4. Tampering with Message Bodies 47
6.1.5. Tearing Down Sessions47
6.1.6. Denial of Service and Amplification 48
6.1.7. Bots and DDoS Attacks 48
6.2. Gii pháp bo mt 48
6.2.1. Network-layer security (IPSec) 48
6.2.2. Transport-layer security(TLS) 49
6.2.3. SIPS URI scheme 50
6.2.4. HTTP authentication 51
6.2.5. S/MIME 52
Phn III
Cài đt giao thc và xây dng ng dng minh ha giao thc SIP 55
Chng 7 Cài đt giao thc và xây dng ng dng LEO 55
7.1. Th vin lp SIP 55
7.1.1. Các thành phn ca th vin 55
7.2. Mô t ng dng 56
7.2.1. Tng quan v ng dng 56
7.2.2. Môi trng xây dng 56
7.3. Cu trúc ng dng 56
7.3.1. Thành phn ca ng dng 56
7.4. Giao din ngi dùng và cu hình 56
7.4.1. Giao din ngi dùng 56
7.4.2. Cu hình 58
7.5. X lý logic ca ng dng 59
Nhn xét đánh giá 60
Tài liu tham kho 61



1
 tài:


Tìm hiu giao thc SIP và xây dng ng dng
minh ha


Phn I:
Gii thiu đ tài

Chng 1:
Tng quan, vai trò và ý ngha ca SIP

1.1. Tng quan:
S quan tâm đi vi internet và các dch v truyn thông đa phng tin ngày
càng tng. Nhng ngi s dng internet trc đây ch đ lt web bây gi li say mê
các dch v nh chat (Instant Messaging), game trc tuyn, gi đin thoi và trao đi
Video trên mng.

Có nhiu dch v cung cp trên mng internet da trên mng IP, có th chia làm
3 nhóm theo quan đim ca ngi s dng là:
• Dch v Infotainment:
là dch v ngi dùng có th truy cp thông tin và các ng dng gii trí t
các máy ch t xa ví d nh Web.
• Dch v Streaming:
cho phép ngi dùng truy cp trc tuyn hoc download các media (phim,
nhc,v.v).
• Dch v Communication:

cho phép ngi này giao tip vi ngi khác s dng các media khác nhau
nh đin thoi hay gi th.




2

Dch v Communication có th chia làm 2 loi: dch v trc tuyn và dch v
không trc tuyn.
• Trong dch v trc tuyn chúng ta cn phi ni kt đng thi đ vic truyn
thông có th xy ra ngay lp tc nh đin thoi, chi c hay chat.
• Trong dch v không trc tuyn không cn thit phi kt ni cùng lúc đ
truyn thông xy ra nh gi th đin t.



Không nh nhng loi dch v khác, tín hiu đóng vai trò quan trng trong dch
v truyn thông đa phng tin trên mng IP. SIP (Session Initiation Protocol) là giao
thc tín hiu mc ng dng nên vai trò ca nó rt quan trng trong các dch v truyn
thông đa phng tin.

SIP không thay th các dch v khác đang tn ti nh HTTP, SMTP, POP3,
IMAP4 mà nó đc thit k đ b sung cho nhng dch v và các giao thc đang tn
ti nh web hay th đin t và khi kt hp vi nhng giao thc này, SIP ha hn mt
h thng truyn thông trên mng IP bao gm tt c các dch v có th thc hin trong
th gii thc.

1.2. Vai trò và ý ngha ca SIP:
Gi s có hai ngi cn truyn thông ging nói trên internet là A và B, c hai

ngi đu có máy tính kt ni internet, microphone, loa chng trình chuyn đi âm
thanh thành tín hiu s, đóng gói và gi đi thông qua giao thc RTP và ngc li. Khi
A nói vào microphone, ging nói s đc chuyn đi thành tín hiu s và đc
chng trình máy tính gi đn B thông qua giao thc RTP.  gói d liu âm thanh
đn đc B, gói d liu phi cha đa ch ca B. Khi máy ca B nhn đc gói d liu
s chuyn đi gói thành tín hiu s và phát ra loa.

3





Có mt s vn đ cn xem xét nh sau:
• Khi mt bên mun báo hiu cho bên kia là s bt đu giao tip thì làm th
nào?
• Bên gi yêu cu cng mun bit là yêu cu ca mình đc thc hin cha, bên
nhn đang chp nhn yêu cu và đã chp nhn cha đ bên gi bt đu nói.
• Phng thc mã hóa d liu media ca bên gi và bên nhn có ging nhau
không?
• Nu thay vì mt ngi s dng máy tính th nht thì h mun s dng máy
tính th hai có đa ch IP khác thì làm sao?

Nhng vn đ trên chng t cn nhng thông tin thêm đ điu khin cách
truyn thông thc hin. Nhng thông tin điu khin này là các tín hiu và đc gi
gia 2 máy tính ca A và B theo giao thc tín hiu. SIP là giao thc vn chuyn nhng
loi thông tin này.





1.3. Các loi dch v s dng SIP:
1.3.1. Các dch v qun lý phiên c bn:
SIP có th s dng trong các loi truyn thông đa phng tin sau:

Voice communication: Truyn thông ging nói.

4
Video communication: Truyn thông video.
Instant Messaging communication (IM): Trao đi tin nhn trc tuyn.
Text over IP: Trao đi vn bn thi gian thc.
Peer-to-peer gaming: game trc tuyn.
Whiteboarding: S dng mt bng v đ trao đi
thông tin gia nhng ngi dùng.
File transfer: Chia s file.

Ngoài ra có th kt hp nhng dch v này mt s nh:
• Voice và video.
• Voice và IM.
• Voice và Real-Time Text.
• Voice và File Transfer.
• Voice và Gaming.
• Voice và Whiteboarding.

1.3.2. Các dch v điu khin nâng cao:
Mt s dch v SIP cung cp thêm là:
• Xác đnh ngi khi to phiên:
SIP bao gm thông tin đnh danh ca ngi gi có th đc th hin
đn ngi nhn. Ngc li SIP cng có th ngn đnh danh ca ngi gi
th hin cho ngi nhn.


• Xác đnh có multimedia trong phiên hay không?
Khi to cng có th bao gm ni dung đa phng tin trong yêu cu
khi to phiên đ cnh báo cho ngi nhn. Ni dung đa phng tin có th
là nhc chuông, hình nh,v.v.

• Chn cuc gi:
ng dng chn cuc gi có th cn c vào các tham s khác nhau.
Chng hn nh da vào ngi khi to, ni đn, ni dung đa phng tin
hay nhng tham s khác nh ngày gi.

• Gi cuc gi:
Dch v này d dàng s dng vi SIP/SDP vì SDP đã cung cp đnh
ngha cho vic hot đng và không hot đng ca media đc gi hoc
đc nhn.

• Chuyn cuc gi.
Dch v này d dàng s dng bng cách chnh sa các tham s SIP cái
th hin ni đn ca cuc gi khi các điu kin phù hp din ra (chng hn
ngi nhn không tr li)

1.3.3. Các dch v đa phng tin:
Mt s dch v:
• Voice mail:
Cho phép ngi gi có th đ li tin nhn ca h đ ngi nhn có th
nghe li sau.

5
• Music on hold:
Cho nghe nhc khi ch đi.

• Ringback tones:
Chuông cnh báo cuc gi đn.
• Do not disturb:
Ngi gi đc chuyn đn mt menu vi mt s tham s đc cu
hình.

1.3.4. Các dch v hi ngh:
• Multiparty call:
Nhiu ngi cùng hi thoi.
• Dial-in conferences:
Nhng ngi tham gia quay 1 s đnh trc tham gia.
• Dial-out conferences:
Server đc cu hình đ bt đu hi ngh  thi gian xác đnh.

1.4. Mc tiêu ca lun vn:
Vi tm quan trng ca h thng SIP nh ta đã thy mc tiêu ca lun vn là tìm
hiu giao thc SIP và cài đt giao thc, xây dng ng dng minh ha giao thc SIP.

Vi mc tiêu tìm hiu giao thc SIP lun vn s trình bày v h thng SIP bao
gm cu trúc mng SIP, chc nng SIP, các thành phn h thng SIP. Bên cnh đó nó
miêu t cách thc t chc ca h thng SIP, th tc đng ký trong mng SIP. Ngoài ra
nó còn trình bày vn đ bo mt trong mng SIP.

Vi mc tiêu cài đt giao thc, xây dng ng dng minh ha lun vn s tp
trung vào cài đt giao thc vi các lp h tr cho hot đng mng SIP. Bên cnh đó là
ng dng nh s dng th vin lp giao thc đã cài đt nhm minh ha rõ nét hn mt
ng dng ca SIP.

6
Phn II:


C s lý lun

Chng 2:
Cu trúc mng SIP

2.4. a ch SIP:
Trong mng SIP mt ngi s dng đc xác đnh thông qua SIP URI. SIP URI
là mt URI (Universal Resource Identifier) cha đng thông tin đ khi to và duy trì
mt phiên truyn thông vi các tài nguyên.

Ví d SIP URI:
sip:

Mt SIP URI là lc đ sip: bao gm 2 phn đc chia bi ký hiu @.
• Phn ngi dùng chn đ xác đnh tài nguyên đc cp đa ch. Trong ví d
trên là: client1.
• Phn 2 dùng xác đnh ngun cung cp tài nguyên. Nó có th là tên domain
hoc đa ch IP và port.Ví d trên là: abc.com.

SIP URI có th ch ngi s dng ,server và mt s loi sau:
• nh danh chung ca ngi dùng nh sip:
• a phng ca ngi dùng.
• Server SIP nh: sip:193.53.24.3
• Mt nhóm ngi dùng.
• Mt dch v.

2.5. Chc nng SIP:
SIP là giao thc tín hiu nó gii quyt 2 khía cnh ch cht là:
• Cài đt, chnh sa và kt thúc phiên.

• nh v ngi dùng.

2.5.1. Cài đt, chnh sa và kt thúc phiên:
Chc nng chính ca SIP là khi to phiên truyn thông đa phng tin. S
dng SIP mt ngi có th gi tín hiu mun truyn thông ca h đn mt ngi
khác và ngi đó có th chp nhn hay t chi li mi đó.

SIP cng có th s dng đ chnh sa phiên. Ví d nh thêm mt thành
phn media mi vào phiên.

Chc nng cui cùng ca vic qun lý phiên là chm dt phiên. Bt k
ngi nào tham gia vào phiên có th s dng SIP đ chm dt vic truyn thông
và vic gi nhn media.

Mt phiên có th din ra nh sau:

7
̇ Bên mun thành lp cuc gi s gi yêu cu cho bên nhn. H thng SIP
s chuyn li mi này đn bên nhn.

̇ Khi yêu cu đc chuyn nó s mt chút thi gian đ bên nhn chp
nhn hoc t chi li mi do đó bên gi cn phi đc thông báo là yêu
cu đang đc x lý. H thng SIP s chuyn nhng thông tin báo đang
đc x lý đn bên gi đ tránh bên gi tip tc gi li yêu cu.

̇ Nu bên nhn yêu cu chp nhn yêu cu thì bên gi cn bit đc thông
tin đó đ bt đu thành lp cuc gi. SIP s chuyn thông tin v s chp
nhn đn bên gi.

̇ Vic thng nht các tham s đ giao tip nh s mã hóa và gii mã ging

nói và video. SIP s s dng vic mô t phiên đ thc hin chc nng
này.

̇ Gi s lúc đu phiên có truyn thông c audio và video. Trong khi giao
tip mt bên có th mun không truyn video na. Lúc này SIP s chnh
sa phiên, mt mô t phiên mi không có video s gi đn bên kia và
nu yêu cu đc chp nhn thì lúc này ch còn truyn ging nói.

̇ Sau khi giao tip mt bên mun ngt cuc gi chm dt đàm thoi thì h
thng SIP s chm dt phiên.





8
2.5.2. nh v ngi dùng:
 khi to phiên cn đnh tuyn t bên gi đn bên nhn. Trong mng IP
vic đnh tuyn cn da vào đa ch IP mà bên gi không bit đa ch IP ca bên
nhn (đa ch IP ca ngi nhn có th thay đi), nhng ngi gi phi bit đnh
danh chung ca ngi nhn. Hn na ngi nhn có th s dng các thit b khác
nhau đ giao tip do đó đa ch IP ca thit b ca ngi nhn là không c đnh.

Vi yêu cu đó h thng cn xác đnh v trí ca ngi dùng da trên đnh
danh chung. iu đó cn ánh x đnh danh chung vi đa ch IP. Do vy đ mt
thit b nhn đc cuc gi nó cn đng ký.



Sau khi đng ký đa ch IP thit b ca ngi dùng và đnh danh chung đc

lu vào bng cha d liu. Khi có cuc gi đn thit b ca ngi dùng, cuc gi
s đnh tuyn đn server kt hp vi thit b đó, truy vn DNS đ có đa ch IP và
gi tín hiu đn ngi dùng.


9
2.6. Các thành phn:
2.6.1. User Agents (UAs):
Mt UA bao gm 2 thành phn: User Agent Client (UAC) và User Agent
Server (UAS). UAC chu trách nhim to yêu cu SIP mi và nhn câu tr li.
UAS chu trách nhim nhn yêu cu SIP và to câu tr li thích hp.





UA đc tích hp trong thit b ca ngi dùng do đó ngi dùng có th
tng tác vi nó thông qua giao din. SIP UA là mt phn không th thiu ca
mt ng dng truyn thông đa phng tin. Nhng UA có th đc cài đt theo
nhiu cách khác nhau. Nó có th là phn mm chy trên máy tính hay là ng
dng chy trên đin thoi di đng.

2.6.2. Proxy server:
Proxy Server hot đng nh là client và server cho mc đích to yêu cu
thay cho client khác.Vai trò chính ca Proxy server là đnh tuyn tc là công vic
ca nó là chuyn yêu cu đn server tip theo cho đn ngi dùng đích.

Có th có mt tp hp proxy server giúp đnh tuyn yêu cu gia UAC và
UAS. Có các loi proxy sau:


2.3.2.1. Outbound proxy:
Mt Outbound proxy giúp UA đnh tuyn các yêu cu gi đi. UA
thng cu hình đ gi yêu cu đn outbound proxy, sau đó proxy s đnh
tuyn cho chúng.



10


2.3.2.2. Inbound proxy:
Inbound proxy nm gi các yêu cu đn sau đó s chuyn cho UA
thích hp trong min mà nó chu trách nhim. Khi nhn đc yêu cu đn
ngi dùng trong min ca nó, nó truy vn Location Service đ xác đnh
Contact Address ri chuyn yu cu đn đa ch này.


2.3.2.3. Forking:
Có trng hp ngi dùng đng ký nhiu đa ch cho mt đnh danh
lúc đó proxy có th thc hin theo 2 cách nh sau: Tìm kim ln lt tng
đa ch hoc tìm kim đng thi nhiu đa ch.

2.3.3. Redirect Server:
Redirect server là server UA, nó nhn yêu cu t UAC và to câu tr li cho
nhng yêu cu này. Nhng câu tr li này s hng dn UAC liên h vi URI
khác.





11
2.3.4. Registrars:
Registrar là máy ch chp nhn các yêu cu đng ký t UA. Mt UA cn
đng ký trc khi nó có th nhn cuc gi. Khi registrar chp nhn yu cu đng
ký t UA nó đt nhng thông tin nhn đc trong mt c s d liu gi là
Location Service. Nhng thông tin trong Location Service đc ánh x gia v trí
ngi dùng và đnh danh chung ca ngi dùng.

2.3.5. Location service:
Location Service không phi là thc th SIP. Nó là c s d liu cha đng
danh sách s ánh x gia Addresses of Record (AORs) là các đnh danh chung và
Contact Addresses là v trí ngi dùng trong min c th. AORs và Contact
Addresses là các SIP URIs. Khi Registrar nhn yêu cu đng ký t UA nó đa
thông tin đn Location Service, Location Service cng liên h vi Proxy Server
ca mt min đ nhn thông tin v trí ca ngi dùng đc gi.








12
Chng 3:
T chc ca giao thc SIP

3.1. Thông đip SIP:
Các thành phn SIP là các thành phn logic ch không phi là thành phn vt lý.
Mt thành phn vt lý nh Server có th h tr nhiu thành phn logic. Các thành phn

SIP phi có kh nng x lý thông đip SIP gi là các lp. Có các lp sau:

• Cú pháp và mã hóa: Là lp cn thit, cú pháp và mã hóa cn phi hiu đ
thông dch hoc x lý các thông đip SIP.

• Lp vn chuyn: dùng đ to các thông đip và gi trên mng đn các thành
phn SIP khác.

• Lp giao dch: chu trách nhim qun lý, truyn li các câu tr li đn các yêu
cu.

• Các ngi dùng giao dch: chu trách nhim to các thông đip nh INVITE,
hy b giao dch, xác đnh đa ch.

Trong các lp trên 2 lp đu là cn thit phi có.

3.1.1. Khái nim Dialog:
Khi 2 thit b giao tip vi nhau chúng trao đi nhng thông đip (là các
giao dch). Ví d mt đin thoi gi yêu cu INVITE đn đin thoi nhn. Nu
đin thoi nhn chp nhn yêu cu thì nó gi câu tr li đn yêu cu và trao đi
các thông đip khác (xem nh là mt dialog vi thit b khác). Mt phiên có th
có nhiu dialog nh hình sau:






13
Mi dialog cn mt dialog ID bt ngun t SIP header. Khi UAC gi yêu

cu nó mong ch câu tr li. Câu tr li cn nhng header nh TO, FROM
CALL ID. Header TO và FROM cn tham s TAG s dng đ tính dialog ID.
Dialog ID là duy nht trong UAC và UAS.





SIP là giao thc dng text có ngha thông tin đc mã hóa trong giao thc
là các chui ký t. Thông đip SIP là nhng hàng ký t, mi hàng đc phân bit
bi hai ký t là ký t v đu dòng và ký t xung hàng Carriage Return and Line
Feed (CRLF).

Có hai loi thông đip là yêu cu và câu tr li cho yêu cu. C hai loi
thông đip đu bao gm mt hàng bt đu, mt hoc nhiu các field header, mt
dòng trng đ xác đnh kt thúc các field header và mt phn thân thông đip tùy
chn. Field header là mt hàng bao gm tên header, du “:”, giá tr ca header và
kt thúc bi CRLF.




14
3.1.2. Yêu cu:
Mt yêu cu đc gi t SIP client đn SIP server. Dng yêu cu có hàng
bt đu nh sau:

METHOD <SP> REQUEST_URI <SP> SIP_VERSION <CRLF>

METHOD xác đnh loi yêu cu đc gi:

̇ REGISTER: S dng đ đng ký User.
̇ INVITE: Dùng đ mi mt user đn mt session.
̇ ACK: Xác nhn vic nhn yêu cu khi cài đt phiên
̇ CANCEL: Hy giao dch
̇ BYE: Kt thúc phiên.
̇ OPTIONS: Truy vn server.
̇ INFO: S dng đ trao đi thông tin nh s đã gi.
̇ MESSAGE: S dng cho nhng thông đip ngn.
̇ NOTIFY: S dng đ thông báo cho các thành phn.
̇ SUBSCRIBE: ng ký nhn thông báo.
̇ UPDATE: Cp nht thông tin phiên.

Request-URI là mt SIP URI ch rõ ngi dùng hay dch v mà yêu cu này
gi đn. Request-URI là khá quan trng vì s dng đ đnh tuyn yêu cu.


Hình trên minh ha giá tr ca Request-URI qua các hop khác nhau t
ngi gi đn ngi nhn trong mng SIP. Ta có th thy trong bc 1 và 2 SIP
URI cha đnh danh public ca ngi nhn. Tuy nhiên khi yêu cu đn inbound
proxy ca ngi nhn nó truy vn Location service và nhn đa ch ca ngi
nhn sau đó thay th URI gc. Trong chui đnh tuyn trên thì Request-URI luôn
ch ni đn ca yêu cu và giá tr ca nó thay đi khi đn inbound proxy ca
ngi nhn vì đã có thông tin chính xác.




15
Trong hình trên inbound proxy ca ngi nhn cài đt mt dch v chuyn
tip đn gin, khi nó nhn mt yêu cu có đích đn là abc nó t đng thay đi giá

tr Request-URI đn SIP URI ca cba ngi mà abc mun chuyn tt c các cuc
gi đn ca abc.

3.1.3. Các câu tr li:
Câu tr li gi t server đn client theo yêu cu. Dng ca câu tr li là:

SIP VERSION (space)STATUS CODE(space)REASON PHRASE(crlf)

SIP VERSION là phiên bn SIP, mc đnh là 2.0

Status code đc đnh ngha theo lp. Có 6 lp mã tình trng
̇ 1xx: Mã tm thi:
Các mã thuc nhóm này ch ra rng yêu cu đã đc nhn và đang
đc x lý. ây là mã tr li thng xuyên t server đn client, nó nh là
mt s xác nhn. Mc đích là ngn chn vic gi li yêu cu nhiu ln.

̇ 2xx: Thành công:
Ch ra rng yêu cu đã đc x lý và hành đng đã hoàn thành.

̇ 3xx: Chuyn tip.
Chuyn tip đc gi khi mt phiên đc chuyn tip đn mt đa ch
khác. Câu tr li s gii thích lý do chuyn tip và chi tit ni thông đip
đc chuyn tip.

̇ 4xx: Li client:
Li client th hin sai cú pháp ca request và server không th x lý
request.

̇ 5xx: Li server.
Li server th hin rng yêu cu đúng nhng mt li đã xy ra trên

server và yêu cu không th đc x lý. Lý do đc ch rõ trong thông đip
gi client.

̇ 6xx: Li chung.
Li xy ra không  phía client hoc server mà có th do mng.

Chi tit mt s mã nh sau:

16








17
3.1.4. Field header:
Field header cha thông tin chi tit v yêu cu hoc tr li. Header có th
cha thông tin ni đn hoc thôn tin đnh tuyn. Dng ca header nh sau:

header_ name: header_value

Có th có nhiu khong trng gia tên và giá tr ca header nhng khuyn
cáo là ch nên có mt khong trng.

ROUTE: <>
ROUTE: <>


Nh trên có th có nhiu tên header ging nhau trong mt yêu cu nh tên
header ROUTE. Khi header ging nhau này xut hin nhiu ln th t không
đc ch rõ nhng khuyn cáo rng vic đnh tuyn nên đc lit kê đu yêu cu
đ cho proxy nhanh chóng x lý thông đip.




18



3.1.4.1. From header:
Field From th hin đnh danh logic ca ngi to yêu cu. nh danh
này là mt SIP URI. Nó là đnh danh logic nên có th nó không cha đa ch
IP hay tên min.

From: ABC < > ; tag = dei3i5h8sdshj88d

Field From có cha tham s “tag”, tham s “tag” ca field From kt
hp vi tham s “tag” ca field To và giá tr ca field Call-ID dùng đ xác
đnh dialog. Field From cng có th cha mt Display-name đc thêm
trc SIP URI. Display-name th hin tên ngi khi to yêu cu và có th
đ cho ngi nhn bit.

3.1.4.2. To header:
Field To th hin ngi nhn logic ca yêu cu. Cái này có th là
Address of Record ca ngi dùng hoc tài nguyên mà request yêu cu.
inh danh logic này là SIP URI.


sip:



UAC đt giá tr field header To và không proxy nào trên đng đi có
th thay đi. Proxy trên đng đi có th quyt đnh tái đnh tuyn. Chúng
có th quyt đnh chuyn tip yêu cu đn đích đn khác nhng field header
To không thay đi giá tr.

Giá tr ca field header To thng đc nhp vào hoc chn t danh
sách có sn. Cng nh header From header cng có th có “Display-name”

sip: ABC < >

Tham s “tag” ca header To kt hp vi tham s “tag” ca From và
Call-ID đ xác đnh dialog. Do đó trong mt yêu cu tham s “tag” ca
header To là bt buc.


19
3.1.4.3. Call-ID:
Field header Call-ID xác đnh duy nht mt giá tr cho mt nhóm
thông đip. Nó đc to bi UA bng cách kt hp mt chui ngu nhiên,
tên host và đa ch IP. S kt hp “tag” ca các header To, From và Call-ID
đ xác đnh dialog. Các yêu cu và tr li trong mt dialog phi có header
Call-ID ging nhau. Call-ID đc to t đng bi UA không qua giao din
ngi dùng.

3.1.4.4. Via:
Các Response phi theo mt đng dn nh các Request đã đi qua

nhng theo th t ngc li. Header Via s dng cho mc đích này. Header
Via bao gm hai field:

Ü Giao thc gi (sent-protocol ): cha đng tên giao thc dùng đ gi
thông đip.

Ü Gi bi (sent-by): th hin tên host, đa ch IP ca client và có th
có thêm port mun dùng nhn Response.

Nó cng có th có thêm tham s “branch” hoc “received”

Via: SIP/2.0/UDP 5.4.3.2.:5060; branch = z9hiueufewee

Mt UAC phi bao gm header Via trong các Request. Nó ch rõ đa
ch mong mun nhn Response. Mi Proxy trên đng đi ca yêu cu s
thêm vào header Via ca riêng nó đ ni đn s gi tr li response cho nó.
Khi nhn đc Response nó s xóa các Via mà nó thêm vào.

Chc nng khác ca header Via là cho phép s tng quan gia
Response và Request, cho mc đích này tham s “branch” đc s dng.
UAC to branch ID khi to yêu cu và phi bo đm rng nó là duy nht
cho tt c yêu cu gi bi UA. Mt yêu cu CANCEL có tham s “branch”
ging nh yêu cu mà nó mun hy.

Header Via cng s dng cho vic tìm kim lp. Mt proxy có th da
vào header Via đ xác đnh mt yêu cu đã nhn và đang lp li.

Có mt tham s quan trng khác trong header Via là tham s
“received”. Khi server nhn yêu cu mà đa ch IP gc trong lp IP không
ging nh đa ch trong header Via thì server s thêm vào tham s

“received”. Giá tr tham s này bng vi đa ch IP thc ni yêu cu đc
gi.

Gi s ngi gi có mt UAC vi hai đa ch IP: 5.4.3.2 và 5.4.3.1.
Ngi gi mun thành lp mt phiên vi ngi nhn thì s gi yêu cu
INVITE đn proxy ca ngi gi. Header Via trong yêu cu INVITE có th
có dng nh sau:
Via: SIP/2.0/UDP 5.4.3.2:5060; branch = z9hG4bKl740ws

20


Chúng ta cho rng đa ch IP  mc IP là 5.4.3.1 do đó khi proxy tìm
thy tình hung này nó s thêm vào tham s “received” đn header Via nh
sau:

Via: SIP/2.0/UDP proxy.xyz.com:5060; branch = z9hG4bKos72hh
Via: SIP/2.0/UDP 5.4.3.2:5060;received=5.4.3.1;branch= z9hG4bKl740ws

3.1.4.5. Contact:
Header Contact đc to bi UA nó cung cp mt SIP URI dùng đ
liên h vi UA cho yêu cu tip theo. Có ngha là yêu cu mi trong dialog
phi đnh tuyn trc tip đn UA s dng header Contact. Có ngha là
nhng proxy không cn thit mà  trong đng dn ca yêu cu INVITE
đu tiên s đc loi b.

Contact: < sip: >


21



Nh hình trên yêu cu BYE đc đnh tuyn trc tip gia hai ngi
dùng trên c s SIP URI trong Contact header.

3.1.4.6. Record-Route and Route:
C hai header Record-Route và Route cha đng danh sách các SIP
URI. Mi danh sách cha mt chui các proxy. Các SIP URI này cha đa
ch IP hay tên min và port.

Các header ROUTE đc s dng bi UA và proxy đ đnh tuyn yêu
cu theo danh sách các proxy. Ví d UA phi bao gm SIP URI ca proxy
outgoing trong dòng đu tiên ca header ROUTE đ mi yêu cu đu đc
gi thông qua proxy này.

Header Record-Route đc thêm vào yêu cu bi proxy đ nhng yêu
cu sau này s thông qua nó. UA se copy ni dung ca header Record-
Route trong yêu cu đã nhn thành header Record-Route trong yêu cu mi
trong cùng dialog.


22


3.1.4.7. CSeq:
Header Cseq bao gm mt s th t và mt phng thc.

CSeq: 5 INVITE

S th t đc s dng đ xác đnh th t yêu cu trong mt dialog.

UA to yêu cu trong dialog s tng s th t thêm 1. Yêu cu ACK và
CANCEL không tng thêm s th t.

×