Đề tài Xây dựng ứng dụng Webmail

Tài liệu Đề tài Xây dựng ứng dụng Webmail: MỤC LỤC LỜI CẢM ƠN Trước hết tôi xin chân thành cảm ơn các thầy cô giáo khoa Đại học Đại Cương của trường Đại học Thuỷ Sản Nha Trang và khoa Công Nghệ Thông Tin trường Đại học Bách Khoa Hà Nội đã trang bị cho tôi những kiến thức cơ bản cần thiết trong những năm học vừa qua để tôi có thể thực hiện tốt cuốn đồ án này. Em xin chân thành cảm ơn thầy Văn Thế Minh đã tận tình giúp đỡ và hướng dẫn em hoàn tất cuốn đồ án này. Ngoài ra tôi cũng xin cảm ơn tất cả bạn bè đã giúp đỡ tôi trong suốt quá trình thực hiện đồ án. Mặc dù đã rất cố gắng, nhưng trong khoảng thời gian cho phép cũng như những hạn chế về kiến thức nên cuốn đồ án này của tôi không thể tránh khỏi những thiếu sót. Chính vì vậy, tôi rất mong nhận được sự góp ý của các thầy cô giáo cũng như bạn bè gần xa và những cá nhân hay tổ chức có quan tâm đến lĩnh vực được trình bày trong...

doc92 trang | Chia sẻ: hunglv | Lượt xem: 1042 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Đề tài Xây dựng ứng dụng Webmail, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
MUÏC LUÏC LÔØI CAÛM ÔN Tröôùc heát toâi xin chaân thaønh caûm ôn caùc thaày coâ giaùo khoa Ñaïi hoïc Ñaïi Cöông cuûa tröôøng Ñaïi hoïc Thuyû Saûn Nha Trang vaø khoa Coâng Ngheä Thoâng Tin tröôøng Ñaïi hoïc Baùch Khoa Haø Noäi ñaõ trang bò cho toâi nhöõng kieán thöùc cô baûn caàn thieát trong nhöõng naêm hoïc vöøa qua ñeå toâi coù theå thöïc hieän toát cuoán ñoà aùn naøy. Em xin chaân thaønh caûm ôn thaày Vaên Theá Minh ñaõ taän tình giuùp ñôõ vaø höôùng daãn em hoaøn taát cuoán ñoà aùn naøy. Ngoaøi ra toâi cuõng xin caûm ôn taát caû baïn beø ñaõ giuùp ñôõ toâi trong suoát quaù trình thöïc hieän ñoà aùn. Maëc duø ñaõ raát coá gaéng, nhöng trong khoaûng thôøi gian cho pheùp cuõng nhö nhöõng haïn cheá veà kieán thöùc neân cuoán ñoà aùn naøy cuûa toâi khoâng theå traùnh khoûi nhöõng thieáu soùt. Chính vì vaäy, toâi raát mong nhaän ñöôïc söï goùp yù cuûa caùc thaày coâ giaùo cuõng nhö baïn beø gaàn xa vaø nhöõng caù nhaân hay toå chöùc coù quan taâm ñeán lónh vöïc ñöôïc trình baøy trong cuoán ñoà aùn naøy. Haø Noäi, thaùng 5 naêm 2003 Nguyeãn Xuaân Thanh LÔØI NOÙI ÑAÀU Ngaøy nay vôùi söï phaùt trieån maïnh meõ cuûa tin hoïc vaø coâng ngheä Internet, haàu nhö moïi ngöôøi ñeàu thaáy roõ lôïi ích maø caùc dòch vuï do maïng Internet mang laïi. Dòch vuï thö ñieän töû goïi taét laø Email laø moät trong nhöng dòch vuï ñöôïc söû duïng nhieàu nhaát treân Internet hieän nay. Dòch vuï naøy cho pheùp caùc caù nhaân hay toå chöùc trao ñoåi thö vôùi nhau thoâng qua maïng Internet. Nhieàu ngöôøi söû duïng Internet chæ ñeå duøng dòch vuï naøy. Thoâng thöôøng, khi söû duïng dòch vuï thö tín ñieän töû, ngöôøi söû duïng thöôøng ít khi quan taâm xem heä thoáng beân trong ñaõ thöïc hieän nhö theá naøo. Vì vaäy, hoï ( ngöôøi söû duïng) môùi chæ thaáy ñöôïc moät nöûa cuûa öùng duïng dòch vuï Email vaø phaàn öùng duïng ñoù ñöôïc goïi laø Mail Client, hay laø söû duïng dòch vuï thö tín maùy traïm. Nhaèm muïc ñích hieåu roõ hôn veà hoaït ñoäng beân trong cuûa öùng duïng Email ôû phaàn cung caáp dòch vuï maø thöôøng ñöôïc goïi laø Mail Server, trong cuoán ñoà aùn naøy toâi xin trình baøy moät caùch cô baûn heä thoáng phuïc vuï vieäc truyeàn thö tín ñieän töû treân cô sôû tìm hieåu veà caùc moâ hình truyeàn thoâng thö tín, caùc giao thöùc truyeàn thoâng chuaån, caùc hoaït ñoäng cuûa moät heä Mail Server. Vì thôøi gian coù haïn vaø coù raát nhieàu caùc vaán ñeà coù lieân quan, do ñoù ñoà aùn naøy chæ trình baøy nhöõng vaán ñeà cô baûn nhaát veà dòch vuï thö tín ñieän töû vaø caøi ñaët moät chöông trình mang tính thöû nghieäm do dòch vuï thö tín ñieän töû maø thoâi. PHAÀN 1 : CÔ SÔÛ LYÙ THUYEÁT CHÖÔNG 1 : GIÔÙI THIEÄU CHUNG VEÀ INTERNET VAØ MOÄT SOÁ GIAO THÖÙC TRUYEÀN THOÂNG TREÂN INTERNET 1.1. GIÔÙI THIEÄU CHUNG VEÀ INTERNET M¹ng Internet lµ mét tËp hîp gåm hµng v¹n hÖ m¹ng trªn kh¾p thÕ giíi, ®­îc ph¸t triÓn vµo thËp kû b¶y m­¬i. Sè l­îng m¸y tÝnh nèi m¹ng vµ sè l­îng ng­êi truy cËp vµo m¹ng Internet trªn toµn thÕ giíi ®ang ngµy cµng t¨ng lªn nhanh chãng, ®Æc biÖt tõ n¨m 1993 trë ®i. M¹ng Internet kh«ng chØ cho phÐp chuyÓn t¶i th«ng tin nhanh chãng mµ cßn gióp cung cÊp th«ng tin, nã còng lµ diÔn ®µn vµ lµ th­ viÖn toµn cÇu ®Çu tiªn. M¹ng Internet cã xuÊt xø n¨m 1969 tõ m¹ng m¸y tÝnh toµn côc ARPANET do c¬ quan qu¶n lý c¸c dù ¸n nghiªn cøu c¸c c«ng tr×nh nghiªn cøu khoa häc tiªn tiÕn thuéc Bé Quèc phßng Mü (US Defense’s Advance Research Projects Agency - gäi t¾t lµ DARPA) tµi trî. Tõ gi÷a n¨m 1970, trung t©m DARPA h­íng tíi m¹ng Internet víi kü thuËt chuyÓn m¹ch gãi qua m¹ng v« tuyÕn vµ th«ng tin vÖ tinh. N¨m 1980, DARPA thö nghiÖm dïng giao thøc TCP/IP vµ ®· ®­îc c¸c tr­êng ®¹i häc ë Mü ghÐp nèi víi hÖ ®iÒu hµnh UNIX BSD (Berkely Software Distribution). HÖ ®iÒu hµnh UNIX lµ hÖ ph¸t triÓn m¹nh víi rÊt nhiÒu c«ng cô hç trî vµ ®¶m b¶o c¸c phÇn mÒm øng dông cã thÓ chuyÓn qua l¹i trªn c¸c hä m¸y kh¸c nhau (m¸y mini, m¸y tÝnh lín vµ hiÖn nay lµ m¸y vi tÝnh). Bªn c¹nh ®ã hÖ ®iÒu hµnh UNIX BSD cßn cung cÊp nhiÒu thñ tôc Internet c¬ b¶n, ®­a ra kh¸i niÖm Socket vµ cho phÐp ch­¬ng tr×nh øng dông th©m nhËp vµo Internet mét c¸ch dÔ dµng. CÊu tróc m¹ng Internet gåm cã: ¨ TÇng øng dông: TELNET, FTP, SMTP; ¨ TÇng giao vËn: TCP, UDP; ¨ TÇng Internet: Internet Protocol; ¨ TÇng m¹ng: X.25, Ethernet, FDDI. . .; ¨ TÇng vËt lý: lµ c¸c m«i tr­êng truyÒn tin kh¸c nhau. 1.2. HOÏ GIAO THÖÙC TCP/IP TCP/IP lµ hä cña c¸c giao thøc ®­îc sö dông cho viÖc truyÒn th«ng m¸y tÝnh. C¸c ch÷ c¸i ®­îc viÕt t¾t bëi c¸c tõ (Transmission Control Protocol/Internet Protocol), hai giao thøc nµy cã c¸ch biÓu diÔn kh¸c nhau, ng­êi ta Ýt khi sö dông víi c¸i tªn ®Çy ®ñ cña hai giao thøc nµy. Th­êng c¸c giao thøc ®­îc nhãm l¹i thµnh c¸c hä (®«i khi cßn ®­îc gäi lµ c¸c suites hay c¸c stacks). C¸c giao thøc nµo ®­îc nhãm l¹i víi nhau th­êng ®­îc x¸c ®Þnh bëi c¸c bé cµi ®Æt cña giao thøc. Hä giao thøc TCP/IP bao gåm c¸c giao thøc nh­ lµ IP (Internet Protocol) , ARP (Address Resolution Protocol), ICMP (Internet Control Message Protocol), UDP (User Datagram Protocol), TCP (Transport Control Protocol), RIP (Routing Information Protocol), Telnet, SMTP (Simple Mail Transfer Protocol), DNS (Domain Name System) vµ mét sè c¸c giao thøc kh¸c. H×nh bªn d­íi m« t¶ kiÕn tróc cña m¹ng TCP/IP cã so s¸nh víi m« h×nh tham chiÕu OSI ®Ó chóng ta h×nh dung ®­îc sù t­¬ng øng vÒ chøc n¨ng cña c¸c tÇng. TCP/IP Protocol Suite OSI Model Layers Application Layer Presentation Layer Session Layer Transport Layer Network Layer Data Link Layer Physical Layer TCP/IP Protocol Architecture Layers Application Layer Host-to-Host Transport Layer Internet Layer Network Interface Layer Telnet FTP SMTP DNS RIP SNMP TCP UDP IP ARP IGMP ICMP Ethernet Token Ring Frame Relay ATM So s¸nh c¸c kiÕn tróc ISO vµ TCP/IP TCP/IP thùc chÊt lµ mét hä giao thøc cïng lµm viÖc víi nhau ®Ó cung cÊp ph­¬ng tiÖn truyÒn th«ng liªn m¹ng. Trong phÇn nµy chóng ta sÏ xem xÐt giao thøc IP, giao thøc TCP vµ mét sè øng dông ë tÇng trªn nh­ Telnet, FTP, DNS, SMTP. . . 1.3. GIAO THÖÙC LIEÂN MAÏNG IP Môc ®Ých chÝnh cña IP lµ cung cÊp kh¶ n¨ng kÕt nèi c¸c m¹ng con thµnh liªn m¹ng ®Ó truyÒn d÷ liÖu. Vai trß cña IP t­¬ng tù vai trß cña giao thøc tÇng m¹ng trong m« h×nh OSI. IP lµ mét giao thøc kiÓu ”kh«ng liªn kÕt” (connectionless) cã nghÜa lµ kh«ng cÇn cã giai ®o¹n thiÕt lËp liªn kÕt tr­íc khi truyÒn d÷ liÖu. §¬n vÞ d÷ liÖu dïng trong IP ®­îc gäi lµ datagram, cã khu«n d¹ng chØ ra trong h×nh bªn d­íi. ý nghÜa cña c¸c tham sè nh­ sau: VER (4 bits): chØ version hiÖn hµnh cña IP ®­îc cµi ®Æt IHL (4 bits): chØ ®é dµi phÇn ®Çu (Internet Header Length) cña datagram, tÝnh theo ®¬n vÞ tõ (word = 32 bits). §é dµi tèi thiÓu lµ 5 tõ (20 bytes). Header 0 3 4 7 8 15 16 31 Khu«n d¹ng cña IP datagram VER IHL Type of Service Total Length Indentification Flags Fragment offset Time to live Protocol Header Checksum Source Address Destination Address Options + Padding Data (max: 65.535 bytes) Type of service (8 bits): ®Æc t¶ c¸c tham sè vÒ dÞch vô, cã d¹ng cô thÓ nh­ sau: 0 1 2 3 4 5 6 7 Precedence D T R Reserved trong ®ã: Precedence (3 bits): chØ thÞ vÒ quyÒn ­u tiªn göi datagram, cô thÓ lµ: 111 - Network Control (cao nhÊt) 011 - Flash 110 - Internetwork Control 010 - Immediate 101 - CRITIC/ECP 001 - Priority 100 - Flas Override 000 - Routine (thÊp nhÊt) D (Delay) (1 bit): chØ ®é trÔ yªu cÇu D = 0 ®é trÔ b×nh th­êng D = 1 ®é trÔ thÊp T (Throughput) (1 bit): chØ th«ng l­îng yªu cÇu T = 0 th«ng l­îng b×nh th­êng T = 1 th«ng l­îng cao R (Reliability) (1 bit): chØ ®é tin cËy yªu cÇu R = 0 ®é tin cËy b×nh th­êng R = 1 ®é tin cËy cao Total Length (16 bits): chØ ®é dµi toµn bé datagram, kÓ c¶ phÇn header (tÝnh theo ®¬n vÞ bytes). Indentification (16 bits): cïng víi c¸c tham sè kh¸c (nh­ Source Address vµ Destination Address) tham sè nµy dïng ®Ó ®Þnh danh duy nhÊt cho mét datagram trong kho¶ng thêi gian nã vÉn cßn trªn liªn m¹ng. Flags (3 bits): liªn quan ®Õn sù ph©n ®o¹n (fragment) c¸c datagram, cô thÓ lµ: 0 1 2 0 DF MF Bit 0: reserved - ch­a sö dông , lu«n lÊy gi¸ trÞ 0 Bit 1 (DF) = 0 (May Fragment) = 1 (Don’t Fragment) Bit 2 (MF) = 0 (Last Fragment) = 1 (More Fragment) Fragment Offset (13 bits): chØ vÞ trÝ cña ®o¹n (fragment) ë trong datagram, tÝnh theo ®¬n vÞ 64 bits, cã nghÜa lµ mçi ®o¹n (trõ ®o¹n cuèi cïng) ph¶i chøa mét vïng d÷ liÖu cã ®é dµi lµ béi sè cña 64 bits. Time to live (8 bits): qui ®Þnh thêi gian tån t¹i (tÝnh b»ng gi©y) cña datagram trong liªn m¹ng ®Ó tr¸nh t×nh tr¹ng mét datagram bÞ quÈn trªn liªn m¹ng. Thêi gian nµy ®­îc cho bëi tr¹m göi vµ ®­îc gi¶m ®i (th­êng qui ­íc lµ 1 ®¬n vÞ) khi datagram ®i qua mçi router cña liªn m¹ng. Protocol (8 bits): chØ giao thøc tÇng trªn kÕ tiÕp sÏ nhËn vïng d÷ liÖu ë tr¹m ®Ých (hiÖn t¹i th­êng lµ TCP hoÆc UDP ®­îc cµi ®Æt trªn IP). Header Checksum (16 bits): m· kiÓm so¸t lçi 16 bits theo ph­¬ng ph¸p CRC, chØ cho vïng header. Source Address (32 bits): ®Þa chØ cña tr¹m nguån. Destination Address (32 bits): ®Þa chØ cña tr¹m ®Ých. Options (®é dµi thay ®æi): khai b¸o c¸c options do ng­êi göi yªu cÇu. Padding (®é dµi thay ®æi): vïng ®Öm, ®­îc dïng ®Ó ®¶m b¶o cho phÇn header lu«n kÕt thóc ë mét mèc 32 bits. Data (®é dµi thay ®æi): vïng d÷ liÖu, cã ®é dµi lµ béi sè cña 8 bits, vµ tèi ®a lµ 65535 bytes. S¬ ®å ®Þa chØ ho¸ ®Ó ®Þnh danh c¸c tr¹m (host) trong liªn m¹ng ®­îc gäi lµ ®Þa chØ IP 32 bits (32- bit- IP address). Mçi ®Þa chØ IP cã ®é dµi 32 bits ®­îc t¸ch thµnh 4 vïng (mçi vïng 1 byte), cã thÓ ®­îc biÓu thÞ d­íi d¹ng thËp ph©n, b¸t ph©n, thËp lôc ph©n hoÆc nhÞ ph©n. C¸ch viÕt phæ biÕn nhÊt lµ dïng ký ph¸p thËp ph©n cã dÊu chÊm (dotted decimal notation) ®Ó t¸ch c¸c vïng. Môc ®Ých cña ®Þa chØ IP lµ ®Ó ®Þnh danh duy nhÊt cho mét host bÊt kú trªn liªn m¹ng. Do tæ chøc vµ ®é lín cña c¸c m¹ng con (subnet) cña liªn m¹ng cã thÓ kh¸c nhau, ng­êi ta chia c¸c ®Þa chØ IP thµnh 5 líp, ký hiÖu lµ A, B, C, D vµ E, víi cÊu tróc ®­îc chØ ra trong h×nh bªn d­íi. 0 1 7 8 15 16 23 24 31 Líp A Líp B Líp C Líp D Líp E hostid 0 netid 1 0 netid Hostid 1 1 0 netid hostid 1 1 1 0 Multicast address 1 1 1 1 0 Reserved for future use CÊu tróc cña c¸c líp ®Þa chØ IP Líp A cho phÐp ®Þnh danh tíi 126 m¹ng, víi tèi ®a 16 triÖu host trªn mçi m¹ng. Líp nµy ®­îc dïng cho c¸c m¹ng cã sè tr¹m cùc lín. Líp B cho phÐp ®Þnh danh tíi 16384 m¹ng, víi tèi ®a 65534 host trªn mçi m¹ng. Líp C cho phÐp ®Þnh danh tíi 2 triÖu m¹ng, víi tèi ®a 254 host trªn mçi m¹ng. Líp nµy ®­îc dïng cho c¸c m¹ng cã Ýt tr¹m. Líp D dïng ®Ó göi IP datagram tíi mét nhãm c¸c host trªn mét m¹ng. Líp E dù phßng ®Ó dïng trong t­¬ng lai. VÝ dô: = 10.0.0.0 (Líp A) netid = 10 = 128.3.2.3 (Líp B) netid = 128.3 hostid = 2.3 = 192.0.1.255 (Líp C) netid = 192.0.1 hostid = 255 h­íng ®Õn tÊt c¶ c¸c host 00001010 00000000 00000000 00000000 10000000 00000011 00000010 00000011 11000000 00000000 00000001 11111111 Mét ®Þa chØ cã hostid (host identifier) b»ng 0 ®­îc dïng ®Ó h­íng tíi m¹ng ®Þnh danh bëi vïng netid (network identifier). Ng­îc l¹i, mét ®Þa chØ cã vïng hostid gåm toµn sè 1 ®­îc dïng ®Ó h­íng tíi tÊt c¶ c¸c host nèi vµo m¹ng netid, vµ nÕu vïng netid còng gåm toµn sè 1 th× nã h­íng tíi tÊt c¶ c¸c host trong liªn m¹ng. Trong nhiÒu tr­êng hîp, mét m¹ng cã thÓ ®­îc chia thµnh nhiÒu m¹ng con (subnet), lóc ®ã cã thÓ ®­a thªm c¸c vïng subnetid ®Ó ®Þnh danh c¸c m¹ng con. Vïng subnet ®­îc lÊy tõ hostid, cô thÓ ®èi víi 3 líp A, B, C nh­ sau (h×nh bªn d­íi). 0 0 31 31 (Líp A) (Líp B) (Líp C) Netid Subnetid Hostid 7 8 15 16 23 24 Netid Subnetid Hostid 7 8 15 16 23 24 Netid Subnetid Hostid Bæ sung vïng subnetid CÇn l­u ý r»ng c¸c ®Þa chØ IP ®­îc dïng ®Ó ®Þnh danh c¸c host vµ m¹ng ë tÇng m¹ng cña M« h×nh OSI, vµ chóng kh«ng ph¶i lµ c¸c ®Þa chØ vËt lý (hay ®Þa chØ MAC - Media Access Control) cña c¸c tr¹m ®ã trªn mét m¹ng côc bé (Ethernet,Token Ring...). Trªn mét m¹ng côc bé nh­ vËy, hai tr¹m chØ cã thÓ liªn l¹c víi nhau nÕu chóng biÕt ®Þa chØ vËt lý cña nhau. Nh­ vËy, vÊn ®Ò ®Æt ra lµ ph¶i thùc hiÖn ¸nh x¹ gi÷a ®Þa chØ IP (32 bits) vµ ®Þa chØ vËt lý (48 bits) cña mét tr¹m. Giao thøc ARP (Address Resolution Protocol) ®· ®­îc x©y dùng ®Ó chuyÓn ®æi tõ ®Þa chØ IP sang ®Þa chØ vËt lý khi cÇn thiÕt. Ng­îc l¹i, giao thøc RARP (Reverse Address Resolution Protocol) ®­îc dïng ®Ó chuyÓn ®æi tõ ®Þa chØ vËt lý sang ®Þa chØ IP. Chó ý r»ng c¶ ARP vµ RARP ®Òu kh«ng ph¶i lµ bé phËn cña IP. IP sÏ dïng ®Õn chóng khi cÇn. Mét giao thøc kh¸c còng liªn quan trùc tiÕp ®Õn IP, ®ã lµ ICMP (Internet Control Message Protocol). Giao thøc nµy thùc hiÖn truyÒn c¸c th«ng b¸o ®iÒu khiÓn (b¸o c¸o vÒ c¸c t×nh tr¹ng lçi trªn m¹ng,...) gi÷a c¸c gateway hoÆc tr¹m cña liªn m¹ng. T×nh tr¹ng lçi cã thÓ lµ: mét datagram kh«ng thÓ tíi ®­îc ®Ých cña nã, hoÆc mét router kh«ng ®ñ bé nhí ®Öm ®Ó l­u vµ chuyÓn mét datagram,... Mét th«ng b¸o ICMP ®­îc t¹o vµ chuyÓn cho IP. IP sÏ ”bäc” (encapsulate) th«ng b¸o ®ã víi mét IP header vµ truyÒn ®Õn cho router hoÆc tr¹m ®Ých. Chóng ta cã thÓ tãm t¾t c¸c b­íc thùc hiÖn bëi mét thùc thÓ IP nh­ sau: §èi víi thùc thÓ IP ë tr¹m nguån, khi nhËn ®­îc mét primitive SEND tõ tÇng trªn , nã thùc hiÖn c¸c b­íc sau ®©y: T¹o mét IP datagram dùa trªn c¸c tham sè cña primitive SEND TÝnh checksum vµ ghÐp vµo header cña datagram. Ra quyÕt ®Þnh chän ®­êng: hoÆc lµ tr¹m ®Ých n»m trªn cïng m¹ng hoÆc mét gateway sÏ ®­îc chän cho chÆng tiÕp theo. ChuyÓn datagram xuèng tÇng d­íi ®Ó truyÒn qua m¹ng. §èi víi gateway, khi nhËn ®­îc mét datagram qu¸ c¶nh, nã thùc hiÖn c¸c ®éng t¸c sau: TÝnh checksum, nÕu bÊt cËp th× lo¹i bá datagram. Gi¶m gi¸ trÞ cña tham sè Time-to-Live. NÕu thêi gian ®· hÕt th× lo¹i bá datagram. Ra quyÕt ®Þnh chän ®­êng. Ph©n ®o¹n datagram, nÕu cÇn. KiÕn t¹o l¹i IP header, bao gåm gi¸ trÞ míi cña c¸c vïng Time-to-Live, Fragmentation vµ Checksum. ChuyÓn datagram xuèng tÇng d­íi ®Ó truyÒn qua m¹ng. Cuèi cïng, khi mét datagram ®­îc nhËn bëi thùc thÓ IP ë tr¹m ®Ých, nã sÏ thùc hiÖn c¸c c«ng viÖc sau: TÝnh checksum. NÕu bÊt cËp th× lo¹i bá datagram. TËp hîp c¸c ®o¹n cña datagram (nÕu cã ph©n ®o¹n). ChuyÓn d÷ liÖu vµ c¸c tham sè ®iÒu khiÓn lªn tÇng trªn b»ng c¸ch dïng primitive DELIVER. 1.4. GIAO THÖÙC ÑIEÀU KHIEÅN TRUYEÀN TCPbit 0 15 16 31 Source Port Destination Port Sequence Number Acknowledgment Number Data offset Reserved URG ACK PSH RST SYN FIN Window Checksum Urgent Pointer Options Padding TCP data Khu«n d¹ng cña TCP segment. TCP lµ mét giao thøc kiÓu ”cã liªn kÕt” (connection - oriented), nghÜa lµ cÇn ph¶i thiÕt lËp liªn kÕt (logic) gi÷a mét cÆp thùc thÓ TCP tr­íc khi chóng trao ®æi d÷ liÖu víi nhau. §¬n vÞ d÷ liÖu sö dông trong TCP ®­îc gäi lµ segment (®o¹n d÷ liÖu), cã khu«n d¹ng m« t¶ trong h×nh bªn d­íi. C¸c tham sè trong khu«n d¹ng trªn cã ý nghÜa nh­ sau: Source Port (16 bits): sè hiÖu cæng cña tr¹m nguån. Destination Port (16 bits): sè hiÖu cæng cña tr¹m ®Ých. Sequence Number (32 bits): sè hiÖu cña byte ®Çu tiªn cña segment trõ khi bit SYN ®­îc thiÕt lËp. NÕu bit SYN ®­îc thiÕt lËp th× Sequence Number lµ sè hiÖu tuÇn tù khëi ®Çu (ISN) vµ byte d÷ liÖu ®Çu tiªn lµ ISN+1. Tham sè nµy cã vai trß nh­ tham sè N(S) trong HDLC. Acknowledgment Number (32 bits): sè hiÖu cña segment tiÕp theo mµ tr¹m nguån ®ang chê ®Ó nhËn. NgÇm ý b¸o nhËn tèt (c¸c) segment mµ tr¹m ®Ých ®· göi cho tr¹m nguån - Tham sè nµy cã vai trß nh­ tham sè N(R) trong HDLC. Data offset (4 bits): sè l­îng tõ - 32 bit (32 bit words) trong TCP header (tham sè nµy chØ ra vÞ trÝ b¾t ®Çu cña vïng d÷ liÖu). Reserved (6 bits): dµnh ®Ó dïng trong t­¬ng lai. Control bits (c¸c bit ®iÒu khiÓn): T­ tr¸i sang ph¶i: URG: vïng con trá khÈn (Urgent Pointer) cã hiÖu lùc ACK: vïng b¸o nhËn (ACK number) cã hiÖu lùc PSH: chøc n¨ng PUSH RST: khëi ®éng l¹i (reset) liªn kÕt SYN: ®ång bé ho¸ c¸c sè hiÖu tuÇn tù (sequence number) FIN: kh«ng cßn d÷ liÖu tõ tr¹m nguån Window (16 bits): cÊp ph¸t credit ®Ó kiÓm so¸t luång d÷ liÖu (c¬ chÕ cöa sæ). §©y chÝnh lµ sè l­îng c¸c byte d÷ liÖu, b¾t ®Çu tõ byte ®­îc chØ ra trong vïng ACK number, mµ tr¹m nguån ®· s½n sµng ®Ó nhËn. Checksum (16 bits): m· kiÓm so¸t lçi (theo ph­¬ng ph¸p CRC) cho toµn bé segment (header + data). Urgent Pointer (16 bits): con trá nµy trá tíi sè hiÖu tuÇn tù cña byte ®i theo sau d÷ liÖu khÈn, cho phÐp bªn nhËn biÕt ®­îc ®é dµi cña d÷ liÖu khÈn. Vïng nµy chØ cã hiÖu lùc khi bit URG ®­îc thiÕt lËp. Options (®é dµi thay ®æi): khai b¸o c¸c Options cña TCP, trong ®ã cã ®é dµi tèi ®a cña vïng TCP data trong mét segment. Padding (®é dµi thay ®æi): PhÇn chÌn thªm vµo header ®Ó b¶o ®¶m phÇn header lu«n kÕt thóc ë mét mèc 32 bits. PhÇn thªm nµy gåm toµn sè 0. TCP data (®é dµi thay ®æi): chøa d÷ liÖu cña tÇng trªn, cã ®é dµi tèi ®a ngÇm ®Þnh lµ 536 bytes. Gi¸ trÞ nµy cã thÓ ®iÒu chØnh b»ng c¸ch khai b¸o trong vïng options. Mét tiÕn tr×nh øng dông trong mét host truy nhËp vµo c¸c dÞch vô cña TCP cung cÊp th«ng qua mét cæng (port). Mét cæng kÕt hîp víi mét ®Þa chØ IP t¹o thµnh mét socket duy nhÊt trong liªn m¹ng. DÞch vô TCP ®­îc cung cÊp nhê mét liªn kÕt logic gi÷a mét cÆp socket. Mét socket cã thÓ tham gia nhiÒu liªn kÕt víi c¸c socket ë xa kh¸c nhau. Tr­íc khi truyÒn d÷ liÖu gi÷a hai tr¹m cÇn ph¶i thiÕt lËp mét liªn kÕt TCP gi÷a chóng vµ khi kh«ng cßn nhu cÇu truyÒn d÷ liÖu th× liªn kÕt ®ã sÏ ®­îc gi¶i phãng. Còng gièng nh­ ë c¸c giao thøc kh¸c, c¸c thùc thÓ ë tÇng trªn sö dông TCP th«ng qua c¸c hµm dÞch vô nguyªn thuû (service primitives), hay cßn gäi lµ c¸c lêi gäi hµm (function calls). CHÖÔNG 2 : CÔ SÔÛ VEÀ LAÄP TRÌNH MAÏNG TREÂN MO HÌNH CLIENT/SERVER 2.1. LAÄP TRÌNH GIAO TIEÁP MAÏNG VÔÙI WINDOWS SOCKETS Windows NT lµ mét hÖ ®iÒu hµnh m¹nh, cho phÐp tËn dông tèi ®a kh¶ n¨ng cña m¸y tÝnh lo¹i 32 bit, cung øng hµng lo¹t c¸c dÞch vô m¹ng trªn m«i tr­êng Intranet vµ Internet. HiÖn nay Windows NT ®­îc sö dông t­¬ng ®èi phæ biÕn ë c¸c c¬ quan; doanh nghiÖp ViÖt Nam. Giao thøc truyÒn th«ng TCP/IP ®· ®­îc dïng bëi hÖ ®iÒu hµnh UNIX vµ m¹ng Internet, ®Ó c¸c m¸y trªn m¹ng NT cã thÓ giao tiÕp víi c¸c m¸y trªn m¹ng kh¸c, Windows NT còng cung cÊp giao thøc nµy. Ngoµi mét sè lÖnh dïng giao thøc TCP/IP ®· ®­îc viÕt s½n nh­: ftp, telnet, finger..., Windows NT cho phÐp ng­êi lËp tr×nh ph¸t triÓn c¸c øng dông khai th¸c kü thuËt TCP/IP th«ng qua mét th­ viÖn tªn lµ Windows Sockets. Cã ba lý do chÝnh ®Ó ng­êi lËp tr×nh sö dông kü thuËt TCP/IP: · Cã thÓ viÕt c¸c øng dông trªn Windows NT ®Ó nèi vµo m¹ng UNIX vµ khai th¸c c¸c dÞch vô cã s½n trªn ®ã. · T¹o ra c¸c dÞch vô trªn m¸y Windows NT ®Ó c¸c m¸y UNIX cã thÓ khai th¸c nh÷ng dÞch vô nµy. · ViÕt c¸c ch­¬ng tr×nh cho phÐp c¸c m¸y Windows NT giao tiÕp trªn hÖ thèng m¹ng Internet. 2.2. MOÄT SOÁ KHAÙI NIEÄM CÔ BAÛN 2.2.1.Ñòa chæ Internet Trong hÖ thèng m¹ng Internet, mçi m¸y ®Òu cã mét tªn vµ mét ®Þa chØ IP (còng gäi lµ ®Þa chØ Internet). VÝ dô nh­, mét m¸y NT cã tªn lµ ntsvr.csc.hcmu.vn vµ ®Þa chØ lµ 192.48.94.200. Tªn hay ®Þa chØ IP ®Òu x¸c ®Þnh duy nhÊt mét m¸y trong hÖ thèng m¹ng Internet. Khi lËp tr×nh, chóng ta cã c¸c hµm ®Ó chuyÓn ®æi tõ tªn sang ®Þa chØ IP vµ ng­îc l¹i. 2.2.2. Khaùi nieäm socket vaø port Mét socket lµ mét thiÕt bÞ truyÒn th«ng hai chiÒu t­¬ng tù nh­ tËp tin, chóng ta cã thÓ ®äc hay ghi lªn nã, tuy nhiªn mçi socket lµ mét thµnh phÇn trong mét mèi nèi nµo ®ã gi÷a c¸c m¸y trªn m¹ng m¸y tÝnh vµ c¸c thao t¸c ®äc/ghi chÝnh lµ sù trao ®æi d÷ liÖu gi÷a c¸c øng dông trªn nhiÒu m¸y kh¸c nhau. Trong giao thøc truyÒn th«ng TCP, mçi mèi nèi gi÷a hai m¸y tÝnh ®­îc x¸c ®Þnh bëi mét port, kh¸i niÖm port ë ®©y kh«ng ph¶i lµ mét cæng giao tiÕp trªn thiÕt bÞ vËt lý mµ chØ lµ mét kh¸i niÖm logic trong c¸ch nh×n cña ng­êi lËp tr×nh, mçi port ®­îc t­¬ng øng víi mét sè nguyªn d­¬ng. H×nh bªn d­íi minh häa c¸ch giao tiÕp gi÷a hai m¸y tÝnh trong giao thøc truyÒn th«ng TCP. M¸y A t¹o ra mét socket vµ kÕt buéc (bind) socket nµy víi port X (tøc lµ mét sè nguyªn d­¬ng cã ý nghÜa côc bé trong m¸y A), trong khi ®ã m¸y B t¹o mét socket kh¸c vµ mãc vµo (connect) port X trong m¸y A. socket socket M¸y A M¸y B Port HÖ thèng m¹ng C¸c socket vµ port trong mèi nèi TCP Mèi nèi 2.3. CAÙCH CAØI ÑAËT ÖÙNG DUÏNG CLIENT/SERVER TCP 2.3.1. Caùch caøi ñaët server TCP øng dông server lµm viÖc theo qui tr×nh sau ®©y: Gäi hµm socket ®Ó t¹o mét socket. Gäi hµm bind ®Ó kÕt buéc socket víi mét port, ®èi víi mçi giao thøc øng chuÈn th× sÏ cã mét h»ng sè ®­îc ®Þnh nghÜa s½n trong Winsock cho port cña giao thøc ®ã. Gäi hµm listen ®Ó chê ®Õn khi cã mét client nèi vµo port. Khi cã mét client nèi vµo th× hµm listen tr¶ ®iÒu khiÓn vÒ, øng dông server gäi hµm accept ®Ó x¸c nhËn mèi nèi cña client. Gäi c¸c hµm göi hay nhËn d÷ liÖu ®Ó trao ®æi th«ng tin víi client, vÝ dô nh­ hµm send, recv. Sau khi ®· hoµn tÊt qu¸ tr×nh trao ®æi d÷ liÖu, øng dông server gäi hµm closesocket ®Ó ®ãng socket ®· t¹o. 2.3.2. Caùch caøi ñaët client TCP øng dông client thùc hiÖn c¸c b­íc sau: Gäi hµm socket ®Ó t¹o mét socket. Gäi hµm connect ®Ó nèi vµo server. Gäi c¸c hµm göi hay nhËn d÷ liÖu ®Ó trao ®æi th«ng tin víi server, vÝ dô nh­ c¸c hµm send, recv. Sau khi ®· hoµn tÊt qu¸ tr×nh trao ®æi d÷ liÖu, øng dông client gäi hµm closesocket ®Ó ®ãng socket ®· t¹o. H×nh minh häa c¸c b­íc cÇn thiÕt ®Ó c¸c øng dông client vµ server giao tiÕp víi nhau nh­ sau: øng dông Server øng dông Client Nèi vµo port cña server T¹o mét socket KÕt buéc socket víi mét port (bind) §Æt socket ë tr¹ng th¸i chê client nèi vµo ChÊp nhËn kÕt nèi cña client ChuyÓn ®æi d÷ liÖu gi÷a client vµ server T¹o mét socket C¸c b­íc giao tiÕp gi÷a client vµ server trong giao thøc TCP CHÖÔNG 3 : MOÄT SOÁ KHAÙI NIEÄM LIEÂN QUAN ÑEÁN THÖ ÑIEÄN TÖÛ 1.1. MAILSERVER Theo moâ hình hoaït ñoäng khaùch chuû, trình chuû laø moät dòch vuï ñoùng vai troø ngöôøi chuû phuïc vuï trình khaùch. Mail Server thaät ra laø moät trình môû socket laéng nghe caùc yeâu caàu (hay leänh göûi mail) töø trình khaùch ñöa ñeán. Nhö ñaõ noùi, mail server seõ tieáp nhaän noäi dung mail, phaân phoái mail ñeán caùc trình chuû khaùc, cho pheùp trình khaùch truy caäp vaøo maùy chuû ñeå nhaän mail veà, baûo veä mail…Chính vì vaäy, tröôùc khi nhaän hay göûi mail caàn phaûi bieát ñöôïc ñòa chæ IP cuûa maùy chuû mail server. Ñòa chæ naøy thöôøng ñöôïc goïi laø mail host. Veà khaùi nieäm socket vaø ñòa chæ IP seõ ñöôïc trình baøy ôû phaàn sau. 1.2. GIAO THÖÙC GÖÛI MAIL (MAIL TRANSPORT PROTOCOL) Ñeå göûi mail ñeán maùy chuû, trình khaùch phaûi söû duïng moät giao thöùc troø chuyeän vôùi mail server. Töông töï trình duyeät duøng giao thöùc HTTP ñeå troø chuyeän vôùi trình chuû Web server. Caùc trình khaùch muoán baét tay vôùi trình chuû mail server vaø göûi mail leân maùy chuû seõ söû duïng giao thöùc SMTP (Simple Mail Transport Protocol). SMTP ñöôïc haàu heát caùc mail server treân theá gôùi söû duïng. Ñòa chæ IP cuûa maùy chuû nhaän mail göûi ñi thöôøng ñöôïc goïi laø outgoing mail address. Trình chuû thöïc hieän chöùc naêng tieáp nhaän mail theo giao thöùc SMTP goïi laø SMTP Server, trình khaùch duøng giao thöùc SMTP ñeå göûi mail ñeán trình chuû mail server goïi laø SMTP Client. 1.3.GIÔÙI THIEÄU KIEÁN TRUÙC DÒCH VUÏ THÖ ÑIEÄN TÖÛ 1.3.1. KiÕn tróc vµ c¸c dÞch vô C¸c hÖ thèng th­ ®iÖn tö th­êng bao gåm hai hÖ thèng con: c¸c t¸c nh©n ng­êi sö dông (the user agents - gäi t¾t lµ UA), nã cho phÐp chóng ta ®äc vµ göi th­, vµ c¸c t¸c nh©n truyÒn th«ng ®iÖp (the message transfer agents - gäi t¾t lµ MTA), nã lµm nhiÖm vô chuyÓn c¸c th«ng ®iÖp tõ nguån ®Õn ®Ých. C¸c UAs lµ c¸c ch­¬ng tr×nh côc bé hç trî dùa trªn ®iÒu khiÓn b»ng lÖnh, tr×nh ®¬n menu hay dïng ph­¬ng ph¸p ®å ho¹ ®Ó t­¬ng t¸c víi hÖ thèng th­ ®iÖn tö. C¸c MTAs lµ c¸c tr×nh tiÖn Ých ho¹t ®éng ë chÕ ®é nÒn (background) thùc hiÖn c¸c nhiÖm vô cÇn thiÕt nh­ tiÕp nhËn th­ ®iÖn tö vµ chuyÓn th­ qua c¸c hÖ thèng. §Æc biÖt, c¸c hÖ thèng th­ ®iÖn tö hç trî n¨m chøc n¨ng c¬ b¶n, ®­îc m« t¶ d­íi ®©y: Composition: Xö lý viÖc t¹o c¸c th«ng ®iÖp vµ tr¶ lêi. Cho phÐp bÊt cø tr×nh so¹n th¶o nµo cã thÓ ®­îc sö dông cho phÇn th©n cña th«ng ®iÖp, c¸c hÖ thèng cã thÓ tù nã ®¶m tr¸ch viÖc ®¸nh ®Þa chØ vµ chØ sè c¸c tr­êng tiªu ®Ò (header fields) ®­îc kÌm theo cïng víi mçi th«ng ®iÖp. VÝ dô nh­, khi tr¶ lêi mét th«ng ®iÖp , hÖ thèng th­ ®iÖn tö cã thÓ t¸ch ®Þa chØ cña ng­êi göi tõ c¸c th­ ®­îc göi ®Õn vµ tù ®éng chÌn nã vµo c¸c tr­êng thÝch hîp trong phÇn håi ©m (reply). Transfer: Lµm nhiÖm vô chuyÓn c¸c th«ng ®iÖp tõ ng­êi göi ®Õn n¬i ng­êi nhËn. Trong phÇn nµy, viÖc chuyÓn c¸c th«ng ®iÖp yªu cÇu ph¶i thiÕt lËp mét kÕt nèi ®Õn ®Ých (ng­êi nhËn) hay mét sè thao t¸c cña thiÕt bÞ nh­ xuÊt th«ng ®iÖp vµ kÕt thóc viÖc kÕt nèi. HÖ thèng th­ ®iÖn tö lµm viÖc nµy mét c¸ch tù ®éng mµ kh«ng cÇn cã mét sù can thiÖp nµo cña ng­êi sö dông. Reporting: Buéc ph¶i thùc hiÖn ®Ó b¸o cho ng­êi göi nh÷ng g× x¶y ra ®èi víi th«ng ®iÖp võa göi lµ ë t×nh huÊn ®· göi ®Õn ®Ých ch­a? hoÆc viÖc göi ®· bÞ huû bá? hoÆc th­ ®· bÞ l¹c?. Displaying: Nh÷ng th«ng ®iÖp göi ®Õn ®­îc yªu cÇu lµm sao ®Ó mäi ng­êi cã thÓ ®äc ®­îc th­ cña hä. §«i khi ng­êi ta yªu cÇu qu¸ tr×nh chuyÓn ®æi hay mét tr×nh hiÓn thÞ ®Æc biÖt ®Ó hç trî, vÝ dô nh­, nÕu th«ng ®iÖp cã d¹ng mét tÖp PostScript hay tiÕng nãi ®­îc sè hãa kÌm theo trong th«ng ®iÖp göi ®Õn. Disposition: Lµ b­íc cuèi cïng liªn quan ®Õn nh÷ng g× ng­êi nhËn thùc hiÖn ®èi víi th«ng ®iÖp sau khi ®· nhËn nã. Nh÷ng kh¶ n¨ng cã thÓ lµ nÐm nã ®i tr­íc khi ®äc, nÐm nã ®i sau khi ®äc, l­u nã, v ..v. Nã còng sÏ cã thÓ thu nhËn ®Ó ®äc l¹i víi c¸c th«ng ®iÖp ®· ®­îc l­u l¹i, chuyÓn tiÕp chóng hoÆc xö lý chóng b»ng nh÷ng ph­¬ng ph¸p kh¸c nhau khi ®­îc yªu cÇu cña ng­êi sö dông. Thªm vµo ®ã c¸c dÞch vô nµy, hÇu hÕt c¸c hÖ thèng th­ ®iÖn tö cung cÊp nhiÒu ®Æc tÝnh n©ng cao kh¸c nhau. Mét sè ®Æc tÝnh tiªu biÓu nh­, khi ng­êi ta muèn chuyÓn th­ hay khi hä nghÜ xa h¬n vÒ c¸c chi tiÕt vÒ thêi gian , cã lÏ hä muèn th­ cña hä ®­îc chuyÓn tiÕp, chÝnh v× thÕ mµ hÖ thèng thùc hiÖn ®iÒu nµy mét c¸ch tù ®éng. HÇu hÕt c¸c hÖ thèng cho phÐp ng­êi sö dông t¹o c¸c hép th­ (mailboxes) ®Ó l­u tr÷ c¸c th­ chuyÓn ®Õn (incoming email). C¸c lÖnh ®­îc ng­êi ta yªu cÇu t¹o vµ hñy bá c¸c hép th­, kiÓm tra c¸c néi dung hép th­, chÌn vµ xãa c¸c th«ng ®iÖp khái hép th­, v..v. Nh÷ng ng­êi gi¸m ®èc c«ng ty th­êng cÇn göi mét th«ng ®iÖp ®Õn mçi ng­êi trong sè nh÷ng ng­êi cÊp d­íi, nh÷ng kh¸ch hµng, hay ®Õn c¸c nhµ cung cÊp. Th× ®iÒu nµy ®­a ra mét ý t­ëng vÒ danh s¸ch th­ (mailing list), nã lµ mét danh s¸ch c¸c ®Þa chØ th­ ®iÖn tö. Khi mét th«ng ®iÖp ®­îc göi ®Õn mailing list, c¸c b¶n sao gièng hÖt ®­îc ph¸t ®Õn mäi ng­êi cã ®Þa chØ trªn danh s¸ch. Mét ý t­ëng quan träng kh¸c lµ th­ ®iÖn tö ®­îc ®¨ng ký, ®Ó cho phÐp ng­êi göi (sender or originator) biÕt th­ cña hä ®· ®Õn. ViÖc th«ng b¸o tù ®éng cña c¸c th­ kh«ng ®­îc ph¸t ®i mét c¸ch lu©n phiªn ®Ó ng­êi ta cã thÓ biÕt. Trong bÊt kú tr­êng hîp nµo, ng­êi göi nªn cã mét sè ®iÒu khiÓn th«ng qua th«ng b¸o nh÷ng g× x¶y ra. (a) (b) Envelope Message Body Mr. Daniel Dumkopf 18 Willow Lane White Plains, NY 10604 United Gizmo 180 Main St Boston, MA 02120 April, 5, 2001 Subject: Invoice 1081 Dear Mr. Dumkopf, Our computer records show that you still have not paid the above invoice of $0.00. Please send us a check for $0.00 promptly. Yous truly United Gizmo ¡ Name: Mr. Daniel Dumkopf Street: 18 Willow Lane State: NY Zip code: 10604 Priority: Urgent Encryption: None From: United Gizmo Address: 180 Main St Location: Boston, MA 02120 Date: April, 5, 2001 Subject: Invoice 1081 Dear Mr. Dumkopf, Our computer records show that you still have not paid the above invoice of $0.00. Please send us a check for $0.00 promptly. Yous truly United Gizmo Envelope Header Phong th­ vµ th«ng ®iÖp (a) Th­ b­u ®iÖn. (b) Th­ ®iÖn tö C¸c ®Æc tÝnh n©ng cao kh¸c lµ ®ång göi (carbon copies), th­ cã møc ­u tiªn cao (high-priority email), b¶o mËt th­ (secret email) cã nghÜa lµ th«ng ®iÖp ®­îc m· hãa tr­íc khi göi ®i, thay ®æi ng­êi nhËn th­ (alternative recipients) nÕu ng­êi ®Çu tiªn kh«ng cã kh¶ n¨ng nhËn ®­îc, vµ c¸c kh¶ n¨ng cho c¸c c« th­ ký vËn dông th­ cña c¸c «ng chñ cña m×nh. HiÖn nay th­ ®iÖn tö ®­îc sö dông réng r·i trong viÖc kinh doanh cho viÖc truyÒn th«ng tin trong c«ng ty. Nã cho phÐp c¸c c«ng nh©n ë xa hîp t¸c vÒ c¸c dù ¸n phøc t¹p, ngay c¶ nh÷ng n¬i ph¶i mÊt nhiÒu thêi gian míi ®Õn ®­îc. Mét sè c«ng ty ®· ®¸nh gi¸ r»ng th­ ®iÖn tö ®· lµm t¨ng n¨ng suÊt s¶n xuÊt cña hä lªn 30 phÇn tr¨m (Perry and Adam 1992). Mét kh¸i niÖm quan träng trong tÊt c¶ c¸c hÖ thèng th­ ®iÖn tö hiÖn ®¹i lµ sù ph©n biÖt gi÷a phong b× (envelope) vµ c¸c néi dung bªn trong cña nã. Phong b× bao bäc (encapsulate) c¶ th«ng ®iÖp. Nã chøa tÊt c¶ c¸c th«ng tin cÇn thiÕt cho viÖc truyÒn t¶i th«ng ®iÖp, nh­ lµ ®Þa chØ ®Ých, ®é ­u tiªn, vµ møc ®é b¶o mËt , tÊt c¶ nh÷ng c¸i ®ã ®Òu kh¸c biÖt víi th«ng ®iÖp bªn trong nã. C¸c MTAs sö dông phong b× cho viÖc ®Þnh tuyÕn ®­êng truyÒn, ®iÒu nµy còng gièng nh­ c«ng viÖc cña b­u ®iÖn lµm. Th«ng ®iÖp ë bªn trong phong b× chøa hai phÇn: phÇn ®Çu th­ (header) vµ phÇn th©n th­ (body). PhÇn header chøa c¸c th«ng tin ®iÒu khiÓn cho c¸c UAs. PhÇn th©n lµ phÇn hoµn toµn dµnh cho ng­êi nhËn th­. C¸c phong b× vµ c¸c th«ng ®iÖp ®­îc m« t¶ trong h×nh bªn d­íi. 1.3.2. T¸c nh©n ng­êi sö dông (The User Agent) C¸c hÖ thèng th­ ®iÖn tö cã hai phÇn c¬ b¶n, nh­ chóng ta ®· thÊy gåm: phÇn UA vµ phÇn MTA. Trong phÇn nµy chóng ta sÏ xÐt ®Õn phÇn UA. Mét UA th­êng lµ mét ch­¬ng tr×nh (®«i khi ®­îc gäi lµ bé phËn ®äc th­) nã nhËn mét trong nh÷ng lÖnh kh¸c nhau nh­ lµ cho môc ®Ých so¹n th­, nhËn th­, vµ håi ®¸p c¸c th«ng ®iÖp, còng nh­ viÖc thao t¸c trªn c¸c hép th­ (mailboxes). Mét sè UA (User Agent) cã giao diÖn tr×nh ®¬n (menu) hay biÓu t­îng (icon) kh¸ hÊp dÉn mµ nã yªu cÇu sö dông chuét hoÆc chÊp nhËn c¸c lÖnh 1 ký tù tõ bµn phÝm cã cïng chøc n¨ng víi menu vµ c¸c icon. 1.3.2.1.Göûi thö (Sending Email) §Ó göi ®i mét th«ng ®iÖp, ng­êi sö dông ph¶i cung cÊp th«ng ®iÖp, ®Þa chØ ®Ých vµ mét sè tham sè kh¸c nÕu cã (vÝ dô nh­ lµ møc ­u tiªn hay b¶o mËt). Ng­êi sö dông cã thÓ t¹o th«ng ®iÖp víi mét tr×nh so¹n th¶o v¨n b¶n kh¸c nhau, mét ch­¬ng tr×nh sö lý tõ hay víi bé so¹n th¶o ®­îc x©y dùng trªn UA. §Þa chØ ®Ých ph¶i cã mét ®Þnh d¹ng mµ lµm sao cho UA cã thÓ hiÓu ®­îc. NhiÒu UA tiÕp nhËn c¸c ®Þa chØ DNS (Domain Name System) cã d¹ng mailbox@location. 1.3.2.2. Ñoïc thö (Reading Email) Khi UA ®­îc khëi ®éng nã kiÓm tra xem trong hép th­ cña ng­êi sö dông cã th­ göi ®Õn kh«ng tr­íc khi hiÓn thÞ c¸c thø kh¸c lªn mµn h×nh. Khi ®ã cã lÏ nã sÏ th«ng b¸o mét sè c¸c th«ng ®iÖp trong hép th­ hay hiÓn thÞ mét dßng v¾n t¾t cña mçi th«ng ®iÖp vµ chê nhËn lÖnh ®Ó xö lý. Mét vÝ dô ë h×nh bªn d­íi cho thÊy mét viÔn c¶nh sau khi UA khëi ®éng hiÓn thÞ nh÷ng yªu cÇu v¾n t¾t cña c¸c th«ng ®iÖp. Trong vÝ dô nµy hép th­ (mailbox) gåm cã t¸m th«ng ®iÖp. Mçi dßng hiÓn thÞ chøa mét sè tr­êng ®­îc trÝch ra tõ phong th­ hay phÇn ®Çu (header) cña tõng th«ng ®iÖp ®­îc ®Þnh vÞ trong hép th­. Trong mét hÖ thèng th­ ®iÖn tö ®¬n gi¶n, sù lùa chän cña c¸c tr­êng hiÓn thÞ ®­îc ng­êi ta x©y dùng thµnh mét ch­¬ng tr×nh. Trong c¸c hÖ thèng phøc t¹p h¬n, ng­êi sö dông cã thÓ x¸c ®Þnh cho c¸c tr­êng nµo ®­îc hiÓn thÞ b»ng c¸ch cung cÊp mét hiÖn tr¹ng ng­êi sö dông (User Profile), hay mét tÖp m« t¶ ®Þnh d¹ng hiÓn thÞ. Trong vÝ dô nµy, tr­êng ®Çu tiªn lµ sè th«ng ®iÖp cã trong hép th­. Tr­êng thø hai, lµ c¸c cê cã thÓ chøa mét kÝ tù K, cã nghÜa lµ th«ng ®iÖp cò ®· ®­îc ®äc kú tr­íc råi vµ ®­îc l­u l¹i trong hép th­; kÝ tù A cã nghÜa lµ th­ nµy ®· ®­îc håi ©m råi; ký tù F (cã thÓ cã), cã nghÜa lµ th­ nµy ®­îc chuyÓn tiÕp ®Õn ng­êi kh¸c. C¸c cê kh¸c n÷a còng cã thÓ ®­îc ®­a vµo ngoµi nh÷ng cê nµy. # Flags Bytes Sender Subject 1 K 1030 Asw Changes to MINIX 2 KA 6348 Radia Comments on material you sent me 3 KF 4519 Amy N. Wong Request for information 4 1236 Bal Deadline for grant proposal 5 103610 Kaashoek Text of DCS paper 6 1223 Emily E. Pointer to WWW page 7 3110 Saniya Referee reports for the page 8 1204 Dmr Re: My student’s visit HiÓn thÞ c¸c néi dung cña hép th­. Tr­êng thø ba cho biÕt chiÒu dµi cña th«ng ®iÖp vµ tr­êng thø t­ cho biÕt ai lµ ng­êi göi th«ng ®iÖp. V× tr­êng nµy ®­îc trÝch ra tõ c¸c th«ng ®iÖp rÊt ®¬n gi¶n nªn tr­êng nµy cã thÓ chøa c¸c tªn, hä tªn ®Çy ®ñ, c¸c tªn viÕt t¾t, c¸c tªn ®¨ng nhËp, hay bÊt cø thø g× mµ ng­êi göi cã thÓ ®Æt vµo trong tr­êng nµy. Cuèi cïng lµ tr­êng chñ ®Ò th­ (Subject) cho biÕt mét c©u v¾n t¾t vÒ nh÷ng g× trong néi dung th«ng ®iÖp. Nh÷ng ng­êi nµo quªn ®iÒn vµo tr­êng nµy th× th­êng ®­îc cho lµ nh÷ng c©u tr¶ lêi cho th­ cña hä lµ kh«ng chó ý ®Õn møc ­u tiªn cao nhÊt. Sau khi c¸c phÇn ®Çu ®· ®­îc hiÓn thÞ, ng­êi sö dông cã thÓ thùc hiÖn bÊt cø lÖnh nµo cã thÓ. Mét chän lùa tiªu biÓu ®­îc liÖt kª ë b¶ng bªn d­íi (h×nh bªn d­íi) lµ mét vÝ dô khi mét ng­êi sö dông b»ng hÖ thèng Mmdf cña hÖ ®iÒu hµnh UNIX. Cã mét sè lÖnh yªu cÇu cã tham sè. Ký hiÖu # cã nghÜa lµ chØ sè cña mét th«ng ®iÖp (hay cã thÓ cã nhiÒu th«ng ®iÖp) ®­îc chÊp nhËn. T­¬ng tù, mÉu tù a cã thÓ ®­îc sö dông cã nghÜa cho tÊt c¶ c¸c th«ng ®iÖp. 1.3.2.3.Ñònh daïng thoâng ñieäp (Message Formats) Chóng ta b©y giê h·y quay ®Õn tõ giao diÖn ng­êi sö dông ®Õn ®Þnh d¹ng cña c¸c th«ng ®iÖp th­ ®iÖn tö. Tr­íc tiªn chóng ta xÐt th­ ®iÖn tö dùa trªn b¶n m· ASCII sö dông chuÈn RFC 822 (Request for Comments). Sau ®ã xÐt ®Õn c¸c më réng ®a ph­¬ng tiÖn cho chuÈn RFC 822. 1.3.2.4.Chuaån RFC 822 C¸c th«ng ®iÖp bao gåm mét phong b× gèc (®­îc m« t¶ trong chuÈn RFC 821), mét sè c¸c tr­êng cho phÇn ®Çu (header), mét dßng ®Ó trèng vµ sau ®ã lµ phÇn th©n (body). Mçi tr­êng header bao gåm c¸c dßng v¨n b¶n ASCII chøa tªn tr­êng, dÊu hai chÊm, vµ cho hÇu hÕt c¸c tr­êng ®Òu cã mét gi¸ trÞ. RFC 822 lµ mét chuÈn cò vµ gi÷a c¸c tr­êng header cña phong b× (envelope) kh«ng ph©n biÖt râ rµng nh­ mét chuÈn míi kh¸c. Khi sö dông, th«ng th­êng UA x©y dùng mét th«ng ®iÖp vµ ®­a nã qua bé phËn t¸c nh©n truyÒn th«ng ®iÖp (message transfer agents - MTA), ë ®©y nã dïng mét sè c¸c tr­êng header ®Ó x©y dùng mét envelope thùc sù, th«ng ®iÖp ®­îc thay ®æi bëi c¸i cò ®i mét chót cïng víi envelope. Command Parameter Description H # Display header(s) on the screen C Display current header only T # Type message(s) on the screen S Address Send a message F # Forward message(s) A # Answer message(s) D # Delete message(s) U # Undelete previously deleted message(s) M # Move message(s) to another mailbox K # Keep message(s) after exiting R Mailbox Read a new mailbox N Go to the next message and display it B Backup to the previous message and display it G # Go to a specific message but do not display it E Exit the mail system and update the mailbox C¸c lÖnh ®iÒu khiÓn th­ ®Æc biÖt C¸c tr­êng header chñ yÕu liªn quan ®Õn viÖc chuyÓn giao th«ng ®iÖp ®­îc liÖt kª d­íi b¶ng sau. Tr­êng To: tr­êng nµy cho biÕt ®Þa chØ DNS cña ng­êi nhËn ®Çu tiªn. Tr­êng hîp nhiÒu ng­êi nhËn còng cã thÓ cho phÐp. Tr­êng Cc: cho biÕt ®Þa chØ cña nh÷ng ng­êi nhËn kÕ tiÕp (cßn gäi lµ ®Þa chØ ®ång göi). Trong c¸c thuËt ng÷ cña viÖc ph¸t th­, kh«ng cã sù ph©n biÖt gi÷a nh÷ng ng­êi nhËn thø nhÊt vµ ng­êi nhËn thø hai. ThuËt ng÷ Cc (Carbon copy) lµ mét mÉu ®· ®­îc x¸c ®Þnh, v× m¸y tÝnh kh«ng sö dông c¸c trang giÊy b¶n sao. Tr­êng Bcc: (Blind carbon copy) gièng nh­ tr­êng Cc: chØ trõ lµ dßng nµy ®­îc xãa khái tÊt c¶ c¸c b¶n sao ®­îc göi ®Õn nh÷ng ng­êi nhËn ®Çu tiªn vµ ng­êi nhËn thø hai. §Æc tÝnh nµy cho phÐp ng­êi ta göi c¸c b¶n sao ®Õn nh÷ng ng­êi trong nhãm thø ba mµ trong ®ã kh«ng cã ng­êi thø nhÊt vµ ng­êi thø hai biÕt. Header Meaning To: Email address(es) of primary recipient(s) Cc: Email address(es) of secondary recipient(s) Bcc: Email address(es) for blind carbon copies From: Person or people who created the message Sender: Email address of the actual sender Received: Line added by each transfer agent along the route Return-Path: Can be used to identify a path back to the sender C¸c tr­êng header RFC 822 liªn quan trong viÖc truyÒn th«ng ®iÖp Hai tr­êng kÕ tiÕp, From: vµ Sender: cho biÕt ®Ó ph©n biÖt ng­êi viÕt vµ ng­êi göi th«ng ®iÖp. Hai tr­êng nµy hoµn toµn kh«ng gièng nhau. VÝ dô mét nhµ qu¶n trÞ doanh nghiÖp cã thÓ viÕt mét th«ng ®iÖp nh­ng c« th­ ký lµ ng­êi thËt sù truyÒn nã ®i. Trong tr­êng hîp nµy, ng­êi qu¶n trÞ ph¶i ®­îc liÖt kª vµo trong tr­êng From: vµ c« th­ ký trong tr­êng Sender:. Header Meaning Date: The date and time the message was sent Reply-To: Email address to which replies should be sent Message-Id: Unique number for referencing this message latter In-Reply-To: Message-Id of the message to which this is a reply References: Other relevant Message-Ids Keywords: User chosen keywords Subject: Short summary of the message for the one-line display Mét sè tr­êng ®­îc sö dông trong header th«ng ®iÖp RFC 822. Tr­êng From: yªu cÇu ph¶i cã cßn tr­êng Sender: cã thÓ ®­îc bá qua nÕu viÖc viÕt vµ göi cïng mét ng­êi. C¸c tr­êng nµy cÇn thiÕt khi trong tr­êng hîp th«ng ®iÖp kh«ng ®­îc ph¸t ®i vµ ph¶i ®­îc tr¶ l¹i cho ng­êi göi. Dßng chøa tr­êng Received: ®­îc ®­a vµo bëi c¸c MTAs däc theo ®­êng truyÒn. Dßng nµy chøa ®Þnh danh cña agent, ngµy th¸ng vµ thêi gian th«ng ®iÖp ®­îc nhËn, vµ c¸c th«ng tin kh¸c cã thÓ ®­îc sö dông cho viÖc t×m kiÕm c¸c lçi trong hÖ thèng ®Þnh tuyÕn. Tr­êng Return-Path: ®­îc ®­a vµo bëi MTAs cuèi cïng vµ ®­îc dïng cho viÖc göi trë l¹i ng­êi göi. Theo lý thuyÕt, th«ng tin nµy cã thÓ ®­îc tËp hîp l¹i tõ c¸c header Received: (lo¹i trõ tªn cña hép th­ ng­êi göi), nh­ng nã Ýt khi ®­îc ®iÒn ®Çy ®ñ nh­ thÕ vµ chØ ®Æc biÖt chøa ®Þa chØ cña ng­êi göi. Thªm vµo c¸c tr­êng cña h×nh bªn d­íi c¸c th«ng ®iÖp RFC 822 còng cã thÓ chøa mét trong sè c¸c tr­êng kh¸c ®­îc sö dông bëi c¸c UA hay nh÷ng ng­êi nhËn th­. Nh÷ng tr­êng th«ng th­êng nhÊt ®­îc liÖt kª trong h×nh bªn d­íi. HÇu hÕt nh÷ng tr­êng nµy cã tÝnh c¸ch gi¶i thÝch, v× thÕ chóng ta kh«ng ®i s©u vµo tõng chi tiÕt. 1.4.PHAÂN TÍCH CAÁU TRUÙC THÖ ÑIEÄN TÖÛ, CAÙC GIAO THÖÙC SMTP VAØ POP3 1.4.1.Phaân tích caáu truùc thö ñieän töû (RFC 822) 1.4.1.1. Giíi thiÖu §Ó cã thÓ chuyÓn giao th­ gi÷a c¸c m¸y tÝnh trªn m¹ng, th­ cÇn ph¶i ®­îc cÊu tróc theo mét chuÈn nµo ®ã. Th«ng th­êng, mét bøc th­ ®­îc cÊu t¹o bëi hai phÇn lµ phong b× (envelope) vµ néi dung (body). Kh¸i niÖm nµy hoµn toµn gièng nh­ trong hÖ thèng b­u chÝnh th«ng th­êng. Trong khi phÇn phong b× chøa ®ùng nh÷ng th«ng tin cÇn thiÕt ®Ó cã thÓ thiÕt lËp c¸c liªn kÕt truyÒn th«ng vµ ph©n ph¸t th­ ®i, th× phÇn néi dung l¹i chøa ®ùng nh÷ng th«ng tin vÒ ng­êi göi, ngµy göi,... Th­ th­êng bao gåm nhiÒu dßng v¨n b¶n. Nã kh«ng cung cÊp nh÷ng tÝnh n¨ng riªng biÖt nh­: m· ho¸ c¸c h×nh vÏ, c¸c b¶n sao, tiÕng nãi hoÆc nh÷ng v¨n b¶n cã cÊu tróc. H¬n n÷a, nã còng kh«ng cã sù quan t©m ®Æc biÖt ®èi víi viÖc nÐn d÷ liÖu, viÖc truyÒn th«ng hoÆc viÖc l­u tr÷ cã hiÖu qu¶. CÊu tróc th­ bao gåm mét sè tr­êng th«ng tin tu©n theo c¸c có ph¸p nghiªm ngÆt. VÝ dô nh­ gi÷a phÇn tiªu ®Ò th­ (header) vµ phÇn néi dung th­ (content) ph¶i cã mét dßng trèng ng¨n c¸ch,... 1.4.1.2. Moâ taû veà caáu truùc thö Mét bøc th­ bao gåm c¸c tr­êng header vµ phÇn body. PhÇn body lµ c¸c dßng v¨n b¶n kÝ tù theo b¶ng m· ASCII. Nã ®­îc ph©n c¸ch víi phÇn header bëi mét dßng trèng. 1.4.1.2.1. C¸c tr­êng header dµi Mçi tr­êng header cã thÓ ®­îc xem nh­ mét dßng v¨n b¶n c¸c kÝ tù theo b¶ng m· ASCII, cÊu thµnh bëi tªn tr­êng (field-name) vµ néi dung cña tr­êng (field-body). §Ó thuËn tiÖn cho viÖc so s¸nh, phÇn field-body cã thÓ ®­îc chia ra lµm nhiÒu dßng. Qu¸ tr×nh chia nµy ®­îc gäi lµ ”folding”. VÝ dô: To: "Joe & J. Harvey" , JJV @ BBN cã thÓ ®­îc thay thÕ b»ng: To: "Joe & J. Harvey" , JJV@BBN vµ: To: "Joe & J. Harvey" , JJV @BBN hay: To: "Joe & J. Harvey" , JJV @ BBN Qu¸ tr×nh thùc hiÖn ng­îc l¹i ®Ó kÕt hîp nhiÒu dßng header ®· ®­îc folding nh­ trªn ®­îc gäi lµ: ”unfolding”. Unfolding ®­îc thùc hiÖn b»ng c¸ch bá cÆp kÝ tù CRLF vµ thay b»ng mét dÊu c¸ch trèng. 1.4.1.2.2. C¸c tr­êng header cã cÊu tróc Mçi tr­êng cã cÊu tróc bao gåm mét field-name, tiÕp theo lµ dÊu hai chÊm (”:”), sau ®ã field-body vµ cuèi cïng lµ cÆp kÝ tù CRLF. : PhÇn field-name lµ c¸c kÝ tù in ®­îc trong b¶ng m· ASCII (cã m· tõ 33 ®Õn 126, c¸c kÝ tù sè, ngo¹i trõ dÊu hai chÊm). PhÇn field-body cã thÓ chøa bÊt k× kÝ tù ASCII nµo, ngo¹i trõ cÆp kÝ tù CRLF. C¸c tr­êng th«ng tin header thùc tÕ cã thÓ ®­îc so s¸nh bëi c¸c mét vµi hÖ thèng th­ tÝn. C¸c tr­êng nµy ®­îc gäi lµ tr­êng cã cÊu tróc. VÝ dô nh­ c¸c tr­êng chøa ®ùng th«ng tin vÒ Date, Address,.v.v. Mét sè tr­êng kh¸c nh­ ”Subject” vµ “Comments” chØ ®­îc coi nh­ mét dßng v¨n b¶n b×nh th­êng. Chó ý, bÊt kú tr­êng nµo mµ phÇn field-body ®­îc ®Þnh nghÜa kh¸c ®i kh«ng ph¶i lµ mét dßng v¨n b¶n ®¬n thuÇn th× ®­îc gäi lµ tr­êng cã cÊu tróc. 1.4.1.2.3. C¸c tr­êng header kh«ng cã cÊu tróc Mét sè tr­êng nh­ “Subject” vµ “Comments” kh«ng ®­îc coi lµ c¸c tr­êng cã cÊu tróc vµ chóng ®­îc xem nh­ mét dßng v¨n b¶n ®¬n thuÇn còng nh­ néi dung th­ trong phÇn body. 1.4.2. §Þnh nghÜa vÒ c¸c tr­êng Header C¸c luËt ng÷ nghÜa ë ®©y ®­îc tr×nh bµy theo sù so s¸nh møc cao. Nã kh«ng dµnh riªng cho tr­êng nµo. Môc ®Ých cña nã lµ ®Ó trî gióp viÖc so s¸nh vµ ph©n tÝch th«ng tin ë c¸c tr­êng. CÊu tróc chung cã d¹ng: field = ”:” [field-body] CRLF field-name = 1* field-body = *text 1.4.3. C¸c tr­êng header ®iÓn h×nh a. Tr­êng RETURN-PATH = “Return-Path” “:” route-addr Tr­êng th«ng tin nµy ®­îc hÖ thèng truyÒn t¶i th­ tÝn cuèi cïng (lµ hÖ thèng cuèi cïng ph¸t th­ cho ng­êi nhËn cña nã) thªm vµo phÇn header cña th­. Nã ®­îc dïng ®Ó chøa ®ùng nh÷ng th«ng tin vÒ ®Þa chØ tr¶ vÒ (return-address) cña ng­êi göi ban ®Çu. b. Tr­êng RECEIVED = “Received-From” “:” domain Mét b¶n sao cña tr­êng th«ng tin nµy sÏ ®­îc thªm vµo bëi mçi mét hÖ thèng truyÒn t¶i th«ng ®iÖp mµ th­ ®­îc chuyÓn qua. Th«ng tin ë tr­êng nµy rÊt h÷u Ých trong tr­êng hîp x¶y ra lçi trong truyÒn th«ng. Tr­êng th«ng tin nµy dïng ®Ó x¸c ®Þnh tªn cña m¸y chñ göi (sending host), m¸y chñ nhËn vµ thêi gian nhËn ®­îc. c. Tr­êng FORWARD = “Forward-Path” “:” route-addr Tr­êng th«ng tin nµy ®­îc hÖ thèng truyÒn t¶i th­ tÝn cuèi cïng (lµ hÖ thèng cuèi cïng ph¸t th­ cho ng­êi nhËn cña nã) thªm vµo phÇn header cña th­. Nã ®­îc dïng ®Ó chøa ®ùng nh÷ng th«ng tin vÒ ®Þa chØ cña ng­êi nhËn th­. d. Tr­êng FROM = “From” “:” mailbox Tr­êng th«ng tin nµy chøa ®ùng th«ng tin vÒ ng­êi göi th­ (sender). Qu¸ tr×nh göi th­ cÇn ngÇm ®Þnh tr­êng nµy lµ ®¬n. Nã x¸c minh ®Þa chØ m¸y tÝnh, x¸c nhËn bªn göi lµ mét ng­êi, hÖ thèng hay mét tiÕn tr×nh. NÕu c«ng viÖc nµy kh«ng ®­îc thùc hiÖn th× ph¶i thay thÕ b»ng tr­êng Sender e. Tr­êng DATE = “Date” “:” date-time Tr­êng nµy chøa ®ùng th«ng tin vÒ ngµy, giê göi th­. f. Tr­êng TO = “To” “:” mailbox Tr­êng nµy chøa ®ùng th«ng tin vÒ ng­êi nhËn th­ (recipient) chÝnh thøc. g. Tr­êng CC = “cc” “:” address Tr­êng nµy chøa ®ùng th«ng tin vÒ ng­êi nhËn th­ thø hai, cã nghÜa ®ång göi (carbon copy-cc). h. Tr­êng BCC = “bcc” “:” address Tr­êng nµy chøa ®ùng th«ng tin thªm vÒ ng­êi nhËn th­ (blind carbon copy-bcc). Néi dung cña tr­êng nµy kh«ng chøa ®ùng trong b¶n sao th­ göi cho ng­êi nhËn thø ®Çu tiªn vµ ng­êi nhËn th­ hai. i. Tr­êng MESSAGE-ID = “Message-ID” “:” msg-id Tr­êng nµy chøa ®ùng th«ng tin ®Þnh danh duy nhÊt vÒ bøc th­ ®­îc göi ®i. TÝnh duy nhÊt cña tr­êng nµy ®­îc b¶o ®¶m bëi hÖ thèng sinh ra nã. Tr­êng nµy ®­îc dïng ®Ó dµnh riªng cho m¸y tÝnh vµ kh«ng cÇn thiÕt ®èi víi ng­êi sö dông. j. Tr­êng SUBJECT = “Subject” “:” text Tr­êng nµy chøa ®ùng th«ng tin vÒ tiªu ®Ò th­ cÇn göi. 1.4.4. VÝ dô vÒ cÊu tróc th­ Date: 26 Aug 76 1430 EDT From: George Jones Sender: Secy@SHOST To: ”Al Neuman”@Mad-Host, Sam.Irving@Other-Host Message-ID: Subject: Test ... 1.5. PHAÂN TÍCH GIAO THÖÙC SMTP (RFC 821) 1.5.1. Giíi thiÖu chung Môc ®Ých cña giao thøc SMTP (Simple Mail Transfer Protocol) lµ ®Ó truyÒn th­ ®¸ng tin cËy vµ cã hiÖu qu¶. SMTP ®äc lËp vÒ hÖ thèng con truyÒn th«ng ®Æc biÖt vµ c¸c yªu cÇu chØ tin cËy theo kªnh luång d÷ liÖu tuÇn tù. §Æc tÝnh quan träng cña SMTP lµ kh¶ n¨ng chuyÓn tiÕp th­ tÝn qua c¸c m«i tr­êng dÞch vô truyÒn th«ng (transport service). DÞch vô truyÒn th«ng cung cÊp mét m«i tr­êng truyÒn th«ng liªn qu¸ tr×nh (interprocess communication environment - IPCE). IPCE cã thÓ lµ mét m¹ng, nhiÒu m¹ng hay mét tËp hîp con cña mét m¹ng. §iÒu quan träng ®Ó nhËn thÊy r»ng c¸c hÖ thèng truyÒn th«ng (IPCEs) kh«ng ph¶i lµ viÖc truyÒn th«ng t­¬ng øng mét tíi mét (one-to-one) víi c¸c m¹ng. Mét tiÕn tr×nh cã thÓ truyÒn th«ng qua l¹i trùc tiÕp víi mét tiÕn tr×nh kh¸c th«ng qua bÊt kú mét IPCE ®· ®­îc biÕt. Th­ tÝn lµ mét øng dông hay lµ viÖc sö dông truyÒn th«ng liªn tiÕn tr×nh. Th­ tÝn cã thÓ ®­îc truyÒn qua gi÷a c¸c tiÕn tr×nh theo c¸c IPCEs kh¸c nhau b¾ng c¸ch chuyÓn tiÕp qua mét tiÕn tiÕn tr×nh ®­îc kÕt nèi tíi hai hay nhiÒu IPCEs. §Æc biÖt h¬n n÷a, th­ tÝn cã thÓ ®­îc chuyÓn tiÕp gi÷a c¸c m¸y chñ (hosts) trªn c¸c hÖ thèng truyÒn th«ng kh¸c nhau bëi mét m¸y chñ trªn c¶ hai hÖ thèng truyÒn th«ng. Giao thøc SMTP ®Þnh nghÜa c¸ch ®Ó chuyÓn giao th­ tÝn trùc tiÕp gi÷a c¸c m¸y tÝnh trªn m¹ng. Nã cã hai vai trß lµ göi (sender-SMTP) vµ nhËn (receiver-SMTP) th­. Th«ng th­êng, bªn göi thiÕt lËp mét liªn kÕt TCP víi bªn nhËn, vµ bªn nhËn sö dông cæng truyÒn th«ng sè 25 ®Ó cung cÊp dÞch vô th­ tÝn ®iÖn tö. Trong mét phiªn giao dÞch th­ tÝn, bªn göi vµ bªn nhËn trao ®æi tuÇn tù c¸c lÖnh vµ c¸c th«ng tin ph¶n håi. 1.5.2. M« h×nh ho¹t ®éng phiªn giao dÞch SMTP ®­îc thiÕt kÕ dùa trªn m« h×nh truyÒn th«ng sau: khi ng­êi sö dông (user) göi mét yªu cÇu dÞch vô th­ tÝn, tr­íc tiªn Sender-SMTP thµnh lËp mét kªnh truyÒn th«ng hai chiÒu tíi Receiver-SMTP. Receiver-SMTP cã thÓ lµ ®Ých cuèi cïng hoÆc lµ mét tr¹m trung gian. Sau ®ã, c¸c lÖnh cña SMTP ®­îc sinh ra tõ phÝa Sender-SMTP vµ göi tíi Receiver-SMTP. Receiver-SMTP sÏ thao t¸c trªn c¸c lÖnh ®ã vµ göi tr¶ kÕt qu¶ vÒ phÝa Sender-SMTP. SMTP cung cÊp c¬ chÕ chuyÓn th­ trùc tiÕp tõ m¸y chñ cña ng­êi göi ®Õn m¸y chñ cña ng­êi nhËn khi hai m¸y chñ ®­îc kÕt nèi trªn cïng mét dÞch vô truyÒn th«ng hoÆc qua mét hoÆc nhiÒu Server-SMTP chuyÓn tiÕp khi c¸c m¸y chñ nguån vµ m¸y chñ ®Ých kh«ng cïng ®­îc kÕt nèi tíi cïng mét dÞch vô truyÒn th«ng. File System SMTP Commands / Replies Sender SMTP Sender - SMTP M« h×nh tæng qu¸t sö dông giao thøc SMTP Receiver SMTP Receiver - SMTP and Mail File System User §Ó thùc hiÖn ®­îc kh¶ n¨ng chuyÓn tiÕp th­ tÝn trªn m¹ng, cÇn ph¶i cung cÊp tªn cña m¸y chñ còng nh­ tªn cña hép th­ (mailbox) cuèi cïng cÇn göi tíi cho SMTP Server. SMTP cung cÊp mét tËp c¸c lÖnh cho phÐp c¸c m¸y tÝnh trªn m¹ng cã thÓ trao ®æi thùc tiÕp c¸c th«ng tin theo mét chuÈn qui ®Þnh. Nhê vµo tËp lÖnh nµy, c¸c hÖ thèng th­ tÝn kh¸c nhau cã thÓ trao ®æi d÷ liÖu th­ ®­îc víi nhau. Mçi lÖnh ®Òu cã cïng chiÒu dµi bèn kÝ tù, hÇu hÕt ®Òu cã tham sè kÌm theo. C¸c lÖnh sö dông trong viÖc göi/nhËn th­ tÝn tu©n theo mét có ph¸p kh¾t khe. §ã lµ c¸c th«ng tin ph¶n håi lu«n ë d¹ng m· sè kÌm theo lµ c¸c m« t¶ vÒ kÕt qu¶ thùc hiÖn lÖnh. C¸c lÖnh vµ m· ph¶n håi kh«ng ph©n biÖt ch÷ hoa vµ ch÷ th­êng. §iÒu nµy cã nghÜa lµ mét lÖnh hoÆc mét th«ng b¸o ph¶n håi cã thÓ ë d¹ng in hoa, in th­êng hoÆc trong bÊt k× mét kiÓu kÕt hîp nµo gi÷a in hoa vµ in th­êng. L­u ý r»ng ®iÒu nµy lµ kh«ng ®óng víi tªn cña ”user mailbox”. Víi mét sè m¸y chñ, user name lµ ph©n biÖt ch÷ hoa, th­êng vµ viÖc thùc hiÖn c¸c lÖnh SMTP cÇn ph¶i quan t©m ®Ó ®¶m b¶o sù thùc hiÖn ®óng ®¾n trong tr­êng hîp nµy. Tªn cña m¸y chñ còng kh«ng ph©n biÖt ch÷ hoa, th­êng. C¸c lÖnh vµ th«ng tin ph¶n håi ®­îc x©y dùng bëi c¸c kÝ tù tõ bé m· ASCII. Khi dÞch vô giao vËn cung cÊp kªnh truyÒn th«ng 8 bit, mçi kÝ tù truyÒn ®i sÏ chØ sö dông 7, bit cao nhÊt sÏ ®­îc xo¸ vÒ 0. Mçi phiªn giao dÞch SMTP ph¶i tr¶i qua mét sè giai ®o¹n. C¸c giai ®o¹n ®ã ®­îc thùc hiÖn th«ng qua c¸c thñ tôc SMTP, kÌm theo ®ã lµ c¸c th«ng tin ph¶n håi: · Thñ tôc MAIL. · Thñ tôc FORWARDING. · C¸c thñ tôc MAILING vµ SENDING. · C¸c thñ tôc OPENING vµ CLOSING. · C¸c m· tr¶ lêi cña lÖnh SMTP. 1.5.3. Thñ tôc Mail §Ó b¾t ®Çu mét phiªn giao dÞch th­ tÝn th× cÇn ph¶i thùc hiÖn thñ tôc MAIL. Nã bao gåm 3 b­íc: · LÖnh MAIL ®­îc göi ®i kÌm theo lµ tham sè vÒ ®Þa chØ ng­êi göi th­. · LÖnh RCPT ®­îc göi ®i kÌm theo lµ tham sè vÒ ®Þa chØ ng­êi nhËn th­. Cã thÓ thùc hiÖn nhiÒu lÇn lÖnh nµy trong tr­êng hîp muèn göi th­ cho nhiÒu ng­êi. · LÖnh DATA ®­îc göi ®i ®Ó x¸c nhËn b¾t ®Çu göi d÷ liÖu cña th­. D­íi ®©y lµ phÇn chi tiÕt vÒ 3 lÖnh trªn. a. LÖnh MAIL FROM · Tham sè: lµ mét x©u ký tù ®Þnh danh mailbox cña ng­êi göi th­. · H¹n chÕ: ChØ cã thÓ thùc hiÖn khi ch­a thùc hiÖn chÝnh lÖnh nµy. · Chi tiÕt: LÖnh nµy dïng ®Ó x¸c nhËn ng­êi göi th­ ®ång thêi thiÕt lËp mét phiªn giao dÞch SMTP víi Receiver-SMTP (Server). Nã ®­a ra ®­êng dÉn ®Ó sö dông trong tr­êng hîp phiªn giao dÞch kh«ng thùc hiÖn thµnh c«ng. Ng­îc l¹i, th«ng tin vÒ ng­êi göi sÏ ®­îc l­u l¹i. · Th«ng tin ph¶n håi: 250 OK Tr­êng hîp cßn l¹i bÞ lçi. VÝ dô: S: MAIL FROM: R: 250 OK b. LÖnh RCPT TO · Tham sè: lµ mét x©u ký tù ®Þnh danh mailbox cña ng­êi nhËn th­. · H¹n chÕ: ChØ cã thÓ thùc hiÖn khi ®· ®Þnh danh ng­êi göi th­ b»ng lÖnh MAIL. · Chi tiÕt: LÖnh nµy dïng ®Ó x¸c nhËn ng­êi nhËn th­ ®­îc chØ ®Þnh trong tham sè . NÕu Receiver-SMTP chÊp nhËn th× th«ng tin vÒ ng­êi göi sÏ ®­îc l­u l¹i. LÖnh nµy cã thÓ thùc hiÖn nhiÒu lÇn ®Ó x¸c nhËn nhiÒu ng­êi nhËn th­. · Th«ng tin ph¶n håi: 250 OK Tr­êng hîp cßn l¹i bÞ lçi. VÝ dô S: RCPT TO: R: 250 OK S: rcpt to: R: 550 No such user here c. LÖnh DATA · Tham sè: kh«ng. · H¹n chÕ: ChØ cã thÓ thùc hiÖn khi ®· thùc hiÖn thµnh c«ng viÖc x¸c nhËn ng­êi göi vµ ng­êi nhËn th­. · Chi tiÕt: LÖnh nµy dïng ®Ó x¸c nhËn b¾t ®Çu viÖc göi néi dung th­. NÕu SMTP Receiver chÊp nhËn, nã sÏ tiÕn hµnh nhËn vµ l­u tr÷ tÊt c¶ c¸c dßng v¨n b¶n ®­îc göi ®Õn. §Ó kÕt thóc viÖc göi d÷ liÖu, SMTP Sender cÇn göi mét dßng chØ chøa mét dÊu chÊm ”.”. L­u ý r»ng phÇn d÷ liÖu sau lÖnh DATA bao gåm toµn bé phÇn header cña th­ (nh­ c¸c tr­êng Date, Subject, CC, From, ...) còng nh­ néi dung th­. · Th«ng tin ph¶n håi: 250 OK VÝ dô: S: DATA R: 354 Start mail input; end with . S:. . . Sends body of mail message . . . S: . R: 250 OK S: QUIT S: 221 Beta.gov Service Closing Transmission Channel Sau ®©y lµ mét vÝ dô minh ho¹ cho mét phiªn giao dÞch th­ tÝn SMTP. PhÇn th«ng tin phÝa Server ®­îc b¾t ®Çu b»ng R: vµ m· sè, tiÕp sau lµ th«ng tin. PhÇn phÝa Client lµ c¸c lÖnh thùc thi cña SMTP b¾t ®Çu b»ng S:. Ta sÏ sö dông dÞch vô Telnet ®Ó kÝch ho¹t dÞch vô th­ tÝn trªn cæng 25 (SMTP). d. VÝ dô vÒ mét phiªn giao dÞch SMTP R: 220 BERKELEY.ARPA Simple Mail Transfer Service Ready S: HELO USC-ISIF.ARPA R: 250 BERKELEY.ARPA S: MAIL FROM: R: 250 OK S: RCPT TO: R: 250 OK S: RCPT TO: R: 552 Recipient storage full, try again in another transaction S: DATA R: 354 Start mail input; end with . S: Blah blah blah... S: ...etc. etc. etc. S: . R: 250 OK S: MAIL FROM: R: 250 OK S: RCPT TO: R: 250 OK S: DATA R: 354 Start mail input; end with . S: Blah blah blah... S: ...etc. etc. etc. S: . R: 250 OK S: QUIT R: 221 BERKELEY.ARPA Service closing transmission channel 1.5.4. Thñ tôc Forwarding Trong mét sè tr­êng hîp ®Þa chØ trong tham sè bÞ sai, nh­ng SMTP Receiver l¹i biÕt chÝnh x¸c ®Þa chØ ®Ých th× c¸c th«ng tin ph¶n håi cã thÓ ®­îc sö dông ®Ó cho phÐp ng­êi göi x¸c nhËn l¹i ®Þa chØ ®óng. 251 User not local; will forward to Th«ng tin ph¶n håi nµy chØ ra r»ng mailbox cña ng­êi nhËn thuéc mét m¸y chñ (host) kh¸c. Nh­ vËy, SMTP Receiver sÏ chØ ra chÝnh x¸c ®Ó sö dông vµ nã sÏ chÞu tr¸ch nhiÖm göi th­ nµy. 551 User not local; please try Th«ng tin ph¶n håi nµy chØ ra r»ng, SMTP Receiver biÕt ®­îc mailbox cña ng­êi nhËn thuéc mét m¸y chñ kh¸c. Nã sÏ ®­a ra ®Þa chØ chÝnh x¸c ®Ó sö dông nh­ng trong tr­êng hîp nµy nã kh«ng thùc hiÖn viÖc göi th­ ®i. ChÝnh v× vËy, ng­êi göi cÇn ph¶i x¸c nhËn l¹i c¸c th«ng tin cho chÝnh x¸c theo th«ng tin ph¶n håi cña SMTP Receiver hoÆc tr¶ l¹i th«ng b¸o lçi cho ng­êi göi ban ®Çu. Sau ®©y lµ vÝ dô vÒ c¸ch sö dông thñ tôc nµy: S: RCPT TO: R: 251 User not local; will forward to or S: RCPT TO: R: 551 User not local; please try 1.5.5. C¸c thñ tôc Mailing vµ Sending SMTP chñ yÕu cung cÊp c¸c chøc n¨ng ph¸t th­ ®Õn mailbox cña ng­êi sö dông. Tuy nhiªn, nã còng cã mét sè c¸c chøc n¨ng thùc hiÖn viÖc chuyÓn th­ ®Õn terminal cña ng­êi sö dông. ViÖc ph¸t th­ ®Õn mailbox cña ng­êi sö dông ®­îc gäi lµ ”mailing”, cßn viÖc ph¸t th­ ®Õn terminal ®­îc gäi lµ ”sending”. DÞch vô sending lµ phÇn më réng cña mét hÖ thèng th­ tÝn ®iÖn tö. Cã ba d¹ng c©u lÖnh ®­îc ®Þnh nghÜa ®Ó hç trî cho c¸c tïy chän sending. C¸c c©u lÖnh nµy ®­îc dïng trong c¸c phiªn giao dÞch SMTP thay thÕ cho c©u lÖnh MAIL vµ b¸o cho Receiver-SMTP biÕt ý nghÜa ®Æc biÖt cña phiªn giao dÞch nµy. a. LÖnh SEND FROM · Tham sè: ®Þa chØ terminal cña ng­êi nhËn. · Chi tiÕt: LÖnh nµy yªu cÇu d÷ liÖu cña th­ ®­îc ph©n ph¸t tíi terminal cña ng­êi sö dông. NÕu ng­êi sö dông ch­a kÝch ho¹t (hoÆc kh«ng chÊp nhËn kiÓu giao dÞch nµy) th× Receiver-SMTP sÏ göi tr¶ m· 450. Phiªn giao dÞch lµ thµnh c«ng nÕu th­ ®­îc chuyÓn ®Õn terminal cña ng­êi sö dông. · Th«ng tin ph¶n håi: 450 OK b. LÖnh SOML FROM · Tham sè: ®Þa chØ terminal cña ng­êi nhËn. · Chi tiÕt: LÖnh nµy (viÕt t¾t cña ch÷ Send Or MaiL) yªu cÇu d÷ liÖu cña th­ ®­îc ph©n ph¸t tíi terminal cña ng­êi sö dông trong tr­êng hîp ng­êi sö dông kÝch ho¹t (vµ chÊp nhËn kiÓu giao dÞch nµy). Trong tr­êng hîp ng­îc l¹i, nghÜa lµ ng­êi sö dông ch­a kÝch ho¹t th× d÷ liÖu cña th­ sÏ ®­îc chuyÓn ®Õn mailbox cña ng­êi nhËn. Phiªn giao dÞch thµnh c«ng nÕu th­ ®­îc chuyÓn ®Õn terminal cña ng­êi sö dông. c. LÖnh SAML FROM · Tham sè: ®Þa chØ terminal cña ng­êi nhËn. · Chi tiÕt: LÖnh nµy (viÕt t¾t cña ch÷ Send And MaiL) yªu cÇu d÷ liÖu cña th­ ®­îc ph©n ph¸t tíi terminal cña ng­êi sö dông trong tr­êng hîp ng­êi sö dông kÝch ho¹t (vµ chÊp nhËn kiÓu giao dÞch nµy). Trong bÊt cø tr­êng hîp nµo th× d÷ liÖu cña th­ còng sÏ ®­îc chuyÓn ®Õn mailbox cña ng­êi nhËn. Phiªn giao dÞch thµnh c«ng nÕu th­ ®­îc chuyÓn ®Õn mailbox cña ng­êi sö dông. 1.5.6. C¸c thñ tôc Opening vµ Closing Khi mét phiªn giao dÞch th­ tÝn ®­îc më, cÇn ph¶i cã sù trao ®æi th«ng tin gi÷a c¸c m¸y chñ (host) ®Ó ®¶m b¶o sù chÝnh x¸c trong giao dÞch. Cã hai lÖnh ®Ó thùc hiÖn viÖc ®ãng/më mét phiªn giao dÞch. a. HELO · Tham sè: tªn domain cña m¸y chñ thùc hiÖn viÖc göi th­ (cã thÓ kh«ng cã). · Chi tiÕt: LÖnh nµy dïng ®Ó x¸c nhËn domain m¸y chñ SMTP Sender. · Th«ng tin ph¶n håi: 250 VÝ dô: R: 220 BBN-UNIX.ARPA Simple Mail Transfer Service Ready S: HELO USC-ISIF.ARPA R: 250 BBN-UNIX.ARPA b. QUIT · Tham sè: kh«ng. · Chi tiÕt: LÖnh nµy dïng ®Ó kÕt thóc phiªn giao dÞch SMTP. · Th«ng tin ph¶n håi: 250 CRLF VÝ dô: S: QUIT R: 221 BBN-UNIX.ARPA Service closing transmission channel 1.5.7. M· tr¶ lêi cña c¸c c©u lÖnh SMTP Trong mét phiªn giao dÞch SMTP, phÝa SMTP Sender göi c¸c lÖnh yªu cÇu cßn phÝa SMTP Receiver sÏ göi tr¶ c¸c th«ng tin ph¶n håi vµ c¸c m· ph¶n håi. §Ó ®¶m b¶o tÝnh thèng nhÊt truyÒn th«ng trong qu¸ tr×nh truyÒn th­, ®ång thêi ®Ó ®¶m b¶o phÝa SMTP Sender lu«n biÕt ®­îc chÝnh x¸c tr¹ng th¸i cña SMTP Receiver, mäi c©u lÖnh yªu cÇu ®Òu ph¶i ®­îc tr¶ lêi b»ng c¸c m· th«ng tin ph¶n håi chÝnh x¸c. B¶ng M· th«ng tin ph¶n håi cña SMTP M· th«ng tin ph¶n håi Th«ng tin kÌm theo 500 Syntax error or Command unregconized 501 Syntax error in parameters or arguments 503 Bad sequence of command 504 Command parameter not implement 211 System status or System help reply 214 Help message 220 Simple Mail Transfer Service ready 221 Service closing transmission channel 421 Service not available, closing transmission channel 250 OK 251 User not local; will forward to 450 Mailbox unavailable (not found or no access) 551 User not local; please try 452 Insufficent system storage 552 Request mail action aborted 553 Mailbox name not allow (mailbox syntax incorrect) 354 Start mail input, end with . 554 Transaction failed Mét m· th«ng tin ph¶n håi lµ mét sè cã 3 ch÷ sè vµ tiÕp theo lµ mét chuçi v¨n b¶n m« t¶ vÒ m· ®ã. B¶ng trªn ®©y sÏ tr×nh bµy chi tiÕt c¸c th«ng tin ph¶n håi: TruyÒn th«ng gi÷a Sender-SMTP vµ Receiver-SMTP ®­îc coi nh­ mét cuéc héi tho¹i, ®­îc ®iÒu khiÓn bëi Sender-SMTP. Nh­ vËy, Sender-SMTP ®­a ra mét lÖnh yªu cÇu vµ Receiver- SMTP sÏ tr¶ l¹i mét m· th«ng tin ph¶n håi. Sau khi Sender-SMTP ®­a ra lÖnh yªu cÇu, nã ph¶i ®îi th«ng tin ph¶n håi tõ Receiver-SMTP råi míi ®­a ra lÖnh tiÕp theo. Trong c¸c m· th«ng tin ph¶n håi, m· ph¶n håi quan träng nhÊt lµ 220. Nã ®Æc tr­ng cho viÖc thùc hiÖn thµnh c«ng yªu cÇu. 1.6. PHAÂN TÍCH GIAO THÖÙC POP3 (RFC 1081,1082) 1.6.1. Giíi thiÖu Giao thøc POP3 cho phÐp mét m¸y tr¹m cã thÓ truy nhËp ®Ó lÊy th­ trªn m¸y chñ. Nã ®Þnh nghÜa c¸ch thøc giao tiÕp víi POP3 Server bëi c¸c lÖnh chuÈn ®­îc quy ®Þnh trong RFC 1081 ®Ó lÊy th­ vÒ. 1.6.2. M« h×nh ho¹t ®éng phiªn giao dÞch Vµo thêi ®iÓm b¾t ®Çu, tiÕn tr×nh phÝa Server b¾t ®Çu dÞch vô POP3 b»ng c¸ch ”l¾ng nghe” trªn cæng TCP 110. ThuËt ng÷ ”l¾ng nghe” ë ®©y ®­îc hiÓu theo nghÜa lµ tiÕn tr×nh phÝa Server lu«n lu«n tiÕp nhËn c¸c th«ng tin ®Õn ë cæng dÞch vô mµ nã cung cÊp - trong tr­êng hîp nµy lµ cæng dÞch vô 110 - xö lý vµ göi kÕt qu¶ vÒ cho tiÕn tr×nh yªu cÇu dÞch vô phÝa Client. Khi mét tiÕn tr×nh phÝa Client muèn sö dông dÞch vô, nã thiÕt lËp mét kÕt nèi TCP tíi m¸y chñ phÝa Server. Khi kÕt nèi ®­îc thiÕt lËp, POP3 Server göi mét th«ng b¸o chÊp nhËn vµ sau ®ã tiÕn tr×nh phÝa Client vµ POP3 Server cã thÓ trao ®æi c¸c lÖnh còng nh­ c¸c th«ng tin ph¶n håi cho ®Õn khi kÕt nèi bÞ hñy bá hoÆc phiªn giao dÞch kÕt thóc. C¸c lÖnh trong POP3 bao gåm tõ khãa, cã thÓ theo sau lµ mét hoÆc nhiÒu tham sè. TÊt c¶ c¸c lÖnh ®Òu ®­îc kÕt thóc bëi cÆp ký tù CRLF. Tõ khãa vµ c¸c tham sè lµ c¸c kÝ tù in ®­îc trong b¶ng m· kÝ tù ASCII, gi÷a chóng ®­îc ph©n c¸ch bëi mét kÝ tù dÊu c¸ch trèng. Tõ khãa cã thÓ dµi ba hoÆc bèn kÝ tù, cßn c¸c tham sè cã thÓ dµi tíi bèn m­¬i kÝ tù. Th«ng tin ph¶n håi cña POP3 bao gåm mét th«ng b¸o tr¹ng th¸i vµ mét tõ khãa cã thÓ theo sau mét sè th«ng tin thªm. TÊt c¶ c¸c th«ng tin ph¶n håi ®Òu ®­îc kÕt thóc bëi cÆp ký tù CRLF. Cã hai th«ng b¸o tr¹ng th¸i lµ: X¸c ®Þnh (”+OK”) ®Ó x¸c nhËn thµnh c«ng vµ phñ ®Þnh (”-ERR”) ®Ó x¸c nhËn trong tr­êng hîp cã lçi. C¸c th«ng tin ph¶n håi cho c¸c lÖnh thùc tÕ lµ nhiÒu dßng. Trong nh÷ng tr­êng hîp nµy, sau khi göi dßng ®Çu tiªn cña th«ng tin ph¶n håi vµ mét cÆp CRLF, bÊt cø mét dßng thªm vµo nµo ®­îc göi th× ®Òu ph¶i kÕt thóc b»ng cÆp CRLF. Khi tÊt c¶ c¸c th«ng tin ph¶n håi ®Òu ®· ®­îc göi, mét dßng cuèi cïng ®­îc göi, bao gåm m· kÕt thóc (m· thËp ph©n 046, ”.”) vµ mét cÆp CRLF. NÕu cã mét dßng nµo trong th«ng tin ph¶n håi ®a dßng b¾t ®Çu víi mét m· ký tù kÕt thóc (dÊu chÊm ”.”), th× dßng ®ã coi nh­ ch­a ®­îc xö lÝ xong ®èi víi th«ng tin ph¶n håi . V× vËy, mét th«ng tin ph¶n håi ®a dßng ®­îc kÕt thóc bëi bé n¨m octets lµ ”CRLF. CRLF”. Mét phiªn giao dÞch POP3 ph¶i tr¶i qua mét sè c¸c tr¹ng th¸i trong suèt thêi gian tån t¹i cña phiªn lµm viÖc. Mçi lÇn kÕt nèi TCP ®­îc më vµ POP3 Server göi th«ng b¸o chÊp nhËn, phiªn lµm viÖc chuyÓn sang trang th¸i AUTHORIZATION. ë tr¹ng th¸i nµy, Client ph¶i tù ®Þnh danh cña m×nh cho POP3 Server. Mçi khi Client thùc hiÖn xong viÖc ®Þnh danh, Server nhËn ®­îc tµi nguyªn t­¬ng øng víi hép th­ cña Client, nã sÏ chuyÓn sang tr¹ng th¸i TRANSACTION. Trong tr¹ng th¸i nµy, c¸c yªu cÇu cña Client ®­îc chuyÓn sang vµ ®­îc thùc hiÖn bªn phÝa POP3 Server. Khi Client ®­a ra lÖnh QUIT, phiªn lµm viÖc chuyÓn sang tr¹ng th¸i UPDATE. Trong tr¹ng th¸i nµy, POP3 Server gi¶i phãng mäi tµi nguyªn thu ®­îc trong suèt tr¹ng th¸i TRANSACTION vµ kÕt thóc. §ång thêi, kÕt nèi TCP kÕt thóc. Mét POP3 Server cã thÓ cã mét bé x¸c ®Þnh thêi gian. NÕu sau mét kho¶ng thêi gian x¸c ®Þnh tr­íc mµ phÝa Client kh«ng cã t¸c ®éng g× th× POP3 Server cã thÓ tù ®éng kÕt thóc phiªn lµm viÖc. Kho¶ng thêi gian nµy Ýt nhÊt lµ kho¶ng 10 phót. NÕu trong kho¶ng thêi gian nµy cã bÊt k× mét lÖnh nµo tõ phÝa Client, bé x¸c ®Þnh thêi gian sÏ ®­îc khëi t¹o l¹i. Khi hÕt thêi gian hiÖu lùc, phiªn lµm viÖc kh«ng chuyÓn sang tr¹ng th¸i UPDATE. Server sÏ ®ãng kÕt nèi TCP mµ kh«ng chuyÓn bÊt k× mét th­ nµo còng nh­ c¸c th«ng tin ph¶n håi nµo vÒ phÝa Client. Nh­ vËy, ta thÊy mét phiªn lµm viÖc cña POP3 ph¶i tr¶i qua ba tr¹ng th¸i: tr¹ng th¸i AUTHORIZATION, tr¹ng th¸i TRANSACTION vµ tr¹ng th¸i UPDATE. PhÇn tiÕp theo sÏ tr×nh bµy chi tiÕt vÒ sù ho¹t ®éng cña POP3 Server trong tõng tr¹ng th¸i cña phiªn giao dÞch vµ c¸c lÖnh cã thÓ thùc hiÖn trong mçi tr¹ng th¸i ®ã. 1.6.3. Tr¹ng th¸i AUTHORIZATION Khi mét phiªn giao dÞch POP3 ®­îc kÝch ho¹t bëi mét POP3 Client, POP3 Server sÏ göi mét th«ng b¸o cho phÝa Client. T­¬ng tù nh­ phÇn tr×nh bµy vÒ giao thøc SMTP, ta còng sö dông Telnet ®Ó kÝch ho¹t dÞch vô nµy. Mét vÝ dô cã thÓ lµ: S: +OK dewey POP3 server ready Chó ý r»ng, ®©y lµ th«ng tin ph¶n håi tõ phÝa POP3 Server. DÊu ”+” cã nghÜa lµ thµnh c«ng, ng­îc l¹i, dÊu ”-” lµ kh«ng thµnh c«ng bÞ lçi. Phiªn lµm viÖc POP3 hiÖn t¹i ®ang ë tr¹ng th¸i AUTHORIZATION. PhÝa Client b©y giê cÇn ph¶i ®­a vµo c¸c lÖnh ®Ó x¸c ®Þnh ng­êi nhËn th­ cho POP3 Server. §Ó thùc hiÖn viÖc nµy, phÝa Client sö dông hai lÖnh lµ USER vµ PASS. §Çu tiªn, Client sö dông lÖnh USER víi tham sè lµ account cña ng­êi nhËn. NÕu th«ng tin ph¶n håi tõ phÝa POP3 Server b¾t ®Çu b»ng dÊu ”+” (+OK) th× phÝa Client cã thÓ göi tiÕp lÖnh PASS víi tham sè lµ mËt khÈu cña ng­êi nhËn ®Ó kÕt thóc viÖc ®Þnh danh hoÆc còng cã thÓ göi lÖnh QUIT ®Ó kÕt thóc phiªn giao dÞch. Trong tr­êng hîp ng­îc l¹i, nÕu th«ng tin ph¶n håi b¾t ®Çu b»ng dÊu ”-” (-ERR) cho lÖnh USER th× phÝa Client cã thÓ thùc hiÖn l¹i viÖc ®Þnh danh hoÆc kÕt thóc phiªn giao dÞch b»ng lÖnh QUIT. Khi phÝa Client ®­a vµo lÖnh PASS, POP3 Server sÏ sö dông kÕt hîp hai ®èi sè ®­a vµo bëi hai lÖnh USER vµ PASS ®Ó x¸c ®Þnh xem ng­êi sö dông nµy cã tån t¹i hay kh«ng, cã ®­îc quyÒn truy nhËp vµo mailbox hay kh«ng,.v.v Sau khi ®· x¸c ®Þnh phÝa Client ®­îc quyÒn truy nhËp, POP3 Server sÏ thùc hiÖn viÖc kho¸ mailbox ®Ó chèng l¹i viÖc söa ®æi hoÆc xo¸ th­ trong mailbox tõ c¸c phiªn POP3 kh¸c, tr­íc khi chuyÓn sang tr¹ng th¸i UPDATE. NÕu nh­ viÖc kho¸ mailbox thµnh c«ng, phiªn giao dÞch POP3 sÏ chuyÓn sang tr¹ng th¸i TRANSACTION. Vµo thêi ®iÓm nµy, ch­a cã mét th­ nµo bÞ ®¸nh dÊu xo¸. Trong tr­êng hîp ng­îc l¹i, nÕu nh­ v× mét lý do nµo ®ã kh«ng thÓ kho¸ ®­îc mailbox (vÝ dô nh­ kh«ng ®­îc quyÒn truy nhËp hoÆc mailbox ®· bÞ kho¸,.v.v) th× POP3 Server sÏ göi mét th«ng tin ph¶n håi ”-ERR” vµ kÕt thóc lu«n phiªn giao dÞch. Sau khi POP3 Server ®· më ®­îc mailbox, nã sÏ g¾n chØ sè cho mçi mét bøc th­ vµ tÝnh lu«n kÝch th­íc tõng bøc th­. ChØ sè ®­îc b¾t ®Çu tõ 1. Trong c¸c lÖnh cña POP3 vµ c¸c th«ng tin ph¶n håi, tÊt c¶ c¸c chØ sè vµ kÝch th­íc th­ ®Òu ë d¹ng c¬ sè 10. Sau ®©y lµ mét sè lÖnh cã thÓ thùc hiÖn trong tr¹ng th¸i AUTHORIZATION: a. LÖnh USER [name] · Tham sè: lµ mét x©u ký tù ®Þnh danh cña mailbox, duy nhÊt ®èi víi Server. · H¹n chÕ: ChØ cã thÓ thùc hiÖn trong tr¹ng th¸i AUTHORIZATION vµo thêi ®iÓm ban ®Çu hoÆc sau khi viÖc ®Þnh danh USER vµ PASS kh«ng thµnh c«ng. · Chi tiÕt: LÖnh nµy dïng ®Ó ®Þnh danh ng­êi sö dông. · Th«ng tin ph¶n håi: +OK name is welcome here -ERR Never heard of name VÝ dô: C: USER mrose S: +OK mrose is a real hoopy frood ... C: USER frated S: -ERR sorry, frated doesn't get his mail here b. LÖnh PASS [string] · Tham sè: lµ mét x©u ký tù ®Þnh danh cña mËt khÈu t­¬ng øng víi mailbox. · H¹n chÕ: ChØ cã thÓ thùc hiÖn trong tr¹ng th¸i AUTHORIZATION vµo thêi ®iÓm ban ®Çu hoÆc sau khi viÖc ®Þnh danh USER thµnh c«ng. · Chi tiÕt: LÖnh nµy dïng ®Ó x¸c ®Þnh mËt khÈu t­¬ng øng víi ng­êi sö dông ®· ®Þnh danh b»ng lÖnh USER. · Th«ng tin ph¶n håi: +OK maildrop locked and ready -ERR invalid password -ERR unable to lock maildrop VÝ dô: C: USER mrose S: +OK mrose is a real hoopy frood C: PASS secret S: +OK mrose’s maildrop has 2 messages (320 octets) ... C: USER mrose S: +OK mrose is a real hoopy frood C: PASS secret S: -ERR unable to lock mrose’s maildrop, file already locked c. LÖnh QUIT · Tham sè: kh«ng. · H¹n chÕ: kh«ng · Chi tiÕt: LÖnh nµy dïng ®Ó kÕt thóc phiªn giao dÞch. · Th«ng tin ph¶n håi: +OK VÝ dô: C: QUIT S: +OK dewey POP3 server signing off 1.6.4. Tr¹ng th¸i TRANSACTION Mçi lÇn phÝa Client thùc hiÖn thµnh c«ng viÖc ®Þnh danh víi POP3 Server, mailbox t­¬ng øng sÏ ®­îc kho¸ vµ phiªn lµm viÖc b©y giê sÏ ë tr¹ng th¸i TRANSACTION. PhÝa Client cã thÓ sö dông bÊt cø mét lÖnh POP3 nµo ®Ó thùc hiÖn giao dÞch víi POP3 Server. C¸c lÖnh nµy cã thÓ lÆp l¹i mµ kh«ng bÞ h¹n chÕ g× c¶. Sau mçi lÖnh, phÝa POP3 Server sÏ göi tr¶ mét th«ng tin ph¶n håi vµ kÕt qu¶ thùc hiÖn. Cuèi cïng, phÝa Client thùc hiÖn lÖnh QUIT ®Ó chuyÓn phiªn giao dÞch sang tr¹ng th¸i UPDATE. Sau ®©y lµ mét sè lÖnh cã thÓ thùc hiÖn trong tr¹ng th¸i TRANSACTION: a. LÖnh STAT · Tham sè: kh«ng. · H¹n chÕ: ChØ cã thÓ thùc hiÖn trong tr¹ng th¸i TRANSACTION. · Chi tiÕt: LÖnh nµy dïng ®Ó lÊy th«ng tin vÒ sè th­ trong mailbox vµ kÝch th­íc cña mailbox t­¬ng øng víi ng­êi sö dông. CÊu tróc cña dßng th«ng tin ph¶n håi nµy lµ: “+OK”, tiÕp theo lµ mét dÊu c¸ch trèng, sè l­îng th­ trong mailbox vµ kÝch th­íc cña mailbox t­¬ng øng víi ng­êi dïng ®· x¸c ®Þnh. · Th«ng tin ph¶n håi: +OK nn mm VÝ dô: C: STAT S: +OK 2 320 b. LÖnh LIST [msg] · Tham sè: (cã thÓ cã hoÆc kh«ng) lµ mét sè hiÖu cña th­ trong sè nh÷ng th­ hiÖn cã trong mailbox cña ng­êi dïng. L­u ý, nh÷ng th­ bÞ ®¸nh dÊu xo¸ sÏ bÞ bá qua. · H¹n chÕ: ChØ cã thÓ thùc hiÖn trong tr¹ng th¸i TRANSACTION. · Chi tiÕt: LÖnh nµy dïng ®Ó liÖt kª danh s¸ch c¸c th­ cã trong mailbox vµ kÝch th­íc t­¬ng øng hoÆc lÊy th«ng tin vÒ mét th­ cô thÓ nµo ®ã. Trong tr­êng hîp kh«ng ®­a vµo tham sè th× POP3 Server sÏ tr¶ l¹i “+OK” vµ mét danh s¸ch c¸c th­ vµ sè hiÖu t­¬ng øng trong mailbox cña ng­êi dïng. Trong tr­êng hîp ng­îc l¹i, cã tham sè, nÕu tham sè n»m trong kho¶ng cho phÐp tõ 1 ®Õn sè th­ th× POP3 Server sÏ tr¶ l¹i “+OK” vµ sè hiÖu cña th­ vµ kÝch th­íc t­¬ng øng. Ng­îc l¹i, POP3 Server sÏ tr¶ l¹i “-ERR”. · Th«ng tin ph¶n håi: +OK scan listing follows -ERR no such message VÝ dô: C: LIST S: +OK 2 messages (320 octets) S: 1 120 S: 2 200 S: . ... C: LIST 2 S: +OK 2 200 ... C: LIST 3 S: -ERR no such message, only 2 messages in maildrop c. LÖnh RETR [msg] · Tham sè: Sè hiÖu cña th­ cÇn lÊy. · H¹n chÕ: ChØ cã thÓ thùc hiÖn trong tr¹ng th¸i TRANSACTION. · Chi tiÕt: LÖnh nµy dïng ®Ó hiÖn thÞ néi dung th­ t­¬ng øng víi sè hiÖu ®­a vµo. NÕu thùc hiÖn ®­îc POP3 Server sÏ göi tr¶ mét th«ng tin ph¶n håi ®a dßng, b¾t ®Çu b»ng ”+OK”, tiÕp theo lµ c¸c dßng chøa ®ùng th«ng tin vÒ néi dung th­ còng nh­ tiªu ®Ò cña th­ ®­îc chän. Trong tr­êng hîp cã lçi, POP3 Server sÏ göi tr¶ ”-ERR” · Th«ng tin ph¶n håi: +OK message follows -ERR no such message VÝ dô: C: RETR 1 S: +OK 120 octets S: S: . d. LÖnh DELE [msg] · Tham sè: sè hiÖu cña th­ cÇn xo¸. · H¹n chÕ: chØ cã thÓ thùc hiÖn trong tr¹ng th¸i TRANSACTION. · Chi tiÕt: lÖnh nµy dïng ®Ó xo¸ mét th­ t­¬ng øng víi sè hiÖu ®­a vµo. NÕu thùc hiÖn ®­îc, POP3 Server sÏ göi tr¶ mét th«ng tin ph¶n håi b¾t ®Çu b»ng ”+OK”, tiÕp theo lµ th«ng tin vÒ th­ ®· bÞ xãa. Trong tr­êng hîp cã lçi, POP3 Server sÏ göi tr¶ ”-ERR”. L­u ý, POP3 Server chØ thùc hiÖn viÖc ®¸nh dÊu xo¸ trªn bøc th­ ®ã. Nã chØ bÞ xo¸ thùc sù sau khi phiªn giao dÞch chuyÓn sang tr¹ng th¸i UPDATE. · Th«ng tin ph¶n håi: +OK message deleted -ERR no such message VÝ dô: C: DELE 1 S: +OK message 1 deleted ... C: DELE 2 S: -ERR message 2 already deleted e. LÖnh NOOP · Tham sè: kh«ng. · H¹n chÕ: chØ cã thÓ thùc hiÖn trong tr¹ng th¸i TRANSACTION. · Chi tiÕt: lÖnh nµy dïng ®Ó x¸c nhËn kÕt nèi víi POP3 Server. POP3 Server kh«ng lµm g× c¶ mµ chØ göi tr¶ l¹i ”+OK” cho Client. · Th«ng tin ph¶n håi: +OK VÝ dô: C: NOOP S: +OK f. LÖnh LAST · Tham sè: kh«ng. · H¹n chÕ: chØ ®­îc thùc hiÖn trong tr¹ng th¸i TRANSACTION. · Chi tiÕt: POP3 server ®Æt mét tr¶ lêi x¸c ®Þnh víi dßng chøa sè th«ng ®iÖp cao nhÊt hiÖn t¹i mµ nã ®­îc truy cËp trong maildrop. Trong tr­êng hîp cßn ®ang ë trong tr¹ng th¸i TRANSACTION mµ c¸c th­ ®· bÞ ®¸nh dÊu xãa ch­a cã lÖnh RSET th× sè th­ hiÖn cã trong maildrop vÉn kh«ng thay ®æi tÝnh lu«n c¶ c¸c th­ ®· ®­îc ®¸nh dÊu xo¸. · Th«ng tin ph¶n håi: +OK nn VÝ dô: C: STAT S: +OK 4 320 C: LAST S: +OK 1 C: RETR 3 S: +OK 120 octets S: S: . C: LAST S: +OK 3 C: DELE 2 S: +OK message 2 deleted C: LAST S: +OK 3 C: RSET S: +OK C: LAST S: +OK 1 g. LÖnh RSET · Tham sè: kh«ng. · H¹n chÕ: chØ cã thÓ thùc hiÖn trong tr¹ng th¸i TRANSACTION. · Chi tiÕt: lÖnh nµy dïng ®Ó kh«i phôc l¹i nh÷ng th­ ®· bÞ ®¸nh dÊu xãa. NÕu thùc hiÖn ®­îc POP3 Server sÏ göi tr¶ th«ng tin ph¶n håi ”+OK” ®Ó x¸c nhËn ®· bá ®¸nh dÊu ®èi víi nh÷ng th­ ®· bÞ ®¸nh dÊu xãa. Trong tr­êng hîp cã lçi, POP3 Server sÏ göi tr¶ lêi ”-ERR” · Th«ng tin ph¶n håi: +OK VÝ dô: C: RSET S: +OK maildrop has 2 messages (320 octets) 1.6.5. Tr¹ng th¸i UPDATE Khi phÝa Client thùc hiÖn lÖnh QUIT ®ang ë trong tr¹ng th¸i TRANSACTION. phiªn giao dÞch POP3 sÏ chuyÓn sang tr¹ng th¸i UPDATE. L­u ý r»ng nÕu lÖnh QUIT ®­îc thùc hiÖn trong tr¹ng th¸i AUTHORIZATION th× phiªn giao dÞch POP3 kh«ng chuyÓn sang tr¹ng th¸i UPDATE. NÕu mét phiªn giao dÞch bÞ kÕt thóc v× mét lý do nµo ®ã mµ kh«ng ph¶i do phÝa Client thùc hiÖn lÖnh QUIT th× phiªn giao dÞch POP3 còng kh«ng chuyÓn sang tr¹ng th¸i UPDATE vµ còng kh«ng thùc hiÖn viÖc xãa bÊt kú mét th­ nµo tõ mailbox. · LÖnh QUIT · Tham sè: kh«ng. · H¹n chÕ: kh«ng. · Chi tiÕt: LÖnh nµy dïng ®Ó kÕt thóc phiªn giao dÞch mét c¸ch hîp lÖ. POP3 Server sÏ xãa vËt lý tÊt c¶ th­ ®· bÞ ®¸nh dÊu xãa trong mailbox. Sau ®ã, nã sÏ gì bá khãa ®èi víi mailbox ®ã vµ cã mét th«ng tin ph¶n håi ®Ó x¸c nhËn thao t¸c nµy. KÕt nèi TCP sÏ kÕt thóc. · Th«ng tin ph¶n håi: +OK VÝ dô: C: QUIT S: +OK dewey POP3 server signing off (maildrop empty) ... C: QUIT S: +OK dewey POP3 server signing off (2 messages left) ... 1.6.6. VÝ dô vÒ mét phiªn giao dÞch POP3 S: ... C: S: +OK dewey POP3 server ready(Comments to: PostMaster@UDEL.EDU) C: USER mrose S: +OK mrose is a real hoopy frood C: PASS secret S: +OK mrose's maildrop has 2 messages (320 octets) C: STAT S: +OK 2 320 C: LIST S: +OK 2 messages (320 octets) S: 1 120 S: 2 200 S: . C: RETR 1 S: +OK 120 octets S: S: . C: DELE 1 S: +OK message 1 deleted C: RETR 2 S: +OK 200 octets S: S: . C: DELE 2 S: +OK message 2 deleted C: QUIT S: +OK dewey POP3 server signing off (maildrop empty) C: S: 1.7. MIME (MULTIPURPOSE INTERNET MAIL EXTENSIONS) Laø caùc quy ñònh veà ñònh kieåu vaø caáu truùc döõ lieäu do noäi dung mail ñeå noù coù theå chöùa ñöôïc caùc loaïi taøi lieäu phöùc hôïp khaùc nhau nhö: hình aûnh, aâm thanh, file nhò phaân…MIME coøn ñöôïc bieát ñeán nhö mét giao thøc Internet míi mÎ ®­îc ph¸t triÓn ®Ó cho phÐp trao ®æi c¸c th«ng ®iÖp th­ ®iÖn tö cã néi dung phong phó th«ng qua m¹ng kh«ng ®ång nhÊt (heterogeneous network), m¸y mãc, vµ c¸c m«i tr­êng th­ ®iÖn tö. Trong thùc tÕ, MIME còng ®· ®­îc sö dông vµ më réng bëi c¸c øng dông kh«ng ph¶i th­ ®iÖn tö. HiÖn nay, trªn m¹ng diÖn réng Internet, ®èi víi RFC 822 chØ lµm nh÷ng c«ng viÖc ®Þnh nghÜa c¸c header nh­ng cßn néi dung bªn trong th× vÉn cßn lçi thêi, chÝnh v× thÕ mµ vÊn ®Ò nµy kh«ng cßn thÝch hîp n÷a. C¸c vÊn ®Ò bao gåm viÖc göi vµ nhËn th­ nh­ sau: Nh÷ng th«ng ®iÖp sö dông c¸c ng«n ng÷ cã dÊu. vÝ dô: TiÕng Ph¸p vµ tiÕng §øc. Nh÷ng th«ng ®iÖp sö dông c¸c ng«n ng÷ kh«ng ph¶i ch÷ c¸i Latin. vÝ dô: TiÕng Do th¸i, tiÕng Nga. . . Nh÷ng th«ng ®iÖp sö dông c¸c ng«n ng÷ kh«ng cã trong c¸c b¶ng ch÷ c¸i. vÝ dô: TiÕng Trung Quèc, tiÕng NhËt. . . Nh÷ng th«ng ®iÖp sö kh«ng chøa v¨n b¶n. vÝ dô: Cã ©m thanh vµ h×nh ¶nh. Mét gi¶i ph¸p ®· ®­îc ®­a ra trong RFC 1341 vµ ®­îc cËp nhËt míi nhÊt trong RFC 1521. Gi¶i ph¸p nµy ®­îc gäi lµ MIME, hiÖn nay ®­îc sö dông réng r·i. Kh¸i niÖm c¬ b¶n cña MIME lµ tiÕp tôc sö dông ®Þnh d¹ng RFC 822, nh­ng thªm cÊu tróc vµo phÇn th©n cña th«ng ®iÖp vµ ®Þnh nghÜa c¸c nguyªn t¾c m· hãa c¸c th«ng ®iÖp kh«ng ph¶i c¸c b¶ng m· ASCII. §Ó khái bÞ lÖch h­íng cña RFC 822, c¸c th«ng ®iÖp MIME cã thÓ ®­îc göi ®i ®­îc sö dông c¸c giao thøc vµ ch­¬ng tr×nh th­ hiÖn cã. TÊt c¶ c¸c ch­¬ng tr×nh nµy ph¶i ®­îc thay ®æi thµnh c¸c ch­¬ng tr×nh göi vµ nhËn sao cho ng­êi dïng cã thÓ dïng ®­îc. MIME ®Þnh nghÜa n¨m header th«ng ®iÖp míi ®­îc tr×nh bµy trong h×nh bªn d­íi. C¸c header nµy tr­íc tiªn b¸o cho UA nhËn th«ng ®iÖp mµ nã ®ang dïng b»ng th«ng ®iÖp MIME vµ phiªn b¶n cña MIME ®ang dïng. BÊt cø th«ng ®iÖp nµo kh«ng chøa header MIME-Version: ®­îc gi¶ ®Þnh lµ mét th«ng ®iÖp h×nh thøc ®­îc m· hãa b»ng tiÕng Anh vµ nã ®­îc xö lý nh­ thÕ. Header Meaning MIME-Version: Indentifies the MIME version Content-Description: Human-readable string telling what is in the message Content-Id: Unique identifier Content-Transfer-Encoding: How the body is wrapped for transmission Content-Type: Nature of the message C¸c header RFC 822 ®­îc MIME thªm vµo. B¶y kiÓu chÝnh m« t¶ MIME ®­îc ®Þnh nghÜa trong RFC 1521, mçi kiÓu cña nã l¹i cã mét hay nhiÒu kiÓu phô. KiÓu chÝnh vµ kiÓu phô (xem h×nh bªn d­íi) ®­îc ph©n biÖt bëi mét dÊu v¹ch chÐo, nh­ cã d¹ng sau: Content-Type: video/mpeg Type Subtype Description Text Plain Unformatted text Richtext Text including simple formatting commands Image Gif Still picture in GIF format Jpeg Still picture in JPEG format Audio Basic Audible sound Video Mpeg Movie in MPEG format Application Octel-stream An uninterpreted byte sequence Postscript A printable document in Postscript Message Rfc 822 A MIME RFC 822 message Partial Message has been split for transmission External-body Message itself must be fetched over the net Multipart Mixed Independent parts in the specified order Alternative Same message in different formats Parallel Parts must be viewed simultaneously Digest Each part is a complete RFC 822 message C¸c kiÓu chÝnh vµ kiÓu phô ®­îc ®Þnh nghÜa trong RFC 1521 1.8.POP BEFORE SMTP(CHÖÙNG THÖÏC QUYEÀN TRUY CAÄP THEO GIAO THÖÙC POP TRÖÔÙC KHI SÖÛ DUÏNG SMTP) Ñeå traùnh tình traïng caùc maùy chuû mail server bò laïm duïng göûi mail oà aït hay coøn goïi laø “bom thö”, cô cheá POP before SMTP yeâu caàu maùy khaùch muoán söû duïng dòch vuï mai cuûa maùy chuû tröôùc heát phaûi ñaêng nhaäp vaøo taøi khoaûn(account) theo giao thöùc POP. Neáu quaù trình ñaêng nhaäp thaønh coâng, cô cheá gôûi mail baèng SMTP môùi coù theå dieãn ra tieáp theo. 1.9.MAIL CLIENT, WEB MAIL Ñaây laø caùc chöông trình thöôøng ñöôïc duøng nhaát trong quaù trình göûi, nhaän, ñoïc mail. Nhöõng chöông trình öùng duïng thuoäc daïng mail client coù raát nhieàu ví duï nhö :Outlook Express, Netscap Communicator…neáu chöông trình mail client ñöôïc vieát döôùi daïng giao dieän Web seõ ñöôïc goïi laø Web mail. Thaät ra Web mail töông taùc khoù khaên hôn caùc öùng duïng mail client thoâng thöôøng vì phaûi döïa voaø trình chuû Web Server. Tuy nhieân öu ñieåm cuûa Web mail laø baïn coù theå truy caäp mail ñöôïc ôû moïi luùc moïi nôi, baát cöù khi naøo keát noái ñöôïc vaøo Internet. CHÖÔNG 4 : GIÔÙI THIEÄU VEÀ CAÙC COÂNG NGHEÄ LIEÂN QUAN 2.1.GIÔÙI THIEÄU VEÀ JRUN WEBSERVER 3.1 JRun laø öùng duïng trình chuû Java (Java Web Server) nhaèm phöïc vuï nhöõng coâng ngheä môùi nhaát cuûa Java nhö Servlet/JSP vaø EÏB. Maëc duø hieän nay coù raát nhieàu trình chuû Web daønh cho Java nhö Java Web Server, Web Logic, Apache,…Trong ñeà taøi naøy toâi seõ öùng duïng JRun Web Server chaïy treân moâi tröôøng Windows NT/2000, do JRun ñöôïc vieát baèng Java neân ta coù theå söû duïng vaø caøi ñaët JRun caû treân moâi tröôøng Linux laãn Unix. JRun khoâng chæ ñôn thuaàn laø moät trình chuû Web maø coøn coù caùc tính naêng keát hôïp vôùi caùc trình chuû Web khaùc nhö IIS cuûa Windows hay Apache 2.2.GIÔÙI THIEÄU VEÀ SQL SERVER 7.0 2.2.1. Lyù thuyeát heä quaûn trò cô sôû döõ lieäu sql server 7.0 vaø Caáu truùc cô sôû döõ lieäu cuûa sql server 7.0 SQL Server toå chöùc döõ lieäu löu trong Cô sôû döõ lieäu(CSDL) thaønh nhöõng thaønh phaàn logic. User laøm vieäc treân nhöõng thaønh phaàn logic naøy nhö baûng (table), view, procedure… Thaønh phaàn vaät lyù cuûa nhöõng file thì trong suoát (transparent), chæ coù ngöôøi quaûn lyù Cô sôû döõ lieäu môùi ñöôïc laøm vieäc treân ñoù. SQL Server coù 4 cô sôû döõ lieäu heä thoáng ( master, msdb, model, temdb database ) vaø caùc cô sôû döõ lieäu cuûa user. Hình minh hoïa Master database: Ghi laïi caáu hình heä thoáng cuûa SQL Server. Noù ghi laïi taát caû taøi khoaûn ñaêng kyù cuûa user vaø caáu hình heä thoáng, nhöõng file primary chöùa thoâng tin khôûi ñoäng cuûa Cô sôû döõ lieäu cuûa user, chöùa thoâng tin khôûi ñoäng cuûa SQL Server. Nhöõng thao taùc sau gaây ra nhöõng thay ñoåi trong master database:Taïo , thay ñoåi, xoùa cô sôû döõ lieäu,thay ñoåi transaction log. Theâm hay xoùa cuûa nhöõng sever söû duïng thuû tuïc heä thoáng nhö sp-addserver (theâm server) and sp-dropserver (boû server). Temdb database: chöùa nhöõng baûng taïm vaø nhöõng stored procedure taïm. Nhöõng baûng taïm vaø nhöõng stored procedure cuûa user khi noái keát vaøo heä thoáng ñöôïc löu trong temdb database. Khi SQL khôûi ñoäng thì taát caû caùc baûng taïm vaø caùc stored procedure trong temdb database ñeàu maát. Stored procedure: laø 1 taäp hôïp bieân dòch tröôùc cuûa nhöõng caâu leänh cuûa Transact-SQL ñöôïc löu vaø xöû lyù nhö 1 ñôn vò (unit). Stored procedure saün saøng cho vieäc quaûn lyù SQL Server vaø hieån thò thoâng tin cuûa cô sôû döõ lieäu, cuûa nhöõng ngöôøi söû duïng. SQL Server cung caáp nhöõng stored procedure goïi laø stored procedure heä thoáng. Model database: ñöôïc duøng nhö 1 khuoân maãu cuûa CSDL trong heä thoáng. Khi taïo ra 1 CSDL thì phaàn ñaàu cuûa CSDL laø baûn sao cuûa model database, phaàn coøn laïi laø nhöõng trang troáng. Msdb database: SQL Server Agent duøng msdb database ñeå laäp keá hoaïch alert, job. Alert laø 1 ñònh nghóa cuûa ngöôøi söû duïng ñaùp öùng 1 söï kieän cuûa SQL Server. Alert coù theå thöïc thi caû nhieäm vuï ñònh nghóa hoaëc gôûi e-mail ñeán 1 ngöôøi chæ ñònh. Job laø söï thöïc hieän 1 haønh ñoäng quaûn lyù chöùa 1 hoaëc nhieàu böôùc, thay theá cho thuaät ngöõ task cuûa SQL Server 6.5. 2.2.2. Caáu truùc cô sôû döõ lieäu vaät lyù: 2.2.2.1. Trang (page): Ñôn vò cô baûn löu tröõ döõ lieäu laø trang (page). Trong SQL Server 7.0 , 1 trang coù kích thöôùc 8MB, ta seõ coù 128 trang/1MB. 96 byte ñaàu cuûa moãi trang chöùa header cuûa trang goàm thoâng tin heä thoáng nhö loaïi trang, soá vuøng troáng cuûa trang. Caáu truùc trang döõ lieäu: Caùc haøng döõ lieäu (data row) ñöôïc ñöa vaøo tuaàn töï ngay sau page header, row offset ñöôïc baét ñaàu töø cuoái trang, chæ ñeán data row vaø cho bieát byte baét ñaàu cuûa data row, kích thöôùc haøng toái ña laø 8060 byte. 2.2.2.2 .Extent: Extent laø ñôn vò cô baûn chæ vuøng löu baûng vaø index. Moãi extent goàm 8 trang lieân tuïc nhau. Coù 2 loaïi extent: Mixed extent coù theå löu nhöõng ñoái töôïng khaùc nhau. Uniform extent chæ coù theå löu 1 ñoái töôïng duy nhaát. 2.2.2.3 Nhöõng loaïi file trong CSDL:SQL Server coù 3 loaïi file: Primary file: laø file baét ñaàu cuûa cô sôû döõ lieäu. Moãi cô sôû döõ lieäu chæ coù 1 file primary, teân file coù phaàn môû roäng laø .mdf Secondary file: laø file löu nhöõng gì coøn laïi cuûa cô sôû döõ lieäu maø khoâng chöùa trong primary file, coù theå coù nhieàu file secondary, teân file coù phaàn môû roäng laø .ndf. Log file: chöùa nhöõng thoâng tin transaction log, ñöôïc duøng ñeå khoâi phuïc cô sôû döõ lieäu, moãi cô sôû döõ lieäu coù ít nhaát 1 log file, teân file coù phaàn môû roäng laø .ldf. File cuûa SQL Server coù 2 teân: Logical_file_name: laø teân duøng trong nhöõng caâu leänh Transact_SQL. Os_file _name: laø teân file vaät lyù, chæ roõ ñöôøng daãn cuûa file MyDB_primary laø teân logical_file_name, c:\Mssql7\Data\MyData1.mdf laø teân os_file_name. Nhöõng trang trong file ñöôïc ñaùnh soá baét ñaàu töø 0. Moãi file coù 1 soá ID. Moãi trang trong file goàm caû ID file vaø soá thöù töï trang trong file. Ví duï: file primary coù kích thöôùc 4MB, vaø secondary coù kích thöùôc 1 MB. Trang ñaàu tieân trong moãi file laø trang header file chöùa thoâng tin veà thuoäc tính cuûa file. Trang thöù 9 trong primary file laø trang khôûi ñoäng cô sôû döõ lieäu chöùa thoâng tin veà thuoäc tính cuûa cô sôû döõ lieäu. 2.3. LYÙ THUYEÁT MO HÌNH QUAN HEÄ 2. 3.1. Caùc khaùi nieäm cô baûn Thöïc theå: laø moät ñoái töôïng cuï theå naøo ñoù Thuoäc tính thöïc theå: Tính chaát xaùc ñònh thöïc theå Lôùp thöïc theå : Caùc thöïc theå coù cuøng thuoäc tính Löôïc ñoà quan heä: Thuoäc tính: Teân thuoäc tính, mieàn xaùc ñònh cuûa thuoäc tính Löôïc ñoà quan heä goàm caùc thuoäc tính cuûa thöïc theå (teân, mieàn xaùc ñònh) cuøng vôùi caùc meänh ñeà raøng buoäc Löôïc ñoà cuûa moät quan heä: R== (A1: D1’ A2 : D2 ,……,An :Dn , M) trong ñoù: AI :Teân thuoäc tính, DI :Mieàn xaùc ñònh cuûa thuoäc tính,M: Meänh ñeà raøng buoäc 2.3.2. Khaùi Nieäm phuï thuoäc döõ lieäu vaø caùc daïng chuaån Moät thuoäc tính goïi laø phuï thuoäc vaøo caùc thuoäc tính khaùc khi giaù trò cuûa thuoäc tính naøy phuï thuoäc vaøo giaù trò cuûa thuoäc tính kia. Söï phuï thuoäc coù theå laø tröïc tieáp hay giaùn tieáp. Moät quan heä bao giôø cuõng coù moät nhoùm thuoäc tính maø giaù trò cuûa chuùng qui ñònh giaù trò cuûa caùc thuoäc tính khaùc, nhoùm thuoäc tính ñoù goïi laø khoùa. Vôùi moät quan heä tuøy vaøo caùc phuï thuoäc cuûa caùc thuoäc tính vaøo khoùa trong ñoù maø ta phaân chia caùc quan heä ñoù thaønh caùc daïng chuaån khaùc nhau. Caùc daïng chuaån cô baûn: Daïng chuaån 1 Daïng chuaån 2 Daïng chuaån 3 Caùc döõ lieäu löu giöõ döôùi daïng chuaån 3 traùnh ñöôïc hieän töôïng dö thöøa döõ lieäu, taïo cho döõ lieäu coù tính ñoäc laäp cao. Caùc quan heä neáu chöa ôû daïng chuaån 3 seõ ñöôïc phaân raõ thaønh caùc quan heä nhoû hôn ôû daïng chuaån 3. 2.3.3 Khaùi nieäm chæ daãn vaø khoùa chæ daãn Ñeå coù theå tìm kieám thoâng tin nhanh theo moät tieâu chuaån naøo ñoù chuùng ta taïo ra caùc thoâng tin chæ daãn theo tieâu chuaån ñoù. Caùc thoâng tin chæ daãn laø caùc thoâng tin giuùp ta tìm kieám döõ lieäu nhanh. Caùc thoâng tin naøy goïi laø khoùa chæ daãn . Khoùa chæ daãn coù theå laø moät tröôøng, hoaëc nhieàu tröôøng ï. Vôùi caùch taïo ra khoùa chæ daãn theo tieâu chuaån naøo ñoù ta coù theå tìm kieám nhanh döõ lieäu theo tieâu chuaán ñoù. 2.4.GIÔÙI THIEÄU VEÀ JAVA SERVLET 2.4.1.Khaùi nieäm veà JAVA SERVLET Maõ nguoàn cuûa Servlet döôïc bieân dòch ra maõ byte – code cuûa Java. Servlet deã söû duïng vaø phaùt trieån nhöõng öùng duïng Web nhanh hôn CGI. Servlet chaïy töï ñoäng khi chuùng ñöôïc goïi töø trình chuû (Web server) . Servlet chaïy toaøn boä treân maùy aûo Java, xöû lyù vaø sinh maõ HTML traû veà trình khaùch. Baèng caùch naøy Servlet coù theå chaïy treân raát nhieàu trình chuû hieåu Java vaø chuùng khoâng phuï thuoäc vaø trình duyeät (browser). 2.4.2.Nhöõng öùng duïng thöïc teá cuûa JAVA SERVLET vaø kieán truùc cuûa JAVA SERVLET Servlet coù theå ñöôïc söû duïng trong baát kyø moät öùng duïng naøo lieân quan ñeán Web. Hai goùi taïo neân kieán truùc cuûa Java Servlet laø : javax.servlet vaø javax.servlet.http. Goùi javax.servlet chöùa ñöïng phaàn giao dieän toång quaùt phuïc vuï cho Servlet. javax.servlet.http chöùa ñöïng caùc lôùp phuïc vuï cho giao thöùc trieäu goïi HTTP. Boä khung hình thaønh neân Servlet bao goàm caùc phöông thöùc sau: init() Phöông thöùc khôûi taïo servlet. service() Phöông thöùc nhaän vaø traû lôøi töø phía ngöôøi söû duïng. destroy() Phöông thöùc thöïc hieän vieäc huyû servlet. Caùc taäp tin Servlet ñeàu ñöôïc ñaët trong giao dieän bao goàm caùc phöông thöùc treân. Chuùng raát roõ raøng trong giaûi phaùp laäp trình ñoái töôïng vaø deã daøng môû roäng. 2.5.GIÔÙI THIEÄU VEÀ JAVA SERVER PAGES(JSP) 2.5.1.Khaùi nieäm veà JSP JSP laø coâng ngheä raát maïnh ñeå taïo trang HTML ñoäng veà phía trình chuû. JSP laø phaàn môû roäng tröïc tieáp cuûa Java Servlet, boä dieãn dòch JSP seõ aùnh xaï tröïc tieáp maõ JSP thaønh Servlet. Vieát trang JSP ta khoâng caàn phaûi thoâng qua quaù trình bieân dòch taäp tin thöïc thi .class nhö trong Servlet. JSP cung caáp moâ hình laäp trình Web deã daøng vaø tieän duïng hôn Servlet. Coâng vieäc bieân dòch trang JSP ñöôïc thöïc hieän töï ñoäng bôûi trình chuû. 2.5.2.Quan heä giöõa Servlet vaø JSP 2.5.2.1.Caùch trình chuû bieân dòch trang JSP thaønh servlet Thaät söï caùc trang JSP ñöôïc trình chuû dòch ra thaønh servlet tröôùc khi cho thöïc thi. Khi trình khaùch trieäu goïi trình chuû Web server seõ thöïc hieän caùc böôùc sau: Böôùc 1: Kieåm tra trang JSP ñaõ ñöôïc dòch ra thaøn maõ nguoàn töông ñöông cuûa servlet chöa. Böôùc 2 : Neáu chöa bieân dòch trang JSP thaønh file nguoàn thaønh file nguoàn .java theo caáu truùc cuûa servlet. Goïi trình bieân dòch javac bieân dòch file nguoàn .java thaønh file thöïc thi cuûa servlet .class. Böôùc 3 : Naïp servlet ñaõ bieân dòch ôû böôùc 2, thöïc thi keát quaû traû veà cho trình khaùch. Böôùc 4 :Neáu file JSP ñaõ ñöôïc bieân dòch tröôùc ñoù : thöïc hieän vieäc kieåm tra xem noäi dung file JSP coù thay ñoåi hay khoâng. Neáu coù, quay laïi böôùc 2 bieân dòch laïi trang. Neáu khoâng thöïc hieän laïi böôùc 3. 2.5.2.2. So saùnh giöõa Servlet vaø JSP Do maõ trang JSP thi thöïc thi ñeàu ñöôïc bieân dòch ra servlet cho neân taát caû nhöõng gì servlet laøm ñöôïc cuõng ñoàng nghóa vôùi trang JSP laøm ñöôïc. Vieát trang JSP ñoâi khi ñôn giaûn hôn trang servlet vì khoâng caàn phaûi qua böôùc ñaêng kyù vaø bieân dòch thuû coâng. JSP coù theå troän laãn maõ java vôùi caùc theû HTML neân vieäc thieát keá trang JSP thöôøng ñôn giaûn vaø deã boå sung hôn so vôùi servlet. Tuy nhieân ñaây cuõng laø yeáu toá khoâng neân laïm duïng ñoái vôùi JSP. Neáu taäp trung taát caû maõ Java vaøo cuøng vôùi maõ HTML thì moät khi döï aùn môû roäng vaø trôû neân phöùc taïp taát nhieân vieäc baûo trì vaø naâng caáp öùng duïng Web vôùi haøng traêm trang JSP seõ raát khoù khaên. Trong quaù trình phaùt trieån öùng duïng Web theo nhoùm, vieäc troän laãn maõ Java vaø HTML trong trang JSP cho thaáy khoâng hieäu quaû. Khoù coù theå taùch rôøi giöõa coâng vieäc vieát maõ cho öùng duïng (thöôøng laø vai troø cuûa laäp trình vieân – programmer) vaø nhoùm xaây döïng giao dieän (nhoùm thieát keá Web – Web designer). Maõ trang JSP ôû daïng thuaàn vaên baûn neân thöôøng khoâng che ñöôïc maõ nguoàn cuûa logic chöông trình. Vôùi servlet tuy phaûi bieân dòch vaø ñaêng kyù thuû coâng vôùi trình chuû nhöng buø laïi tính baûo maät cao hôn. Ta chæ caàn cung caáp cho trình chuû Web Server baûn servlet nhò phaân ( file .class ) ñaõ qua böôùc bieân dòch maø khoâng caàn ñeán maõ nguoàn cuûa servlet ban ñaàu. Maët khaùc, caùc servlet coù theå töông taùc lieân hoaøn vôùi nhau ñeå taïo neân nhöõng keát xuaát tuyø bieán vaø ña daïng tröôùc khi traû keát quaû veà cho trình khaùch. Servlet coù theå phaân raõ caùc ñôn theå cuûa döï aùn vaø phaùt trieån ñoäc laäp nhau nhö caùc thaønh phaàn rieâng bieät ñeå raùp laïi trong moät toång theå chung. Maëc duø vaäy, vieäc keát xuaát trong servlet thöôøng döïa vaøo phöông thöùc print() hoaëc println() neân vieäc keát xuaát phuï thuoäc vaøo laäp trình vieân vôùi haøng loaït caùc leänh print() vaø println() raát khoù quaûn lyù. Vieäc quyeát ñònh söû duïng trang JSP, Servlet hay keát hôïp caû hai laø tuøy vaøo töøng döï aùn vaø muïc ñích cuûa chöông trình caàn phaùt trieån. Thoâng thöôøng ñoái vôùi nhöõng döï aùn nhoû, yeâu caàu thôøi gian nhanh, JSP laø löïa choïn thích hôïp nhaát. Ñoái vôùi nhöõng döï aùn caàn söï ñoäc laäp vaø chæ thieân veà xöû lyù ta neân söû duïng servlet. Tröôøng hôïp döï aùn lôùn ta neân keát hôïp caû servlet vaø JSP. Moâ hình keát hôïp toát nhaát giöõa servlet vaø JSP thöôøng ñöôïc goïi laø MCV (Model – View – Controler) trong ñoù servlet ñoùng vai troø trung taâm ñieàu khieån (controler) ñöa ra quyeát ñònh xöû lyù, JSP ñoùng vai troø theå hieän giao dieän hay hieån thò döõ lieäu ñaõ xöû lyù (View). Quy trình tính toaùn logic cuûa öùng duïng ñöôïc giao laïi cho caùc thaønh phaàn JavaBean hay EJB. 2.6. GIÔÙI THIEÄU VEÀ JAVABEANS 2.6.1.Khaùi nieäm veà JAVABEANS JavaBeans laø moät thaønh phaàn ñoái töôïng ñöôïc xaây döïng töø ngoân ngöõ Java. JavaBeans coù theå laø vieäc vaø chaïy treân moïi maùy aûo Java. Yeâu caàu toái thieåu nhaát ñeå taïo neân thaønh phaàn JavaBeans laø : coâng cuï vaø trình bieân dòch JDK 1.1 trôû leân. JavaBeans coù theå söû duïng caùc phöông thöùc get/set ñeå laùy veà vaø ñaët thuoäc tính cho ñoái töôïng Bean maø noù theå hieän. 2.6.2.Caùc theû chuaån cuûa JAVABEANS trong trang JSP 2.6.2.1. Theû duøng ñeå khai baùo phaïm vi vaø ñònh danh id(identify) nhaän daïng Bean. Noù töông töï nhö khai baùo bieán ñoái töôïng trong maõ java. Theû coù cuù phaùp nhö sau: <jsp:useBean id=”name” scope=”page | request | session | application” class=”packagename.classname”> Thuoäc tính Dieãn giaûi Id Thuoäc tính naøy laø ñònh danh nhaän daïng cuûa ñoái töôïng Bean trong moät phaïm vi cho tröôùc. “name” laø teân cuûa Bean coù phaân bieät chöõ hoa, thöôøng. Scope Thuoäc tính phaïm vi cho bieát moâi tröôøng soáng cuûa ñoái töôïng. Phaïm vi cuûa khai baùo maø thaønh phaàn Bean coù hieäu löïc bao goàm page (Bean chæ coù hieäu löïc vaø phaïm vi truy xuaát trong khai baùo noù). Request (Bean coù hieäu löïc trong moät laàn yeâu caàu töø maùy khaùch). Session (hieäu löïc cuûa bean töông töï hieäu löïc cuûa caùc bieán session). Application (hieäu löïc cuûa bean töông töï hieäu löïc cuûa caùc bieán application) Class Teân ñaày ñuû cuûa lôùp Bean. Ñaây laø teân taäp tin .class sua khi ñaõ bieân dòch töø maõ nguoàn .java. teân naøy cuõng phaân bieät chöõ hoa vaø chöõ thöôøng BeanName Naøy ñeå tham chieáu ñeán teân cuûa Bean Type Thuoäc tính chæ ra loaïi bieán kòch baûn. Neáu bieán naøy khoâng chæ roõ giaù trò cuûa noù seõ laø giaù trò cuûa thuoäc tính lôùp 2.6.2.2. Theû duøng ñeå gaùn giaù trò vaøo thuoäc tính Bean. Thuoäc tính teân cuûa Bean chæ ñònh cho ñoái töôïng phaûi ñöôïc ñònh nghóa vaø naèm trong phaïm vi cho pheùp. Cuù phaùp cuûa Trong cuù phaùp treân, name cho bieát teân Bean maø thuoäc tính cuûa noù ñaõ ñöôïc caøi ñaët. prop_expr coù theå coù caùc khai baùo sau: property =”*” | property = “propertyName” | property = “propertyName” param=”parameterName”| property = “propertyName” value=” propertyValue” Thuoäc tính Dieãn giaûi Name Thuoäc tính trình baøy teân cuûa Bean, teân naøy ñaõ ñöôïc ñònh nghóa bôûi theû Property Thuoäc tính cuûa Bean caàn laáy giaù trò Param Tham soá caàn duøng cho thuoäc tính cuûa Bean Value Giaù trò ñöôïc gaùn vaøo cho thuoäc tính cuûa Bean 2.6.2.3. Theû duøng ñeå laáy giaù trò thuoäc tính Bean vaø chuyeån giaù trò thaønh kieåu chuoãi. Cuù phaùp cho theû nhö sau: Thuoäc tính Dieãn giaûi Name Thuoäc tính trình baøy teân cuûa Bean, teân naøy ñaõ ñöôïc khai baùo vaø ñònh nghóa bôûi theû Property Thuoäc tính cuûa Bean caàn laáy giaù trò 2.6.3.Theâm JAVABEANS vaøo JSP Ñeå söû duïng JavaBeans trong trang JSP, baïn caàn khai baùo Bean vôùi theû: PHAÀN 2 : XAÂY DÖÏNG ÖÙNG DUÏNG CHÖÔNG 1 PHAÂN TÍCH BAØI TOAÙN 1.1.TEÂN ÑEÀ TAØI Tìm hieåu xaây döïng öùng duïng thö ñieän töû 1.2.DEÀ CÖÔNG CHI TIEÁT 1.2.1.Khaûo saùt Trong thôøi gian thöïc taäp toát nghieäp toâi ñaõ khaûo saùt, tìm hieåu heä thoáng thö tín ñieän töû. Quaù trình xaây döïng moät öùng duïng thö ñieän töû (Email) raát ña daïng nhöng chuû yeáu taäp trung vaøo hai phaàn: - Xaây döïng mail server : laø chöông trình hoaït ñoäng phía maùy chuû nhaän, löu tröõ mail, phaân phoái, gôûi mail ñeán caùc trình chuû khaùc. Caùc chöông trình nhö Mail Deamon, SendMail, Mail Exchange… laø nhöõng mail server. - Xaây döïng mail client : laø chöông trình hoaït ñoäng phía maùy khaùch thöïc hieän chöùc naêng cho pheùp ngöôøi duøng nhaäp vaøo noäi dung mail, gôûi mail ñeán maùy chuû mail server xaùc ñònh. Nhaän mail töø maùy chuû veà vaø hieån thò cho ngöôøi duøng xem noäi dung mail. Ví duï nhö Outlook Express cuûa Windows hay Web mail treân Internet laø nhöõng trình ñoùng vai troø mail client. 1.2.2.Yeâu caàu cuûa baøi toaùn Yeâu caàu chính cuûa baøi toaùn - Phaàn mail client: thöïc hieän ñöôïc cô baûn nhaát nhöõng chöùc naêng cuûa moät mail client nhö vieäc gôûi, nhaän, hieån thò noäi dung mail thoâng qua trình duyeät Web vôùi giao thöùc HTTP cuûa Internet. - Phaàn mail server : thöïc hieän ñöôïc chöùc naêng tieáp nhaän mail do trình khaùch (mail client) göûi leân (SMTP Server), löu tröõ mail trong thö muïc nhaát ñònh cho pheùp ngöôøi duøng söû duïng giao thöùc POP3 ñoïc mail (POP3 Server), chuyeån mail ñeán maùy chuû khaùc (Forward Server) hoaëc phaân giaûi ñòa chæ mail göûi thaúng ñeán ñích (Relay Server). 1.2.3.Döõ lieäu vaøo, döõ lieäu ra vaø caùc chöùc naêng xöû lyù cuûa heä thoáng * Döõ lieäu vaøo : - Phaàn mail client : + Thoâng tin ñaêng kyù cuûa ngöôøi duøng - Phaàn mail server : + Mail do trình khaùch göûi leân + Thoâng tin veà vò trí thö muïc löu tröõ mail treân server * Döõ lieäu ra : - Phaàn mail client : + Thoâng tin veà taøi khoaûn thö ñieän töû cuûa ngöôøi duøng. + Thö muïc töông öùng vôùi teân taøi khoaûn, thoâng tin veà user name vaø password ñeå duøng cho vieäc POP3 Server chöùng thöïc quyeàn truy caäp cuûa ngöôøi duøng khi caàn ñoïc mail - Phaàn mail server : + Löu tröõ mail do trình khaùch göûi ñeán + Chuyeån tieáp nhöõng mail khoâng thuoäc domain mail do mail server quaûn lyù. 1.2.4. Chöùc naêng cuûa heä thoáng thoâng tin quaûn lyù * Quaûn lyù toaøn boä thoâng tin lieân quan ñeán user nhö: hoï, teân, ngaøy thaùng naêm sinh, ngheà nghieäp, giôùi tính, quoác gia, thaønh phoá… * Quaûn lyù soå ñòa chæ 1.3. LYÙ DO CHOÏN ÑEÀ TAØI Ngaøy nay ñoái vôùi moãi chuùng ta thö ñieän töû khoâng coù gì xa laï tuy nhieân ñoù laø ñöùng veà phöông dieän ngöôøi duøng. Xuaát phaùt töø mong muoán tìm hieåu moät caùch töôøng taän hôn heä thoáng thö ñieän töû nhìn töø khía caïnh nhaø thieát keá neân toâi ñaõ quyeát ñònh choïn ñeà taøi xaây döïng öùng duïng thö ñieän töû theo moâ hình Client Server. CHÖÔNG 2 : THIEÁT KEÁ VAØ CAØI ÑAËT ÖÙNG DUÏNG 2.1.PHAÂN TÍCH VAØ THEÁT KEÁ CÔ SÔÛ DÖÕ LIEÄU 2.1.1.Phaân tích Cô sôû döõ lieäu ñöôïc thieát keá ñôn giaûn vaø duøng vaøo muïc ñích quaûn lyù danh saùch thaønh vieân ñaêng kyù söû duïng dòch vuï thö ñieän töû cuûa vietmail. Vôùi muïc ñích ñoù CSDL chæ bao goàm hai thöïc theå chính laø ñöôïc theå hieän trong baûng sau : STT Teân thöïc theå Thuoäc tính 1 members (thaønh vieân) userid (maõ thaønh vieân ), user_name (teân ñaêng nhaäp), password (maät khaåu), question (caâu hoûi), answer (caâu traû lôøi), ho (hoï), ten (teân), ngay (ngaøy sinh), thang (thaùng sinh), nam (naêm sinh), gioi_tinh (giôùi tính) nuoc (quoác gia), thanh_pho (thaønh phoá), thanh_pho_khac (thaønh phoá khoâng thuoäc Vieät Nam), job (ngheà nghieäp), thong_tin_khac (thoâng tin phuï khaùc), date(ngaøy ñaêng kyù) 2 addressbook (Soå ñòa chhæ) addressid (maõ soå ñòa chæ), userid (maõ thaønh vieân), quickname (teân gôïi nhôù), ho (hoï), ten (teân), email (ñòa chæ email), phone (soá ñieän thoaïi), diachi (ñòa chæ) CAÙC LÖÔÏC ÑOÀ QUAN HEÄ Töø nhöõng thöïc theå vaø thöïc theå trung gian treân, baèng caùc nguyeân taéc bieán ñoåi, ta xaây döïng thaønh caùc löôïc ñoà quan heä nhö sau: Member (userid, user_name, password, question, answer, ho, ten, ngay, thang, nam, gioi_tinh, nuoc, thanh_pho, thanh_pho_khac, job, thong_tin_khac, date) Addressbook (addressid, userid, quickname,ho,ten,email,phone,diachi) Löôïc ñoà quan heä döõ lieäu member userid user_name password question answer ho ten ngay thang nam gioi_tinh nuoc thanh_pho thanh_pho_khac job thong_tin_khac date addressbook addressid userid quickname ho ten email phone diachi Phaân tích chöùc naêng Sô ñoà bieåu dieãn chöùc naêng cuûa heä thoáng Heä thoáng quaûn lyù thaønh vieân cuûa vietmail Ñaêng kyù thaønh vieân Quaûn lyù soå ñòa chæ 2.1.2. Giaûi thích caùc chöùc naêng cuûa heä thoáng - chöùc naêng : Ñaêng kyù thaønh vieân yù nghóa : thu thaäp caùc thoâng tin cuûa thaønh vieân nhaèm muïc ñích quaûn lyù cuõng nhö thieát laäp caùc thoâng soá phuïc vuï cho vieäc gôûi vaø nhaän thö ñieän töû cuûa thaønh vieân - chöùc naêng : Quaûn lyù soå ñòa chæ yù nghóa : taïo moät danh saùch boa goàm caùc ñòa chæ do thaønh vieân töï taïo rong quaù trình söû duïng heä thoáng. 2.1.3.bieåu ñoà luoàng döõ lieäu( DFD – Data flow Diagram) .Bieåu ñoà luoàng döõ lieâïu möùc khung caûnh (BFD) Yeâu caàu Thaønh vieân Ñaêng kyù Thoâng baùo Heä thoáng vietmail 2.1.4. THIEÁT KEÁ HEÄ THOÁNG 2.1.4.1. Caùc baûng döõ lieäu chính Kyù hieäu: PK: Khoaù chính (Primary Key) FK: Khoaù ngoaïi (Foreign Key) Baûng döõ lieäu: Member ( Thaønh vieân) Teân tröôøng Kieåu DL Ñoä lôùn Raøng buoäc Khoaù Ghi chuù userid int 4 Not Null PK user_name varchar 20 Not Null Teân ñaêng nhaäp password char 10 Maät khaåu question text 16 answer text 16 ho text 16 Not Null ten text 16 Not Null ngay smallint 2 Not Null thang smallint 2 Not Null nam int 4 Not Null gioitinh char 5 Not Null nuoc text Not Null thanh_pho text 16 Not Null thanh_pho_khac text 16 job int 4 thong_tin_khac text 16 date datetime 8 Not Null Baûngdöõ lieäu : Addresbook (soå ñòa chæ) Teân tröôøng Kieåu DL Ñoä lôùn Raøng buoäc Khoaù Ghi chuù addressid int 7 Not Null PK userid int 8 Not Null Fk quickname text 8 ho text 8 ten text 20 email text Not Null phone text diachi text 2.2. CAØI ÑAËT MAILSERVER 2.2.1.Phöông aùn toå chöùc löu tröõ mail treân Server Ñeå löu tröõ mail göûi ñeán treân server, moãi trình mailserver seõ coù moät phöông aùn rieâng ñeå löu tröõ. Chaúng haïn coù theå löu tröõ thoâng ñieäp mail nhö laø caùc record trong baûng döõ lieäu cuûa database hoaëc löu trong cuøng moät file text phaân caùch moãi thoâng ñieäp baèng moät daáu hieäu ñaëc tröng naøo ñoù. Tuy nhieân vieäc löu thoâng ñieäp mail döôùi daïng caùc file trong töøng thö muïc töông öùng cuûa caùc User toû ra ñôn giaûn hôn vaø cuõng khoâng keùm phaàn hieäu quaû. Vì vaäy trong ñoà aùn naøy toâi quyeát ñònh choïn phöông aùn löu thoâng ñieäp mail döôùi daïng taäp tin treân ñóa cuïc boä. Tröôùc khi caøi ñaët caùc ñôn theå Mail server ta caàn toå chöùc thö muïc ñeå SMTP server löu tröõ mail nhö sau: Hình : Toå chöùc thö muïc löu tröõ mail Moãi mailserver coù theå coù nhieàu teân domain cho ñòa chæ mail, caùc teân domain naøy ñöôïc toå chöùc trong 1 thö muïc, ôû ñaây ta choïn vietmail.com laø teân domain mail. Luùc naøy moät ñòa chæ e – mail hôïp leä göûi ñeán SMTP server cuûa ta phaûi coù daïng nhö sau username@vietmail.com. Heä thoáng mail server coøn cho pheùp môû roäng theâm vaøo caùc domain mail khaùc. Danh saùch caùc teân domain main naèm trong file domain.txt. Trong thö muïc email\data\vietmail.com chöùa danh saùch caùc thö muïc con ñaïi dieän cho töøng taøi khoaûn (nhö thanhboeing, xuanthu…). Thoâng tin ñaêng nhaäp cuûa taøi khoaûn ñöôïc ñaët trong file User.txt. 2.2.2.Caùc ñôn theå cuûa mailserver Trình MailServer coù caùc ñôn theå ñöôïc caøi ñaët baèng ngoân ngöõ java vaø bao goàm caùc phaàn chính sau: - Ñôn theå xöû lyù taäp leänh SMTP - Ñôn theå xöû lyù taäp leänh POP3 2.2.2.1. Xaây döïng SMTP Server Nhieäm vuïchính cuûa SMTP Server laø söû lyù taäp leänh SMTP, traû laïi maõ loãi do trình khaùch gôûi leân khoâng hôïp leä. Tieáp nhaän döõ lieäu vaø löu vaøo thö muïc nhaát ñònh ñeå trình chuû POP3 Server coù theå truy xuaát sau naøy. SMTP server seõ môû socket laéng nghe treân coång 25 (coång maëc ñònh cuûa SMTP). Ta cuõng coù theå thay ñoåi soá hieäu coång trong file caáu hình email.properties. khi nhaän ñöôïc keát noái töø trình khaùch, SMTP server seõ môû moät tuyeán (thread) laø lôùp SMTPConection chòu

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

  • docDO_AN.DOC
  • pptslidedoan.ppt
  • rarWEB_MAIL.rar