Tài liệu Luận văn Nghiên cứu Internet Relay Chat Protocol tìm hiểu và ứng dụng
88 trang |
Chia sẻ: hunglv | Lượt xem: 1358 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Luận văn Nghiên cứu Internet Relay Chat Protocol tìm hiểu và ứng dụng, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
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.
www.diachiweb.com - Trang 1
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
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.
www.diachiweb.com - Trang 2
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
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.
www.diachiweb.com - Trang 3
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
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.
www.diachiweb.com - Trang 4
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
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.
www.diachiweb.com - Trang 5
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
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.
www.diachiweb.com - Trang 6
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
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.
www.diachiweb.com - Trang 7
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
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.
www.diachiweb.com - Trang 8
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.
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.
www.diachiweb.com - Trang 9
Chöông I: Moät soá khaùi nieäm cô baûn.
1. Servers:
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
:
Server2
:
Server3
:
Server5
:
Server6
:
Server1
:
Server4
7
Client1
7
Client3
7
Client2
7
Client4
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.
www.diachiweb.com - Trang 10
“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
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.
www.diachiweb.com - Trang 11
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)
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.
:
Server A
:
Server C
:
Server B
:
Server D
:
Server E
7
Client 2
7
Client 1
7
Client 3
7
Client 4
Hình 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.
www.diachiweb.com - Trang 12
4.2.2.Döïa vaøo channel (one – to – group communication)
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
:
Server A
:
Server C
:
Server B
:
Server D
:
Server E
7
Client 2
7
Client 1
7
Client 3
7
Client 4
Hình 1.3 Channel A
Channel B
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 13
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öï.
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 14
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:
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öï “* * ”
[‘:’]
Phaàn ñaàu(prefix) Leänh DS ñoái soá kyù töï keát thuùc
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 15
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
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:
:Name COMMAND parameter list
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 16
PASS
message Recieve
Start Start
Listen on port
Detect
error?
reply
error
Time
out ? yes
Receive
no
Client Server
yes
no
NICK
message
Time
out ?
Recieve
Detect
error?
reply
error
Receive
yes
no
yes
no
Hình 4: Moâ hình keát noái giöõa chat client vaø chat server(coøn tieáp)
Moâ Hình Keát Noái Giöõa ChatClient vaø ChatServer
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 17
USER
message
Time
out ?
Recieve
Detect
error?
reply
error
Receive
yes
no
yes
no
Receive PING
message
Detect
error?
reply
error
Recieve
yes
no
PONG
message
Detect
error?
no
yes
Recieve
Receive
Detect
error?
yes
no
Detect
error?
yes
no
reply
error
Hình 5: Moâ hình keát noái giöõa chat client vaø chat server
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
IRC
www.diachiweb.com - Trang 18
Client Server
JOIN
Message Receive
Detect
error?
Reply
error
Time
out ?
Receive
yes
no yes
no
Reply
PRL_Topic Receive
Exchange data
Hình 6: Moâ hình hoïat ñoäng sau khi keát noái
Moâ hình tham gia vaøo channel
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 19
PART
Message
Detect
error?
Reply
error
Time
out ?
Receive
yes
no
Client Server
Receive
yes
no
Delete user
from user
database
QUIT
Message Receive
Delete user
from
channel
END
Hình 7: Moâ hình thoaùt khoûi channel & huûy boû keát noái
Moâ hình thoaùt khoûi channel & huûy boû keát noái
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 20
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
A
:
Server
B
:
Server
C
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 21
SQUIT message ñöôïc duøng khi server muoán thoaùt khoûi heä thoáng maïng. Neáu server B
muoán huûy boû keát noái ñeán server A thì server B phaûi gôûi SQUIT message ñeán Server A vaø Server
C duøng teân serverB, server C laøm ñoái soá.
Message naøy cuõng laø haønh ñoäng cuûa operator giuùp giöõ cho heä thoáng maïng goïn hôn
(orderly fashion), hoaëc loaïi boû server ra khoûi heä thoáng neáu noù bò treo (deal). Operator coù theå
duøng SQUIT message cho caùc server ôû xa trong tình traïng naøy caùc server coøn laïi phaûi phaân tích
SQUIT message naøy ñeå caäp nhaät laïi thoâng tin veà heä thoáng maïng(IRC Network). lí
do vieäc taùch khoûi heä thoáng, comment ñöôïc operator ñöa ra.
Caû hai server A vaø server C phaûi phaùt ra SQUIT ñeå thoâng baùo ñeán taát caû server hieän vaãn
coøn keát noái vôùi chuùng, nhaèm thoâng baùo cho bieát serverB khoâng coøn nöõa, vieäc laøm naøy giuùp cho
caùc server treân toaøn maïng caäp nhaät laïi caáu hình hieän taïi.
Giaù trò traû veà: ERR_NOPRIVILEGES
ERR_NODUCHSERVER
Ví duï:
ü SQUIT tolsun.oulu.fi :Bad Link? Server ñang keát noái vôùi “tolsun.oulu.fi” phaùt
ra thoâng baùo.
ü Trillian SQUIT cm22.eng.umd.edu : Server out of control
Message töø “Trillian” thoâng baùo ngöng keát noái vôùi “cm22.eng.umd.edu” vì lyù do
“Server out of control”.
Message Client söû duïng
1.3 Operator message
Cuù Phaùp: OPRE
Ngöôøi duøng thoâng thöôøng söû duïng doøng leänh naøy ñeå tranh quyeàn laøm operator. Tuy nhieân,
neáu server khoâng caáu hình cho pheùp keát noái töø moät client ñöôïc pheùp töï thieát laäp quyeàn laøm
operator khi gia nhaäp channel thì doøng leänh naøy khoâng coù taùc duïng (khi ñoù server seõ traû veà loãi
ERR_NOOPERHOST cho user).
Khi leänh OPER thaønh coâng, server seõ traû veà cho user ñoù moät thoâng ñieäp nhö khi söû duïng
leänh MODE ñaët traïng thaùi operator cho ngöôøi duøng.
Giaù trò traû veà:
ERR_NEEDMOREPARAMS
ERR_NOOPERHOST
RPL_YOUROPER
ERR_PASSWDMISMATCH
Ví duï : ü OPRE foo bar
Username: “foo”
Password: “bar”
1.4 Quit message
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 22
Cuù Phaùp: QUIT []
Moät client muoán thoaùt ra heä thoáng maïng noù phaùt ra QUIT message ñeán server maø noù keát
noái tröïc tieáp server khi nhaän ñöôïc message naøy noù seõ ñoùng keát noái vôùi client ñoù. Ñoàng thôøi thoâng
baùo cho server khaùc ñeå caùc server naøy thoâng baùo cho caùc client trong cuøng channel.
Giaù trò traû veà:
Khoâng coù
Ví duï:
ü QUIT :gone to have lunch
Nhoùm message duøng chung
1.5 Pass message
Cuù phaùp : PASS
Ñoái vôùi Server:
Server duøng pass message ñeå thieát laäp password cho mình, baèng caùch duøng password
server ngaên khoâng cho söï xaâm nhaäp baát hôïp phaùp cuûa caùc client khaùc. Server duøng pass
message (coù cung caáp password) tröôùc khi server phaùt ra message SERVER(message naøy guùp
cho server ñònh danh treân maïng). Sau khi phaùt ra pass message server coù theå ñaêng kyù keát noái
(connection register).
Ñoái vôùi Client :
Client duøng pass message ñeå thieát laäp password cho nickname maø noù muoán ñaêng kyù, noùi
caùch khaùc. Password ñöôïc duøng ñeå khoâng cho ngöôøi khaùc söû duïng nickname cuûa mình. Taát
nhieân, vieäc thieát laäp password laø khoâng caàn thieát, neáu nhö chuùng ta khoâng caàn baûo veä nickname
cuûa mình. Tuy nhieân ñoái vôùi nhoùm channel operator laø caàn thieát. Cuõng gioáng nhö server, client
phaûi ñöa ra PASS message tröôùc khi ñaêng kyù keát noái (baèng caùch gôûi NICK/USER message).
Löu yù : PASS message coù theå ñöôïc gôûi nhieàu laàn. Nhöng chæ coù laàn cuoái cuøng gôûi môùi
ñöôïc xaùc nhaän password vaø xem ñoù laø password chính thöùc.
Giaù trò traû veà:
ERR_NEEDMOREPARAMS
ERR_ALREADYREGISTRED
Ví duï:
ü PASS abc Thieát laäp pass word “abc”
1.6 NickMessage
Cuù phaùp NICK []
Ñoái vôùi Server:
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 23
Server duøng NICK message ñeå thoâng baùo vò trí cuûa cho caùc server khaùc, khi
sever duøng NICK message ñoái soá phaûi ñöôïc ñöa vaøo, (hop count laø soá server phaûi ñi
qua ñeå ñeán ñöôïc ñích). Neáu moät package ñöôïc chuyeån treân maïng khi ñi qua moät server noù tröø ñi
hopcount moät ñôn vò cho ñeán khi hopcount baèng 0 thì ñeán ñích. Ñeå hieåu roõ hôn veà hop count xem
hình beân döôùi.
Ñoái vôùi Client:
Client duøng NICK message ñeå xaùc ñònh nickname cho mình hoaëc thay ñoåi nickname cuûa
mình. Neáu NICK message duøng cho client khoâng caàn ñoái soá . Trong tröôøng hôïp coù
xuaát hieän ñoái soá thì noù seõ bò boû qua.
Neáu NICK message töø client ñeán server, maø server ñoù ñaõ coù thoâng tin veà nickname
(nickname ñaõ ñaêng kyù) ñoù, thì hieän töôïng caïnh tranh (Nickname Collision) xaûy ra. Vì chuùng ta
ñöôïc bieát nickname phaûi laø teân duy nhaát khoâng cho pheùp truøng. Keát quaû laø taát caû thoâng tin veà
nickname ñoù seõ bò huûy boû khoûi cô sôû döõ lieäu trong server(client keát noái) vaø moät KILL message
ñöôïc phaùt ra ñeå huûy boû nickname ñoù ra khoûi cô sôõ döõ lieäu cuûa caùc server coøn laïi. Neáu server
nhaän ñöôïc nickname töø client (keát noái tröïc tieáp vaøo server) maø nickname naøy bò truøng vôùi moät
nickname hieän coù trong server, thì noù seõ phaùt ra thoâng baùo loãi ERR_NICKCOLLISION. Sau ñoù
huûy boû NICK message vaø khoâng phaùt ra KILL message. Nhö theá moät client khi ñöa ra nickname
khoâng thích hôïp thì client ñoù khoâng theå ñaêng kyù keát noái vôùi server ñoàng thôøi khoâng aûnh höôûng
ñeán caùc client khaùc.
Giaù trò traû veà: ERR_NONICKNAMEGIVEN
ERR_NICKNAMEINUSE
ERR_ERRONEUSNICKNAME
:
Server2
:
Server5
:
Server1
:
Server4
:
Server3
7
Client6
7
Client5
7
Client1
7
Client2
7
Client3
7
Client4
Server hopcount
Server2
Server4
Server5
Server3
Server1
0
1
2
2
3
Server hopcount
Server5
Server4
Server2
Server3
Server1
0
1
2
2
1
Server hopcount
Server3
Server4
Server5
Server2
Server1
0
1
2
2
1
Server hopcount
Server1
Server4
Server5
Server3
Server2
0
2
1
1
3
Hình 8
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 24
ERR_NICKCOLLISION
Víduï: ü NICK Wiz : taïo ra moät nickname môùi teân laø Wiz.
ü Wiz NICK Kilroy :Thay ñoåi teân Wiz thaønh Kilroy.
1.7 User Message
Cuù phaùp:
USER
Ñoái vôùi Server:
Server duøng USER message ñeå thoâng baùo cho caùc server khaùc coù user môùi tham gia vaøo
maïng (IRC network). Ñoàng thôøi noù cuõng cung caáp cho caùc thoâng tin nhö ,
, , . Khi gôûi USER message cho caùc server khaùc thì client
seõ gaén nickname vaøo tröôùc message ñoù. Caên cöù vaøo nickname naøy, server seõ nhaän bieát ñöôïc
thoâng tin thuoäc veà nickname naøo. Nhöng coù moät ñieàu löu yù laø server duøng USER message, sau
khi noù nhaän ñöôïc NICK message vaø USER message töø client muoán keát noái vaøo heä thoáng maïng.
Ñieàu naøy coù nghóa laø client gôûi NICK message thaønh coâng, tieáp ñoù laø USER message ñöôïc gôûi
ñeán server. Khi ñoù server seõ phaùt ra USER message.
Ñoái vôùi Client:
Sau khi ñaêng kyù nickname thaønh coâng, client phaùt ra USER message ñeå cung caáp thoâng
tin cho server, thoâng tin maø noù cung caáp laø , , ,
.
Tuy nhieân coù moät soá ñieàu löu yù laø: hai ñoái soá vaø bò boû ñi neáu
laø client keát noái tröïc tieáp ñeán server. Vì lyù do baûo maät treân maïng (security reasons). Vaø ñieàu löu
yù thöù hai laø ñoái soá phaûi ñöùng sau cuøng. Vì trong coù theå coù kyù töï khoaûng
traéng vaø kyù töï ñaàu tieân laø daáu ‘:’.
Giaù trò traû veà: ERR_NEEDMOREPARAMS
ERR_ALREADYREGISTRED
Víduï:
ü USER guest tolmoon tolsun :Ronnie Reagan.
: “guest”.
: “tolmoon”.
: “tolsun”.
: “:Ronnie Reagan”. -trong real name chuùng ta nhaän thaáy coù
kyù töï khoaûng traéng vaø kyù töï ‘:’ ñöùng tröôùc.
2. Nhoùm message duøng cho vieäc ñieàu khieån Channel
2.1 Join message
Cuù Phaùp:
JOIN {,} [][,]
Ñeå coù theå tham gia vaøo channel client phaûi phaùt ra JOIN message, server kieåm tra
message naøy neáu cung caáp ñuùng channel thì cho pheùp gia nhaäp vaøo channel. Ngoaøi ra server coøn
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 25
kieåm tra client ñoù coù bò traïng thaùi “active bans”, (ñaây laø traïng thaùi maø client ñoù bò caám quyeàn keát
noái ngöôøi caám quyeàn chính laø channel opertor) neáu gaëp traïng thaùi naøy server khoâng cho gia
nhaäp.
Ñieàu kieän ñeå moät client coù theå tham gia vaøo channel:
- User phaûi ñöôïc môøi(invite) neáu channel ñoù ñang ôû traïng thaùi invite-only(mode +i).
Nickname, username, hostname cuûa user phaûi khoâng ôû vaøo traïng thaùi “active
bans”(traïng thaùi caám tham gia).
- Phaûi cung caáp ñuùng password vaø nickname neáu coù thieát laäp password cho nickname.
- Keå töø khi client JOIN thaønh coâng chuùng seõ nhaän ñöôïc thoâng baùo, vaø coù theå duøng caùc
command ñeå lieân laïc vôùi server cuûa chuùng bao goàm:MODE, KICK, PART, QUIT vaø
quan troïng nhaát laø PRIVMSG/NOTICE message.
- JOIN message cuõng caàn phaûi ñöôïc phaùt quaûng baù(broadcast) leân maïng ñeå caùc server
coù ñöôïc thoâng tin veà client môùi tham gia, nhôø vaøo thoâng tin naøy caùc server coù theå tìm
thaáy client ñoù.
Giaù trò traû veà : ERR_NEEDMOREPARAMS
ERR_INVITEONLYCHAN
ERR_CHANNELLISFILL
ERR_NOSUCHCHANNEL
RPL_TOPIC
ERR_BANNEDFROMCHAN
ERR_BADCHANNELKEY
ERR_BADCHANMASK
ERR_TOOMANYCHANNELS
Víduï:
ü JOIN #foobar Tham gia vaøo channel “#foobar”.
ü JOIN #foo fubar Tham gia vaøo channel “#foo” duøng khoùa “fubar”.
ü JOIN #foo, &bar fubar Tham gia vaøo channel “#foo” duøng khoùa “fubar” vaø
“&bar”khoâng duøng khoùa.
ü JOIN #foo, #bar, fubar, foobar Tham gia vaøo channel “#foo” , “#bar” duøng
khoùa “fubar”, “foobar”.
ü :Wiz JOIN #Twilight_zone JOIN message töø WIZ.
2.2 part message
Cuù phaùp:
PART {,}
Client duøng part message ñeå thoaùt khoûi channel
Giaù trò traû veà :
ERR_NEEDMOREPARAMS
ERR_NOTONCHANNEL
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 26
ERR_NOSUCHCHANNEL
Víduï:
ü PART #twilight_zone user thoaùt ra channel “#twilight_zone”.
ü PART #oz-ops,&group5 rôøi boû caû 2 channel “#oz-ops”, “&group5”.
2.3 Mode message
Cuù phaùp chung: MODE
MODE message phuïc vuï 2 muïc ñích trong IRC, noù cho pheùp user vaø channel thay ñoåi
mode cuûa mình.
2.3.1 Channel mode
Cuù phaùp:
MODE {[ + | - ]| o | p | s | i | t | n | b | v } [][][]
Trong tröôøng hôïp naøy MODE duøng thay ñoåi traïng thaùi channel chæ coù nhoùm channel
operator môùi coù quyeàn söû duïng command naøy.
Caùc giaù trò mode:
o -laáy quyeàn channel operation.
p -côø private.
s -côø secret.
i -côø thoâng baùo channel ôû traïng thaùi invite.
b -thieát laäp user ban mask.
Ví duï:
ü MODE #Finnish +im ; Makes #Finnish channel moderated and 'invite-
only'.
ü MODE #Finnish +o Kilroy ; Gives 'chanop' privileges to Kilroy on channel
#Finnish.
ü MODE #Finnish +v Wiz ; Allow WiZ to speak on #Finnish.
ü MODE #Fins -s ; Removes 'secret' flag from channe #Fins.
ü MODE #42 +k oulu ; Set the channel key to "oulu".
ü MODE #eu-opers +l 10 ; Set the limit for the number of users on channel to 10.
ü MODE &oulu +b ; list ban masks set for channel.
ü MODE &oulu +b *!*@* ; prevent all users from joining.
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 27
ü MODE &oulu +b *!*@*.edu ; prevent any user from a hostname matching
*.edu from joining.
2.3.2 User mode
Cuù phaùp :
MODE {[+ | - ]| i | w | s | o |}
MODE trong tröôøng hôïp naøy duøng cho user.
Moät user MODE chæ coù theå ñöôïc chaáp nhaän neáu nickname ngöôøi gôûi vaø ñoái soá
phaûi gioáng nhau.
Caùc giaù trò mode:
i - côø cho bieát user ñang ôû mode invisible
s -
w –
o –
Löu yù: moät channel operator coù theå töï giaùng caáp (deopping) cuûa mình baèng caùch ñöa ra
mode -o
Giaù trò traû veà:
ERR_NEEDMOREPARAMS
ERR_CHANOPRIVSNEEDED
ERR_NOTONCHANNEL
RPL_BANLIST
ERR_UNKNOWNFLAG
ERR_USERSDONTMATCH
ERR_UMODEUNKNOWNFLAG
RPL_CHANNELMODEIS
ERR_NOSUCHNICK
ERR_KEYSET
RPL_ENDOFBANLIST
ERR_NOSUCHCHANNEL
RPL_UMODEIS
Ví duï:
ü :MODE WiZ -w ; turns reception of WALLOPS messages off for
WiZ.
ü :Angel MODE Angel +i ; Message from Angel to make themselves
invisible.
2.4 Topic message
Cuù Phaùp:
TOPIC []
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 28
Topic message duøng thay ñoåi hoaëc xem chuû ñeà cuûa channel. Neáu ñoái soá ñöôïc
ñöa vaøo leänh TOPIC message seõ thay ñoåi topic cho channel ñoù, trong tröôøng hôïp noù ñang ôû cheá
ñoä cho pheùp user thay ñoåi.
Giaù trò traû veà :
ERR_NEEDMOREPARAMS
RPL_NOTOPIC
ERR_CHANOPRIVSNEEDED
ERR_NOTONCHANNEL
RPL_TOPIC
Ví duï:
ü :Wiz TOPIC #test :New topic user Wiz setting topic.
ü TOPIC #test : another topic chuû ñeà treân channel #test baèng “another
topic”.
ü TOPIC #test kieåm tra(xem) topic treân channel “test”.
2.5 Names message
Cuù phaùp:
NAMES []{,}
Baèng caùch söû duïng NAMES message. User coù theå xem danh saùch taát caû nickname coù theå
thaáy ñöôïc (visible) treân channel, ñoái soá ñöôïc duøng ñoái vôùi tröôøng hôïp naøy khoâng phaûi
laø channel private (mode+p) hoaëc secret (mode +s), vì hai mode naøy khoâng cho pheùp user truy
xuaát. Neáu coù cung caáp ñoái soá thì noù seõ traû veà danh saùch nickname cuûa channel ñoù,
khoâng coù thoâng baùo loãi ñöôïc traû veà neáu sai channelname. Neáu tröôøng hôïp khoâng coù ñoái soá
thì noù seõ traû veà danh saùch taát caû caùc channel vaø nickname (trong caùc channel ñoù).
Giaù trò traû veà:
RPL_NAMREPLY
RPL_ENDOFNAMES
Ví duï:
ü NAMES #twilight_zone ,#42 lieät keâ danh saùch cuûa nhöõng user treân channel
#twilight_zone vaø channel #42.
ü NAMES lieät keâ taát caû caùc user vaø channel (coù theå nhìn
thaáy).
2.6 List message
Cuù Phaùp:
LIST [{,}[]]
LIST message duøng ñeå client lieät keâ danh saùch caùc channel vaø topic cuûa chuùng. Neáu ñoái
soá khoâng ñöôïc cung caáp thì noù seõ lieät keâ caùc channel maø client ñang tham gia. Ñoái
vôùi Private vaø secret channel chuùng vaãn ñöôïc lieät keâ nhöng khoâng hieån thò chuû ñeà.
Giaù trò traû veà :
ERR_NOSUCHSERVER
RPL_LIST
RPL_LISTSTART
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 29
RPL_LISTEND
Ví duï:
ü LIST Lieät keâ taát caû caùc channel.
ü LIST #twilight_zone,#42 lieät keâ danh saùch topic cuûa channel “#twilight_zone”,
“#42”.
2.7 Invite message
Cuù Phaùp:
INVITE
INVITE message ñöôïc duøng ñeå môøi/goïi user tham gia vaøo channel, ñoái soá laø
nickname cuûa user ñöôïc môøi/goïi. Tuy nhieân khoâng coù söï ñoøi hoûi user phaûi tham gia vaøo
channel. User ñöôïc môøi phaûi naèm trong channel ôû cheá ñoä +i (invite-only).
Giaù trò traû veà:
ERR_NEEDMOREPARAMS
E RR_NOTONCHANNEL
ERR_CHANOPRIVSNEEDED
RPL_INVITING
ERR_NOSUCHNICK
ERR_USERONCHANNEL
RPL_AWAY
Ví duï:
:Angle INVITE Wiz #Dust user “Angle” môøi/goïi “Wiz” tham gia channel
“#Dust”.
INVITE Wiz #Twilight_zone môøi/goïi “Wiz” tham gia vaøo “#Twilight_zone”.
2.8 Kick message
Cuù phaùp:
KICK []
KICK command duøng ñeå loaïi boû user ra khoûi channel. Chæ coù channel operator môùi coù
quyeàn duøng leänh KICK, moãi server nhaän ñöôïc KICK message noù kieåm tra thaät chính xaùc tröôùc
khi noù huûy/loaïi boû user ñoù ra khoûi channel. Sau khi bò KICK user ñoù coù theå taùi keát noái, ñieàu naøy
khaùc vôùi BANs neáu user bò BANs noù seõ khoâng ñöôïc keát noái trôû laïi cho ñeán khi ngöôøi quaûn trò
channel cho pheùp.
Giaù trò traû veà:
ERR_NEEDMOREPARAMS
ERR_BADCHANMASK
ERR_NOTONCHANNEL
ERR_NOSUCHCHANNEL
ERR_CHANOPRIVSNEEDED
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 30
Ví duï:
ü KICK &Melbourne Mattew : loaïi boû “Mattew” ra khoûi channel “&Melbourne”.
ü KICK #Finnish John :Speaking English “Jonh” seõ bò loaïi tra khoûi channel
“#Finnish” lí do “Speaking English”.
ü :Wiz KICK #Finnish John : message töø “Wiz” yeâu caàu loaïi boû “Jonh” ra khoûi
channel “#Finnish”.
Ghi chu ù:khoâng theå môû roäng caùc ñoái soá nhö sau:
{,}{,}[]
3. Nhoùm message truy vaán ñeán server (server query and command)
Server Queries and command laø nhoùm message ñöôïc thieát keá ñeå traû veà thoâng tin cuûa taát
caû nhöõng server maø chuùng ñang tham gia trong maïng (IRC network), server (ñöôïc truy vaán) phaûi
traû lôøi chính xaùc caùc truy vaán. Neáu tröôøng hôïp server coù nhöõng thoâng tin traû veà khoâng chính xaùc
laäp töùc server ñoù seõ bò loaïi ra khoûi maïng cho ñeán khi noù ñöôïc phuïc hoài.
3.1 Version message
Cuù phaùp:
VERSION []
Message naøy duøng ñeå xem version chöông trình cuûa server, ñoái soá laø server
name cuûa server töø xa(remote server) maø client khoâng tröïc tieáp keát noái ñeán, neáu khoâng coù ñoái
soá maët ñònh laø server hieän haønh.
Giaù trò traû veà:
ERR_NOSUCHSERVER
RPL_VERSION
Ví duï:
ü:Wiz VERSION *.se message töø “Wiz” kieåm tra version server “* .se”.
üVERSION tolsun.oulu.fi Kieåm tra version server “tolsun.oulu.fi”.
3.2 Stats Message
Cuù phaùp:
STATS [[]]
client duøng STATS message ñeå truy vaán(query) thoâng tin töø server, thoâng tin nhaän ñöôïc coù theå
laø con soá thoáng keâ naøo ñoù.
Hoaït ñoäng cuûa leänh naøy mang tính ñoäc laäp cao maëc duø server phaûi traû veà thoâng tin truy
vaán (query). Khi coù STATS message ñeán server, noù seõ kieåm tra xem server ñích (destination
server), sau ñoù noù chuyeån message cho server keá tieáp cho ñeán khi ñeán ñích.
Chuùng ta tìm hieåu theâm veà truy vaán(query) moät truy vaán(query) trong tröôøng hôïp naøy laø
moät kyù töï duy nhaát. Sau ñaây laø caùc giaù trò truy vaán (query) :
F c – return a list of server which the server may connect to or allow connection
from; (traû veà danh saùch server coù khaû naêng keát noái)
F h - return a list of server which are either forced to be treated as leaves or
allowed to act as hubs.
F i - returns a list of hosts which the server allows a client to connect from; (traû veà
danh saùch caùc host maø coù theå keát noái ñeán server)
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 31
F k - returns a list of banned username/hostname combinations for that server; (traû
veà danh saùch user ôû traïng thaùi ban)
F l - returns a list of the server's connections, showing how long each connection
has been established and the traffic over that connection in bytes and messages for each
direction; (traû veà danh saùch server vaø thôøi gian moãi keát noái ñöôïc thieát laäp)
F m - returns a list of commands supported by the server and the usage count for
each if the usage count is non zero; (traû veà nhöõng command ñöôïc hoã trôï bôûi server)
F o - returns a list of hosts from which normal clients may become operators; (traû
veà danh saùch caùc user trôû thaønh operator)
F y - show Y (Class) lines from server's configuration file; (chæ ra caáu hình file)
F u - returns a string showing how long the server has been up. (traû veà chuoåi cho
bieát bao laâu server ñöôïc khôûi ñoäng)
Giaù trò traû veà:
ERR_NOSUCHSERVER
RPL_STATSCLINE RPL_STATSNLINE
RPL_STATSILINE RPL_STATSKLINE
RPL_STATSQLINE RPL_STATSLLINE
RPL_STATSLINKINFO RPL_STATSUPTIME
RPL_STATSCOMMANDS RPL_STATSOLINE
RPL_STATSHLINE RPL_ENDOFSTATS
Ví duï:
ü STATS m Yeâu caàu server hieän haønh traû veà danh saùch command ñöôïc
hoå trôï bôûi server.
ü :Wiz STATS c eff.org “Wiz” yeâu caàu server, “eff.org” traû veå danh saùch caùc
server coù keát noái vôùi noù.
3.3 Link Message
Cuù Phaùp:
LINKS [[]]
Vôùi message LINKS, user coù theå lieät keâ taát caû nhöõng server maø bieát.
Danh saùch traû veà laø caùc server. Tuy nhieân danh saùch naøy coù moät soá phaàn bò che daáu ñi
(mask)ù neáu khoâng coù söï che daáu naøy thì taát caû ñöôïc hieån thò.
Giaù trò traû veà :
ERR_NOSUCHSERVER
RPL_LINKS
RPL_ENDOFLINKS
Ví duï:
ü LINKS *.au Lieät keâ taát caû saùc server coù teân “*.au”
ü :Wiz LINKS *.bu.edu *.edu message töø “Wiz “ yeâu caàu server “*.bu.ed”
lieät keâ taát caû caùc server coù teân “*.edu”.
3.4 Time Message
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 32
Cuù phaùp:
TIME []
TIME message duøng cho client truy vaán(query) veà thôøi gian töø moät server naøo ñoù, server
ñöôïc truy vaán seõ naèm trong ñoái soá , tröôøng hôïp ñoái soá khoâng ñöôïc ñöa vaøo, thì
server hieän haønh phaûi traû lôøi truy vaán ñoù.
Giaù trò traû veà:
ERR_NOSUCHSERVER
RPL_TIME
Ví duï:
ü TIME tolsun.oulu.fi Truy vaán thôøi gian treân server
“tolsun.oulu.fi”.
ü :Angle TIME *.au user “Angle” truy vaán thôøi gian töø server
“*.au”.
3.5 Connect message
Cuù phaùp:
CONNECT [[]]
CONNECT command coù theå ñöôïc duøng ñeå buoät server thieát laäp moät keát noái ñeán server
khaùc ngay laäp töùc. CONNECT laø leänh haïn cheá noù chæ ñöôïc duøng cho ngöôøi quaûn trò ngoaøi ra
khoâng coù client naøo khaùc söû duïng ñöôïc.
Giaù trò traû veà:
ERR_NOSUCHSERVER
ERR_NEEDMOREPARAMS
ERR_NOPRIVILEGES
Ví duï:
ü CONNECT tolsun.oulu.fi coá gaéng keát noái vôùi server “tolsun.oulu.fi”.
ü :Wiz CONNECT eff.org 6667 csd.bu.edu Wiz yeâu caàu server “eff.org”
vaø “ csd.bu.edu “ keát noái treân port 6667.
3.6 Trace Message
Cuù phaùp:
TRACE []
Ñaây laø leänh ñöôïc duøng ñeå tìm ñöôøng ñi ñeán server naøo ñoù (destination server). Moãi server
khi xöû lyù TRACE, message noù phaûi baùo cho ngöôøi gôûi (sender) baèng caùch laø ñöa ra nhöõng
message chæ ñöôøng, ñoàng thôøi noù gôûi tieáp cho server keá tieáp. Tieán trình naøy ñöôïc laëp ñi laëp laïi
cho ñeán ñích.
Neáu ñoái soá khoâng ñöa vaøo thì maëc ñònh message seõ ñeán server keát noái tröïc tieáp.
Löu yù: trong khoaûng giöõa server gôûi vaø server nhaän, caùc server trung gian phaûi gôûi traû veà
message traû lôøi RPL_TRACELINK.
Giaù trò traû veà:
RPL_TRACELINK
RPL_TRACKCONNECTING
RPL_TRACKUNKNOWN
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 33
RPL_TRACKUSER
RPL_TRACKSERVICE
RPL_TRACKCLASS
RPL_TRACKHANDSHAKE
RPL_TRACKOPERATOR
RPL_TRACKSERVER
RPL_TRACKNEWTYPE
Ví duï:
ü TRACK *.oulu.fi TRACK ñeán server “*.oulu.fi”.
ü :Wiz TRACK AngelDust Track ñöôïc ñöa ra bôûi “Wiz” ñeán
“AngelDust”.
3.7 Admin Message
Cuù phaùp:
ADMIN []
Server duøng ADMIN message ñeå tìm teân ngöôøi quaûn lyù (administrator) cuûa
duøng laøm ñoái soá.
Neáu khoâng coù ñoái soá thì xemserver maø noù keát noái tröïc tieáp ñeán laø ñoái soá. Moãi
server coù khaû naêng chuyeån ADMIN message ñeán server khaùc, sao cho message ñeán ñöôïc server
caàn ñeán.
Nhö theá chuùng ta thaáy raèng moät client coù theå yeâu caàu moät server khaùc gôûi thoâng tin veà
ngöôøi quaûn lyù cho mình
Giaù trò traû veà:
ERR_NOSUCHSERVER
RPL_ADMINME
RPL_ADMINLOC1
RPL_ADMINLOC2
RPL_ADMINEMAIL
Ví duï:
ü ADMIN tolsun.oulu.fi yeâu caàu server “tolsun.oulu.fi” traû veà admin
ü :Wiz ADMIN *.edu Wiz yeâu caàu
3.8 Info Message
Cuù phaùp:
INFO []
INFO message do client yeâu caàu khaùc traû veà thoâng tin cho mình, neáu ñoái soá
khoâng ñöa ra xem nhö server hieän taïi(server keát noái tröïc tieáp).
Giaù trò traû veà:
ERR_NOSUCHSERVER
RPL_ENDOFINFO
RPL_INFO
Ví duï:
ü INFO csd.bu.edu yeâu caàu thoâng tin traû veà töø “csd.bu.edu”.
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 34
ü :Avalon INFO *.fi “Avalon” yeâu caàu thoâng tin traû veà töø “*.fi”.
ü INFO Angle yeâu caàu server maø user “Angle” keát noái ñeán, traû veà thoâng
tin.
4. Nhoùm message gôûi text(sending message)
Muïc ñích chính IRC protocol laø cung caáp cho caùc client coù theå giao tieáp vôùi nhau, ñeå thöïc
hieän vieäc trao ñoåi text, ta caàn coù Private Message vaø Notice Message ñeå chuyeån text message töø
client naøy ñeán client khaùc. Sau khi thöïc hieän quaù trình keát noái vôùi server vaø gia nhaäp channel
thaønh coâng sending message seõ hoaït ñoäng ñeå thöïc hieän muïc ñích chính cho chat protocol.
4.1 Private Message
Cuù phaùp:
PRIVMSG {,}
Message naøy duøng cho client, user coù theå gôûi private message töø user gôûi ñeán user nhaän,
vaø chæ coù user nhaän môùi ñöôïc nhaän PRIVMSG message. Ñoái soá laø nickname cuûa
client nhaän, coù theå laø danh saùch nickname, channel chuùng ñöôïc phaân bieät vôùi nhau
baèng daáu phaåy (‘ , ’).
Giaù trò traû veà:
ERR_NORECIPIENT
ERR_CANNOTSENDTOCHAN
ERR_WILLTOPLEVEL
ERR_NOTOPLEVEL
ERR_NOSUCHNICK
ERR_NOTEXTTOSEND
ERR_TOOMANYTARGETS
RPL_AWAY
Víduï:
ü :Angle PRIVMSG Wiz :Hello are you receiving this message?
Message töø “Angle” ñeán “Wiz”.
ü PRIVMSG Angle :Yes I’m receiving it !receiving it !’u>(768u+1n).br
Message ñeán Angle.
ü PRIVMSG jto@tolsum.oulu.fi: Hello! Message töø client treân server”
tolsum.oulu.fi” vôùo user name “jto”.
ü PRIVMSG $*.fi :Server tolsun.oulu.fi rebooting Message ñeán taát caû user
treân server coù teân “*.fi”.
ü PRIVMSG #*.edu :NFSNet is undergoing work, expect interruptions
Message ñeán taát caû user coù teân “*.edu”.
4.2Notice Message
Cuù phaùp:
NOTICE
NOTICE message söû duïng töông töï nhö PRIVSMSG message chæ coù ñieàu khaùc nhau giöõa
hai message naøy laø NOTICE message khoâng caàn phaûi coù söï ñaùp laïi töø client nhaän.
Qui ñònh naøy cuõng ñöôïc aùp duïng cho server, nhö theá server khoâng caàn thoâng baùo loãi cho client.
Lyù do coù vieäc quy ñònh naøy laø ñeå traùnh söï töï ñoäng traû lôøi laëp ñi laëp laïi giöõa server vaø client.
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 35
Giaù trò traû veà:
ERR_NORECIPIENT
ERR_CANNOTSENDTOCHAN
ERR_WILLTOPLEVEL
ERR_NOTOPLEVEL
ERR_NOSUCHNICK
ERR_NOTEXTTOSEND
ERR_TOOMANYTARGETS
RPL_AWAY
Víduï:
ü :Angle NOTICE Wiz :Hello are you receiving this message? Message
töø “Angle” ñeán “Wiz”.
ü NOTICE Angle :Yes I’m receiving it !receiving it !’u>(768u+1n).br
Message ñeán Angle.
ü NOTICE jto@tolsum.oulu.fi : Hello! Message töø client treân server”
tolsum.oulu.fi” vôùi user name “jto”.
ü NOTICE $*.fi :Server tolsun.oulu.fi rebooting Message ñeán taát caû user treân
server coù teân “*.fi”.
ü NOTICE #*.edu :NFSNet is undergoing work , expect interruptions
Message ñeán taát caû user coù teân “*.edu”.
5. Nhoùm message do client truy vaán ñeán server(user-based query)
Ñaây laø nhoùm command maø user coù theå duøng ñeå taïo truy vaán. Khi duøng nhoùm leänh naøy
user coù theå xem ñöôïc thoâng tin chi tieát veà caùc user khaùc vôùi ñieàu kieän caùc user coù theå nhaän bieát
nhau treân maïng. Vieäc coù theå nhaän bieát nhau tuøy thuoäc vaøo mode user ñoù vaø traïng thaùi channel
ñang duøng.
5.1 Who Query
Cuù phaùp:
WHO [[]]
WHO message duøng cho client ñeå taïo ra truy vaán, keát quaû truy vaán ñoù laø danh saùch caùc
user phuø hôïp vôùi ñoái soá . Neáu khoâng coù ñoái soá thì taát caû user (coù theå thaáy ñöôïc)
ñöôïc traû veà, coù theå nhaän ñöôïc danh saùch caùc operator neáu chuùng ta söû duïng ñoái soá []hoaëc kyù
töï ñaïi dieän(wildcard).
Ñoái soá coù theå laø hostname, server, realname, nickname.
Giaù trò traû veà:
ERR_NOSUCHSERVER
RPL_ENDOFWHO
RPL_WHOREPLY
Ví duï:
ü WHO *.fi yeâu caàu lieät keâ taát caû user coù teân “*.fi”.
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 36
ü WHO jto* o yeâu caàu lieät keâ taát caû user coù teân “jto*” neáu chuùng laø
operator.
5.2 Who is Query
Cuù phaùp:
WHOIS [][,[,…]]
Message naøy duøng ñeå yeâu caàu thoâng tin cuï theå veà moät user naøo ñoù, nhö theá coù söï khaùc
nhau giöõa WHO message vaø WHOIS message cuï theå laø:
WHO message: yeâu caàu danh saùch caùc user.
WHOIS message: yeâu caàu thoâng tin veà moät user naøo ñoù.
Server seõ traû lôøi cho message naøy, trong tröôøng hôïp server laø server ôû xa(remote server)
thì noù phaûi ñöôïc ñöa vaøo ñoái soá .
Löu yù :Danh saùch caùc nickmask phaûi caùch nhau bôûi daáu phaåy.
Giaù trò traû veà:
ERR_NOSUCHSERVER
ERR_NONNICKNAMEGIVEN
RPL_WHOISUSER
RPL_WHOISCHANNELS
RPL_WHOISSERVER
RPL_AWAY
RPL_ WHOISOPERATOR
RPL_WHOISIDLE
RPL_ENDOFWHOIS
ERR_NOSUCHNICK
Ví duï:
ü WHOIS wiz traû veà thoâng tin user hieän haønh vôùi nickmask “ wiz”.
ü WHOIS eff.org trillian truy vaán ñeán server “eff.org” veà “trillian”.
5.3 Whowas Message
Cuù phaùp:
WHOWAS [[]]
Khaùc vôùi WHOIS messge, WHOWAS messge yeâu caàu thoâng tin nhöõng user trong quaù
khöù maø hieän giôø khoâng coøn coù maët trong danh saùch user active. Ñeå traû lôøi cho message naøy
server phaûi tìm kieám trong danh saùch caùc nickname ñaõ thoaùt ra khoûi heä thoáng maïng(IRC
network). Chuùng ta thaáy trong danh saùch ñoái soá coù , ñoái soá naøy laø moät soá nguyeân döông,
cho bieát laáy bao nhieâu laàn thoâng tin veà nickname ñoù, coù nghóa laø trong danh saùch caùc nickname
ñaõ rôøi khoûi heä thoáng maïng coù theå coù nhieàu maåu tin nickname gioáng nhau nhöng khaùc nhau veà
thôøi gian ñaêng nhaäp. Khi ñoù quy ñònh laáy bao nhieâu maåu tin, neáu tröôøng hôïp khoâng coù
giaù trò server seõ traû veà toaøn boä thoâng tin caùc nickname maø server coù ñöôïc.
Giaù trò traû veà:
ERR_NONICKNAMEGIVEN
ERR_WASNOSUCHNICK
RPL_WHOWASUSER
RPL_WHOSISERVER
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 37
RPL_ENDOFWHOWAS
Ví duï:
ü WHOWAS wiz traû veà taát caû nhöõng thoâng tin trong quaù khöù veà
nickname “wiz”.
ü WHOWAS Mermaid 9 traû veà thoâng tin trong quaù khöù cuûa “Mermaid” nhöng
chæ laáy toái ña 9 maåu tin veà nickname naøy.
ü WHOWAS Trillian 1 *.edu chæ laáy 1 maåu tin veà nickname “Trillian” ôû
server “*.edu”.
6. Nhoùm message khaùc (miscellaneous message)
6.1 Kill Message
Cuù phaùp:
KILL
KILL message ñöôïc duøng khi caàn keát thuùc keát noái giöõa client vaø server, khi gaëp phaûi
hieän töôïng Nick Collision(khi coù söï truøng laép cuûa 2 maåu tin trong danh saùch Nickname.) xaûy ra,
khi ñoù server seõ phaùt ra KILL message, KILL message cuõng ñöôïc channel operator söû duïng
laø lyù do cho KILL message do server ñöa ra ñeå giaûi thích cho haønh ñoäng cuûa mình.
Giaù Trò traû veà:
ERR_NOPRIVILEGES
ERR_NEEDMOREPARAMS
ERR_NOSUCHNICK
ERR_CANTKILLSERVER
Ví duï:
ü KILL David(csd.bu.edu <- tolsun.olu.fi) giöõa csd.bu.edu vaø tolsun.olu.fi xaûy ra
hieän töôïng Nick Collition neân “David” bò ngöng keát noái.
Ghi chuù: chæ coù operator môùi coù theå duøng KILL message ñeå ngöng keát noái cuûa users.
6.2 Ping Message
Cuù Phaùp:
PING [ ]
PING message duøng ñeå kieåm tra moät client coøn hoaït ñoäng trong heä thoáng maïng hay
khoâng? PING message ñöôïc server gôûi ñeán client, khi nhaän ñöôïc message naøy, client phaûi ñaùp
laïi baèng PONG message, neáu sau moät khoaûng thôøi gian naøo ñoù(time out) maø khoâng
thaáy client traû lôøi thì xem nhö keát noái ñoù bò ngaét, vì theá khi nhaän ñöôïc PING message client phaûi
traû lôøi baèng PONG message caøng sôùm caøng toát.
Xem trong danh saùch ñoái soá ta nhaän thaáy raèng coù ñeán 2 ñoái soá vaø
ñieàu ñoù coù nghóa laø PING message gôûi ñeán caû hai vaø , tuy nhieân server nhaän
ñöôïc message noù khoâng ñaùp laïi maø döïa vaøo client keát noái vôùi noù ñeå thoâng baùo keát noái vaãn coøn
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 38
lieân thoâng. Töø ñaây chuùng ta ruùt ra ñöôïc keát luaän laø: Server khoâng ñaùp laïi PING message maø noù
nhôø client ñaùp laïi.
Giaù trò traû veà:
ERR_NOORIGIN
ERR_NOSUCHSERVER
Ví duï:
ü PING tolsun.oulu.fi Server gôûi PING message kieåm tra server khaùc coøn
hoaït ñoäng hay khoâng.
ü PING Wiz PING message ñöôïc gôûi ñeán Wiz.
6.3 Pong Message
Cuù Phaùp:
PONG []
PONG laø message ñöôïc client duøng ñeå ñaùp laïi PING message laø ñoái soá cho
bieát client naøo ñaùp laïi PING message.
Giaù trò traû veà:
ERR_NOORIGIN
ERR_NOSUCHSERVER
Ví duï:
ü PONG csd.bu.edu tolsun.oulu.fi PONG message töø csd.bu.edu ñeán
tolsun.oulu.fi.
6.4 Error Message
Cuù phaùp:
ERROR
ERROR message duøng cho server thoâng baùo loãi cho operator. Noù coù theå ñöôïc gôûi töø
server naøy ñeán server khaùc. Message naøy chæ duøng ñeå thoâng baùo loãi lieân keát giöõa server vôùi
nhau, neáu server nhaän ñöôïc ERROR message töø server khaùc thì noù khoâng caàn thoâng baùo cho
server khaùc bieát, ñeàu naøy coù theå hieåu raèng server gôûi ERROR message ñeán server nhaän, khi ñoù
message chæ chuyeån cho operator cuûa noù.
Moät khi caàn thoâng baùo loãi ñeán client operator noù phaûi ñöôïc ñoùng goùi thoâng qua leänh
NOTICE message ñeå chuyeån, taát nhieân client operator khoâng caàn phaûi traû lôøi cho message naøy.
Giaù trò traû veà:
Khoâng coù
Ví duï:
ü ERROR :server *.fi already exists Thoâng baùo loãi chuyeån ñeán
server ñeán caùc khaùc
ü NOTICE Wiz :ERROR from cds.bu.edu --Server *.fi already exists
thoâng baùo loãi gôûi ñeán Wiz treân server cds.bu.edu.
7. Nhoùm message tuøy choïn(option message)
7.1 Away Message
Cuù phaùp:
AWAY[message]
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 39
Vôùi AWAY message user coù theå thieát laäp cô cheá traû lôøi töï ñoäng cho moãi PRIVMSG
message, noäi dung traû lôøi ñöôïc löu tröõ trong chuoãi [message]. Sau khi thieát laäp xong cheá ñoä naøy
vieäc traû lôøi töï ñoäng seõ ñöôïc gôûi töø server ñeán client phaùt ra PRIVMSG message, server gôûi chính
laø server keát noái tröïc tieáp vôùi client phaùt ra PRIVMSG message.
Neáu AWAY message khoâng coù [message] thì xem nhö chuoãi traû lôøi bò xoùa boû.
Giaù trò traû veà:
RPL_UNAWAY
RPL_NOWAWAY
Ví duï:
üAWAY :Gone to have lunch. Back in 5 minute thieát laäp vieäc traû lôøi töï ñoäng.
üWiz AWAY “Wiz” huûy boû chuoãi traû lôøi töï ñoäng.
7.2 Rehast Message
Cuù phaùp:
REHASH
Server coù moät taäp tin caáu hình ñeå thieát laäp caùc tham soá. Leänh naøy do operator thi haønh baét
buoäc server phaûi ñoïc laïi vaø xöû lyù laïi taäp tin caáu hình cuûa server ñoù.
Giaù trò traû veà:
RPL_REHASHING
ERR_NOPRIVILEGES
Ví duï:
üREHAST message töø channel operator yeâu caàu server ñoïc laïi taäp tin caáu hình.
7.3 Restart Message
Cuù phaùp:
RESTART
Ñaây laø message duøng cho channel operator buoäc server phaûi khôûi ñoäng (restart) laïi heä
thoáng.
Giaù trò traû veà:
ERR_NOPRIVILEGES
Ví duï:
üRESTART server hieän taïi khôûi ñoäng laïi heä thoáng.
7.4 Summon Message
Cuù phaùp:
SUMMON []
Môøi moät client coù chöông trình server hieän ñaõ coù caøi ñaët treân host gia nhaäp heä thoáng IRC
Neáu khoâng coù ñoái soá thì noù xem server hieän haønh laø server ñích, khi ñoù caùc
client keát noái tröïc tieáp ñeán server ñoù seõ ñöôïc môøi.
Giaù trò traû veà :
ERR_NORECIPIENT
ERR_FILEERROR
ERR_NOLOGIN
ERR_NOSUCHSERVER
RPL_SUMMONING
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 40
Ví duï:
ü SUMMON jto goïi user “jto” tham gia vaøo server Hieän haønh.
ü SUMMON jto tolsun.oulu.fi goïi user “jto” tham gia vaøo server
“tolsun.oulu.fi”.
7.5 Users Message
Cuù Phaùp:
USER[]
USER message duøng ñeå traû veà danh saùch cuûa caùc user ñaõ login vaøo töông töï nhö
WHO message. Tuy nhieân coù moät soá client khoâng theå duøng message naøy ñöôïc treân server cuûa
hoï, coù theå vì lyù do baûo maät (security reasion). Neáu user khoâng theå duøng message naøy moät reply
ñöôïc phaùt ra.
Giaù trò traû veà:
ERR_NOSUCHSERVER
ERR_FILEERROR
RPL_USERSSTART
RPL_NOUSER
RPL_USERS
RPL_ENDOFUSERS
ERR_USERSDISABLED
Disabled reply:
ERR_USERDISABLED
Ví duï:
ü USER eff.org yeâu caàu danh saùch caùc user ñaõ login vaøo server “eff.org”.
ü :Jonh USER tolsun.oulu.fi “Jonh” yeâu caàu danh saùch user login treân server
“tolsun.oulu.fi”.
7.6 Operwall Message
Cuù phaùp:
WALLOPS
Khi WALLOPS hoaït ñoäng noù seõ gôûi ñeán taát caû caùc operator hieän coù treân maïng.
Giaù trò traû veà:
ERR_NEEDMOREPARAMS
Ví duï:
ü :csd.bu.edu WALLOPS :Connect ‘*.uiuc.edu 6667’from Joshua Message
töø “csd.bu.edu” thoâng baùo CONNECT message ñeán caùc operator.
7.7 Userhost Message
Cuù phaùp:
USERHOST{}
USERHOST yeâu caàu traû veà thoâng tin cuûa client coù laøm ñoái soá, danh saùch
coù theå leân ñeán 5 ñoái soá khi ñoù thoâng tin veà moãi nickname seõ ñöôïc traû veà cho client.
Löu yù : moãi thoâng tin traû veà ñöôïc phaân caùch baèng kyù töï khoaûng caùch.
Giaù trò traû veà:
RPL_USERHOST
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 41
ERR_NEEDMOREPARAMS
Ví duï:
ü USERHOST Wiz Michael Marry P USERHOST yeâu caàu thoâng tin
veà “Wiz”,”Michael”,”marty”,”P”.
7.8 Ison Message
Cuù phaùp:
ISON{}
ISON message ñöôïc thieát laäp ñeå traû veà thoâng tin veà hieän thôøi treân IRC moät
caùch hieäu quaû nhaát. Coù theå coù nhieàu ñoái soá ñöôïc ñöa vaøo nhöng chuùng phaûi caùch
nhau baèng kyù töï khoaûn traéng.
Giaù trò traû veà:
RPL_ISON
ERR_NEEDMOREPARAMS
Ví duï:
ü ISON phone trillian Wiz Jarlek Avalon Angel Monstah ISON yeâu caàu 7 host.
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Nhöõng quy ñònh trong
IRC
www.diachiweb.com - Trang 42
Phaààn II:
Tìm Hieååu Kyõõ Thuaäät Laääp Trình
Socket
ü Chöông I: Caùc Khaùi Nieäm Cô Baûn Veà Heä
Thoáng Maïng
üChöông II: Moät Soá Haøm Socket
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông I: Caùc Khaùi Nieäm Cô Baûn
Veà Heä Thoáng Maïng
www.diachiweb.com - Trang 43
Chöông I: Caùc Khaùi Nieäm Cô Baûn Veà Heä Thoáng Maïng
1. Moâ hình maïng, moâ hình OSI, moâ hình TCP.
1.1 Moâ Hình Maïng
Tröôùc tieân chuùng ta caàn tìm hieåu vaán ñeà: taïi sao coù söï phaân taàng cuûa caùc protocol, ích lôïi
cuûa vieäc phaân taàng.
Ñeå coù theå chuyeån moät thoâng ñieäp (message) töø maùy naøy sang maùy khaùc (caùc maùy phaûi
trong cuøng heä thoáng maïng) noù phaûi traûi qua nhieàu giai ñoaïn khaùc nhau, caùc giai ñoaïn naøy raát
phöùc taïp nhö laø: chia nhoû thoâng ñieäp (message) ra thaønh nhieàu goùi nhoû (package), maõ hoùa caùc
goùi naøy ra daïng bit, caùc bit naøy ñöôïc chuyeån qua ñöôøng truyeàn vaät lyù ñeán maùy nhaän. Sau ñoù quaù
trình nhaän seõ thöïc hieän ngöôïc laïi nhö beân gôûi, neáu quaù trình laép gheùp gaëp phaûi loãi thì phaûi thoâng
baùo ñeå truyeàn laïi vv…
Caùc giai ñoïan naøy raát phöùc taïp ñoøi hoûi ngöôøi laäp trình öùng duïng phaûi hieåu roõ taát caû caùc cô
cheá hoaït ñoäng beân döôùi cuûa heä thoáng. Vì vaäy ngöôøi ta ñöa ra yù töôûng phaân taàng, moãi taàng seõ chòu
traùch nhieäm cung caáp dòch vuï cho taàng beân treân vaø ñoàng thôøi noù cuõng söû duïng dòch vuï cuûa taàng
beân döôùi cung caáp cho noù. Nhö theá moät ngöôøi laøm vieäc ôû taàng naøo hoï chæ quan taâm ñeán caùc taàng
coù quan heä tröïc tieáp vôùi mình.
Trong moâ hình naøy moãi lôùp n + 1 söû duïng dòch vuï cuûa lôùp n, caû hai host A vaø host B phaûi
coù cuøng choàng giao thöùc(protocol stack).
Layer N Layer N
Layer N - 1 Layer N - 1
Host A Host B Protocol layer N
Protocol layer N - 1
Layer 2 Layer 2
Layer 1 Layer 1
Protocol layer 2
Protocol layer 1
Hình 9
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông I: Caùc Khaùi Nieäm Cô Baûn
Veà Heä Thoáng Maïng
www.diachiweb.com - Trang 44
1.2 Moâ hình OSI
YÙ nghóa caùc taàng :
Physical Layer
ÔÛ lôùp naøy thoâng tin ñöôïc truyeàn döôùi daïng bit thoâng qua keânh truyeàn. Vaø nhaän caùc bit
chuyeån leân cho lôùp datalink.
Datalink Layer
Lôùp naøy coù nhieäm vuï chia nhoû döõ lieäu töø lôùp network ñöa xuoáng thaønh caùc frame, moãi
frame coù dung löôïng töø vaøi traêm byte ñeán vaøi ngaøn byte. Caùc frame ñöôïc truyeàn ñi baèng caùch
chuyeån xuoáng cho lôùp physical. Nhieäm vuï thöù hai laø toå chöùc nhaän caùc frame sao cho ñuùng thöù töï,
cung caáp khaû naêng truyeàn khoâng loãi treân ñöôøng truyeàn vaät lyù cho caùc lôùp cao hôn. Vaán ñeà ñaët ra
ôû ñaây laø phaûi xaùc ñònh cô cheá ñeå xaùc nhaän moät frame coù truyeàn thaønh coâng hay khoâng
(Acknowladge Framje), xöû lyù nhieåu (truyeàn laïi).
Network layer
Lôùp naøy ñònh höôùng cho goùi döõ lieäu (package) ñi töø maùy gôûi ñeán maùy nhaän. Phaûi giaûi
quyeát vaán ñeà ñònh tuyeán (routing), vaán ñeà ñòa chæ (addressing), löôïng giaù chi phí (accouting), vaø
giaûi quyeát ñuïng ñoä (collision).
Transport layer
Lôùp naøy coù nhieäm vuï chia nhoû goùi döõ lieäu ñöôïc ñöa xuoáng töø lôùp beân treân thaønh nhöõng
ñôn vò nhoû hôn ñeå truyeàn qua maïng, vôùi söï ñaûm baûo laø döõ lieäu ñeán nôi moät caùch chính xaùc. Lôùp
naøy cung caáp cho caùc lôùp beân treân phöông tieän ñeå truyeàn caùc message ñoäc laäp vôùi caùc lôùp beân
döôùi.
Application Layer
Presentation Layer
Datalink Layer
Session Layer
Transport Layer
Network Layer
Physical Layer
Application Layer
Presentation Layer
Datalink Layer
Session Layer
Transport Layer
Network Layer
Physical Layer
Host A Host B
Hình 10: Moâ hình OSI
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông I: Caùc Khaùi Nieäm Cô Baûn
Veà Heä Thoáng Maïng
www.diachiweb.com - Trang 45
Session player
Session layer ñieàu khieån quaù trình giao tieáp giöõa hai tieán trình treân hai maùy, taïo vaø keát
thuùc keát noái giöõa caùc quaù trình treân caùc maùy khaùc nhau.
Presentation layer
Lôùp naøy bieåu dieãn nhöõng thoâng tin ñöôïc truyeàn (ñöôïc hieåu laø cuù phaùp vaø ngöõ nghóa), noù
ñoàng nhaát caùc thoâng tin giöõa caùc caùc heä thoáng khaùc nhau. Ngoaøi ra coù coøn cung caáp dòch vuï thao
taùc treân döõ lieäu nhö neùn, maõ hoùa(compression & cryptography).
Application layer
Ñaây laø lôùp cung vaáp dòch vuï cho ngöôøi söû duïng (end user), öùng vôùi moãi dòch vuï (coøn ñöôïc
goïi laø öùng duïng) coù 1 protocol khaùc nhau.
Ví duï: FTP(truyeàn nhaän file), HTTP, E-mai, v.v..
1.3 Moâ hìnhTCP/IP
Chuùng ta ñaõ khaûo saùt moâ hình OSI 7 lôùp, moâ hình naøy chæ laø moâ hình tham khaûo, vieäc aùp
duïng moâ hình naøy vaøo thöïc teá laø khoù coù theå thöïc hieän (hieäu suaát keùm vì döõ lieäu khi truyeàn töø
maùy naøy sang maùy kia trong maïng thì phaûi traûi qua taát caû caùc lôùp cuûa moâ hình OSI ôû caû 2 maùy),
noù chæ laø tieâu chuaån ñeå caùc nhaø phaùt trieån döïa theo ñoù maø phaùt trieån caùc moâ hình khaùc toái öu hôn.
Coù raát nhieàu caùc moâ hình khaùc nhau, hieän nay moâ hình TCP/IP ñöôïc söû duïng phoå bieán nhaát.
Boä protocol TCP/IP bao goàm:
- TCP(Transmission Control Protocol): ñaây laø loaïi protocol coù caàu noái (connection
oriented) cung caáp khaû naêng truyeàn doøng döõ lieäu khoâng loãi, 2 chieàu (full duplex)cho
caùc quaù trình cho ngöôøi söû duïng.
- UDP(User Datagram Protocol): loaïi protocol khoâng thieát laäp caàu noái (connectionless)
cho caùc quaù trình cuûa user. Khoâng gioáng nhö TCP, noù khoâng ñaûm baûo döõ lieäu khi
truyeàn ñi coù ñeán nôi chính xaùc hay khoâng.
Application
Presentation
Physical
Datalink
Network
Sesstion
Transport
OSI
7
6
3
4
2
5
1
Application
Transport
Internet
Host-to-network
TCP/IP
Hình 11: Moâ hình TCP/IP
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông I: Caùc Khaùi Nieäm Cô Baûn
Veà Heä Thoáng Maïng
www.diachiweb.com - Trang 46
- ICMP (Internet Control Message Protocol): protocol xöû lyù loãi vaø ñieàu khieån thoâng tin
giöõa caùc gateway vaø caùc host.
- IP(Internet Protocol): IP laø protocol cung caáp dòch vuï phaân phoái caùc package cho TCP,
UDP vaø ICMP.
- ARP (Address Resolution Protocol): Protocol aùnh xaï 1 ñòa chæ internet thaønh ñòa chæ
phaàn cöùng(MAC address).
- RAPR(Address Resolution Protocol): Protocol aùnh xaï moät ñòa chæ phaàn cöùng thaønh ñòa
chæ IP.
Moâ hình TCP/IP ñöôïc phaân ra thaønh 4 lôùp, trong ñoù 2 lôùp döôùi (1 vaø 2)cuûa moâ hình OSI
ñöôïc goäp laïi thaønh 1 lôùp goïi laø Host-to-network; 2 lôùp Session vaø Presentation cuûa OSI khoâng coù
trong moâ hình giao thöùc TCP/IP.
Töông töï nhö moâ hình OSI, trong moâ hình TCP/IP, döõ lieäu töø 1 maùy cuõng ñi töø lôùp
Application xuoáng Transport, roài xuoáng tieáp lôùp Internet, sau cuøng ñi tôùi lôùp Host-to-network,
thoâng qua ñöôøng daây vaät lyù ñeán 1 maùy khaùc trong maïng : döõ lieäu ôû ñaây seõ ñi ngöôïc töø döôùi leân.
Cuõng gioáng nhö moâ hình OSI, ôû ñaây, giöõa caùc lôùp cuûa 2 maùy giao tieáp vôùi nhau thoâng qua moät
protocol; giöõa lôùp naøy vôùi lôùp khaùc trong cuøng moät maùy goïi laø Interface. Lôùp beân döôùi cung caáp
caùc dòch vuï cho lôùp treân.
Host-to-network
Keát noái host vôùi network sao cho chuùng coù theå chuyeån caùc message tôùi caùc ñòa chæ ñích,
lôùp naøy gaàn gioáng vôùi lôùp physical trong moâ hình OSI.
Internet layer
Ñaây laø lôùp thöïc hieän moät heä thoáng maïng coù khaû naêng chuyeån maïch caùc goùi döõ lieäu döïa
treân moät lôùp maïng Connectionless(khoâng caàu noái) hay Connection – Oriented (coù caàu noái) tuøy
vaøo loaïi dòch vuï maø ngöôøi ta duøng moät trong 2 caùch treân.
Nhieäm vuï cuûa lôùp naøy laø ñaûm baûo cho caùc host chuyeån caùc package vaøo baát kì heä thoáng
maïng naøo vaø chuyeån chuùng ñeán ñích maø khoâng phuï thuoäc vaøo vò trí cuûa ñích ñeán.
Trong moâ hình TCP/IP ngöôøi ta ñöa ra khaùi nieäm ñòa chæ IP ñeå ñònh ñòa chæ cho caùc host
treân maïng(xem phaàn ñòa chæ IP).
Transport layer
Lôùp transport ñöôïc thieát keá ñeå cho caùc phaàn töû ngang caáp ôû lôùp host coù theå ñoái thoaïi vôùi
nhau.
Hai protocol chính laø :
- TCP: laø moät Connection Oriented Protocol, cho pheùp chuyeån moät chuoãi byte töø host
naøy sang host kia maø khoâng coù loãi (duøng cô cheá phaân chia döõ lieäu ra thaønh caùc goùi
nhoû(package) ôû maùy nguoàn vaø gom laïi ôû maùy ñích).
- UDP: laø moät connectionless Protocol ñöôïc xaây döïng cho caùc öùng duïng khoâng muoán söû
duïng caùch truyeàn theo moät thöù töï cuûa TCP maø muoán töï mình thöïc hieän ñieàu ñoù (tuøy
theo muïc ñích cuûa öùng duïng maø ngöôøi ta duøng UDP hay khoâng).
Khaùi nieäm veà port:
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông I: Caùc Khaùi Nieäm Cô Baûn
Veà Heä Thoáng Maïng
www.diachiweb.com - Trang 47
Moät maùy coù theå lieân laïc vôùi moät maùy khaùc trong maïng qua ñòa chæ IP. Tuy nhieân, vôùi ñòa
chæ nhö vaäy khoâng ñuû cho moät process cuûa maùy lieân laïc vôùi moät process cuûa maùy khaùc. Vaø vì vaäy
TCP/UDP ñaõ duøng soá nguyeân (16 bit) ñeå ñaët taû neân soá hieäu port.
Nhö vaäy, ñeå hai process cuûa hai maùy baát kyø trong maïng coù theå giao tieáp ñöôïc vôùi nhau thì
moãi frame ôû caáp Network coù IP goàm :
+ Protocol (TCP/UDP).
+ Ñòa chæ IP cuûa maùy gôûi.
+ Soá hieäu port cuûa maùy gôûi.
+ Ñòa chæ IP cuûa maùy ñích
+ Soá hieäu port cuûa process ôû maùy ñích.
Ví duï:{TCP,127.28.11.83,6000,127.28.11.241,7000};
Application layer(process layer)
Chöùa caùc dòch vuï nhö trong caùc lôùp Session, Presentaion, Application cuûa moâ hình OSI, ví
duï: Telnet(Terminel Acesss) cho pheùp user thaâm nhaäp vaøo moät host ôû xa vaø laøm vieäc ôû ñoù nhö
ñang laøm vieäc treân maùy local(cuïc boä), FPT (File Transfer Protocol) laø coâng cuï giuùp cho chuùng ta
chuyeån caùc file cho nhau, SMTP(Simple Mail Transfer Protocol) cuõng laø moät daïng cuûa FTP
nhöng noù ñaëc ñieåm rieâng, DNS(Domain Name Service) duøng ñeå aùnh xaï teân host thaønh ñòa chæ IP
vaø ngöôïc laïi.
2. Giao Thöùc TCP vaø UDP
2.1 Giao Thöùc UDP
UDP laø phöông thöùc truyeàn döõ lieäu theo phöông phaùp khoâng höôùng keát noái
(connectionless). Khi truyeàn noù khoâng caàn thieát laäp caàu noái giöõa maùy gôûi vaø maùy nhaän, söû duïng
cô cheá UDP ngöôøi ta giaû ñònh raèng ôû maùy nhaän luoân saún saøn ñoùn nhaän döõ lieäu gôûi ñeán. Neáu döõ
lieäu gôûi ñeán bò loãi trong quaù trình truyeàn hay khoâng nhaän ñöôïc ñaày ñuû, UDP cuõng khoâng coù thoâng
tin phaûn hoài laïi cho maùy gôûi. Tuy nhieân UDP khoâng ñoøi hoøi nhieàu taøi nguyeân cuûa heä thoáng vaø
thieát keá chöông trình öùng duïng ñôn giaûn. UDP thöôøng ñöôïc duøng trong nhöõng öùng duïng khoâng
ñoøi hoûi ñoä chính xaùc cao ví duï: dòch vuï thoâng baùo giôø, tæ giaù, hay dòch vuï nhaén tin vaø duøng cho
vieäc truyeàn taûi nhöõng file coù kích thöôùc lôùn nhö hình aûnh, aâm thanh, vv.
Chính vì nhöõng öu ñieåm ñoù nhöõng nhaø laäp trình vaãn söû duïng UDP cho öùng duïng cuûa hoï,
khi ñoù ngöôøi ta duøng nhieàu caùch ñeå xaùc nhaän cho goùi döõ lieäu ñi ñeán ñích chính xaùc vaø troïn veïn.
Moät ví duï minh hoïa cô cheá xaùc nhaän:
1. Client gôûi moät goùi döõ lieäu(package) cho server vaø chôø ñôïi xaùc nhaän töø server.
2. Server nhaän ñöôïc goùi döõ lieäu seõ traû veà thoâng ñieäp phaûn hoài cho client xaùc nhaän
goùi döõ lieäu ñaõ nhaän ñöôïc.
Neáu client chôø ñôïi hôn moät khoaûng thôøi gian cho pheùp(time out) maø khoâng nhaän
ñöôïc phaûn hoài töø server thì noù cho laø goùi döõ lieäu khoâng ñi ñeán ñích vaø truyeån laïi,
neáu sau nhieàu laàn khoâng nhaän ñöôïc phaûn hoài töø server noù giaû ñònh raèng moái keát
noái bò ñöùt hay server bò hoûng hoùc.
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông I: Caùc Khaùi Nieäm Cô Baûn
Veà Heä Thoáng Maïng
www.diachiweb.com - Trang 48
Start App
Server
Create datagram
socket
Create datagram
socket
Send data to server Client data Receive data
Send data to client Server data Receive data
Exit?
Close Socket
yes
Exit?
Close Socket
yes
Exit App
no no
Moâ Hình Keát Noái Theo Giao Thöùc UDP
Client
Hình 12: Moâ hình keát noái theo giao thöùc UDP
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông I: Caùc Khaùi Nieäm Cô Baûn
Veà Heä Thoáng Maïng
www.diachiweb.com - Trang 49
2.2 Giao thöùc TCP
TCP cung caáp khaû naêng truyeàn khoâng loãi töøng goùi döõ lieäu gôûi ñi ñeán maùy nhaän theo giao
thöùc giao thöùc naøy phaûi coù traùch nhieäm thoâng baùo vaø kieåm tra xem döõ lieäu coù ñeán ñuû hay chöa,
coù loãi hay khoâng coù loãi. Tröôùc khi chuyeån döõ lieäu bao giôø cuõng coù vieäc thieát laäp keânh truyeàn giöõa
hay maùy. Do phaûi duy trì moái keát noái vaø kieåm tra döõ lieäu neân söû duïng TCP phaûi ñoøi hoûi chieám
theâm moät soá taøi nguyeân vaø caùch laäp trình cho giao thöùc naøy hôi khoù (phaûi thöïc hieän caùc böôùc
kieåm tra döõ lieäu theo yeâu caàu cuûa TCP). Truyeàn döõ lieäu theo giao thöùc TCP thöôøng aùp duïng cho
caùc dòch vuï nhö truyeàn taäp tin, caùc dòch vuï tröïc tuyeán treân Internet ñoøi hoûi coù ñoä chính xaùc cao.
Start App
Server Client
Create the socket
Create the server
socket
Accept New
Connection
Acquire Stream and
Conduct Conversation
Acquire Stream and
Conduct Conversation
Close Stream and Socket Close Stream and Socket
Start App Continue? yes no
Disconnect
Connect attempt
Exchange data
Moâ Hình Keát Noái Theo Giao Thöùc TCP
Hình 13: Moâ hình keát noái theo giao thöùc TCP
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông I: Caùc Khaùi Nieäm Cô Baûn
Veà Heä Thoáng Maïng
www.diachiweb.com - Trang 50
3. Ñòa Chæ IP
3.1 Giôùi thieäu ñòa chæ IP
Taát caû caùc maùy trong heä thoáng maïng(LAN, WAN, Internet) ñeàu coù ít nhaát 2 ñòa chæ: ñòa
chæ vaät lyù(Mac Address) vaø ñòa chæ Internet. Ñòa chæ vaät lyù coøn ñöôïc goïi laø Ethernet address laø
moät daõy bit goàm 48 bit ñöôïc gaùn bôûi caùc nhaø saûn xuaát, ñòa chæ naøy ñöôïc bieåu dieãn döôùi daïng soá
thaäp luïc phaân (hecxa).
Ví duï : 3A : 9D : 10 : 60 : 7C : 1F
Nhö theá moãi card maïng(interface card) coù moät ñòa chæ duy nhaát ñòa chæ naøy ñöôïc quy ñònh
töø nhaø saûn xuaát card maïng, tuy nhieân ñòa chæ vaät lyù khoâng theå hieän khaû naêng xaùc ñònh vò trí cuûa
heä thoáng treân maïng. Ñeå giaûi quyeát vaán ñeà ñoù ngöôøi ta ñöa ra ñòa chæ IP(IP Address).
Ñòa chæ IP phaûi laø duy nhaát treân maïng vaø coù moät daïng thoáng nhaát, moãi ñòa chæ IP goàm coù 4
byte vaø coù 2 thaønh phaàn: ñòa chæ ñöôøng maïng (Network ID) vaø ñòa chæ host(Host ID).
Neáu maùy tính ñöôïc noái maïng vôùi Internet thì ñòa chæ IP phaûi do NIC(Network Information
Center) caáp.
3.2 Phaân Loaïi Ñòa Chæ IP
Coù taát caû 5 lôùp ñòa chæ IP nhöng hieän nay coù 3 lôùp ñöôïc söû duïng laø lôùp A, B, vaø C.
wLôùp A:
Duøng cho heä thoáng maïng coù soá löôïng ñòa chæ host raát lôùn, soá löôïng naøy coù theå leân ñeán 16
trieäu ñòa chæ host.
Ñeå coù theå nhaän bieát ñòa chæ thuoäc lôùp naøo ngöôøi ta caên cöù vaøo bit ñaàu tieân trong phaàn
network ID, trong tröôøng hôïp lôùp A: bit ñaàu tieân trong phaàn ID network baèng 0. 8 bits ñaàu duøng
cho phaàn Network ID coøn laïi 24 bits daønh cho phaàn Host ID. Nhö vaäy coù 126(27) ñòa chæ ñöôøng
maïng vaø 16.777.214 (224)ñòa chæ Host ID.
wLôùp B:
Duøng cho heä thoáng maïng trung bình soá löôïng HostID leân ñeán khoaûng 65 ngaøn.
0 Network ID Host ID
31 30 24 23 0
Network ID Host ID
32 bits(4 byte)
Ñòa chæ IP
Class ID
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Moät soá haøm socket
www.diachiweb.com - Trang 51
Ñòa chæ lôùp B ñöôïc nhaän bieát qua bit ñaàu tieân trong phaàn Network ID bit ñaàu tieân coù giaù
trò 1. Phaàn Network ID coù 16 bit(2 byte) vaø phaàn Host ID coù 16 bit nhö vaäy soá ñòa chæ ñöôøng
maïng trong lôùp B naøy laø 16.382(214 -2)vaø soá ñòa chæ host 65.534(216 -2).
wLôùp C:
Ñòa chæ lôùp C duøng cho maïng nhoû coù soá löôïng maùy khoâng vöôïc quaù 254 maùy.
Coù theå nhaän bieát ñòa chæ lôùp C thoâng qua 2 bit ñaàu tieân trong phaàn Network ID, hai bit naøy
ñöôïc baät leân 1. Phaàn NetWork ID coù 2,097,150(221-2) ñòa chæ ñöôøng maïng vaø phaàn Host ID coù
254(28-2) ñòa chæ host.
Chuùng ta coù theå xem soá ñòa chæ Host ID vaø Network ID qua baûng sau
Lôùp Maïng Soá ñòa chæ ñöôøng maïng Soá host treân moät ñòa chæ maïng
A 126 16,777,214
B 16,382 65,534
C 2,097,150 254
3.3. Subnet Mask(maët naï con)
Subnet mask laø moät daõy 32 bit gioáng nhö ñòa chæ IP ñöôïc duøng keøm vôùi ñòa chæ IP ñeå xaùc
ñònh maïng con. Khi coù moät ñòa chæ IP vaø keøm theo laø moät subnet mask chuùng ta coù theå xaùc ñònh
ñòa chæ ñöôøng maïng con cuûa ñòa chæ IP ñoù baèng caùch thöïc hieän toaùn töõ AND giöõa IP vaø subnet
ñaây laø caùch maø router xaùc ñònh cho goùi döõ lieäu ñi theo ñöôøng maïng naøo ñeå ñeå ñeán maùy nhaän.
Ví duï : ñòa chæ IP:192.125.125.3
Subnet mask :255.255.255.0
Chöông II: Moät soá haøm socket
1. Khaùi nieäm veà socket
Trong moâ hình maïng ñeå hai maùy tính coù theå trao ñoåi thoâng tin cho nhau thì caàn phaûi taïo ra
keát noái giöõa chuùng. Trong quaù trình laøm vieäc ngöôøi ta nhaän thaáy raèng nhöõng nhaø laäp trình öùng
duïng raát khoù khaên trong vieäc thieát laäp keát noái vaø truyeàn taûi döõ lieäu giöõa caùc maùy tính vôùi nhau.
Vì theá ngöôøi ta xaây döïng khaùi nieäm socket, khaùi nieäm naøy ñöôïc ñöa ra ñaàu nhöõng naêm 80 bôûi
caùc nhaø khoa hoïc maùy tính ôû California taïi Berkeley. Khaùi nieäm naøy ñöôïc ñöa ra töø yù töôûng
1 0 Network ID Host ID
31 30 29 1615 0
1 1 0 Network ID Host ID
31 30 29 28 8 7 0
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Moät soá haøm socket
www.diachiweb.com - Trang 52
phaân taàng, trong ñoù Windows sockets Application Programming Interface(Winsock API) laø thö
vieän caùc haøm do haõng Berkeley Software Distribution of UNIX ñöa ra. Nhaèm laøm ñôn giaûn hoùa
quaù trình thieát laäp keát noái vaø chuyeån döõ lieäu. socket döïa treân giao thöùc TCP/IP taïo moâi tröôøng
trung gian cho caùc öùng duïng vaø giao thöùc beân döôùi.
Socket ñöôïc xem laø moät caáu truùc döõ lieäu tröøu töôïng(asbtraction data structure) duøng taïo ra
moät keânh truyeàn(channel) ñeå gôûi vaø nhaän döõ lieäu giöõa caùc process trong cuøng chöông trình hay
caùc giöõa caùc maùy trong cuøng moâi tröôøng maïng vôùi nhau. Hay noùi moät caùch ñôn giaûn hôn chuùng ta
xem socket nhö laø “cô cheá oå caém”. Khi keát noái giöõa client vaø Server töông töï nhö vieäc caém phích
ñieän vaøo oå caém ñieän. client thöôøng ñöôïc xem nhö laø phích caém ñieän, coøn server ñöôïc xem nhö laø
oå caém ñieän, moät oå caém coù theå caém vaøo ñoù nhieàu phích ñieän khaùc nhau cuõng nhö moät server coù
theå phuïc vuï cho nhieàu client khaùc nhau.
Trong quaù trình truyeàn, nhaän döõ lieäu caàn coù moät maùy ñoùng vai troø laø server vaø moät maùy
ñoùng vai troø client, ñaàu tieân server phaûi taïo ra moät socket vaø chôø ñôïi caùc yeâu caàu keát noái töø
client. client taïo ra socket cho rieâng noù xaùc ñònh vò trí server (döïa vaøo teân cuûa server hay ñòa chæ
cuûa server trong maïng) vaø tieán haønh vieäc keát noái vôùi server, sau khi keát noái ñöôïc thieát laäp client
vaø server coù theå tieán haønh vieäc trao ñoåi döõ lieäu vôùi nhau.
2. Thö vieän caùc haøm socket (API) trong Java.
Trong Java ngöôøi ta cuõng xaây döïng caùc lôùp veà socket phuïc vuï cho vieäc truyeàn taûi döõ lieäu
deå daøng vaø nhanh choùng, caùc lôùp naøy ñöôïc ñoùng goùi trong goùi Java.net.
Moät soá lôùp caàn thieát trong goùi Java.net
2.1 Lôùp InetAddress
Vì ñòa chæ Internet theo soá IP vaø theo teân raát thöôøng duøng khi keát noái vaøo maïng cho neân
Java xaây döïng haún moät lôùp InetAddress daønh rieâng cho vieäc quaûn lyù ñòa chæ theo teân vaø soá lôùp.
Lôùp InetAddress cung caáp caùc phöông thöùc static thoâng duïng nhaát duøng ñeå chuyeån ñoåi vaø truy
xuaát ñòa chæ IP (khoâng coù phöông thöùc khôûi döïng cho lôùp naøy). Thöôøng ta seõ quan taâm ñeán caùc
phöông thöùc sau:
public static InetAddress getLocalHost() throws UnknownHostExceptiongetByName
Traû veà ñoái töôïng InetAddress laø ñòa chæ maùy cuïc boä(local host).
public static InetAddress getByName(String host) throws UnknownHostException
phöông thöùc naøy nhaän ñòa chæ cuûa moät maùy baèng kieåu chuoåi vaø traû veà ñoái töôïng
InetAddress thay maët cho ñòa chæ maùy naøy.
Server socket
Client socket
Hình 14: minh hoïa cô cheá socket
Luaän vaên: Internet Relay Chat Protocol tìm hieåu vaø öùng duïngChöông II: Moät soá haøm socket
www.diachiweb.com - Trang 53
public static InetAddress[] getAllByName(String host) throws
UnknownHostException
phöông thöùc naøy nhaän ñòa chæ cuûa moät maùy baèng kieåu chuoåi vaø traû veà taát caû ñoái töôïng
InetAddress thay maët cho ñòa chæ maùy naøy.
Public byte[] getAddress()
Traû veà ñòa chæ IP cuûa ñoái töôïng InetAddress döôùi daïng moät daõy caùc byte. Vò trí byte cao nhaát naèm
ôû byte 0.
Public String getHostAddress()
Traû veà ñòa chæ IP cuûa ñoái töôïng InetAddress döôùi daïng moät chuoãi ñöôïc ñònh daïng phaân thaønh laøm
4 nhoùm %d.%d.%d.%d (ví duï “127.16.11.12”).
2.2 Lôùp Socket
Lôùp Socket duøng taïo keát noái töø phía maùy khaùch vôùi maùy chuû tröông ñöôïc khôûi döïng baèng
caùc phöông thöùc sau:
Public Socket(String host, int port)
Throws UnknownHostException, IOException
Taïo ra moät socket keát noái theo ñòa chæ host vaø soá hieäu coång port.
Public Socket(InetAddress address, int port) Throws IOException
Taïo ra moät Socket keát noái töø ñòa chæ laø ñoái töôïng InetAddress vaø soá coång port.
Public Socket(String host, int port, boolean stream) throws IOException.
Taïo ra moät socket keát noái theo ñòa chæ host vaø soá coång port, tham soá stream cuoái cuøng ñeå
quy ñònh keát noái theo TCP(stream=true)hayUDP(stream=false). Tuy nhieân neáu aùp duïng ñeå taïo
socket cho giao thöùc UDP neân söû duïng lôùp thay theá laø DatagramSocket.
Caùc phöông thöùc khaùc hoã trôï cho lôùp Socket töø phía maùy khaùch bao goàm:
InputStream getInputStream() Throws IOException
Laáy veà luoàng nhaäp ñeå maùy khaùch coù theå ñoïc döõ lieäu traû veà töø phía maùy chuû.
OutputStream getOutputStream() throws IOException
Laáy veà luoàng xuaát ñeå maùy khaùch coù theå ghi döõ lieäu göûi ñeán maùy chuû.
InetAddress getInetAddress()
Laáy ñòa chæ keát noái socket cuûa maùy chuû
Int getPort()
Laáy veà soá coång duøng keát noái cuûa maùy chuû.
Synchronized void close() throws IOException
Caét ñöùt keát noái
Các file đính kèm theo tài liệu này:
- Unlock-luan van irc .pdf