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


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

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


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:

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.


• 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.


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.

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

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.
102.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.


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

̇ 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á

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: <>


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

“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

20Chú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

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.


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status