Đồ án Tổng quan về mạng máy tính, mạng Internet và dịch vụ E-Mail

Sau bốn năm học tập tại trường Đại học Mở Hà Nội, được sự giúp đỡ của các thầy cô giáo, được sự phân công của nhà trường và Khoa Điện tử Viễn thông em đã nhận và làm đồ án tốt nghiệp với đề tài: "Tổng quan về mạng máy tính, mạng Internet và dịch vụ E-mail". Công nghệ máy tính trên thế giới hiện nay đã có những bước tiến dài và nổi bật là mạng quốc tế Internet có rất nhiều nước tham gia đăng ký. Với nối mạng giữa các quốc gia làm cho việc trao đổi thông tin dữ liệu trở lên dễ dàng, nhanh chóng và kinh tế. Việt Nam cùng bắt đầu có chính sách cho việc tham gia vào mạng Internet toàn cầu, vấn đề này rất có lợi cho việc phát triển kinh tế. Với sự phát triển của công nghệ thông tin và nhu cầu xã hội, danh sách các dịch vụ thông tin trên Internet đang ngày càng một dài thêm với sự đóng góp sản phẩm của nhiều nhà cung cấp dịch vụ (Service Provider) khác. Thư điện tử là một trong những dịch vụ thông tin phổ biến nhất trên Internet. Tuy nhiên, khác với các dịch vụ máy gửi thư và máy nhận thư không cần phải liên tục trực tiếp với nhau để thực hiện việc chuyển thư. Dịch vụ thư điện tử cho phép bạn gửi và nhận những thông điệp từ máy tính này đến máy tính khác một cách nhanh chóng, hiệu quả và kinh tế. Điều quan trọng là làm thế nào mà E-mail khiến cho mọi người dẽ dàng liên hệ với bạn. Đồ án này em đã đề cập một phần nhỏ của vấn đề cấp bách của thông tin hiện nay. Em tin ngày một ngày không xa E-mail sẽ không còn xa lạ với người dân, công nghệ thông tin viễn thông của nước Việt Nam sẽ được sánh vai với các nước tiên tiến.

doc92 trang | Chia sẻ: oanh_nt | Lượt xem: 1335 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Đồ án Tổng quan về mạng máy tính, mạng Internet và dịch vụ E-Mail, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ient- Server do ®ã tr­íc hÕt xÐt m« h×nh nµy. C¸c dÞch vô trªn m¹ng cã thÓ theo c¸c m« h×nh kh¸c nhau nh­ Client-Server (Chñ/kh¸ch), Peer-to-Peer (ngang hµng) v.v.. Nh­ng ngµy nay m« h×nh Client-Server ®­îc dïng nhiÒu nhÊt do c¸c ®Æc ®iÓm næi bËt cña nã. M« h×nh Client-Server ®­îc t¹o bëi thµnh phÇn chÝnh sau: - TiÕn tr×nh phôc vô ë m¸y Server cung cÊp dÞch vô mµ ng­êi sö dông yªu cÇu. - TiÕn tr×nh ë m¸y Client yªu cÇu dÞch vô. - Giao thøc líp øng dông (application) mµ m¸y Client vµ Server sö dông. Moâ hình Client – Server laø moät moâ hình toå chöùc trao ñoåi thoâng tin trong ñoù moâ taû caùch maø caùc maùy tính coù theå giao tieáp vôùi nhau theo moät phöông thöùc nhaát ñònh. Phöông thöùc naøy laø 1 chieán löôïc toå chöùc phaân caáp maø trong ñoù coù moät maùy tính ñaëc bieät phuïc vuï caùc yeâu caàu veà löu tröõ, xöû lyù, tính toaùn cuûa taát caû caùc maùy trong maïng. Kieåu toå chöùc toång quaùt cuûa moâ hình naøy laø moät maïng LAN ñöôïc thieát laäp töø nhieàu maùy tính khaùc nhau, trong ñoù coù 1 maùy tính goïi laø maùy chuû (server). Moät chöông trình client chaïy töø baát kyø maùy naøo trong maïng cuõng coù theå göûi caùc yeâu caàu cuûa mình ñeán server, khi server nhaän ñöôïc caùc yeâu caàu naøy thì noù seõ thöïc hieän vaø göûi traû keát quaû veà cho client. Yeâu caàu Ñaùp öùng Client machine Server machine Maïng Quaù trình Server Quaù trình Client H×nh III.4 : M« h×nh Client/Server Moâ hình chuaån cuûa caùc chöông trình öùng duïng maïng laø moâ hình Client – Server. Moät Server laø moät quaù trình, quaù trình naøy chôø söï lieân heä töø 1 quaù trình Client. Moät phieân laøm vieäc ñieån hình cuûa moâ hình naøy nhö sau: - Quaù trình Server ñöôïc khôûi ñoäng leân treân heä thoáng maùy tính. Sau khi khôûi taïo xong thì noù seõ chôø 1 quaù trình Client lieân heä noù ñeå yeâu caàu moät soá dòch vuï. - Quaù trình Client göûi moät yeâu caàu thoâng qua maïng ñeán server ñeå yeâu caàu moät soá daïng dòch vuï naøo ñoù. Moät soá thí duï veà kieåu caùc dòch vuï maø 1 server coù theå cung caáp: + Traû veà giôø trong ngaøy (time-of-day) cho client. + In 1 file treân 1 maùy in cho client. + Ñoïc hay ghi 1 file treân heä thoáng cuûa server cho client. + Cho pheùp client login vaøo heä thoáng cuûa server. + Thöïc thi 1 coâng vieäc cho client treân heä thoáng cuûa server. - Sau khi quaù trình server ñaõ hoaøn taát vieäc cung caáp dòch vuï cho client, server quay veà traïng thaùi “nghæ” ñeå chôø yeâu caàu cuûa client keá tieáp. Chuùng ta coù theå chia hôn nöõa caùc quaù trình server thaønh 2 kieåu: - Khi chæ coù 1 yeâu caàu cuûa client ñöôïc server phuïc vuï taïi 1 thôøi ñieåm thì ngöôøi ta goïi ñoù laø server “laëp” (iterative servers). Loaïi server naøy do chæ thöïc hieän taïi 1 thôøi ñieåm 1 yeâu caàu cuûa client cho neân khoâng hieäu quaû (khi coù nhieàu yeâu caàu ñôïi server phuïc vuï). - Khi server coù theå phuïc vuï ñoàng thôøi nhieàu yeâu caàu töø phía client göûi ñeán thì ta goïi ñoù laø server “ñoàng thôøi” (concurrent servers). Trong tröôøng hôïp naøy, heä ñieàu haønh phaûi cho pheùp chaïy nhieàu quaù trình cuøng 1 luùc; 1 server “ñoàng thôøi” yeâu caàu caùc quaù trình khaùc (baûn sao taïo ra töø server) xöû lyù moãi yeâu caàu ñeán töø client, vaø nhö vaäy thì quaù trình server nguyeân thuûy coù theå quay trôû laïi cheá ñoä “nghæ” (sleep) ñeå chôø yeâu caàu töø caùc client keá tieáp. III.6 C¸c nghi thøc truyÒn nhËn th­ : Coâng vieäc phaùt trieån caùc heä thoáng Mail (Mail System) ñoøi hoûi hình thaønh caùc chuaån veà Mail. Ñieàu naøy giuùp cho vieäc gôûi nhaän caùc thoâng ñieäp ñöôïc ñaûm baûo, laøm cho nhöõng ngöôøi ôû caùc nôi khaùc nhau coù theå trao ñoåi thoâng tin cho nhau Coù 2 chuaån veà Mail quan troïng nhaát vaø ñöôïc söû duïng nhieàu nhaát töø tröôùc ñeán nay laø X.400 vaø SMTP ( Simple Mail Transfer Protocol). SMTP thöôøng ñi keøm vôùi chuaån POP3 vaø do haïn cheá cuûa SMTP maø ngaøy nay ngöôøi ta duøng chuaån môû roäng cuûa noù laø ESMTP (Extended SMTP). Muïc ñích chính cuûa X.400 laø cho pheùp caùc mail coù theå ñöôïc truyeàn nhaän thoâng qua caùc loaïi maïng khaùc nhau baát chaáp caáu hình phaàn cöùng, heä ñieàu haønh maïng , giao thöùc truyeàn daãn ñöôïc duøng. Coøn muïc ñích cuûa chuaån SMTP mieâu taû caùch ñieàu khieån caùc thoâng ñieäp treân maïng Internet. Ñieàu quan troïng cuûa chuaån SMTP laø giaû ñònh maùy nhaän phaûi duøng giao thöùc SMTP gôûi Mail cho 1 Server luoân luoân hoaït ñoäng. Sau ñoù, ngöôøi nhaän seõ ñeán laáy Mail cuûa hoï töø Server khi naøo hoï muoán duøng giao thöùc POP (Post Office Protocol), ngaøy nay POP ñöôïc caûi tieán thaønh POP3 (Post Officce Protocol vertion 3). Caùc giao thöùc Mail thoâng duïng : chuaån X.400, chuaån MAIP, SMTP (ESMTP), POP3 . ÔÛ ñaây chæ trình baøy chi tieát veà POP3 vaø SMTP . II.6.1 Giao thöùc SMTP (Simple Mail transfer Protocol ): a. Giíi thiÖu Muïc ñích cuûa giao thöùc SMTP laø truyeàn mail moät caùch tin caäy vaø hieäu quaû. Giao thöùc SMTP khoâng phuï thuoäc vaøo baát kyø heä thoáng ñaëc bieät naøo vaø noù chæ yeâu caàu traät töï cuûa döõ lieäu truyeàn treân keânh truyeàn ñaûm baûo tính tin caäy. Giao thøc SMTP lµ mét giao thøc tiªu chuÈn ®­îc sö dông ®Ó truyÒn th«ng ®iÖp tõ ng­êi göi tíi ng­êi nhËn. Nã diÔn t¶ ®Þnh d¹ng vµ ph©n ph¸t mét th«ng tin ®iÖn tÝn. Giao thøc SMTP cung cÊp bèn mode ®Ó ph©n th«ng ®iÖp nh­ sau: - Ph©n th«ng ®iÖp trùc tiÕp tíi hép th­ cña ng­êi nhËn. - ThÓ hiÖn th«ng ®iÖp ngay trªn thiÕt bÞ ®Çu cuèi mµ ng­êi nhËn ®ang dïng. - ThÓ hiÖn th«ng ®iÖp ngay trªn thiÕt bÞ ®Çu cuèi nÕu nh­ ng­êi nhËn ®ang truy nhËp vµo m¹ng hoÆc lµ l­u th«ng ®iÖp vµo hép th­ cña hä nÕu hä hiÖn kh«ng ë trªn m¹ng. - Ph©n th«ng ®iÖp vµo hép th­ cña ng­êi nhËn vµ nÕu hä ®ang truy nhËp vµo m¹ng th× hiÓn thÞ th«ng ®iÖp cho hä xem. Giao thøc SMTP lµm viÖc theo m« h×nh Client-Server. Giao thøc SMTP thiÕt kÕ dùa theo m« h×nh truyÒn th«ng cã d¹ng nh­ sau: H×nh III.5 : Moâ hình cuûa giao thöùc SMTP And Mail SMTP Command/Replies User File system Sender SMTP Sender SMTP File system Sender-SMTP Receiver-SMTP Sender-SMTP thiÕt lËp mét kªnh hai chiÒu (two-way transmission channel) tíi Receiver-SMTP. Receiver-SMTP cã thÓ lµ ®Ých cuèi cïng hoÆc trung gian. Mét lÖnh SMTP ®­îc Sender-SMTP ®­a ra göi tíi Receiver-SMTP. C©u tr¶ lêi (SMTP replies) ®­îc göi tõ Receiver-SMTP tíi Sender-SMTP ®Ó ®¸p øng yªu cÇu ®ã. III.6.2 Giao thøc IMAP (Internet Message Transfer Protocol): Giao thøc nµy cho phÐp ng­êi sö dông truy nhËp vµ lÊy th­ tõ m¸y ë chñ, nã còng cho phÐp t¹o míi, xãa, ®æi tªn hép th­, kiÓm tra th­ míi vµ lÊy th­ cïng c¸c tham gia kh¸c cña th­. C¸c th­ ®­îc gi÷ ®éc lËp trªn Server, khi më hép th­ ta chØ lÊy phÇn tiªu ®Ò, cßn néi dung chØ ®­îc lÊy khi ta muèn ®äc nã. §Æc ®iÓm nµy gióp ta tiÕt kiÖm ®­îc thêi gian khëi ®éng ch­¬ng tr×nh vµ kh«ng gian æ ®Üa. Tuy nhiªn trong lóc ®ang ®äc th­ mµ m¸y bÞ ng¾t, ta sÏ mÊt th­. §Ó cã l¹i, ta ph¶i tiÕn hµnh l¹i kÕt nèi. IMAP cã nh­îc ®iÓm lµ ®Æt qu¸ nhiÒu nhiÖm vô cho Server, do ®ã nã ph¶i lu«n cè g¾ng gi¶i quyÕt cho nhiÒu ng­êi dïng. III.6.3 Giao thöùc POP 3 (Post Office Protocol version 3): a. Giôùi thieäu: Nghi thöùc POP3 ñöôïc caûi tieán töø nghi thöùc POP ( Post Office Protocol ). Treân internet moät loaïi naøo ñoù nhoû hôn node thöôøng khoâng thöïc teá ñeå duy trì moät heä thoáng vaän chuyeån message (message transport system: MTS), ví duï nhö moät workstation khoâng coù ñuû taøi nguyeân (recycle, disk space) hôïp leä ñeå cho pheùp moät SMTP server vaø moät heä thoáng phaân phaùt mail cuïc boä keát hôïp giöõ thöôøng truù vaø chaïy moät caùch lieân tuïc . Thöôøng thì noù coù theå raát ñaét (hay khoâng thích hôïp) ñeå giöõ moät personal computer noái vôùi moät IP-style netwrork trong moät thôøi gian daøi (node ñoù ñöôïc bieát seõ thieáu taøi nguyeân nhö “connectivity”) . Maëc duø vaäy, ñeå coù theå quaûn lyù mail raát höõu hieäu treân nhöõng node nhoû hôn naøy. Vaø chuùng thöôøng hoå trôï moät user agent (UA) ñeå giuùp ñôõ coâng vieäc ñieàu khieån mail. Ñeå giaûi quyeát vaán ñeà moät node coù theå cung caáp moät thöïc theå MTS ñöa ra moät maildrop service ñeán nhöõng node ñöôïc caáp nhoû hôn naøy. Post Office Protocol - Version 3 (POP3) ñöôïc duøng cho pheùp moät workstation truy xuaát ñoäng ñeán moät maildrop treân moät server host. Thöôøng ñieàu ñoù coù nghóa laø POP3 ñöôïc duøng ñeå chaáp nhaän moät workstation goïi mail ñöôïc server ñang giöõ cho noù. Khi moät user agent treân moät client host mong muoán ñöa moät message vaøo trong heä thoáng vaän chuyeån, noù thieát laäp moät keát noái SMTP ñeán host chia ca cuûa noù( host chia ca naøy coù theå, hay khoâng caàn POP3 server host cho client host ñoù). III.6.4 Giao thøc chuÈn MIME (Multipurpose Internet Mail Extension): PhÇn th©n th«ng ®iÖp th­êng cã d¹ng v¨n b¶n, ®Ó cã thÓ chuyÓn ®­îc th«ng tin d¹ng h×nh ¶nh hoÆc ©m thanh, UETF (Internet Enginneering Task Force) ®· ®­a ra chuÈn MIME. Th­êng bÞ nhÇm víi Mutimedia Internet Mail Extension do nã m« t¶ ®Þnh d¹ng cho c¸c kiÓu néi dung kh¸c nhau. Mét ®Æc ®iÓm næi bËt cña MIME lµ nã coi c¸c biÓu diÔn (representation) kh¸c nhau nh­ cïng d¹ng d÷ liÖu. VÝ dô mét h×nh ¶nh cã thÓ biÓu diÔn d­íi d¹ng Binary hoÆc Text. ChuÈn MIME cho phÐp d÷ liÖu kh«ng ph¶i d¹ng ASCII (8 bits) ®­îc m· hãa thµnh d÷ liÖu d¹ng 7 bits vµ sau ®ã truyÒn nh­ truyÒn mét th«ng ®iÖp b×nh th­êng. §Ó gióp ng­êi nhËn th«ng ®iÖp hiÓu th«ng ®iÖp ®ã thuéc lo¹i (type) nµo, c¸c th«ng ®iÖp MIME ph¶i chøa c¸c th«ng tin vÒ phiªn b¶ncña chuÈn MIME sö dông. ch­¬ng iv: C«ng cô lËp tr×nh IV.1 Giôùi thieäu ngoân ngöõ Java : Java laø ngoân ngöõ laäp trình höôùng ñoái töôïng, ña luoàng, ña muïc ñích vaø thích hôïp ñeå taïo ra caùc öùng duïng cho Internet vaø caùc maïng phaân taùn phöùc hôïp khaùc . Tuy PC raát phoå duïng nhöng noù khoâng phaûi laø loaïi maùy duy nhaát ñeå truy caäp Internet . Ngay caû PC, noù cuõng ñoøi hoûi phaûi coù caùc phieân baûn khaùc cuûa chöông trình phuï thuoäc vaøo heä ñieàu haønh cuï theå . Caùc chöông trình daønh cho Windows coù theå khoâng chaïy ñöôïc treân OS/2 vaø caùc chöông trình cuûa OS/2 laïi coù theå khoâng thích hôïp vôùi Unix . Nhöng Java giaûi quyeát cuï theå trieät ñeå vaán ñeà naøy baèng caùch taïo ra " Chöông trình thích nghi vôùi moïi tình huoáng ". Nhöõng trình ñöôïc taïo ra töø Java khoâng quan taâm ñeán heä maùy maø baïn ñang duøng . Moãi kieåu maùy tính vaø caùc heä ñieàu haønh coù phieân baûn cuï theå goïi laø maùy Java aûo (Java Virtual Machine) . Java giuùp caùc trình baøy chuyeån ñoåi töø trình Java sang daïng maø caùc loaïi maùy tính vaø heä ñieàu haønh cuï theå hieåu ñöôïc . Quaù trình chuyeån ñoåi naøy hoaøn toaøn töï ñoäng vaø xuyeân suoát ñoái vôùi ngöôøi duøng . Nhö vaäy caùc trình öùng duïng ñöôïc vieát töø ngoân ngöõ Java seõ vaän haønh ñöôïc treân baát cöù caùc loaïi maùy naøo trang bò Java Virtual Machine . Khoâng caàn ñeán caùc laäp trình vieân taïo ra voâ soá caùc phieân baûn " rieâng bieät" ñeå thích öùng vôùi caùc heä ñieàu haønh "rieâng bieät". Chæ coù moät phieân baûn ñeå thích nghi vôùi moïi heä ñieàu haønh . Noùi moät caùch khaùc noù coù khaû naêng chuyeån taûi giöõa caùc neàn ôû möùc ñoä nguoàn vaø möùc nhò phaân . Hot Java laø moät trình duyeät World Wide Web Browser cuûa Sun Microsystem . Ngoaøi nhöõng ñaëc tính cô baûn cuûa Web, noù cho pheùp heä thoáng ngöôøi ñoïc naïp xuoáng töø maïng caùc Applet vaø thöïc thi chuùng, Applet hieän treân trang maïng baèng caùch töông töï nhö hieän aûnh . Tuy nhieân Applet khoâng phaûi laø aûnh vì chuùng coù ñaëc tính ñoäng vaø coù khaû naêng töông taùc . Moät caùch khaùc vôùi Java baïn coù theå thöôûng thöùc aûnh ñoà hoïa sinh ñoäng, caùc bieåu töôïng xoay, caû nhöõng aâm thanh soáng ñoäng, nhöõng troø chôi hoaëc nhöõng hieäu öùng töông taùc khaùc nhau ngay treân maïng xen giöõa caùc phaàn töû vaên baûn vaø ñoà hoïa . Ñoù laø keát quaû cuûa nhöõng chöông trình ñöôïc gôûi töø Internet . Ngoaøi Hot Java Browser laø World Wide Web Browser ñaàu tieân cho pheùp thöïc hieän Java Applet, caùc Browser cuõng nhanh choùng phaùt trieån coù hoå trôï khaû naêng Java . Cuï theå laø Netscape Navigator ñaõ boå sung khaû naêng hoå trôï Java töø phieân baûn 2.0 , caùc nhaø thieát keá Browser khaùc cuõng ñang ñöa khaû naêng hoå trôï Java vaøo caùc saûn phaåm môùi cuûa mình . Ñeå taïo moät Java Applet, ta vieát chuùng baèng ngoân ngöõ Java, sau ñoù bieân dòch chuùng baèng Java Compiler, keá ñoù ta taïo theâm moät file HTML (Hyper Text Markup Language). Sau ñoù, baát kyø ai treân heä thoáng maïng cuõng coù theå duøng Hot Java Browser hay moät Browser töông thích Java naøo ñoù ñeå xem "trang maïng" naøy . Browser seõ taûi Applet töø maïng xuoáng heä thoáng ngöôøi duøng . Baïn neân hieåu veà Java laø ngoaøi vieäc taïo caùc Applet, baïn coù theå söû duïng Java vaøo nhieàu öùng duïng khaùc . Java ñöôïc thieát keá nhö moät ngoân ngöõ laäp trình hoaøn chænh, vôùi Java baïn coù theå tieán haønh laäp trình nhö vôùi moïi ngoân ngöõ laäp trình khaùc nhö : Pascal, C, VisualBasic … . Baûn thaân Hot Java cuõng ñöôïc vieát baèng chính Java . Java laø moät moâi tröôøng ñoäc laäp , ñoù laø moät trong nhöõng lôïi theá quan troïng cho pheùp Java hôn haún nhöõng ngoân ngöõ khaùc , ñaëc bieät cho nhöõng heä thoáng caàn ñeå laøm vieäc treân nhieàu moâi tröôøng (maùy tính , heä ñieàu haønh) khaùc nhau . Java laø moät moâi tröôøng ñoäc laäp ôû caû treân neàn heä thoáng laãn döôùi möùc thaáp nhö xöû lyù nhò phaân. Moâi tröôøng ñoäc laäp laø moät chöông trình coù khaû naêng duy chuyeån deã daøng töø heä thoáng maùy tính naøy sang heä thoáng maùy tính khaùc khoâng phuï thuoäc vaøo caáu truùc cuûa maùy hay heä ñieàu haønh hoaït ñoäng treân maùy . ÔÛ möùc neàn, caùc kieåu döõ lieäu cô baûn cuûa Java coù vò trí vöõng chaéc trong taát caû caùc moâi tröôøng . Nhöõng lôùp thö vieän cuûa Java giuùp cho baïn coù theå vieát ra caùc chöông trình maø noù coù theå ñem töø maùy tính naøy sang maùy tính khaùc maø khoâng caàn phaûi vieát laïi ñeå chaïy rieâng cho maùy môùi . Moâi tröôøng ñoäc laäp khoâng bao giôø chæ döøng laïi ôû möùc neàn . Taäp tin chöùa maõ Java ñaõ dòch cuõng gioáng nhö moâi tröôøng ñoäc laäp, noù cuõng coù theå chaïy treân nhieàu loaïi maùy tính khaùc nhau maø khoâng gaëp phaûi vaán ñeà ñoøi hoûi bieân dòch laïi chöông trình nguoàn . Vaäy noù laøm vieäc nhö theá naøo ? Nhöõng maõ Java thöïc söï ñöôïc goïi laø Bytecode . Vôùi bytecode laø moät taäp hôïp caùc chæ daãn troâng khaù gioáng maõ maùy, nhöng noù khoâng cuï theå cho moät boä xöû lyù naøo . Thoâng thöôøng, khi baïn bieân dòch moät chöông trình vieát trong C hay haàu heát nhöõng ngoân ngöõ khaùc . Chöông trình bieân dòch seõ dòch chöông trình cuûa baïn ra maõ maùy hoaëc caùc chæ thò cho boä xöû lyù . Nhöõng chæ thò naøy hoaøn toaøn cuï theå ñoái vôùi töøng boä xöû lyù ñeå maùy tính cuûa baïn chaïy ñöôïc noù - vì vaäy, ví duï khi baïn bieân dòch chöông trình cuûa baïn treân moät maùy Pentium, keát quaû chöông trình seõ chæ chaïy ñöôïc treân nhöõng heä thoáng Pentium khaùc . Neáu baïn muoán duøng cuøng chöông trình naøy treân moät heä thoáng khaùc (ví duï nhö Applet), baïn phaûi söûa laïi chöông trình nguoàn cuûa baïn, laáy trình bieân dòch cho heä thoáng môùi naøy vaø bieân dòch laïi cho chöông trình nguoàn cuûa baïn . Chöông trình phaûi bieân dòch laïi khi muoán thöïc thi treân heä thoáng khaùc . M· nguån Tr×nh biªn dÞch (Pentium) Tr×nh biªn dÞch (PowerPC) Tr×nh biªn dÞch (SPARC) (Pentium) (PowerPC) (SPARC) TËp tin nhÞ ph©n TËp tin nhÞ ph©n TËp tin nhÞ ph©n M« h×nh ng«n ng÷ biªn dÞch b×nh th­êng Moïi thöù seõ trôû neân khaùc khi baïn vieát chöông trình trong Java . Moâi tröôøng phaùt trieån Java goàm coù hai phaàn : moät Java Compiler (Chöông trình bieân dòch Java) vaø moät Java interpreter (chöông trình thoâng dòch Java) . Chöông trình bieân dòch Java seõ laøm vieäc vôùi chöông trình Java cuûa baïn vaø thay vì phaùt sinh ra maõ maùy töø taäp tin chöùa chöông trình nguoàn cuûa baïn , noù laïi phaùt sinh ra maõ bytecode . M« h×nh ng«n ng÷ biªn dÞch Java Tr×nh biªn dÞch Java (Pentium) M· nguån Java Tr×nh biªn dÞch Java (PowerPC) Tr×nh biªn dÞch Java (SPARC) M· nhÞ ph©n Java (kh«ng phô thuéc hÖ thèng) (Pentium) (PowerPC) (SPARC) Tr×nh th«ng dÞch Java (PowerPC) (SPARC) Tr×nh th«ng dÞch Java Tr×nh th«ng dÞch Java P P P Ñeå chaïy moät chöông trình Java, baïn goïi moät moät chöông trình coù teân laø bytecode interpreter, noù seõ thöïc thi chöông trình Java cuûa baïn . Baïn coù theå chaïy baèng chöông trình thoâng dòch (interpreter) hoaëc laø (ñoái vôùi applet) baèng moät bytecode interpreter caøi saün trong HotJava hay trong moät chöông trình duyeät xeùt coù tính naêng Java khaùc ñeå chaïy nhöõng applet cho baïn . Chöông trình Java vieát döôùi daïng bytecode coù nghóa laø thay vì ñöôïc dòch cuï theå vôùi töøng heä thoáng moät, chöông trình cuûa baïn seõ coù ñöôïc khaû naêng chaïy trong nhieàu loaïi maùy tính vaø heä ñieàu haønh khaùc nhau khi boä thoâng dòch Java coøn coù hieäu löïc ôû ñoù . Khaû naêng naøy cuûa taäp tin maõ Java seõ giuùp cho noù thöïc thi ñöôïc treân caùc loaïi moâi tröôøng khaùc nhau vaø laø tính coát yeáu vôùi nhöõng gì applet coù theå laøm vieäc ñöôïc, bôûi vì World Wide Web töï noù cuõng laø moâi tröôøng ñoäc laäp . Trong luùc taäp tin HTML coù theå ñöôïc ñoïc trong nhieàu moâi tröôøng, cuõng nhö applet coù theå thöïc thi trong nhöõng moâi tröôøng maø nhöõng chöông trình duyeät xeùt coù tính naêng Java chaïy ñöôïc treân ñoù. Yeáu ñieåm cuûa vieäc duøng bytecode laø trong toác ñoä thöïc thi. Bôûi vì vôùi nhöõng chöông trình chaïy trong moät heä thoáng cuï theå, vieäc chaïy tröïc tieáp treân nhöõng phaàn cöùng cho nhöõng caùi maø noù seõ thöïc thi bôûi chöông trình thoâng dòch. Vì ñoái vôùi nhieàu chöông trình Java, toác ñoä khoâng coøn laø vaán ñeà quan troïng . Neáu baïn vieát nhöõng chöông trình maø caàn nhieàu toác ñoä thöïc thi hôn, boä thoâng dòch Java coù theå cung caáp baïn coù moät vaøi phöông aùn thích hôïp vôùi baïn, bao goàm vieäc coù theå lieân keát nhöõng chöông trình nguoàn vaøo trong chöông trình Java cuûa baïn hoaëc laø duøng nhöõng coâng cuï chuyeån ñoåi bytecode trôû laïi thaønh chöông trình nguoàn . Chuù yù raèng neáu baïn duøng nhöõng phöông aùn naøy, baïn seõ maát tính chaát naêng ñoäng maø Java bytecode ñaõ cung caáp cho baïn . Ñoái vôùi moät vaøi ngöôøi, kyõ thuaät laäp trình höôùng ñoái töôïng (object - oriented - programming ) chæ ñôn thuaàn laø moät caùch toå chöùc chöông trình, vaø noù coù theå söû duïng toát trong nhieàu ngoân ngöõ. Khi laøm vieäc vôùi ngoân ngöõ laäp trình höôùng ñoái töôïng thöïc vaø moâi tröôøng laäp trình naøy, baïn coù khaû naêng ñaït ñöôïc heát taát caû nhöõng lôøi theá cuûa phöông phaùp laäp trình höôùng ñoái töôïng vaø khaû naêng ñeå taïo ra söï meàm deûo, tính linh hoaït, laäp trình theo töøng khoái vaø söû duïng laïi chöông trình cuõ. Gioáng nhö haàu heát nhöõng ngoân ngöõ laäp trình höôùng ñoái töôïng khaùc, Java bao goàm moät taäp caùc lôùp thö vieän maø noù cung caáp nhöõng kieåu döõ lieäu cô baûn, döõ lieäu nhaäp cuûa heä thoáng, khaû naêng xuaát döõ lieäu vaø nhöõng haøm tieän ích. Nhöõng lôùp cô baûn naøy laø nhöõng phaàn cuûa coâng cuï phaùt trieån Java (Java Development Kit), noù cuõng coù nhöõng lôùp hoã trôï tính naêng maïng, nhöõng nghi thöùc chung cuûa Internet, vaø nhöõng haøm giao tieáp vôùi ngöôøi duøng . Bôûi vì nhöõng lôùp thö vieän naøy ñöôïc vieát trong Java, noù coù tính khaû chuyeån giöõa caùc moâi tröôøng cuõng gioáng nhö taát caû caùc öùng duïng khaùc cuûa Java . * Hoaït ñoäng cuûa moät öùng duïng vieát baèng Java Chöông trình xaây döïng baèng Java ñöôïc chia laøm hai loaïi : Java Applet vaø Java Application : Hoaït ñoäng cuûa Java Applet : Java Applet laø caùc ñoái töôïng ñöôïc thöïc hieän treân trình duyeät Web . Khi thöïc hieän treân caùc trình duyeät Web, Java Applet cuõng taïo ra hieäu öùng nhö moät öùng duïng bình thöôøng, tuy nhieân caùc thoâng tin cho pheùp Java Applet thöïc hieän laïi ñöa töø caùc trang Web . Khi trình duyeät Web truy caäp ñeán trang thoâng tin naøy, Java Applet seõ ñöôïc taûi veà trình duyeät Web vaø ñöôïc thöïc hieän thoâng qua moät cô caáu goïi laø Java Virtual Machine (JVM) ñaõ ñöôïc caøi saün trong trình duyeät . Hoaït ñoäng cuûa Java Application : Java Application (Java App) laø nhöõng öùng duïng ñoäc laäp, töông töï nhö nhöõng chöông trình coù ñuoâi .EXE hay ñuoâi .COM thoâng thöôøng . Vieäc thöïc hieän Java App ñôn giaûn hôn Java Applet vì chuùng khoâng phaûi thoâng qua trình duyeät Web . Java Virtual Machine (JVM ) JVM ñoùng vai troø raát quan troïng ñeå caùc öùng duïng Java coù theå thöïc hieän ñöôïc . Noù hoaït ñoäng nhö moät maùy tính aûo, cuõng coù boä leänh, caáu truùc döõ lieäu, boä nhô ù... Khi öùng döïng Java thöïc hieän ( sau khi dòch, caùc öùng duïng Java coù phaàn môû roäng laø class ), JVM tieán haønh phaân maõ trong class ñoù thaønh boä leänh cuûa JVM roài thöïc hieän gioáng nhö maùy PC thao taùc vôùi caùc öùng duïng thoâng thöôøng . Do ñoù caùc class sau khi dòch coù theå ñöôïc thöïc hieän treân baát kyø heä ñieàu haønh naøo thoâng qua maùy tính aûo JVM . Bôûi vaäy, caùc class sau khi dòch coù theå ñöôïc thöïc hieän treân baát kyø heä ñieàu haønh naøo thoâng qua maùy tính aûo JVM . Hieän taïi, JVM ñöôïc xaây döïng cho haàu heát caùc heä ñieàu haønh vaø heä xöû lyù hieän coù, ñieàu naøy coù nghóa laø caùc öùng duïng vieát baèng Java coù ñaày ñuû ñieàu kieän ñeå phaùt trieån . Do phaûi hoaït ñoäng thoâng qua maùy tính aûo JVM neân toác ñoä thöïc hieän öùng duïng cuûa Java khaù chaäm Treân thò tröôøng hieän nay coù nhieàu boä coâng cuï laäp trình cho Java : Java Workshop cuûa Sun Microsystems, Visual J cuûa Microsoft, Symantec Cafe cuûa Symantec … Taát caû ñeàu coù ñieåm chung laø hoã trôï toái ña cho ngöôøi laäp trình . ÔÛ luaän aùn toát nghieäp naøy chuùng em ñaõ söû duïng Symantec Cafe phieân baûn 1.8 ñeå vieát chöông trình naøy . Symantec Cafe 1.8 laø moät coâng cuï laäp trình Java cuûa haõng Symantec, tuy laø moät phieân baûn cuõ nhöng noù vaãn hoå trôï toát cho vieäc laäp trình Java . Java Applet Browser Operating System ( OS ) PC coù caøi Browser H×nh vÏ – Hoaït ñoäng cuûa Java Applet Java Virtual Machine (JVM) IV.2 Java lµ ng«n ng÷ h­íng ®èi t­îng: Java ®Ò cËp ®Õn líp vµ h­íng ®èi t­îng, thËt râ rµng vµ ®¬n gi¶n. Chóng kh«ng chØ cã nhiÒu cÊu tróc d÷ liÖu kh¶ dông cho ng­êi lËp tr×nh mµ cßn lµ c¬ së cho ng«n ng÷ lËp tr×nh toµn diÖn. Trong C++ b¹n dÔ dµng khai b¸o mét líp kh«ng b¾t buéc. Thay v× vËy b¹n cã thÓ khai b¸o mét cÊu tróc mét hîp nhÊt (union). B¹n khai b¸o mét côm biÕn phèi hîp láng lÎo vµ dïng chóng víi c¸c hµm kiÓu C. Trong Java, líp vµ ®èi t­îng lµ trung t©m cña ng«n ng÷. Nh÷ng thø kh¸c ph¸t triÓn xung quanh chóng. B¹n kh«ng thÓ khai b¸o c¸c hµm vµ thñ tôc. Chóng kh«ng tån t¹i. B¹n còng kh«ng thÓ dïng cÊu tróc, hîp nhÊt (union) hoÆc ®Þnh nghÜa tr­íc (typedefs). Chóng ®· bÞ lo¹i bá. HoÆc lµ b¹n dïng líp vµ ®èi t­îng hoÆc lµ b¹n kh«ng dïng Java. §¬n gi¶n chØ cã vËy. Java còng cung cÊp mäi thø ®Ó lËp tr×nh h­íng ®èi t­îng: CÊu tróc ph©n tÇng cho líp, sù thõa kÕ, ®ãng gãi vµ tÝnh ®a h×nh. Trong mét ph¹m vi nµo ®ã nã thËt sù h÷u dông vµ hiÖu qu¶. Lý do chÝnh cho viÖc ph¸t triÓn phÇn mÒm h­íng ®èi t­îng, bªn c¹nh tÝnh râ rµng vµ ®¬n gi¶n, lµ nh÷ng ®èi t­îng b¹n ph¸t triÓn sÏ ®­îc dõng l¹i. Java kh«ng chØ khuyÕn khÝch mµ cßn yªu cÇu dïng l¹i phÇn mÒm. Khi viÕt bÊt kú ch­¬ng tr×nh nµo b»ng Java, cho dÉu cã ®¬n gi¶n, b¹n còng ph¶i x©y dùng trªn nh÷ng líp vµ ph­¬ng thøc cña Java API. Mét khi ®· b¾t ®Çu ph¸t triÓn phÇn mÒm b»ng Java, b¹n cã hai c¸ch lùa chän: * X©y dùng trªn nh÷ng líp b¹n ®· ph¸t triÓn, b»ng c¸ch Êy cã thÓ dïng l¹i chóng. * ViÕt l¹i tõ ®Çu phÇn mÒm cña b¹n, sao chÐp vµ söa ®æi nh÷ng thµnh phÇn h÷u dông cña phÇn mÒm ®ang tån t¹i. CÊu tróc h­íng ®èi t­îng cña Java gióp b¹n ph¸t triÓn nh÷ng phÇn mÒm h÷u dông h¬n, cã tÝnh kÕt nèi h¬n vµ ®¬n gi¶n h¬n. .1 Líp vµ ®èi t­îng: A- Nh÷ng kh¸i niÖm cña lËp tr×nh h­íng ®èi t­îng. NhiÒu n¨m qua khi ®iÖn to¸n ra ®êi, con ng­êi ®· nghiªn cøu c¸c gi¶i ph¸p ph¸t triÓn phÇn mÒm hÇu nh­ t×m ra nh÷ng gi¶i ph¸p nhanh nhÊt, vµ s¶n xuÊt ra nh÷ng, rÎ nhÊt, ®¸ng tin cËy nhÊt, vµ s¶n xuÊt ra phÇn mÒm tèt nhÊt. Vµ nhiÒu n¨m sau, kh«ng Ýt nh÷ng gi¶i ph¸p vµ c«ng nghÖ ®· ®­îc xem lµ tèi ­u. Thêi gian qua, chóng ta ®· lµm quen víi viÖc ph¸t triÓn phÇn mÒm vµ cã thÓ söa ch÷a còng nh­ thÝch nghi víi gi¶i ph¸p ®· nghiªn cøu. Lo¹i phÇn mÒm chóng ta ®ang dïng còng thay ®æi theo do ®· c¶i tiÕn phÇn cøng, do ®æi míi trong tËp tin häc vµ kh¶ n¨ng cña ng­êi dïng. Nh÷ng tiÕn bé nµy còng ¶nh h­ëng ®Õn c¸c gi¶i ph¸p ph¸t triÓn phÇn mÒm. Trong tÊt c¶ gi¶i ph¸p ph¸t triÓn phÇn mÒm næi tiÕng, gi¶i ph¸p h­íng ®èi t­îng ®· ®­îc chøng minh lµ gi¶i ph¸p tèt nhÊt cho nh÷ng øng dông phÇn mÒm th«ng dông. Cã thÓ gi¶i ph¸p h­íng ®èi t­îng sÏ tr¶i qua mét qu¸ tr×nh tiÕn ho¸ vµ m« h×nh ph¸t triÓn phÇn mÒm ®­îc c¶i tiÕn sÏ x¶y ra. Nh­ng hiÖn nay, vµ trong t­¬ng lai, ®ã lµ mét gi¶i ph¸p tèi ­u cho phÇn mÒm mµ chóng ta ®ang ph¸t triÓn. LËp tr×nh h­íng ®èi t­îng tËp trung vµo ph¸t triÓn nh÷ng thµnh phÇn phÇn mÒm ®éc lËp, gäi lµ ®èi t­îng (object). Nh÷ng ®èi t­îng nµy ®­îc lËp m« h×nh theo mäi thø nh­ tËp tin, mÉu biÓu, nót nhÊn, vµ c¸c cöa sæ cã trong thÕ giíi thùc. Nh÷ng ®èi t­îng ®­îc ®Þnh nghÜa trong mét giíi h¹n th«ng tin mµ chóng chøa ®ùng vµ nh÷ng ho¹t ®éng mµ chóng cung cÊp ®Ó sö dông vµ tÝnh to¸n nh÷ng th«ng tin nµy. 1- ThÕ giíi h­íng ®èi t­îng: TËp s¸ch lµ mét ®èi t­îng, chøa nhiÒu th«ng tin (nÕu b¹n kh«ng tin, b¹n thö nhËp l¹i toµn bé tËp s¸ch xem). S¸ch còng cã nh÷ng "ph­¬ng thøc" truy cËp th«ng tin. VÝ dô b¹n cã thÓ lËt s¸ch ra, më mét trang, ®äc mét ®o¹n, t×m môc lôc, vµ cø thÕ. Nh÷ng th«ng tin trong s¸ch, cïng víi nh÷ng "ph­¬ng thøc" ®äc s¸ch nh­ trªn, ®Òu bao gåm bªn trong ®èi t­îng lµ quyÓn s¸ch. §Ó ®äc s¸ch nµy, b¹n cÇn ¸nh s¸ng. B¹n cã thÓ ®äc d­íi ¸nh mÆt trêi hoÆc d­íi ¸nh tr¨ng, nh­ng gi¶ sö b¹n dïng ®Ìn. §Ìn còng lµ mét ®èi t­îng. §ã lµ vÝ dô vÒ mét ®èi t­îng chøa th«ng tin tr¹ng th¸i. Tr¹ng th¸i (state) cña mét ®èi t­îng lµ ®iÒu kiÖn ®Æc thï. VÝ dô, ngän ®Ìn cã thÓ bËt hoÆc t¾t, cßn nh÷ng ph­¬ng thøc lµ bËt ®Ìn vµ t¾t ®Ìn th× dïng ®Ó truy cËp ®Õn tr¹ng th¸i cña ®Ìn. TËp s¸ch nµy còng nh­ vËy, cã th«ng tin tr¹ng th¸i. VÝ dô, cã thÓ më hoÆc gÊp s¸ch l¹i. NÕu s¸ch më, cã thÓ më ®Õn mét trang riªng. Trang s¸ch lµ ®èi t­îng, chóng chøa th«ng tin vµ cã thÓ truy cËp th«ng tin qua ph­¬ng thøc ®äc s¸ch. §èi t­îng s¸ch xem cung cÊp c¸ch truy cËp ®Õn trang, vµ ph­¬ng thøc cña trang th× truy cËp ®Õn th«ng tin chøa trong trang ®ã. Th«ng tin chøa trong mét ®èi t­îng, dï cho tr¹ng th¸i x¸c ®Þnh hay kh«ng, ®­îc tham chiÕu ®Õn d­íi d¹ng d÷ liÖu (data) cña ®èi t­îng. Nh÷ng ph­¬ng thøc cña ®èi t­îng ®­îc yªu cÇu truy cËp d÷ liÖu. Mét vµi ph­¬ng thøc tr¶ vÒ th«ng tin lµ d÷ liÖu cña ®èi t­îng vµ ®­îc yªu cÇu hç trî read access. Nh÷ng ph­¬ng thøc kh¸c lµm cho d÷ liÖu ®­îc söa ®æi vµ ®­îc yªu cÇu cung cÊp write access cho d÷ liÖu. 2. Líp: Lóc nµy, cã lÏ b¹n ®ang tù hái lµm sao ph¸t triÓn ®èi t­îng. C©u tr¶ lêi dÜ nhiªn tuú thuéc vµo ng«n ng÷ b¹n ®ang sö dông .Java. C++. SmallTalk, vµ mét sè ng«n ng÷ h­íng ®èi t­îng kh¸c tu©n thñ gi¶i ph¸p dùa vµo líp. Gi¶i ph¸p nµy cho phÐp b¹n khai b¸o líp (class) dïng lµm khu©n mÉu tõ nh÷ng ®èi t­îng t¹o ra. §óng nh­ b¹n mong ®îi, líp ®Þnh nghÜa kiÓu d÷ liÖu vµ nh÷ng ph­¬ng thøc dïng ®Ó truy cËp d÷ liÖu cña ®èi t­îng. Líp còng ®Þnh nghÜa mét hoÆc nhiÒu ph­¬ng thøc dïng ®Ó t¹o ®èi t­îng lµ thùc thÓ (instance) cña líp. Mét thùc thÓ cña líp lµ biÓu hiÖn cô thÓ cña líp trong bé nhí m¸y tÝnh. VÝ dô, h·y xem mÉu ®¬n xin viÖc lµm lµ mét ®èi t­îng. §èi t­îng nµy cã d÷ liÖu lµ nh÷ng tr­êng cÇn ®­îc ®iÒn vµo, vµ c¸c ph­¬ng thøc ®Ó truy cËp d÷ liÖu nh­ ghi vµo ®¬n vµ ®äc ®¬n. Gi¶ sö b¹n ph¸t triÓn mét mÉu ®¬n ®Ó cho ng­êi xin viÖc sö dông. Khi xem qu¶ng c¸o, 100 ng­êi xin viÖc sÏ ®¨ng ký. §Ó ng­êi xin viÖc cã thÓ sö dông mÉu ®¬n, hä ph¶i ®­îc cung cÊp mét thùc thÓ duy nhÊt cña ®¬n. Nh÷ng thÓ nµy t¹o ra b»ng c¸ch dïng mÉu ®¬n b¹n ®· ph¸t triÓn lµm b¶n chÝnh råi sao chÐp t¹o ra nhiÒu thùc thÓ. Nh÷ng ng­êi xin viÖc sau ®ã sÏ ®iÒn vµo nh÷ng thùc thÓ cña hä b»ng c¸ch dïng ph­¬ng thøc ghi vµo ®¬n. Trong vÝ dô tr­íc ®©y, mÉu chÝnh t­¬ng tù mét líp. MÉu chÝnh ®Þnh nghÜa dù liÖu cã bªn trong mçi thùc thÓ cña nã vµ nh÷ng ph­¬ng thøc truy cËp d÷ liÖu. T­¬ng tù, líp ®Þnh nghÜa d÷ liÖu chøa bªn trong ®èi t­îng còng nh­ ®Þnh nghÜa ph­¬ng thøc dïng ®Ó truy cËp d÷ liÖu ®ã. 4.6 Moâ hình client/server: 4.6.1 Giao tiÕp trªn m¹ng theo m« h×nh kh¸ch/chñ (Client/server): Giao tiÕp theo m« h×nh kh¸ch/chñ (Client/server) Cã rÊt nhiÒu dÞch vô hç trî trªn Internet nh­ E-mail, nhãm tin (newsgruop), chuyÓn tËp tin (file transfer), ®¨ng nhËp tõ xa (remotelogin), truy t×m c¸c trang Web…Nh­ng dÞch vô nµy ®­îc tæ chøc vµ kiÕn tróc theo m« h×nh kh¸ch/chñ (m« h×nh Client/server). C¸c ch­¬ng tr×nh ë m¸y kh¸ch (Client) nh­ tr×nh duyÖt (Web browser) hay ch­¬ng tr×nh göi nhËn E-mail sÏ t¹o ra kÕt nèi (connection) víi mét m¸y chñ ë xa (server) sau ®ã göi c¸c yªu cÇu ®Õn m¸y chñ nh­ Web server hay Mail Server… sÏ xö lý nh÷ng yªu cÇu nµy vµ göi tr¶ kÕt qu¶ ng­îc vÒ cho m¸y kh¸ch (ch¼ng h¹n Web server sÏ truy t×m vµ tr¶ vÒ cho m¸y kh¸ch c¸c trang Web theo ®Þa chØ mµ m¸y kh¸ch ®­a ®Õn cßn Mail server th× l­u gi÷ vµ tr¶ vÒ cho m¸y kh¸ch nh÷ng bøc E-mail míi). Th«ng th­êng mét dÞch vô trªn m¸y chñ phôc vô cho rÊt nhiÒu m¸y kh¸ch. A. Socket Socket lµ g×? Socket lµ phÇn mÒm ®iÓm cuèi (end point) thiÕt lËp hai chiÒu trùc tuyÕn gi÷a ch­¬ng tr×nh server v¬i mét hoÆc nhiÒu ch­¬ng tr×nh Client. Socket liªn kÕt ch­¬ng tr×nh Server víi mét cæng phÇn cøng cô thÓ trªn m¸y nã ch¹y. Nh­ vËy bÊt cø mét ch­¬ng tr×nh Client ë mét n¬i nµo ®ã trong m¹ng ë mét Socket ®­îc kÕt nèi víi mét æ ®ã ®Òu cã thÓ liªn l¹c ®­îc víi ch­¬ng tr×nh Server. Mét ch­¬ng tr×nh Server sÏ cung cÊp cho c¸c ch­¬ng tr×nh Client trªn m¹ng. 4.7 X©y dùng c¸c ch­¬ng tr×nh ë m¸y kh¸ch (Client). 4.7.1 C¸c ch­¬ng tr×nh ch¹y trªn m¸y kh¸ch (Client) Khi thiÕt kÕ m« h×nh theo m« h×nh kh¸ch/chñ th«ng th­êng ta ph©n chia lµm hai phÇn, mét phÇn lµ ch­¬ng tr×nh viÕt ch¹y trªn m¸y chñ (nh­ EchoServer hay ExchangeRateServer) cßn mét phÇn lµ ch­¬ng tr×nh viÕt ch¹y trªn m¸y kh¸ch (nh­ EchoClient hay ExchangRateTable). C¸c ch­¬ng tr×nh ë m¸y kh¸ch nh×n chung thùc hiÖn nh÷ng nhiÖm vô sau: + KÕt nèi víi m¸y chñ + NhËn d÷ liÖu hay yªu cÇu do ng­êi dïng nhËp vµo tõ bªn ngoµi. + Göi d÷ liÖu hay yªu cÇu ®Õn m¸y chñ ®Ó xö lý. + Tr×nh bµy kÕt qu¶ vÒ tõ m¸y chñ cho ng­êi xem. C¸c ch­¬ng tr×nh thùc hiÖn nh÷ng t¸c vô nµy ë m¸y kh¸ch rÊt ®a d¹ng. Cã thÓ kÓ mét sè lo¹i øng dông tiªu biÓu sau: * C¸c ch­¬ng tr×nh ®äc vµ göi E-mail: T¹o ®iÒu kiÖn cho ng­êi dïng göi vµ nhËn E-mail. So¹n th¶o E-mail tr­íc khi göi ®i, lÊy c¸c bøc E-mail vÒ tõ m¸y chñ vµ cho xem néi dung cña nã, qu¶n lý c¸c bøc E-mail theo ngµy th¸ng … C¸c ch­¬ng tr×nh göi nhËn mail næi tiÕng h×nh nh­ : trªn Windows cã Edora, Outlook, trªn hÖ UNIX cã Pine, Elm, mh … * Tr×nh duyÖt (Web browser) : Dïng truy t×m vµ ®äc c¸c trang Web trªn m¹ng. §Þa chØ trang Web sÏ ®­îc c¸c tr×nh duyÖt göi ®Õn m¸y chñ vµ m¸y chñ vµ m¸y chñ sÏ göi tr¶ vÒ néi dung trang Web bao gåm c¸c d÷ liÖu nh­ v¨n b¶n, h×nh ¶nh, ©m thanh… Tr×nh duyÖt sÏ chÞu tr¸ch nhiÖm tr×nh bµy kÕt qu¶ trang Web ra mµn h×nh víi nh÷ng lo¹i d÷ liÖu nhËn ®­îc nµy. C¸c tr×nh duyÖt ®iÓn h×nh nh­ Internet Explorer, Netscape Navigator ®Òu hç trî ch¹y trªn Windows, UNIX, Macintosh vµ c¸c hÖ thèng kh¸c. * Ch­¬ng tr×nh truyÒn tÖp tin FTP : Hç trî viÖc sao chÐp tËp tin trªn m¹ng, tËp tin cã thÓ ®­îc chÐp vÒ hay chuyÓn lªn mét m¸y chñ nµo ®ã nhê vµo ch­¬ng tr×nh giao tiÕp víi m¸y chñ FTP. Th­êng th× nh÷ng ch­¬ng tr×nh nµy sö dông c¸c lÖnh c¬ b¶n nh­ get ®Ó lÊy tËp tin vÒ send ®Ó göi tËp tin ®i. Ch­¬ng tr×nh FTP theo giao diÖn Windows næi tiÕng hiÖn nay cã WS FTP. * Ch­¬ng tr×nh tæ chøc nhãm tin (News group) : Hç trî cho viÖc th¶o luËn, trao ®æi th¶o luËn vµ gi¶i quyÕt vÒ mét vÊn ®Ò nµo ®ã trong nhãm. HiÖn cã rÊt nhiÒu ch­¬ng tr×nh phôc vô cho môc ®Ých nµy dµnh cho ®ñ lo¹i hÖ ®iÒu hµnh nh­ Windows, UNIX, Macintosh … * Ch­¬ng tr×nh Telnet dïng ®¨ng nhËp vµ truy xuÊt tõ xa: Mét vµi hÖ thèng cho phÐp ®¨ng nhËp vµ xö lý tËp tin tõ xa nh­ hÖ UNIX ch¼ng h¹n. HÖ ®iÒu hµnh UNIX hç trî mét ch­¬ng tr×nh Telnet ch¹y trªn m¸y chñ cã thÓ kÕt nèi víi m¸y kh¸ch ®Ó xö lý vµ ch¹y c¸c lÖnh UNIX y nh­ ®ang ngåi trªn m¸y chñ vËy. PhÇn sau ta sÏ thiÕt kÕ mét ch­¬ng tr×nh Telnet ë m¸y kh¸ch thùc hiÖn ®­îc kh¶ n¨ng nµy. Mét vµi øng dông gép chung c¸c chøc n¨ng nµy l¹i nh­ Netscape Comminicator tÝch hîp võa tr×nh duyÖt, göi nhËn E-mail, nhãm tin … D­íi ®©y ta sÏ x©y dùng mét sè ch­¬ng tr×nh Java minh ho¹ cho c¸ch lµm viÖc cña c¸c øng dông trªn m¸y kh¸ch. 4.8 X©y dùng c¸c ch­¬ng tr×nh ë m¸y chñ (Server): C¸c ch­¬ng tr×nh thiÕt kÕ ch¹y trªn m¸y chñ th­êng ph¶i l¾ng nghe c¸c kÕt nèi tõ m¸y kh¸ch göi ®Õn. TiÕp nhËn nh÷ng yªu cÇu tõ phÝa m¸y kh¸ch sau ®ã xö lý vµ göi tr¶ kÕt qu¶ vÒ cho m¸y kh¸ch. Nh­ vËy ch­¬ng tr×nh ë m¸y chñ ®ãng vai trß nh­ mét dÞch vô (service) phôc vô cho m¸y kh¸ch. Cã rÊt nhiÒu lo¹i dÞch vô trªn m¸y chñ ®iÓn h×nh gåm cã: * E-mail server: Cung cÊp dÞch vô E-mail, c¸c bøc E-mail do m¸y kh¸ch göi ®i sÏ ®­îc ch­¬ng tr×nh mail server ë m¸y chñ qu¶n lý l­u gi÷ t¹m thêi vµ dß t×m ®Þa chØ ®Ó göi ®­îc E-mail ®Õn ®Ých. * Web server: Cung cÊp dÞch vô dß t×m trang Web trªn m¸y chñ. Khi m¸y kh¸ch yªu cÇu lÊy vÒ mét trang Web (th­êng yªu cÇu nµy do c¸c tr×nh duyÖt browser göi ®Õn) ch­¬ng tr×nh Web server sÏ ®äc néi dung trang Web vµ göi toµn bé vÒ cho m¸y kh¸ch (tr­íc khi göi ®i cã thÓ thùc hiÖn mét sè thao t¸c biÕn ®æi kh¸c nh­ th«ng qua c¸c ch­¬ng tr×nh CGI hay Active Server Page …). * FTP server: T­¬ng øng víi ch­¬ng tr×nh FTP ë m¸y kh¸ch, m¸y chñ còng ph¶i cã mét ch­¬ng tr×nh FTP server ®Ó kÕt nèi vµ nhËn hay truyÒn tËp tin vÒ cho m¸y kh¸ch. * DNS server (Domain Name System server): M¸y chñ qu¶n lý tªn vïng. Th­êng muèn truy cËp c¸c m¸y chñ kh¸c ta ph¶i biÕt ®Þa chØ IP cña nã hoÆc tªn mµ m¸y chñ ®­îc ®Æt. NÕu cã kh¶ n¨ng l­u vµ qu¶n lý næi ta cã thÓ chøa tÊt c¶ c¸c ®Þa chØ IP vµ tªn t­¬ng øng cña nã trªn mµn h×nh (ch¼ng h¹n l­u trong tËp tin hosts). ThÕ nh­ng nÕu cã qu¸ nhiÒu ®Þa chØ ta cã thÓ nhê mét m¸y chñ kh¸c qu¶n lý tÊt c¶ nh÷ng ®Þa chØ nµy. Nh­ vËy chØ cÇn nhí ®Þa chØ cña m¸y chñ DNS, khi cã mét tªn m¸y cÇn x¸c minh ®Þa chØ IP hÖ thèng sÏ tù ®éng t×m ®Õn m¸y chñ DNS ®Ó lÊy vÒ ®Þa chØ IP thùc sù ®i kÌm víi tªn. * Telnet server: Th­êng ch¹y trªn c¸c hÖ hç trî ®a ng­êi dïng nh­ UNIX, VMS… (Windows kh«ng hç trî c¸ch ®¨ng nhËp vµ xö lý tõ xa kiÓu Telnet). Telnet server ®­îc dïng ®Ó trao ®æi víi ch­¬ng tr×nh Telnet ch¹y ë m¸y kh¸ch. Nã khiÕn ng­êi dïng phÝa m¸y kh¸ch cã c¶m t­ëng nh­ ®ang t­¬ng t¸c vµ xö lý trùc tiÕp trªn hÖ thèng m¸y chñ. * D­íi ®©y ta sÏ x©y dùng mét ch­¬ng tr×nh kh¸ næi tiÕng cã tªn lµ Webserver. Ch­¬ng tr×nh ch¹y trªn m¸y chñ vµ cã thÓ tr¶ vÒ bÊt cø trang Web nµo mµ m¸y kh¸ch yªu cÇu (t­¬ng tù nh­ ch­¬ng tr×nh Personal Windows 95 hay NT Webserver cña Windows NT). Mét tr×nh duyÖt browser thùc thô nh­ Internet Explorer ch¼ng h¹n sÏ liªn l¹c ®­îc víi ch­¬ng tr×nh Webserver cña ta vµ lÊy vÒ trang Web víi ®Çy ®ñ h×nh ¶nh, ©m thanh, ®Þnh d¹ng v¨n b¶n … (ch­¬ng tr×nh Webserver hoµn toµn cã thÓ thö nghiÖm ®­îc trªn mét m¸y hoÆc nhiÒu m¸y trong hÖ thèng m¹ng côc bé) 4.8.1 ThiÕt kÕ ch­¬ng tr×nh Webserver ViÖc x©y dùng ch­¬ng tr×nh Webserver còng dùa trªn m« h×nh kh¸ch/chñ mµ ta ®· lµm quen tr­íc ®©y. Webserver lµ ch­¬ng tr×nh ch¹y trªn m¸y chñ cho nã còng cÇn thùc hiÖn mét sè b­íc c¬ b¶n nh­ lµ t¹o socket vµ l¾ng nghe c¸c kÕt nèi suÊt ph¸t tõ phÝa m¸y kh¸ch, nÕu cã kÕt nèi th× xö lý b»ng c¸ch ®äc tËp tin .html cña trang Web vµ göi néi dung trang Web vÒ m¸y kh¸ch sau ®ã th× ®ãng kÕt nèi l¹i. Toµn bé ch­¬ng tr×nh Webserver cña ta sÏ ®­îc x©y dùng tõ nh÷ng líp sau: - JavaWebServer Líp ch­¬ng tr×nh chÝnh. - JavaWebServerThread Líp xö lý tõng kÕt nèi riªng biÖt tõ phÝa m¸y kh¸ch. - RequesData Líp tiÕp nhËn vµ xö lý c¸c yªu cÇu do m¸y kh¸ch ®­a ®Õn - ServerInputStream Líp xö lý luång nhËp dïng ®Ó ®äc d÷ liÖu do m¸y kh¸ch göi ®Õn - ServerOutputStream Líp xö lý luång xuÊt dïng ®Ó göi d÷ liÖu (hay néi dung trang Web) vÒ cho m¸y kh¸ch. - ServerConfiguration Líp nµy ®äc vµ xö lý c¸c thiÕt bÞ lËp cÊu h×nh cÇn thiÕt cho ch­¬ng tr×nh Webserver. Logger Líp nµy dïng ®Ó kÕt xuÊt th«ng b¸o ra mµn h×nh hoÆc ra m¸y tËp tin. D­íi ®©y ta sÏ x©y dùng dÇn dÇn c¸c líp cÇn thiÕt cho ch­¬ng tr×nh JavaWebserver vµ sau ®ã sÏ kÕt hîp chóng l¹i nh­ mét ch­¬ng tr×nh duy nhÊt. §Ó dÔ qu¶n lý h·y t¹o thªm th­ môc con C:\Network\Webserver, tÊt c¶ c¸c líp ®­îc thiÕt kÕ d­íi ®©y sÏ ®­îc l­u tr÷ vµ biªn dÞch trong th­ môc nµy. 1. X©y dùng líp Logger Trong qu¸ tr×nh giao tiÕp víi m¸y kh¸ch ch­¬ng tr×nh Webserver cña ta cã nhu cÇu th­êng xuyªn ph¶i xuÊt ra c¸c th«ng b¸o ®Ó theo dâi kÕt qu¶ vµ ngµy giê thùc hiÖn nh÷ng giao dÞch víi m¸y kh¸ch. Líp Logger cung cÊp hai ph­¬ng thøc chÝnh lµ writeMsg dïng ®Ó xuÊt ra chuçi th«ng b¸o kÌm theo ngµy th¸ng. Th«ng b¸o cã thÓ xuÊt ra tËp tin, mµn h×nh hay c¶ hai tuú cÊu h×nh mµ ta thiÕt lËp trong lóc khëi t¹o (Trong thùc tÕ c¸c ch­¬ng tr×nh Webserver thËt sù th­êng xuÊt ra rÊt nhiÒu th«ng tin ®Ó theo dâi nh­ ngµy giê kÕt nèi, ngµy giê chÊm døt, lçi trong qu¸ tr×nh truy xuÊt … tÊt c¶ nh÷ng th«ng tin nµy cùc kú quan träng ®Ó c¸c nhµ qu¶n trÞ m¹ng biÕt theo dâi vµ chuÈn ®o¸n lçi.) VÝ dô: Logger.Java public class Logger { public String logFile; public b«lean EchoLogToConsole = true; public BufferedWriter writer = null; // Ph­¬ng thøc khëi dùng dïng c¸c th«ng sè m¹c ®Þnh public Logger ( ) { } /* Ph­¬ng thøc khëi dùng cho biÕt tªn tËp tin ®Ó ®­a c¸c th«ng b¸o ra, Echo cho biÕt sau khi ®· ®­a th«ng b¸o vµo tËp tin xong cã cÇn hiÓn thÞ ra mµn h×nh hay kh«ng*/ public Logger (String fname, boolean Echo) { logFile = fname; EchoLogToConsole = Echo; try { Writer = new BufererdWriter (new Filewriter (fname,true)); }catch (IOException ex) { } } // Ph­¬ng thøc nµy x©y dùng ®Ó ghi ra mét th«ng b¸o public synchronized void writeMsg (String msg) { writeLog (" "+msg) ; } // Ph­¬ng thøc nµy ®Ó ghi ra mét th«ng b¸o ra tËp tin hoÆc c¶ mµn h×nh void writeLog ( String msg) { if (writer!=null) { try { writer.write (msg) ; writer.newLine ( ) ; write.flush ( ). } if (EchoLogToConsole) System.out.println (msg) ; } } Biªn dich ch­¬ng tr×nh: C:/Network/Webserver>java Logger.java 2. X©y dùng líp ServerConfiguration ThiÕt lËp cÊu h×nh ban ®Çu cho m¸y chñ còng lµ b­íc kh¶ quan träng. §Ó linh ®éng ta cho phÐp cµi ®Æt c¸c th«ng sè cÊu h×nh ban ®Çu cho ch­¬ng tr×nh Webserver trong tËp tin (t­¬ng tù c¸c tËp tin .ini cña Windows). Líp ServerConfiguaration nµy sÏ chÞu tr¸ch nhiÖm ®äc vµ ph©n tÝch néi dung cña tËp tin cÊu h×nh. CÊu h×nh tèi thiÓu mµ ta cÇn thiÕt lËp bao gåm nh÷ng th«ng sè sau: * serverPort: sè hiÖu cæng ®Ó c¸c m¸y kh¸ch kÕt nèi vµo. * logFile: tªn tËp tin ®Ó xuÊt ra c¸c th«ng b¸o theo dâi. * EchoLogToConsole: cê tr¹ng th¸i cho phÐp in th«ng b¸o ra mµn h×nh hay kh«ng. defaultFile: tªn tËp tin html ®­îc dïng lµm trang chñ mÆc ®Þnh. * serverRoot: ®­êng dÉn ®­îc cäi lµ th­ môc gèc trªn m¸y chñ khi c¸c m¸y kh¸ch truy cËp vµo. Khi yªu cÇu mét trang Web tõ m¸y chñ ta th­êng ®¸nh vµo ®Þa chØ ®Þnh vÞ URL ch¼ng h¹n: khi ®ã tËp tin hotnews . htm trªn m¸y chñ sÏ ®­îc cµi ®Æt trong mét th­ môc ¸nh x¹ ®­îc coi lµ th­ môc gèc cña m¸y chñ khi c¸c m¸y kh¸ch truy cËp vµo. VÝ dô trªn m¸y chñ my.testing.server ta ¸nh x¹ th­ môc C:\Webserver\Webroot lµm th­ môc gèc vµ néi dung th­ môc nµy nh­ sau: C:\Webserver\Webroot index.htm hotnews.htm BEANS newBeans.htm JFC.htm Th­ môc C: \Webserver\webroot bao gåm 2 tËp tin .html lµ index.html vµ hotnews.html (cßn ®­îc coi lµ 2 trang Web) cïng víi mét th­ môc con BEANS bao gåm 2 tËp tin .html kh¸c lµ newBeans.html vµ JFC.htm. NÕu ®Æt tËp tin hoÆc mÆc ®Þnh (deauFile) trang Web tõ m¸y chñ vµ nhËn vÒ c¸c kÕt qu¶ nh­ sau: * http ://my,testing.server Tr¶ vÒ trang index.htm (tËp tin index.htm ®­îc chØ ®Þnh lµ trang chñ) * Tr¶ vÒ trang index.htm * Tr¶ vÒ trang JFC.htm * Tr¶ vÒ trang newBeans.htm TËp tin cÊu h×nh cña ta lµ mét tËp tin v¨n b¶n cã tªn lµ webserver.ini víi néi dung nh­ sau: # JavaWebserver Configuration File # Set default port to 6789 instead of using port 80 serverPort 6789 # Set the server root to C: \Network\webserver\ serverRoot C:\Network\webser\ # Set the default file to index.htm defauFile index.htm # Set log file to log.txt logFile log.txt #Disable Echo to consol EchoLogToConsole false D­íi ®©y lµ líp ServerConfiguration dïng ®Ó ®äc vµ ph©n tÝch néi dung tËp tin cÊu h×nh cho ch­¬ng tr×nh Webserver cña ta sau nµy: 3. X©y dùng líp RequestData: §èi t­îng RequestData ®­îc gäi bëi líp ServerInputStream (ta sÏ thiÕt kÕ líp nµy sau) dïng ®Ó l­u c¸c yªu cÇu mµ m¸y kh¸ch göi ®Õn theo ®Þnh d¹ng chuçi. RequesData cung cÊp ba ph­¬ng thøc: * isGetMethod ®Ó x¸c ®Þnh xem yªu cÇu mµ m¸y kh¸ch göi ®Õn cã ph¶i lµ muèn lÊy vÒ mét trang Web hay kh«ng (nÕu lµ yªu cÇu truy xuÊt trang Web th× dßng ®Çu tiªn cña d÷ liÖu yªu cÇu göi ®Õn ph¶i ch­¸ chuçi "GET") * getFileName dïng ®Ó lÊy vÒ tªn vµ ®­êng dÉn ®Çy ®ñ trá ®Õn tËp tin trang Web mµ m¸y kh¸ch yªu cÇu. * writeToLog dïng ®Ó xuÊt tÊt c¶ c¸c yªu cÇu cña m¸y kh¸ch ra tËp tin log dïng ®Ó theo dâi (sö dông ®èi t­îng Logger ®· thiÕt kÕ tr­íc ®©y). 4. X©y dùng líp ServerInputStream ServerInputStream lµ mét bé läc dïng tiÕp nhËn tÊt c¶ d÷ liÖu (hay yªu cÇu) so m¸y kh¸ch göi ®Õn vµ ®­a vµo ®èi t­îng RequesData. Sau nµy ta sÏ sö dông ph­¬ng thøc getRequesData cña líp ServerInputStream ®Ó lÊy vÒ ®èi t­îng RequestData thÓ hiÖn c¸c yªu cÇu do m¸y kh¸ch göi ®Õn. 5. X©y dùng líp ServerOutputStream ServerOutputStream lµ mét bé läc dïng xö lý d÷ liÖu (hay néi dung trang Web) tr­íc khi göi tr¶ kÕt qu¶ vÒ cho m¸y kh¸ch. Ch­¬ng tr×nh Webserver cña ta kh«ng lµm g× c¶ ngoµi viÖc hç ph­¬ng thøc println ®Ó cã thÓ ghi d÷ liÖu göi ®i d­íi d¹ng tõng chuçi. L­u ý: C¸c ch­¬ng tr×nh Webserver rÊt ®a d¹ng vµ thËt ra còng kh«ng h¼n lµ m¸y kh¸ch yªu cÇu mét tËp tin html th× b¾t buéc ch­¬ng tr×nh Webserver ph¶i tr¶ vÓ tËp tin html theo yªu cÇu. Nh÷ng ch­¬ng tr×nh trªn m¸y chñ hiÖn nay nh­ Active Server Page cña Microsoft ch¼ng h¹n cung cÊp thªm kh¶ n¨ng xö lý tr­íc khi chuyÓn thµnh tËp tin v¨n b¶n .asp lµ h×nh thøc më réng cña tËp tin html ë d¹ng lËp tr×nh ®­îc, khi tr×nh duyÖt (browser) cña m¸y kh¸ch yªu cÇu chuyÓn vÒ néi dung mét tËp tin html lµ kÕt qu¶ sau qu¸ tr×nh xö ly. Tr×nh duyÖt ë m¸y kh¸ch sÏ nhËn ®­îc tËp tin html nh­ lµ mét trang Web b×nh th­êng (chø kh«ng ph¶i tËp tin .asp nh­ ®· yªu cÇu). 6. X©y dùng líp JavaWebServerThread Ch­¬ng tr×nh Webserver cña ta ph¶i cã kh¶ n¨ng truy t×m vµ tr¶ vÒ trang Web cïng mét lóc cho nhiÒu m¸y kh¸ch kh¸c nhau kÕt nèi vµo. §Ó ®¹t ®­îc yªu cÇu nµy ng­êi ta x©y dùng líp JavaWebServerThread nh­ lµ mét ph©n tuyÕn (Thread) cã kh¶ n¨ng xö lý yªu cÇu cña tõng m¸y kh¸ch riªng rÏ. Khi nhËn ®­îc kÕt nèi vµ yªu cÇu truy t×m trang Web tõ mét m¸y kh¸ch, ch­¬ng tr×nh chÝnh sÏ giao c«ng viÖc nµy cho mét ph©n tuyÕn JavaWebServerThread chÞu tr¸ch nhiÖm xö lý vµ göi kÕt qu¶ vÒ cho m¸y kh¸ch ®· yªu cÇu. 7. X©y dùng JavaWebServer Ch­¬ng tr×nh Webserver coi nh­ ®· hoµn tÊt víi c¸c líp cÇn thiÕt. D­íi ®©y ta sÏ kÕt hîp c¸c ®èi t­îng cô thÓ tõ nh÷ng líp trªn l¹i víi nhau thµnh ch­¬ng tr×nh m¹ng cña JavaWebServer ch¹y ®­îc thùc thô. Ch­¬ng tr×nh chÝnh cña JavaWebserver sÏ thùc hiÖn nh÷ng c«ng viÖc sau: * §äc vµ xö lý tËp tin cÊu h×nh nÕu cã (cßn kh«ng sÏ dïng c¸c gi¸ trÞ mÆc ®Þnh cña ®èi t­îng ServerConfiguration). * Khëi t¹o ®èi t­îng ServerSocket ®Ó l¾ng nghe c¸c kÕt nèi tõ phÝa m¸y kh¸ch göi ®Õn. * Dïng vßng lÆp liªn tôc l¾ng nghe c¸c kÕt nèi tõ m¸y kh¸ch. NÕu cã kÕt nèi x¶y ra th× t¹o mét phÇn tuyÕn JavaWebServerThread vµ giao cho nã xö lý yªu cÇu cña m¸y kh¸ch. KÕt luËn Sau bèn n¨m häc tËp t¹i tr­êng §¹i häc Më Hµ Néi, ®­îc sù gióp ®ì cña c¸c thÇy c« gi¸o, ®­îc sù ph©n c«ng cña nhµ tr­êng vµ Khoa §iÖn tö ViÔn th«ng em ®· nhËn vµ lµm ®å ¸n tèt nghiÖp víi ®Ò tµi: "Tæng quan vÒ m¹ng m¸y tÝnh, m¹ng Internet vµ dÞch vô E-mail". C«ng nghÖ m¸y tÝnh trªn thÕ giíi hiÖn nay ®· cã nh÷ng b­íc tiÕn dµi vµ næi bËt lµ m¹ng quèc tÕ Internet cã rÊt nhiÒu n­íc tham gia ®¨ng ký. Víi nèi m¹ng gi÷a c¸c quèc gia lµm cho viÖc trao ®æi th«ng tin d÷ liÖu trë lªn dÔ dµng, nhanh chãng vµ kinh tÕ. ViÖt Nam cïng b¾t ®Çu cã chÝnh s¸ch cho viÖc tham gia vµo m¹ng Internet toµn cÇu, vÊn ®Ò nµy rÊt cã lîi cho viÖc ph¸t triÓn kinh tÕ. Víi sù ph¸t triÓn cña c«ng nghÖ th«ng tin vµ nhu cÇu x· héi, danh s¸ch c¸c dÞch vô th«ng tin trªn Internet ®ang ngµy cµng mét dµi thªm víi sù ®ãng gãp s¶n phÈm cña nhiÒu nhµ cung cÊp dÞch vô (Service Provider) kh¸c. Th­ ®iÖn tö lµ mét trong nh÷ng dÞch vô th«ng tin phæ biÕn nhÊt trªn Internet. Tuy nhiªn, kh¸c víi c¸c dÞch vô m¸y göi th­ vµ m¸y nhËn th­ kh«ng cÇn ph¶i liªn tôc trùc tiÕp víi nhau ®Ó thùc hiÖn viÖc chuyÓn th­. DÞch vô th­ ®iÖn tö cho phÐp b¹n göi vµ nhËn nh÷ng th«ng ®iÖp tõ m¸y tÝnh nµy ®Õn m¸y tÝnh kh¸c mét c¸ch nhanh chãng, hiÖu qu¶ vµ kinh tÕ. §iÒu quan träng lµ lµm thÕ nµo mµ E-mail khiÕn cho mäi ng­êi dÏ dµng liªn hÖ víi b¹n. §å ¸n nµy em ®· ®Ò cËp mét phÇn nhá cña vÊn ®Ò cÊp b¸ch cña th«ng tin hiÖn nay. Em tin ngµy mét ngµy kh«ng xa E-mail sÏ kh«ng cßn xa l¹ víi ng­êi d©n, c«ng nghÖ th«ng tin viÔn th«ng cña n­íc ViÖt Nam sÏ ®­îc s¸nh vai víi c¸c n­íc tiªn tiÕn. Hµ néi, ngµy…th¸ng…n¨m 2002 Phô lôc c¸c tõ viÕt t¾t ---- c ---- ARD - Address Resolution Protocol AU - Access Unit DSN - Domain name System DTP - Data Tranfer Protocol ESMTP - extender SMTP GAN - Global Area Network UDP - User Datagram Protocol UA - User Agent URL - Uniform Resource Location MS - Message MTA - Message Transfer Agent MTS - Message Transder System MHE - Message Hendling Evivonmion TCP - Transmision Control Protocol IP - Internet Protocol ICMP - Internet Control Message Protocol IPM - Interpersonol Message YD - Yellow Page RIP - Routing Information Protocol SMTP - Simple Mail Transfer Protocol SNMP - Simple Network Management Protocol NIS - Network Information Server NVT - Network Vitual Terminal LAN - Local Area Network GAN - Metropolitan Area Network HTML - Hypertext Mark Language POP 3 - Post Office Protocol Version 3 PI - Protocol Interpreter ESMTP - Extender SMTP tµi liÖu tham kh¶o chÝnh ------- & ------- 1. M¹ng m¸y tÝnh vµ c¸c hÖ thèng më TS. NguyÔn Thóc H¶i 2. Internetworking with TCP/IP Douglas E.Comer 3. T¹p chÝ B­u chÝnh viÔn th«ng, Hµ néi 9/2001 4. M¹ng m¸y tÝnh NguyÔn Gia HiÓu 5. C¸c kü x¶o lËp tr×nh víi Java NguyÔn Ph­¬ng Lan Hoµng Thóc H¶i 6. LËp tr×nh Java Ths. Lª Phông Long 7. LËp tr×nh Java nh­ thÕ nµo? Hoµng Ngäc Giao Môc lôc ---- c ---- Trang Lêi nãi ®Çu 1 Ch­¬ng I: M¹ng m¸y tÝnh 2 1.1 KiÕn tróc m¹ng 2 1.2 Ph©n lo¹i m¹ng m¸y tÝnh 2 1.3 KiÕn tróc ph©n tÇng 3 a. M« h×nh 7 tÇng OSI 4 b. M« h×nh TCP/IP 5 Ch­¬ng II: M¹ng Internet 8 2.1 Internet lµ g×? 8 2.2 C¸c dÞch vô trªn Internet vµ kiÕn tróc cña c¸c dÞch vô 8 1. DÞch vô tªn miÒn (SNS) 8 2. §¨ng nhËp tõ xa Telnet 9 3. TruyÒn tÖp (FTP) 11 4. Th­ ®iÖn tö (Electronic Mail) 12 5. Nhãm tin (News groups) 13 6. T×m kiÕm tÖp (Archie) 14 7. Tra cøu th«ng tin theo thùc ®¬n (Gopher) 14 8. T×m kiÕm th«ng tin theo chØ sè (WAI) 14 9. T×m kiÕm th«ng tin dùa trªn siªu v¨n b¶n 15 2.3 Giíi thiÖu vÒ Website vµ cÊu tróc mét Website 15 ch­¬ng III: øng dông dÞch vô th­ ®iÖn tö 17 3.1 Giíi thiÖu Internet Mail 17 3.1.1 C¸c thµnh phÇn cña m¹ng E-mail 41 3.2 Ho¹t ®éng cña th­ ®iÖn tö 19 3.2.1 CÊu tróc cña mét bøc E-mail 12 3.3.3 Tãm t¾t nh÷ng chøc n¨ng th«ng dông cña E-mail 34 3.3 KiÕn tróc x©y dùng th­ ®iÖn tö 12 3.4 KiÕn tróc chung cña Client/Server 12 3.5 C¸c nghi thøc truyÒn nhËn 12 3.5.1 Giao thøc SMTP 12 a. Giíi thiÖu 12 b. M« h×nh SMTP 12 c. Kh¸i qu¸t 12 3.5.2 Giao thøc POP 3 (Post Off ice Protocol Version 3) 22 a. Giíi thiÖu 34 b. Thao t¸c c¬ b¶n 12 c. Tr¹ng th¸i x¸c nhËn (Authrization state) 54 3.5.3 C¸c chuÈn truyÒn kh¸c 13 Ch­¬ng IV: C«ng cô lËp tr×nh 67 4.1 Kh¸i niÖm vÒ Java 67 4.2 Nguån gèc cña Java 56 4.3 T¹i sao lËp tr×nh b»ng Java 45 4.4 Java lµ ng«n ng÷ h­íng ®èi t­îng 65 4.4.1 Java lµ ng«n ng÷ lËp tr×nh Web 65 4.5 CÊu tróc ch­¬ng tr×nh Java 75 4.5.1 Líp vµ ®èi t­îng 76 A. Nh÷ng kh¸i niÖm cña lËp tr×nh h­íng ®èi t­îng 45 1. ThÕ giíi h­íng ®èi t­îng 87 2. Líp 54 4.6 M« h×nh Client/Server 65 4.6.1 Giao tiÕp trªn m¹ng theo m« h×nh kh¸ch/chñ 56 4.6.2 M« h×nh kh¸ch/chñ vµ m« h×nh ph©n tÇng 78 A. Socket 78 B. LËp tr×nh m¹ng th«ng qua Socket 46 1. Xö dông Socket ë Client 76 2. Xö dông Socket ë Server 17 3. Giao tiÕp gi÷a Client/Server 87 4.7 X©y dùng c¸c ch­¬ng tr×nh ë m¸y kh¸ch (Client) 68 4.7.1 C¸c ch­¬ng tr×nh ch¹y trªn m¸y kh¸ch (Client) 68 A. X©y dùng ch­¬ng tr×nh ReadWebPage 56 4.8 X©y dùng c¸c ch­¬ng tr×nh ë m¸y chñ (Server) 97 4.8.1 ThiÕt kÕ ch­¬ng tr×nh WebServer 46 1. X©y dùng líp Logger 67 2. X©y dùng líp ServerConfiguration 87 3. X©y dùng líp RequesData 54 4. X©y dùng líp ServerInputStream 76 5. X©y dùng líp ServerOutputStream 78 6. X©y dùng líp JavaWebServerThread 54 7. X©y dùng líp WebServer 57 KÕt luËn phô lôc: C¸c tõ viÕt t¾t tµi liÖu tham kh¶o Môc lôc ViÖn §¹i häc më Hµ Néi Khoa §IÖn Tö - Th«ng Tin KKKKKKKK §å ¸n tèt nghiÖp §Ò tµI: øng dông dÞch vô th­ ®iÖn tö Gi¸o viªn h­íng dÉn : Ths. NguyÔn Thanh B×nh Sinh viªn thùc hiÖn : NguyÔn ThÞ Hång HuÕ Líp : 98-04 Application Presentation Session Transport network Data link physical øng dông tr×nh diÔn phiªn Giao vËn M¹ng liªn kÕt d÷ liÖu vËt lý HÖ thèng më A HÖ thèng më B Giao thøc tÇng 7 Giao thøc tÇng 6 Giao thøc tÇng 5 Giao thøc tÇng 4 Giao thøc tÇng 3 Giao thøc tÇng 2 Giao thøc tÇng 1 §­êng truyÒn vËt lý 7 6 5 4 3 2 1 7 6 5 4 3 2 1 H×nh vÏ : M« h×nh OSI 7 tÇng Hµ Néi 2- 2002

Các file đính kèm theo tài liệu này:

  • docDAN333.doc