Đề tài Internet Relay Chat Protocol tìm hiểu và ứng dụng

Tài liệu Đề tài Internet Relay Chat Protocol tìm hiểu và ứng dụng

pdf88 trang | Chia sẻ: hunglv | Lượt xem: 1277 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Đề tài 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:

  • pdfUnlock-luan van irc.pdf
Tài liệu liên quan