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...
92 trang |
Chia sẻ: hunglv | Lượt xem: 1096 | Lượt tải: 0
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 - cha 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 lu ý 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 ®Ó lu 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 cha? 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, lu nã, v ..v. Nã còng sÏ cã thÓ thu nhËn ®Ó ®äc l¹i víi c¸c th«ng ®iÖp ®· ®îc lu 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) ®Ó lu 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 bu ®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 bu ®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 lu 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 nhng 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), nhng 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 bu 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 lu 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.
Lu ý 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 cha 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 lu 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 lu 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µ lu 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 ”.”. Lu ý 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, nhng 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 nhng 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 cha 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 cha 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 trng 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 cha ®î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, cha 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. Lu ý, 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”. Lu ý, 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 cha 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.
Lu ý 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 nhng 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, nhng 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