Luận văn - Giao thức chát - IRC
Luận văn về giao thức chát qua mạng máy tính IRC.
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông I: Moät soá khaùi nieäm cô baûn.
Muïc Luïc
--0O0--
Giôùi thieäu ñeà taøi ............................................................................................................... 6
Phaàn 1 Tìm hieåu Internet Relay Chat Protocol ......................................................... 7
Giôùi thieäu toång quan veà IRC...................................................................................... 8
Chöông I: Moät soá khaùi nieäm cô baûn ......................................................................... 9
1. Servers.............................................................................................................. 9
2. Clients .............................................................................................................. 9
2.1. Operators................................................................................................ 9
3. Channels:.......................................................................................................... 10
3.1.Channels operation : ............................................................................... 11
4. Caùc khaùi nieäm veà truyeàn thoâng........................................................................ 11
4.1. Truyeàn thoâng moät – moät (one – to – one communication) .................... 11
4.2. Truyeàn thoâng moät – nhieàu (one – to – many communication) ............. 11
4.2.1. Döïa treân danh saùch (one – to – List communication) .................... 11
4.2.2.Döïa vaøo channel (one – to – group communication)....................... 12
4.2.3.Truyeàn thoâng ñeán - host /server mask ............................................. 12
4.3. Truyeàn thoâng moät - taát caû(one to all Communication )........................ 13
4.3.1.Client to Client ................................................................................ 13
4.3.2.Client to Server ............................................................................... 13
Chöông II: Nhöõng quy ñònh trong IRC...................................................................... 13
1. Quy ñònh veà code ............................................................................................. 13
2. Message ........................................................................................................... 13
2.1 Ñònh daïng moät message........................................................................14
3. Giaù trò soá traû veà (numeric replies).................................................................... 15
Chöông III: Chi tieát cho töøng message ..................................................................... 15
1. Nhoùm message ñaêng kyù keát noái ....................................................................... 15
1.1 Server Message....................................................................................... 20
1.2 Server Quit Message............................................................................... 21
www.diachiweb.com - Trang 1
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông I: Moät soá khaùi nieäm cô baûn.
1.3 Operator message ................................................................................... 21
1.4 Quit message........................................................................................... 21
1.5 Pass message........................................................................................... 22
1.6 NickMessage........................................................................................... 22
1.7 User Message.......................................................................................... 24
2. Nhoùm message duøng cho vieäc ñieàu khieån Channel ........................................ 24
2.1 Join message.......................................................................................... 24
2.2 part message .......................................................................................... 25
2.3 Mode message ....................................................................................... 26
2.3.1 Channel mode .................................................................................. 26
2.3.2 User mode........................................................................................ 26
2.4 Topic message ....................................................................................... 27
2.5 Names message ..................................................................................... 28
2.6 List message .......................................................................................... 28
2.7 Invite message ....................................................................................... 29
2.8 Kick command ...................................................................................... 29
3. Nhoùm message truy vaán ñeán server(server query and command)................... 30
3.1 Version message ..................................................................................... 30
3.2 Stats Message.......................................................................................... 30
3.3 Link Message.......................................................................................... 31
3.4 Time Message......................................................................................... 31
3.5 Connect message .................................................................................... 32
3.6 Trace Message ........................................................................................ 32
3.7 Admin Message ...................................................................................... 33
3.8 Info Message........................................................................................... 33
4. Nhoùm message gôûi text (sending message) ..................................................... 33
4.1 Private Message...................................................................................... 34
4.2Notice Message........................................................................................ 34
5. Nhoùm message do client truy vaán ñeán server (user-based query) ................... 35
www.diachiweb.com - Trang 2
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông I: Moät soá khaùi nieäm cô baûn.
5.1 Who Query .............................................................................................. 35
5.2 Who is Query .......................................................................................... 35
5.3 Whowas Message.................................................................................... 36
6. Nhoùm message khaùc (miscellaneous message) ............................................... 37
6.1 Kill Message ........................................................................................... 37
6.2 Ping Message .......................................................................................... 37
6.3 Pong Message ......................................................................................... 37
6.4 Error Message ......................................................................................... 38
7. Nhoùm message tuøy choïn(option message) ..................................................... 38
7.1 Away Message........................................................................................ 38
7.2 Rehast Message ..................................................................................... 38
7.3 Restart Message...................................................................................... 39
7.4 Summon Message ................................................................................... 39
7.5 Users Message ........................................................................................ 39
7.6 Operwall Message .................................................................................. 40
7.7 Userhost Message ................................................................................... 40
7.8 Ison Message........................................................................................... 40
Phaàn II: Tìm Hieåu Kyõ Thuaät Laäp Trình Socket............................................................... 41
Chöông I: Caùc Khaùi Nieäm Cô Baûn Veà Heä Thoáng Maïng ........................................... 42
1. Moâ hình maïng, moâ hình OSI, moâ hình TCP..................................................... 42
1.1 Moâ Hình Maïng ......................................................................................... 42
1.2 Moâ hình OSI ............................................................................................. 43
1.3 Moâ hìnhTCP/IP......................................................................................... 44
2. Giao Thöùc TCP vaø UDP ................................................................................... 44
2.1 Giao Thöùc UDP ........................................................................................ 46
2.2 Giao thöùc TCP .......................................................................................... 48
3. Ñòa Chæ IP ......................................................................................................... 49
3.1 Giôùi thieäu ñòa chæ IP.................................................................................. 49
3.2 Phaân Loaïi Ñòa Chæ IP................................................................................ 49
www.diachiweb.com - Trang 3
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông I: Moät soá khaùi nieäm cô baûn.
3.3. Subnet Mask (maët naï con)....................................................................... 50
Chöông II: Moät Soá Haøm Socket................................................................................. 50
1. Khaùi nieäm veà socket ........................................................................................ 50
2. Thö vieän caùc haøm socket (API) trong Java. ..................................................... 51
2.1 Lôùp InetAddress ....................................................................................... 51
2.2 Lôùp Socket................................................................................................ 52
2.3 Lôùp ServerSocket ..................................................................................... 53
2.4 Lôùp DatagramSocket................................................................................ 53
2.5 Lôùp DatagramPackage ............................................................................. 54
3. Chöông trình minh hoïa cho vieäc söû duïng socket trong Java ............................ 54
3.1 Chöông trình hoaït ñoäng theo giao thöùc TCP............................................. 54
3.1.1 Chöông trình client chaïy treân maùy khaùch ........................................ 54
3.1.2 Chöông trình server chaïy treân maùy chuû ........................................... 55
3.2 Chöông trình hoaït ñoäng theo giao thöùc UDP ............................................ 56
3.2.1 Chöông trình client chaïy treân maùy khaùch ........................................ 56
3.2.2 Chöông trình server chaïy treân maùy chuû ........................................... 59
Phaàn III: Xöû Lyù Ña Tieán Trình (multitasking) vaø Ña Luoàng (multithreading) ............... 62
Chöông I: Ña Tieán Trình (multitasking) ................................................................... 62
Chöông II: Ña Luoàng (multithreading) .................................................................... 64
1. Khaùi nieäm luoàng .............................................................................................. 64
2. Nhöõng tieän ích khi duøng thread (Advantages of multithreading)..................... 64
3. Caùc khoù khaên khi duøng thread ......................................................................... 65
4. Moâ hình hieåu trình (thread) trong JAVA .......................................................... 66
5. Tính chaát thread. .............................................................................................. 67
6. Ñoàng boä hoùa caùc thread ................................................................................... 68
7. Caùc phöông thöùc ñoàng boä (synchronized) ........................................................ 68
8. Caùc traïng thaùi cuûa thread ................................................................................ 70
Phaàn IV:Yeâu caàu & Kieán truùc chöông trình: .................................................................. 72
Chöông I: Yeâu caàu chöùc naêng vaø phi chöùc naêng: ........................................................ 73
www.diachiweb.com - Trang 4
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông I: Moät soá khaùi nieäm cô baûn.
A. ChatClient:....................................................................................................... 73
B. ChatServer:...................................................................................................... 74
Chöông II: Kieán truùc chöông trình: .............................................................................. 75
A. ChatClient:...................................................................................................... 77
B.ChatServer:...................................................................................................... 78
Keát luaän ........................................................................................................................... 79
Höôùng phaùt trieån ñeà taøi .................................................................................................... 79
Taøi lieäu tham khaûo ........................................................................................................... 80
Phuï Luïc ............................................................................................................................ 81
www.diachiweb.com - Trang 5
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông I: Moät soá khaùi nieäm cô baûn.
Giôùi Thieäu Ñeà Taøi
—ª–
Ñeà Taøi: Internet Relay Chat Protocol tìm hieåu vaø öùng duïng do thaày Mai Vaên
Cöôøng höôùng daãn, luaän vaên sau ñaây giôùi thieäu moät öùng duïng hay noùi ñuùng hôn laø
moät chöông trình cho pheùp ngöôøi söû duïng chat vôùi nhau treân Internet. Chöông trình
hoaït ñoäng theo ñuùng giao thöùc chuaån do uûy ban IAB veà caùc giao thöùc chuaån (IAB
Official Protocol Standards) quy ñònh, quy ñònh naøy ñöôïc ñònh nghóa trong boä RFC
1459, 2810, 2811, 2812, 2813.
Luaän vaên goàm 3 phaàn chính
Ø Phaàn I trong luaän vaên laø tìm hieåu Internet Relay Chat Protocol (IRC
protocol)
Internet Relay Chat Protocol laø giao thöùc chuaån cho caùc chöông trình chat
hieän taïi, caùc chöông trình muoán thöïc hieän ñöôïc treân Internet phaûi tuaân theo giao
thöùc naøy. Noäi dung chính cuûa giao thöùc naøy laø caùc message ñöôïc gôûi vaø nhaän giöõa
client vaø server.
Ø Phaàn II caùc khaùi nieäm veà maïng vaø moâ hình socket ñeå taïo giao tieáp phuïc vuï
cho vieäc truyeàn nhaän döõ lieäu, chöông trình chat application chuû yeáu söû duïng nhöõng
phöông thöùc cuûa socket ñeå hoaït ñoäng.
Ø Phaàn III moät soá vaán ñeà ña xöû lyù vaø ña luoàng giuùp cho chöông trình hoaït
ñoäng hieäu quaû hôn.
Ø Phaàn IV caùc yeâu caàu chöùc naêng, phi chöùc naêng vaø kieán truùc cuûa chöông
trình
Ø Phaàn cuoái laø höôùng phaùt trieån ñeà taøi vaø taøi lieäu tham khaûo, phaàn phuï luïc
daønh ñeå tham khaûo giaù trò traû veà trong boä giao thöùc
www.diachiweb.com - Trang 6
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông I: Moät soá khaùi nieäm cô baûn.
Phaàn I:
Tìm Hieåu Internet Relay Chat
(IRC) protocol
ü Giôùi thieäu toång quan veà IRC
ü Chöông I: Moät soá khaùi nieäm cô baûn
ü Chöông II: Nhöõng quy ñònh trong IRC
üChöông III: Chi tieát cho töøng message
www.diachiweb.com - Trang 7
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông I: Moät soá khaùi nieäm cô baûn.
Giôùi Thieäu Toång Quan Veà IRC
—&–
Hieän nay treân Internet coù nhieàu loaïi dòch vuï, moãi dòch vuï cung caáp cho
chuùng ta moät tieän ích khaùc nhau, trong ñoù coù dòch vuï chat. Ñaây laø loaïi dòch vuï
cho pheùp moïi ngöôøi treân khaép haønh tinh coù theå gaëp gôõ, trao ñoåi thoâng tin vôùi
nhau maø khoâng caàn phaûi gaëp nhau tröïc tieáp. Dòch vuï naøy raát phaùt trieån, coù ñeán
haøng trieäu ngöôøi treân theá giôùi ñang söû duïng dòch vuï naøy. Vì vaäy vaán ñeà ñaët ra laø
phaûi coù moät quy ñònh chung cho heä thoáng maïng IRC(Internet Relay Chat). UÛy
Ban IAB veà caùc giao thöùc chuaån (IAB Official Protocol Standards) ñaõ ñöa ra moät
giao thöùc chuaån (Standard protocol) duøng cho taát caû caùc chöông trình chat ñang
toàn taïi. Ñoù laø IRC (Internet Relay Chat) protocol ñöôïc ñònh nghóa trong
RFC(Request For Comment) 1459, 2810, 1324, 2811, 2813.
IRC Protocol ñöôïc ñöa ra vaøo naêm 1980, tieàn thaân cuûa noù, duøng cho caùc
thaønh vieân trong maïng BBS trao ñoåi thoâng tin vôùi nhau, daàn daàn ñöôïc caûi tieán vaø
trôû thaønh giao thöùc chuaån cho caùc chöông trình IRC. Quy moâ cuûa IRC protocol laø
treân toaøn caàu, goàm coù 2 thaønh phaàn Client vaø Server.
Hieän nay IRC Protocol ñöôïc xaây döïng treân hoï giao thöùc maïng phoå bieán nhaát
laø TCP/IP (TCP/IP Net Work Protocol) lyù do vieäc söû duïng hoï giao thöùc naøy laø
tính chính xaùc, tin caäy, phoå bieán, raát thích cho caùc cuoäc thaûo luaän töø xa.
IRC Protocol duøng moâ hình client – server, vì theá chuùng ta coù theå chaïy nhieàu
maùy treân moâi tröôøng phaân taùn (distributed enviroment). Trong ñoù maùy ñoùng vai troø
laø server cung caáp moät ñieåm taäp trung (central point) cho caùc client keát noái ñeán, vaø
ñoàng thôøi thöïc hieän quaù trình truyeàn nhaän message töø caùc client naøy ñeán caùc client
khaùc.
www.diachiweb.com - Trang 8
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông I: Moät soá khaùi nieäm cô baûn.
Chöông I: Moät soá khaùi nieäm cô baûn.
1. Servers:
:
Server1
: : :
Server2
Server3 Server4
7 : :
Client2 Server5
Server6
7
Client4
7 7
Client3
Client1
Hình 1: moâ hình heä thoáng maïng IRC
Server ñöôïc xem laø xöông soáng cuûa maïng IRC, moãi server laø moät taâm ñieåm trong heä
thoáng caùc server, chuùng cho pheùp client vaø server khaùc keát noái vaøo. Nhöõng server naøy ñöôïc keát
noái theo bieåu ñoà hình caây (spanning tree).
Ví duï: client 1 muoán trao ñoåi thoâng tin vôùi client 3 chuùng phaûi thoâng qua server5, server6,
server 3.
2. Clients:
Client laø moät maùy tính maø noù ñöôïc keát noái ñeán server vaø maùy tính ñoù khoâng phaûi laø
server (Xem :Hình1.1)
Client laø thieát bò ñaàu cuoái noù khoâng chuyeån tieáp message cho baát cöù maùy tính naøo khaùc
Moãi client ñöôïc phaân bieät vôùi nhau thoâng qua Nickname (Nickname laø chuoãi coù giaù trò toái
ña 9 kyù töï ). Server duøng Nickname ñeå quaûn lyù caùc client.
Khi coù söï tham gia cuûa moät client vaøo heä thoáng, taát caû caùc server phaûi coù thoâng tin veà
client ñoù nhö laø teân client (Hostname), teân server maø noù keát noái ñeán v.v ...
2.1. Operators:
Ñeå coù theå quaûn lyù soá löôïng user tham gia treân maïng (IRC network) ngöôøi ta xaây döïng
moät nhoùm user goïi laø “client operator” nhoùm naøy coù ñaày ñuû moïi quyeàn haïn treân maïng (IRC
network). Maëc duø quyeàn haïn (caáp cho client operation ) coù theå ñöôïc xem laø “nguy hieåm”, nhoùm
www.diachiweb.com - Trang 9
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông I: Moät soá khaùi nieäm cô baûn.
“client operator” coù theå thöïc hieän caùc taùc vuï nhö huûy boû keát noái (disconnecting) cuûa moät client
naøo ñoù hoaëc taùi keát noái (reconnecting) ñeán server naøo ñoù. Nhöõng taùc vuï naøy coù theå thöïc hieän khi
coù moät server bò hoûng hay khi coù söï coá veà ñöôøng truyeàn vaø nhieàu nguyeân nhaân khaùc. Chính vì
khaû naêng ñoù neân ngöôøi ta cho raèng nhoùm “client operators” coù theå nguy hieåm. vì coù theå nhoùm
client naøy huûy boû keát noái cuûa moät client khaùc maø khoâng coù lyù do hôïp lyù, hay muïc ñích chính
ñaùng.
3. Channels:
Channel laø teân nhoùm moät hay nhieàu client, maø nhöõng client naøy seõ cuøng ñöôïc nhaän caùc
message gôûi ñeán channel ñoù, noùi caùch khaùc laø caùc client thuoäc veà moät channel seõ nhaän ñöôïc
message gôûi ñeán channel ñoù. Nhöõng client trong cuøng moät channel môùi coù theå nhaän thaáy nhau.
Moät channel ñöôïc ngaàm taïo ra khi coù client ñaàu tieân tham gia vaø keát thuùc khi client cuoái
cuøng ngöng keát noái. Trong khi channel ñang toàn taïi thì client coù theå tham gia vaøo channel ñoù
baèng caùch duøng teân channel.
Teân cuûa channel coù theå leân ñeán 200 kyù töï vaø baét ñaàu baèng kyù töï ‘&’ hoaëc kyù töï ‘#’, Teân
channel khoâng coù kyù töï khoaûng traéng (‘ ‘), Ctr+G(^G or ASCII 7), daáu phaåy (‘,’ ).
Ñeå coù theå taïo ra moät channel hay laø tham gia vaøo moät channel coù saün client phaûi gôûi JOIN
message ñeå tham gia vaøo channel ñoù.
3.1.Channels operation :
Channel oprerator coøn ñöôïc goïi laø “chop” hoaëc “chanop”. Khi coù moät user taïo ra channel
thì maët nhieân user ñoù trôû thaønh channel operator, laø ngöôøi sôû höõu channel user (channel operator)
coù ñaày ñuû moïi quyeàn haïn treân channel ñoù. Ñeå quaûn lyù caùc client channel operator coù theå thöïc
hieän quyeàn cuûa mình nhö :
ð KICH - ñaåy moät client ra khoûi channel
ð MODE - thay ñoåi mode cuûa channel
ð INVITE - goïi moät client tham gia vaøo channel maø noù ñang ôû traïng thaùi
invite-only (mode i+).
ð TOPIC - thay ñoåi topic channel, channel naøy ñang ôû traïng thaùi +t(mode +t).
Ngoaøi ra channel operator coù theå caáp quyeàn cho client khaùc hay nhöôøng quyeàn channel
operator laïi. Tuy nhieân quyeàn haïn naøy khoâng ñöôïc chính xaùc vì nhöõng nguyeân nhaân ñaõ ñöôïc
trình baøi phaàn treân.
Moät channel operation thì ñöôïc nhaän daïng bôûi kyù töï baét ñaàu “@” tieáp theo laø nickname
(nick name cuûa user taïo ra channel ñoù). Ví duï @HappyMan
www.diachiweb.com - Trang 10
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông I: Moät soá khaùi nieäm cô baûn.
4. Caùc khaùi nieäm veà truyeàn thoâng:
4.1. Truyeàn thoâng moät – moät (one – to – one communication)
7
Client 1 : : 7
Server A Server D Client 4
7
Client 2
: :
Server B Server C
7
Client 3 :
Hình 2 Server E
Truyeàn thoâng 1-1 phuïc vuï cho vieäc chuyeån thoâng ñieäp giöõa hai client. Chuyeån thoâng ñieäp
naøy mang yù nghóa laø rieâng bieät giöõa 2 client nhöng thaät ra vaãn phaûi thoâng qua caùc server maø
nhöõng client ñoù keát noái ñeán.
Ví duï : xem hình 1.2 : client 1 giao tieáp vôùi client 2 thoâng qua Server A.
Message töø client 1 ñeán client 3 phaûi ñöôïc chuyeån qua ServerA vaø ServerB trong khi ñoù caùc
Server vaø client coøn laïi khoâng ñöôïc nhaän message.
4.2. Truyeàn thoâng moät – nhieàu (one – to – many communication)
Muïc ñích cuûa loaïi truyeàn thoâng naøy laø cung caáp cho caùc cuoäc hoäi thaûo, thaûo luaän v.v...
Loaïi truyeàn thoâng naøy döïa treân nhieàu caùch.
4.2.1. Döïa treân danh saùch (one – to – List communication)
Ñaây laø caùch truyeàn thoâng ñieäp keùm hieäu quaû nhaát trong truyeàn thoâng 1-n. Danh saùch naøy coù
theå laø caùc client, caùc server, hoaëc laø caùc mask. Server khi nhaän ñöôïc thoâng ñieäp coù ñích ñeán laø moät
danh saùch, noù seõ chuyeån thoâng ñieäp naøy ñeán taát caû caùc ñích. Caùch chuyeån naøy khoâng hieäu quaû ôû
choã noù khoâng kieåm tra caùc ñích ñeán coù cuøng treân moät con ñöôøng khoâng, vaø nhö vaäy coù khaû naêng seõ
coù nhieàu thoâng ñieäp gioáng nhau cuøng chuyeån treân moät con ñöôøng.
www.diachiweb.com - Trang 11
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông I: Moät soá khaùi nieäm cô baûn.
4.2.2.Döïa vaøo channel (one – to – group communication)
7
Client 1 : : 7
Server A Server D Client 4
7
Client 2
: :
Server B Server C
Channel B
7
Client 3 :
Server E
Channel A Hình 1.3
Moät channel ñöôïc taïo ra “ñoäng”(dynamic). Vì khi coù moät user tham gia, noù ñöôïc taïo ra vaø
bò huûy khi user cuoái rôøi khoûi. Treân thöïc teá, message gôûi ñeán channel thì chæ gôûi duy nhaát moät laàn.
¯ Neáu coù nhieàu user treân cuøng server maø nhöõng user naøy thuoäc veà moät channel, message
gôûi ñeán channel sau ñoù ñöôïc server chuyeån ñeán caùc thaønh vieân do noù quaûn lyù.
¯ Neáu coù nhieàu user treân nhöõng server khaùc nhau vaø chuùng trong cuøng moät channel,
message gôûi ñeán channel seõ ñöôïc gôûi ñeán caùc server coù user keát noái ñeán, vieäc coøn laïi do server
chuyeån message ñoù cho caùc thaønh vieân cuûa noù.
Víduï: Xem hình Hình1.3 ta thaáy client 1, 2, 3 trong channelA.
Khi coù message vaøo channelA. Neáu message ñeán client 1, 2 thì noù chuyeån ñeán cho
serverA, message ñeán client 3 vaø chuyeån ñeán cho server B, neáu message chuyeån cho caû
channelA thì noù seõ chuyeån ñeán caû hai server A vaø B.
Ñoái vôùi loaïi PRIVMSG message khi vaøo channel, noù ñöôïc chuyeån ñeán server (coù user
nhaän), coâng vieäc coøn laïi laø server chuyeån cho user ñoù.
4.2.3Truyeàn thoâng ñeán - host /server mask
Truyeàn thoâng ñieäp ñeán host/server mask laø caùch ñeå göûi thoâng ñieäp ñeán cho nhieàu ngöôøi
duøng coù cuøng moät vaøi thoâng tin ñaëc ñieåm veà host vaø server naøo ñoù.
Caùch truyeàn thoâng naøy gaàn gioáng nhö channel.
Ví duï: coù 3 ngöôøi duøng vôùi host nhö sau : abc.pacific.au, abd.gulu.fi, def.gulu.au. Khi ta ñeà
caäp ñeán caùc ngöôøi duøng coù host mask *.au töùc laø noùi ñeán abc.pacific.au, def.gulu.au
www.diachiweb.com - Trang 12
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
4.3. Truyeàn thoâng moät - taát caû(one to all Communication )
Coù theå xem kieåu truyeàn thoâng naøy gioáng nhö phaùt quaûng baù (broadcast). Trong ñoù,
message ñöôïc gôûi ñeán taát caû caùc client vaø Server treân maïng vaø chuùng seõ töï tìm kieám con ñöôøng
treân maïng ñeå ñeán taát caû caùc ñòa chæ ñích ( client destination )
4.3.1.Client to Client
Khaùi nieäm töông töï nhö treân. Message töø moät client ñeán moät client khaùc.
4.3.2.Client to Server
Haàu heát nhöõng taùc vuï command maø chuùng coù khaû naêng laøm thay ñoåi traïng thaùi hoaït ñoäng
nhö laø: Channel membership, channel mode, user status, v, v….phaûi ñöôïc gôûi ñeán server server ñeå
thöïc hieän, nhöõng giaù trò naøy khoâng ñöôïc thay ñoåi bôûi baát cöù client naøo.
Chöông II: Nhöõng quy ñònh trong IRC
1. Daïng chung cuûa thoâng ñieäp
Thoâng ñieäp thöôøng coù 2 daïng:
Caùc thoâng ñieäp xuaát phaùt töø leänh (thoâng ñieäp ñöôïc phaùt sinh töø moät leänh): laø thoâng ñieäp
ñöôïc client göûi leân server ñeå yeâu caàu moät muïc ñích naøo ñoù (ví duï nhö hoûi thoâng tin moät nick naøo
ñoù, hay hoûi thoâng tin caùc channel, hoaëc chæ ñôn giaûn laø muoán göûi thoâng ñieäp caàn noùi treân channel…).
Caùc thoâng ñieäp naøy coù theå khoâng coøn nguyeân thuûy nhö khi user goõ vaøo, maø chuùng ñöôïc gaén theâm
prefix (ñòa chæ host, nickname... cuûa user göûi).
Thoâng ñieäp traû veà: laø thoâng ñieäp ñöôïc server göûi veà client ñeå traû lôøi laïi caùc yeâu caàu cuûa
client.
Caùc thoâng ñieäp coù hai daïng: thoâng ñieäp baèng chöõ vaø thoâng ñieäp baèng soá.
2. Message
Message laø thoâng ñieäp töø client gôûi cho server hoaëc ngöôïc laïi, neáu trong message chöùa
leänh (leänh naøy seõ ñöôïc moâ taû phaàn sau), thì nhöõng leänh naøy seõ ñöôïc ñaùp laïi baèng thoâng ñieäp
phaûn hoài (reply message).
Moãi message goàm coù 3 phaàn chính: phaàn ñaàu coøn goïi laø tieáp ñaàu ngöõ (prefix), tieáp theo
ñoù laø phaàn leänh (command) vaø cuoái cuøng laø danh saùch ñoái soá(parameters list), moãi phaàn caùch
nhau bôûi kyù töï khoaûng traéng(ASCII 0x20). Baét ñaàu prefix laø kyù töï “:” (ASCII 0x3b) chính nhôø
vaøo kyù töï naøy maø server nhaän bieát chính xaùc phaàn leänh(command), nhöõng cuù phaùp leänh seõ ñöôïc
moâ taû chi tieát trong phaàn ñònh daïng message(format message).
Neáu message töø client gôûi ñeán maø khoâng nhaän thaáy phaàn ñaàu (prefix) thì server xem nhö
message ñoù ñöôïc gôûi töø client maø noù keát noái tröïc tieáp, vì theá caùc client muoán gôûi message ñeán
server maø noù keát noái tröïc tieáp khoâng neân duøng phaàn prefix, neáu söû duïng caàn phaûi söû duïng chính
xaùc vì neáu prefix khoâng ñuùng thì server khoâng ñaùp laïi maø noù im laëng.
Phaàn leänh (command) laø nhöõng thaønh phaàn thuoäc veà IRC( ñöôïc moâ taû chi tieát trong phaàn
message detail ), chieàu daøi leänh vaø danh saùch ñoái soá cho pheùp laø 510 kyù töï , cuoái moãi message
coù kyù töï keát thuùc (CR-LF) nhö theá toång chieàu daøi chuùng laø 512 kyù töï.
www.diachiweb.com - Trang 13
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
2.1 Ñònh daïng moät message
Vaán ñeà ñaët ra laø laøm sao coù theå nhaän daïng vaø phaân tích ra töø nhöõng luoàng tuaàn töï caùc
message gôûi ñeán, ñeå giaûi quyeát vaán ñeà naøy ngöôøi ta laäp ra quy ñònh cho message.
Nhö ñaõ moâ taû ôû phaàn treân, moät message luoân coùù kyù töï keát thuùc nhôø vaøo kyù töï naøy maø
server coù theå taùch message ra khoûi luoàng (stream). Sau khi taùch ra chuùng ñöôïc phaân tích thaønh 3
thaønh phaàn chính. chuùng ta seõ khaûo saùt chuùng trong phaàn sau.baây giôø chuùng ta phaân tích caáu truùc
toång quaùt cho moät message:
[‘:’]
Phaàn ñaàu(prefix) Leänh DS ñoái soá kyù töï keát thuùc
Giaûi thích cuù phaùp:
@ Ñoái töôïng naèm trong daáu [ ] coù theå coù hoaëc khoâng coù.
@ Ñoái töôïng naèm trong daáu < > laø baét buoät phaûi coù.
@ Toaùn töû ‘ | ’ laø coù khaû naêng choïn moät trong hai ví duï: “ | ” coù theå choïn
hoaëc choïn .
@ Ñoái töôïng naèm trong daáu {} coù theå xuaát hieän nhieàu laàn.
3 thaønh phaàn chính cuûa message:
ØPhaàn ñaàu(prefix)
Phaàn prefix coù theå khoâng coù, baét ñaàu prefix phaûi coù daáu ‘:’ :
::= | [‘!’ ][‘@’ ]
ÔÛ ñaây chuùng ta coù theå thaáy prefix coù theå laø servername hoaëc nickname ngoaøi ra coøn coù
theå coù theâm username hay hostname hoaëc caû hai. Nhöng ñoái vôùi username phaûi coù kyù töï ‘!’
ñöùng tröôùc, töông töï nhö theá hostname phaûi coù kyù töï ‘@’ñöùng ñaàu.
ØPhaàn Leänh(command)
Phaàn leänh coù theå ôû daïng chuoãi hoaëc soá :
::= {} |
deã daøng chuùng ta coù theå nhaän thaáy leänh coù theå do moät hay nhieàu kyù töï hoaëc giaù trò soá goàm 3 chöõ
soá.
ØPhaàn danh saùch ñoái soá(parameters list)
::= [‘:’ | ]
Chuùng ta thaáy ñoái soá coù theå khoâng xuaát hieän, giaûi thích theâm veà
laø chuoãi kyù töï ñaïi dieän trong ñoù khoâng coù kyù töï NULL hoaëc CR, LF. Chuoãi naøy ñöôïc
ñaët giöõa hai kyù töï “* * ”
www.diachiweb.com - Trang 14
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
cuõng laø chuoãi ñaïi dieän nhöng coù söï phaân bieät, kyù töï ñaàu chuoãi khoâng ñöôïc laø kyù töï
‘:’(ASCII 0x3b).
Ví duï: “* !* “ ñaïi dieän cho taát caû caùc user.
“*@* “ ñaïi dieän cho taát caû host name.
“*.edu “ ñaïi dieän cho nhoùm server coù phaàn cuoái laø edu.
3. Giaù trò soá traû veà (numeric replies)
Sau khi khaûo saùt veà caáu truùc cuûa moät message, chuùng ta ñöôïc bieát moät message ñöôïc
nhaän daïng nhö theá naøo. Sau khi nhaän ñöôïc message, server seõ phaùt ra message phaûn hoài (reply
message). Reply Message ñöôïc hieåu töông töï nhö laø message, thaät söï noù goàm 3 phaàn: sender
prefix, giaù trò soá goàm 3chöõ soá vaø target.
Ø sender prefix laø nickname cuûa client gôûi.
Ø giaù trò soá ñöôïc moâ taû phaàn sau.
Ø ::= | ‘@’ | | [ “,” ] ñeå
nhaän bieát reply message ñeán client naøo chuùng döïa vaøo .
ÔÛ ñaây chuùng ta coù 2 loaïi message phaûn hoài:
error reply
normal reply
Löu yù: chæ coù server môùi coù khaû naêng phaùt ra reply message.
Chöông III: Chi tieát cho töøng message(Message detail)
Ñaây laø phaàn moâ taû chính cho moãi loaïi message, ñeå sever vaø client coù theå nhaän bieát chuùng.
Server seõ nhaän message vaø phaân tích chuùng, sau ñoù traû laïi thoâng baùo thích hôïp. Neáu phaân tích
message maø gaëp phaûi loãi(error). Khi ñoù server phaûi coù cô cheá thoâng baùo cho client.
Moät loãi(error) sinh ra thöôøng do nhöõng nguyeân nhaân sau:
þ Sai ñoái soá (incorrect parameter),
þ Sai Leänh(incorrect command),
þ Sai ñòa chæ ñích Teân server
NickName
Channel name
þ Sai vì vi phaïm quyeàn haïn v.v…
Cuù phaùp cho moät command message
:Name COMMAND parameter list
Chuù yù: Ñoái vôùi “Name”, ñoù laø teân cuûa client gôûi. Moät server(töø xa) ñöôïc client gôûi
message ñeán thì server seõ caên cöù vaøo “Name”, ñeå coù theå ñaùp laïi yeâu caàu ngöôïc laïi neáu client
gôûi ñeán server maø noù keát noái tröïc tieáp khoâng caàn.
1. Nhoùm message ñaêng kyù keát noái
Nhoùm message ñaêng kyù keát noái chòu traùch nhieäm keát noái vôùi IRC server, giao thöùc keát noái
ñöôïc moâ taû trong löu ñoà sau:
www.diachiweb.com - Trang 15
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
Moâ Hình Keát Noái Giöõa ChatClient vaø ChatServer
Client Server
Start Start
Listen on port
PASS
message Recieve
Detect no
Time yes error?
out ?
yes
no
Receive reply
error
NICK Recieve
message
Detect no
Time yes error?
out ?
yes
no
Receive reply
error
Hình 4: Moâ hình keát noái giöõa chat client vaø chat server(coøn tieáp)
www.diachiweb.com - Trang 16
Moâ Hình Keát Noái Giöõa ChatClient vaø ChatServer(TT)
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
USER
IRC Recieve
message
Detect no
Time yes error?
out ? yes
no
Receive reply
error
Receive PING
message
Detect no
error?
yes
reply Recieve
error
Detect yes
error?
no
PONG
Recieve
message
Detect no
error?
yes
Receive reply
error
yes Detect
error?
Hình 5: Moâ hình keát noái giöõa chat client vaø chat server
no
www.diachiweb.com - Trang 17
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
Moâ hình tham gia vaøo channel
Client Server
JOIN
Receive
Message
yes no Detect
Time
error?
out ?
yes
no
Receive Reply
error
Reply
Receive
PRL_Topic
Exchange data
Hình 6: Moâ hình hoïat ñoäng sau khi keát noái
www.diachiweb.com - Trang 18
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
Moâ hình thoaùt khoûi channel & huûy boû keát noái
Client Server
PART
Receive
Message
no
yes Detect
Time
error?
out ?
yes
no
Reply
Receive error
Delete user
from
channel
QUIT
Receive
Message
Delete user
from user
END database
Hình 7: Moâ hình thoaùt khoûi channel & huûy boû keát noái
www.diachiweb.com - Trang 19
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
Trong nhoùm message naøy coù 3 loaïi message:
v Message do server söû duïng
v Message do client söû duïng
v Message duøng chung
Message do Server söû duïng
1.1 Server Message
Cuù Phaùp: SERVER
Server message duøng ñeå thoâng baùo cho caùc server khaùc treân toaøn heä thoáng bieát, coù theâm
moät server keát noái vaøo heä thoáng maïng (IRCnetwork). Nhöõng thoâng tin veà server naøy ñöôïc
chuyeån cho caùc server khaùc treân maïng chöùa trong ñoái soá . Söï kieän naøy xaûy ra khi coù moät
server môùi keát noái vaøo heä thoáng maïng. Luùc ñoù server (môùi keát noái vaøo) phaùt ra SERVER
message, message naøy ñöôïc phaùt quaûng baù (broadcast) leân maïng. Hopcount thoâng tin veà löôïng
giaù Xem H4 ñeå bieát theâm chi tieát.
Löu yù SERVER message khi gôûi ñeán phaûi ñöôïc chaáp nhaän bôûi Server coù teân laø ñoái soá
.
Giaûi thích: vì chuùng ta bieát raèng khi coù moät server tham gia vaøo heä thoáng thì caùc server
khaùc phaûi coù thoâng tin veà server ñoù ñeå chuùng caäp nhaät laïi caáu hình maïng, nhö theá thoâng tin naøy
phaûi thoâng baùo cho caùc server khaùc. Message naøy ñöôïc gôûi cho töøng server.
Loãi coù theå xaûy ra khi nhaän ñöôïc SERVER message, khi xaûy ra loãi server duøng ERROR
message thoâng baùo thay vì duøng giaù trò traû veà.
Giaù trò traû veà:
ERR_ALREADYREGISTRED
Ví duï:
ü SERVER test.oulu.fi 1 :[tolsun.oulu.fi]
: “test.oulu.fi” //server naøy coá gaéng ñònh danh treân maïng (IRCnetwork).
: “1”
: “[tolsun.oulu.fi]”
ü:tolsun.oulu.fi SERVER csd.bu.edu 5: BU Central Server
server: “tolsun.oulu.fi” khoâng keát noái tröïc tieáp vôùi server: “csd.bu.edu 5”
khoaûng caùch laø 5 hopcount.
1.2 Server Quit Message
Cuù Phaùp:
SQUIT
: : :
Server Server Server
A B C
www.diachiweb.com - Trang 20