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

Xây dựng ứng dụng lớp học từ xa với giao thức SIP

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 (4.77 MB, 119 trang )

B GIÁO DC VÀ ÀO TO
TRNG I HC M THÀNH PH H CHÍ MINH
KHOA CÔNG NGH THÔNG T
IN
o0o
KHÓA LUN TT NGHIP
NGÀNH: KHOA HC MÁY TÍNH


Xây Dng ng Dng "Lp Hc T Xa" Vi
Giao Thc SIP





Nhóm SV thc hin : Nguyn Hu Nguyên Khoa – 10701062
Châu Bi Lng - 10761242
Chuyên ngành: Mng máy tính
GVHD : Ths. Hunh Minh Quang



Thành ph H Chí Minh – nm 2011



2

Li Cm n


Trc ht, chúng em xin cm n thy Hunh Minh Quang đã gii thiu công ngh, trc tip
hng dn và cung cp tài liu giúp chúng em hoàn thành khóa lun tt nghip.
Chúng em xin chân thành cm n khoa công ngh thông tin, trng đi hc M thành ph
H Chí Minh đã to điu kin tt cho chúng em thc hin khóa lun này, cùng quý thy cô trong
khoa đã tn tình ging dy, trang b cho chúng em nhng kin thc quý báu trong nhng nm hc
va qua.
Cui cùng, xin cm n nhng bn hc đã ng h, giúp đ và đóng góp ý kin cho chúng tôi
trong thi gian hc tp và thc hin khóa lun.
Mc dù chúng em đã c gng thc hin đ án trong kh nng và phm vi cho phép nhng
chc chn s không th tránh khi nhng thiu sót. Chúng em kính mong nhn đc s cm
thông và tn tình ch bo ca quý thy cô.

Nhóm sinh viên thc hin
Nguyn Hu Nguyên Khoa - Châu Bi Lng
Thành ph H Chí Minh, ngày 20 tháng 09 nm 2011



3
Nhn xét ca ging viên hng dn























4
Nhn xét ca ging viên phn bin
























5
MC LC
DANH MC BNG 7
DANH MC HÌNH 8
PHN I: TNG QUAN 11
1. Gii thiu 12
2. Phm vi và mc tiêu ca khóa lun 12
3. Ni dung khóa lun 12
PHN II: C S LÝ THUYT 14
CHNG 1: TNG QUAN V SIP 15
1. Khái nim SIP 15
1.1. SIP: 15
1.2. Ti sao dùng SIP? 15
1.3. a ch SIP: 16
2. Chc nng: 17
2.1. Khi to, hiu chnh và kt thúc phiên: 17
2.2. Xác đnh v trí ca ngi dùng: 17
3. Các thc th: 18
3.1. User Agent: 18
3.2. Registrar: 19
3.3. Proxy: 20
3.4. Back-to-back User Agent: 21
CHNG 2: PHNG THC HOT NG SIP 23

1. SIP Message: 23
2. SIP request: 23
2.1. Các Sip Request c bn : 24
2.2. Các Sip Request m rng 28
3. SIP response: 29
4. SIP Header: 30
CHNG 3: CU TRÚC SIP
32
1. Tng quan: 32
2. SIP Core sublayer: 33
2.1. Transaction sublayer: 34
2.2. Transport sublayer: 35
CHNG 4: SESSION DESCRIPTION PROTOCOL 37
1. Ngun gc: 37
2. Tng quan: 37
3. Các dòng mô t quan trng: 39
CHNG 5: GIAO DIN JAIN SIP 41
1. Khái nim Jain SIP: 41
2. Kin trúc Jain SIP: 41
2.1. Peer-provider pattern : 41
2.2. Factory pattern: 43
2.3. Event-listener pattern : 47



6
CHNG 6: JAVA MEDIA FRAMEWORK API 49
1. Tng quan 49
2. Lung d liu đa phng tin: 50
3. Các đi tng trong JMF 50

3.1. Manager: 50
3.2. Data Source 51
3.3. Player: 51
3.4. Processor: 52
3.5. Data Sink: 53
3.6. SessionManager: 53
4. Kin trúc JMF: 54
4.1. Mô hình thi gian (Time Model): 54
4.2. Mô hình s kin (Event Model) 56
4.3. Mô hình d liu (Data Model) 56
PHN III: THIT K NG DNG 59
1. Gii thiu: 60
2. Chc nng: 60
3. Website: 61
3.1. Mô hình ý nim: 61
3.2. S đ lp: 61
3.3. Chi tit website: 63
4. ng dng: 83
4.1. Hot đng Client-Server: 83
4.2. Client: 90
4.3. Server: 105
PHN IV: TNG KT 117
1. Nhn xét: 117
2. Kt qu hin thc ng dng: 118
3. Hn ch : 118
4. Hng phát trin: 118
TÀI LIU THAM KHO 118




7

DANH MC BNG
Bng 1.1: So sánh gia SIP và H.323 16
Bng 2.1 Phân loi các tr li 30
Bng 4.1: Các dòng mô t cp phiên 38
Bng 4.2: Các dòng mô t cp thi gian 38
Bng 4.3: Các dòng mô t cp media 39



8
DANH MC HÌNH
Mt s hình nh minh ha đc trích t [3].
Hình 1.1: User Agent 19

Hình 1.2: Hot đng ca Registrar và Location Service 20
Hình 1.3: Back-to-back user agent 22
Hình 2.1: Cu trúc thông đip SIP 23
Hình 2.2: Hot đng đng ký 25
Hình 2.3: Hot đng khi to phiên truyn thông 26
Hình 2.4: Hy li mi 27
Hình 2.5: Kt thúc phiên 28
Hình 3.1: Mô hình theo lp ca SIP 33
Hình 3.2: Các SIP core sublayer 34
Hình 3.3: Hot đng gia các lp trong UA 35
Hình 5.1: Mô hình phân lp trong giao thc SIP 41
Hình 5.2: Mô hình peer-provider trong JAIN SIP 42
Hình 5.3: S dng mô hình Factory 44
Hình 5.4: Mô hình thông đip SIP trong JAIN SIP 44

Hình 5.5: Mô hình Address trong JAIN SIP 46
Hình 5.6: Mô hình Header trong JAIN SIP 47
Hình 5.7: Mô hình s kin 47
Hình 5.8: i tng s kin trong JAIN SIP 48
Hình 6.1: Mô hình x lý d liu ca JMF 49
Hình 6.2: Data source  các giai đon khác nhau 51
Hình 6.3: Player trong JMF 51
Hình 6.4: Trng thái ca Player 52
Hình 6.5: Processor trong JMF 52
Hình 6.6: Trng thái ca Processor 53
Hình 6.7: Datasink trong JMF 53
Hình 6.8: Session Manager trong JMF 54
Hình 6.9: JMF time model 55
Hình 6.10: JMF event model 56
Hình 6.11: JMF data model 57
Hình 6.12: nh dng media trong JMF 58
Hình III.1: Mô hình ý nim website ILearning 61
Hình III.2: S đ thit k lp website Ilearning 62



9
Hình III.3: Trang đng nhp 63

Hình III.4: Lu đ x lý đng nhp 64
Hình III.5: X lý đng nhp 65
Hình III.6: Trang qun lý thông tin cá nhân 65
Hình III.7: Lu đ cp nht thông tin user 66
Hình III.8: X lý cp nht thông tin 67
Hình III.9: Lu đ x lý đi mt khu 68

Hình III.10: X lý đi mt khu 69
Hình III.11: Trang qun lý lp hc đã đng ký 70
Hình III.12: Lu đ x lý tìm kim 70
Hình III.13: X lý tìm ki
m lp hc đã đng ký 71

Hình III.14: X lý xóa lp đã đng ký 71
Hình III.15: Trang thông tin lp hc 72
Hình III.16: Trang đng ký lp hc 73
Hình III.17: Lu đ x lý đng ký lp hc 74
Hình III.18: X lý đng ký lp hc 75
Hình III.19: Trang lch ging dy 76
Hình III.20: Trang chi tit lp hc 76
Hình III.21: Trang qun lý user 77
Hình III.22: X lý tìm kim user 78
Hình III.23: X lý cp nht quyn user 78
Hình III.24: X lý xóa user 79
Hình III.25: Trang qun lý lp hc 79
Hình III.26: X lý xóa lp hc 80
Hình III.27: Trang to lp hc 81
Hình III.28: Lu đ x lý to lp hc 82
Hình III.29: X lý to lp hc 83
Hình III.30: Hot đng đng nhp 84
Hình III.31: Hot đng đng xut 85
Hình III.32: Hot đng gi li mi thit lp phiên 86
Hình III.33: Hot đng tham gia vào lp hc 87
Hình III.34: Hot đng gi thông
đip chat 88

Hình III.35: Hot đng gi thông đip chat trong lp 88

Hình III.36: Hot đng ri khi lp hc 89
Hình III.37: B máy trng thái ca ng dng phía client 90
Hình III.38: Mô hình s dng ng dng ILearning 91



10
Hình III.39: Lu đ x lý đng nhp 92

Hình III.40: S đ lp x lý đng nhp 93
Hình III.41: Lu đ x lý thay đi trng thái 93
Hình III.42: Lu đ x lý thêm bn 94
Hình III.43: Lu đ x lý xóa bn 95
Hình III.44: Lu đ x lý chat text 96
Hình III.45: S đ lp x lý chat text 96
Hình III.46: Lu đ x lý chat voice/video 97
Hình III.47: S đ lp x lý chat voice/video 98
Hình III.48: Lu
đ x lý tham gia lp hc 99

Hình III.49: S đ lp x lý tham gia lp hc 100
Hình III.50: Lu đ x lý ri khi lp hc 100
Hình III.51: S đ lp x lý ri khi lp hc 101
Hình III.52: Lu đ x lý ging viên bt đu lp hc 102
Hình III.53: S đ lp x lý ging vien bt đu lp hc 102
Hình III.54: Lu đ x
lý ging viên kt thúc lp hc 103

Hình III.55: S đ lp x lý ging viên kt thúc lp hc 103
Hình III.56: Lu đ x lý chia s tp tin 104

Hình III.57: Lu đ x lý thông đip gi đn server 105
Hình III.58: Lu đ x lý thông đip REGISTER 106
Hình III.59: S đ lp x lý thông đip REGISTER khi user đng nhp 107
Hình III.60: S đ lp x lý thông đip REGISTER khi user đng xu
t 108

Hình III.61: Lu đ x lý thông đip INVITE 109
Hình III.62: S đ lp x lý INVITE gi đn mt user khác 110
Hình III.63: S đ lp x lý INVITE vào lp hc 111
Hình III.64: Lu đ x lý bt đu hc 112
Hình III.65: S đ lp x lý bt đu hc 112
Hình III.66: Lu đ x lý thông đip MESSAGE 113
Hình III.67: S đ lp x lý thông đip MESSAGE 114
Hình III.68: Lu đ x lý thông đip BYE 115
Hình III.69: S đ lp x lý thông đip BYE 116



11



PHN I: TNG QUAN



12

1. Gii thiu
Ngày nay, chúng ta đang sng trong mt th gii mà mng Internet và email phát trin rng

khp. Và hai giao thc mng đc s dng ph bin là: Giao thc truyn ti siêu vn bn
(Hypertext Transfer Protocol) và giao thc truyn ti th đn gin (Simple Mail Transfer
Protocol). Tuy nhiên, nhu cu v truyn thông đa phng tin, nhu cu liên lc trc tip vi mi
ngi ngày càng cao, dn đn s cn thit phi có mt giao thc đ đáp ng các yêu cu trên. Và
giao thc khi to phiên (Session Initiation Protocol - SIP) đã quyt đc vn đ.
2. Phm vi và mc tiêu ca khóa lun
Giao thc SIP xut hin vào cui nhng nm 1990 và nhanh chóng phát trin. SIP đc cài
đt trong các phn cng, ng dng, đin thoi thông minh và các dch v trc tuyn. Tuy nhiên,
SIP không phi là gii pháp cho mi vn đ giao tip truyn thông. Cho nên đ có th trin khai,
cài đt mng li dùng SIP trc tiên cn hiu đc bn cht ca giao thc. Khóa lun tp trung
vào tìm hiu và phân tích giao thc SIP đ làm rõ các khái nim nn tng, hot đng, nguyên lý
và chc nng ca SIP.
Ngoài ra, khóa lun còn đ cp đn mt vài giao thc thng đc s dng cùng vi giao
thc SIP.
Trên c s nhn thc đc bn cht, hot đng ca giao thc, chúng em s xây dng ng
dng lp hc t xa có cài đt giao thc SIP đ nm vng và hiu rõ hn các vn đ ca giao thc.
3. Ni dung khóa lun
Khóa lun gm 4 phn:
- Phn I: Tng quan. Gii thiu v đ tài, phm vi và mc tiêu ca khóa lun.
- Phn II: C s lý thuyt. Tìm hiu các vn đ ca giao thc SIP và mt s giao thc liên
quan. Phn này gm 6 chng:
o Chng 1: Tng quan SIP. Gii thiu v khái nim, các thc th và chc nng ca
giao thc SIP.
o Chng 2: Phng thc hot đng. Chng này đi sâu vào tìm hiu các thông
đip, các header và phân tích mt s kch bn đ hiu rõ hot đng ca giao thc.



13
o Chng 3: Cu trúc. Phân tích mô hình ca giao thc SIP, các lp trong mô hình

ca giao thc.
o Chng 4: Session Description Protocol. Gii thiu v giao thc mô t phiên.
o Chng 5: JAIN SIP API. Gii thiu tng quan v giao din lp trình ng dng
JAIN SIP.
o Chng 6: Java Media Framework API. Gii thiu v giao din lp trình ng dng
JMF, đc dùng đ xây dng các chc nng đa phng tin.
- Phn III: Thit k, xây dng h thng ng dng lp hc t xa.
- Phn IV: Tng kt. Tng kt, đánh giá và đ ngh các hng nghiên cu, phát trin trong
tng lai.



14



PHN II: C S LÝ THUYT



15

CHNG 1: TNG QUAN V SIP
1. Khái nim SIP
1.1. SIP
Giao thc khi to phiên - Session Initiation Protocol (SIP) là giao thc báo hiu
(signaling protocol) đc đnh ngha bi IETF (Internet Engineering Task Force) và đc t
trong [8]. SIP đc s dng rng rãi đ thit lp và điu khin các phiên truyn qua giao thc
Internet (IP). Mt phiên truyn thông là s trao đi d liu gia các bên tham gia phiên
truyn thông [8]. SIP có th đc s dng đ to, sa đi và kt thúc các phiên truyn thông

đn bá (unicast) hoc qung bá (multicast) tng ng vi cuc gi đim ti đim và cuc gi
đa đim.
SIP là giao thc lp ng dng đc thit k đ làm vic đc lp vi tng transport bên
di nên nó có th chy trên các giao thc TCP, UDP, hoc SCTP.
SIP là giao thc dng ch và s dng nhiu thành phn tng t nh trong giao thc
HTTP và SMTP.
SIP đc dùng trong giao tip ngang hàng (peer-to-peer) tuy nhiên SIP s dng mô hình
client-server tng t giao thc HTTP. SIP client to và gi các yêu cu đn SIP server. SIP
server to và gi các tr li tng ng cho client.
Giao thc báo hiu không phi là giao thc truyn ti ni dung truyn thông nên SIP
đc dùng kt hp vi mt s giao thc lp ng dng khác đ cung cp các dch v khác
nhau nh: Real-time Transport Protocol (RTP), Real-Time Streaming Protocol (RTSP),
Media Gateway Control Protocol (MEGACO), và Session Description Protocol (SDP), v.v
Tuy nhiên chc nng và hot đng c bn ca SIP không ph thuc vào các giao thc trên
[8].
1.2. Ti sao dùng SIP?
Trong thc t đã có mt giao thc có chc nng khi to phiên tng t giao thc SIP
và đc ph bin khá rng rãi là giao thc H.323. H.323 ni bt v chc nng thoi qua mng
(VOIP) và hi ngh video. Tuy nhiên, SIP vn có nhng u đim vt tri so vi H.323 và



16
các ng dng đang dn chuyn sang s dng SIP. Bng 1.1 so sánh gia giao thc SIP và
H323.
SIP H.323
Phát trin bi IETF Phát trin bi ITU
Tính đn gin và m Phc tp và cng nhc
S dng các đi tng mng có sn nh URL,
MIME, DNS, v.v…

T đc t tt c các đi tng nó s dng k c
b codec cho media và vic truyn gói RTP.
nh dng ch đc đc nh dng chui nh phân
 tr nh  tr có th đn 7-8 giây
CPU x lý thông đip nh hn CPU x lý nhiu
X lý nhiu phiên hn X lý ít phiên hn
H tr điu khin bên th 3 (Third-party
Control)
Không h tr
Thut toán chng lp hiu qu hn Thut toán chng lp đn gin trong phiên bn
3. Phiên bn 1 và 2 không h tr.
Bng 1.1: So sánh gia SIP và H.323
1.3. a ch SIP:
Trong kin trúc SIP, user thng đc xác đnh bng cách s dng mt đa ch SIP gi
là SIP URI (Universal Resource Identifier). SIP URI xác đnh các ngun tài nguyên truyn
thông.
Ví d: sip:
Mt SIP URI bt đu bng cm “sip:” hoc “sips:” và theo sau là 2 thành phn đc
ngn cách bi du ‘@’. Phn trc du ‘@’, là phn ngi s dng tùy chn, trong đó xác
đnh tài nguyên nào đó ti máy ch đang làm vic. Phn còn li là phn host và port, xác đnh
ngun cung cp tài nguyên. Có th là mt tên min đy đ (FQDN) hoc mt đa ch IP và



17
port. Ngoài ra, SIP URI có th cha mt s tham s có nh hng đn các yêu cu. Các tham
s đc thêm vào sau phn host và port, và đc ngn cách bi du chm phy. C th mt
SIP URI có cu trúc nh sau:
sip:user:password@host:port;uri-parameters?headers
Phn thông tin user và password có th trng khi host đích không có user hoc chính

host đó là tài nguyên đc xác đnh và khi đó cng không có dâu “@”. Password là mt khu
ca user tng ng. Tuy nhiên, không nên s dng mt khu trong SIP URI bi vì password
s xut hin di dng vn bn đc đc do đó s là mt l hng bo mt [8]. Headers là các
header gi kèm theo yêu cu. c phân cách vi phn host và port bng du “?”
SIP có th s dng các URI khác đ xác đnh tài nguyên là mt đc đim mnh m ca
SIP bi vì nó s cho phép kt hp các dch v Internet khác nh email hay web, vi các dch
v truyn thông SIP.
2. Chc nng:
Nh đã nói, SIP là giao thc truyn tín hiu và chc nng ca SIP tp trung vào hai khía
cnh: Mt là, các vn đ v điu khin phiên nh khi to, hiu chnh và kt thúc phiên. Hai là,
vn đ v xác đnh v trí ca ngi dùng.
2.1. Khi to, hiu chnh và kt thúc phiên:
Nh tên gi ca giao thc – Giao thc khi to phiên – chc nng chính ca giao thc
là khi to các phiên truyn thông đa phng tin. Ngi dùng có th gi yêu cu mi tham
gia phiên truyn thông và ngc li nhn li mi bng cách gi tr li chp nhn.
SIP còn đc s dng đ hiu chnh, thay đi các tham s ca phiên đang hot đng.
ví d, đ thêm mt thành phn media mi vào trong phiên.
Cui cùng là kt thúc phiên. Ngi dùng gi yêu cu kt thúc phiên và xác nhn kt
thúc phiên bng tr li chp nhn.
2.2. Xác đnh v trí ca ngi dùng:
Trong mng IP, các gói tin đc đnh tuyn nh vào đa ch IP. Tuy nhiên, ngi s
dng SIP không bit đa ch IP ca đi phng mà ch bit đa ch public di dng SIP
URI “lun lý”. Ngi s dng SIP có th dùng ng dng SIP trên nhiu loi thit b khác
nhau nh PC, laptop , hoc đin thoi di đng,… Mi thit b có mt đa ch IP khác nhau.



18
Do đó, cn có mt h thng có th ln theo đa ch IP ca ngi dùng, ánh x nó vào đa ch
public, và lu tr thông tin đó vào mt bng. Trong quá trình thit lp phiên, cn truy vn

đn bng thông tin đó đ ly đa ch IP đúng đ gi các gói tin đn.
Vi mc đích đó, SIP đnh ngha mt th tc gi là th tc đng kí. Mi đu cui
mun nhn các cuc gi đa phng tin phi đng kí trc. Ngha là, nó phi gi đa ch IP
hin thi và đa ch public đn SIP server (còn gi là Registrar) ca nó và server này s cp
nht đa ch vào bng c s d liu.
3. Các thc th:
SIP network bao gm bn loi thc th SIP lun lí. Mi thc th
có các chc nng c th và tham gia vào phiên truyn thông SIP nh mt client (gi yêu cu),
mt server (đáp ng yêu cu), hoc va là client va là server. Mt thit b vt lý
có th có mt hoc nhiu chc nng ca thc th SIP. Ví d, mt
server làm vic nh mt proxy server cng có th có chc nng nh mt Registrar. Các thc th
đó là:
− User Agent (UA)
− Registrar
− Proxy
− Back-to-Back User Agents (B2BUA)
3.1. User Agent:
Trong SIP, User Agent (UA) là thc th đu cui. UA to và hy các phiên làm vic
bng cách trao đi yêu cu và trà li. Mt SIP UA có hai thành phn: mt User Agent
Client (UAC) và mt User Agent Server (UAS). UAC có trách nhim to yêu cu SIP và
nhn các tr li tng ng. UAS có trách nhim nhn yêu cu và to ra các tr li thích
hp.



19

Hình 1.1: User Agent
3.2. Registrar:
Registar là server nhn yêu cu đng ký t các UA. SIP UA gi v trí hin ti ca

mình cùng vi đa ch public đn registrar server. Mt UA phi đc đng ký trc khi nó
có th nhn cuc gi đa phng tin. Khi Registar nhn yêu cu đng ký và lu các thông
tin nhn đc vào c s d liu đc gi là Location Service.
Location Service:
− Location Service không phi là mt thc th SIP. Location Service là mt c
s d liu cha danh sách các ánh x gia Address of Record (AORs), th
hin đa ch SIP public và Contact Address (i din cho v trí user). C
AORs và Contact Address đc th hin di dng SIP URI. Khi registrar
nhn đc yêu cu đng ký t mt UA, nó cp nht Location Service vi các
thông tin nhn đc.
− Location Service này cng đc truy vn bi các proxy server ca mt min
đ có đc thông tin v các đa ch có th có ca ngi s dng.
− Trong nhiu hin thc cài đt, Location Service và SIP server đc đt trên
cùng mt h thng.



20

Hình 1.2: Hot đng ca Registrar và Location Service
3.3. Proxy:
Proxy là mt thc th trung gian va hot đng nh client va hot đng nh server.
Nó ch yu đóng vai trò nh mt router, công vic ca nó là gi các yêu cu đn đích hoc
đn các proxy khác gn đích hn. Proxy cng làm nhim v áp đt chính sách (Ví d, cho
phép ai đc thc hin cuc gi). Proxy thông dch và thay đi mt s phn ca yêu cu
trc khi forward nu cn thit.
Có th có nhiu Proxy gia UAC và UAS đ đnh tuyn các thông đip SIP. Phân loi
theo chc nng thì có hai loi SIP Proxy là outbound proxy và inbound proxy:
− Outbound Proxy: giúp các UA đnh tuyn các yêu cu đi ra. Các UA thng đc
cu hình đ đnh tuyn tt c các yêu cu đn outbound proxy.

− Inbound Proxy: là mt proxy server x lý các yêu cu đi vào min mà nó qun lý.
C bn là nó giúp đnh tuyn các yêu cu vào nó đn các UA tng ng trong
min. Khi mt inbound proxy nhn mt yêu cu đn user nm trong min nó qun
lý, proxy s truy vn Location Service, ly đa ch ca UA đó và forward yêu cu
đn đa ch đó.



21
Outbound proxy và inbound proxy có th đc đt trên mt h thng cùng vi
registrar. Và h thng đó có th gi là SIP server. Phân loi theo hot đng thì có hai loi
SIP Proxy là stateless proxy và stateful proxy:
− Stateless Proxy: nhn thông đip, và x lý da trên các thông tin trong thông đip,
sau đó forward tip. Nó không lu gi bt kì trng thái hay thông tin nào v thông
đip, do đó stateless proxy có th làm vic rt nhanh.
− Stateful proxy: ngc li vi stateless proxy, nó lu gi thông tin v thông đip
nhn đc và liên kt vi các tr li tng ng. Có các chc nng: kt ni TCP,
truyn phát đa đim multicast, và forking.
3.4. Back-to-back User Agent:
Theo [3], B2BUA là mt thc th lun lý mà hot đng nh mt UA đi vi c hai
đu ca phiên. Nó có nhim v điu khin vic truyn tín hiu SIP gia hai đu t lúc khi
to đn lúc kt thúc. Nó nhn yêu cu và x lý nh mt UAS.  quyt đnh nên tr li yêu
cu nh th nào, nó đóng vai trò là mt UAC và to các yêu cu. Không ging proxy server,
nó duy trì trng cái phiên và tham gia vào tt c các yêu cu đc gi trong phiên.
Mt B2BUA đc cu thành bi hai UA đc liên kt vi nhau qua mt h lun lí.
Nó đc s dng nh server đ cung cp các chc nng nâng cao bng cách điu khin tín
hiu trong cuc gi hoc các thc th trong mng.
B2BUA có th hot đng  hai ch đ: đnh tuyn hoc khi to.  ch đ đnh tuyn,
nó nhn mt yêu cu khi to phiên, áp đt mt s logic và to mt cuc gi mi.
 ch đ khi to, nó khi to hai cuc gi khác nhau và duy trì liên kt tín hiu gia

chúng.



22

Hình 1.3: Back-to-back user agent



23

CHNG 2: PHNG THC HOT NG SIP
SIP hot đng da trên vic trao đi các thông đip (message). Thông qua vic trao đi
Message, client và server thit lp, chnh sa và kt thúc các phiên làm vic.
1. SIP Message:
Mt SIP Message có th là mt Request t client gi đn server, hoc là Respones t server
cho client. Mi SIP Message bt đu bng mt dòng bt đu, tip đó là mt hoc nhiu vùng
header, ngoài ra còn mt dòng trng báo hiu kt thúc ca các vùng header, và cui cùng có th
có Message body.
Ví d sau là thông đip đng ký client gi cho server:


Hình 2.1: Cu trúc thông đip SIP
2. SIP request:
Trong thông đip yêu cu, dòng bt đu gi là dòng yêu cu.
Cú pháp:
Method<SP>Request-URI<SP>Protocol-version
− Method: tên thông đip yêu cu. Ban đu, trong SIP quy đnh 6 loi methods gm :
REGISTER, INVITE, BYE, CANCEL, ACK, OPTIONS. Nhng sau đó RFCs m rng

Dòng bt đu
Các header
Dòng trng
Ni dung
Tên yêu cu Request-URI Phiên bn SIP



24
thêm các loi method sau : REFER, SUBSCRIBE, NOTIFY, PUBLISH, MESSAGE,
UPDATE, INFO và PRACK.
− Request-URI: đa ch URI ca ni đn. Là thành phn quan trng trong đnh tuyn thông
đip. C th, nó chính là đa ch đích ca thông đip, c đnh không thay đi khi đi qua
các thc th trung gian trên mng và ch thay đi sau khi truy vn Location Service đ có
đc đa ch chính xác hn.
− Protocol version: Phiên bn ca giao thc SIP, mc đnh là 2.0
2.1. Các Sip Request c bn :
a. REGISTER:
UA gi REGISTER đ thc hin th tc đng kí vi Registrar. UA đng kí đa ch
public cùng vi đa ch IP, đu di dng SIP URI cho Registrar. Các đa ch này đc
lu trong Location Service.
Tùy thuc vào Contact header và Expire header mà Registrar x lý th tc đng kí.
Nu không có tham s expires trong request line và không có Expire header thì SIP URI
s ht hn trong 1 gi. Nu có tham s expire thì không có Expire header và ngc li.
Các header khác:
− Request-URI cha đa ch ca registrar.
− To header cha Address of Record ca user.
− From header cha SIP URI ca ngi gi yêu cu, thng là ging vi To
header.
− Call-ID header nên ging nhau vi mi th tc đng kí.

Các header khác nhau đc s dng khác nhau tùy tng loi request
Nu th tc đng kí thành công registrar s tr li bng thông đip 200 OK. Ngc
li gi tr li chuyn hng 3xx hoc tht bi 4xx.



25

Hình 2.2: Hot đng đng ký
b. INVITE:
Dùng đ to phiên truyn thông đa phng tin gia các UA. INVITE cha đa ch
public ca UAS đích trong vùng Request-URI. Nó có th đi trc tip t UAC đn UAS,
hoc có th đi qua mt hay nhiu proxy.
Thông thng trong thân thông đip có cha thông tin v phiên và ngi gi. Mt
phiên đc coi là đc thit lp khi các thông đip INVITE – 200 OK – ACK đc trao
đi gia UAC và UAS. Khi mt phiên đc thit lp có mt mi quan h ngang hàng
gia hai UA đc to ra gi là Dialog. INVITE là lnh duy nht có kh nng to Dialog,
nhng trong phn m rng ca SIP cng có mt s giao thc có th to Dialog. Phiên
kt thúc khi mt trong hai bên gi yêu cu BYE.
UAC gi INVITE đ thit lp mt dialog s to ra mt Call-ID duy nht dùng trong
sut cuc gi. To header và From header cha đa ch ca bên nhn và bên gi. UAC s
thêm vào From tag và UAS s thêm vào To tag. Call-Id, From tag, To tag dùng đ xác
đnh Dialog.

×