Ðo øn tot nqhIep

Mt C LtC
PHAÀN 1 : CÔ SÔÛ LYÙ THUYEÁT................................................................................6
CHÖÔNG 1 : GIÔÙI THIEÄU CHUNG VEÀ INTERNET VAØ MOÄT SOÁ GIAO
THÖÙC TRUYEÀN THOÂNG TREÂN INTERNET......................................................6
CHÖÔNG 1 : GIÔÙI THIEÄU CHUNG VEÀ INTERNET VAØ MOÄT SOÁ GIAO THÖÙC
TRUYEÀN THOÂNG TREÂN INTERNET.....................................................................6
1.1. GIÔÙI THIEÄU CHUNG VEÀ INTERNET.....................................................6
1.2. HOÏ GIAO THÖÙC TCP/IP............................................................................6
1.3. GIAO THÖÙC LIEÂN MAÏNG IP....................................................................8
1.4. GIAO THÖÙC ÑIEÀU KHIEÅN TRUYEÀN TCP ...........................................13
CHÖÔNG 2 : CÔ SÔÛ VEÀ LAÄP TRÌNH MAÏNG TREÂN MOÂ HÌNH
CLIENT/SERVER...............................................................................................14
CHÖÔNG 2 : CÔ SÔÛ VEÀ LAÄP TRÌNH MAÏNG TREÂN MOÂ HÌNH
CLIENT/SERVER...................................................................................................14
2.1. LAÄP TRÌNH GIAO TIEÁP MAÏNG VÔÙI WINDOWS SOCKETS...............14
2.2. MOÄT SOÁ KHAÙI NIEÄM CÔ BAÛN..............................................................15
2.2.1.Ñòa chæ Internet...................................................................................15
2.2.2. Khaùi nieäm socket vaø port..................................................................15
2.3. CAÙCH CAØI ÑAËT ÖÙNG DUÏNG CLIENT/SERVER TCP.........................16
.....................................................................................................................16
2.3.1. Caùch caøi ñaët server TCP...................................................................16
2.3.2. Caùch caøi ñaët client TCP...................................................................16
CHÖÔNG 3 : MOÄT SOÁ KHAÙI NIEÄM LIEÂN QUAN ÑEÁN THÖ ÑIEÄN TÖÛ.........18
CHÖÔNG 3 : MOÄT SOÁ KHAÙI NIEÄM LIEÂN QUAN ÑEÁN THÖ ÑIEÄN TÖÛ.............18
1.1. MAILSERVER .........................................................................................18
1.2. GIAO THÖÙC GÖÛI MAIL (MAIL TRANSPORT PROTOCOL)................18
1.3.GIÔÙI THIEÄU KIEÁN TRUÙC DÒCH VUÏ THÖ ÑIEÄN TÖÛ..............................18
1.3.1. KiÕn tróc vµ c¸c dÞch vô......................................................................18
1.3.2. T¸c nh©n ngêi sö dông (The User Agent)............................................20
1.3.2.1.Göûi thö (Sending Email)...............................................................20
1.3.2.2. Ñoïc thö (Reading Email).............................................................20
1.3.2.3.Ñònh daïng thoâng ñieäp (Message Formats)....................................21
1.3.2.4.Chuaån RFC 822............................................................................22
1.4.PHAÂN TÍCH CAÁU TRUÙC THÖ ÑIEÄN TÖÛ, CAÙC GIAO THÖÙC SMTP VAØ
POP3................................................................................................................23
1.4.1.Phaân tích caáu truùc thö ñieän töû (RFC 822)...........................................24
1.4.1.1. Giíi thiÖu....................................................................................24
1.4.1.2. Moâ taû veà caáu truùc thö...................................................................24
1.4.2. §Þnh nghÜa vÒ c¸c trêng Header...........................................................25

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 1
Ðo øn tot nqhIep
1.4.3. C¸c trêng header ®iÓn h×nh.................................................................25
1.4.4. VÝ dô vÒ cÊu tróc th..............................................................................26
1.5. PHAÂN TÍCH GIAO THÖÙC SMTP (RFC 821)...........................................27
1.5.1. Giíi thiÖu chung................................................................................27
1.5.2. M« h×nh ho¹t ®éng phiªn giao dÞch.................................................27
1.5.3. Thñ tôc Mail.....................................................................................29
1.5.4. Thñ tôc Forwarding ...........................................................................31
1.5.5. C¸c thñ tôc Mailing vµ Sending..........................................................32
1.5.6. C¸c thñ tôc Opening vµ Closing..........................................................33
1.5.7. M· tr¶ lêi cña c¸c c©u lÖnh SMTP........................................................33
1.6. PHAÂN TÍCH GIAO THÖÙC POP3 (RFC 1081,1082).................................34
1.6.1. Giíi thiÖu..........................................................................................34
1.6.2. M« h×nh ho¹t ®éng phiªn giao dÞch.................................................34
1.6.3. Tr¹ng th¸i AUTHORIZATION...........................................................35
1.6.4. Tr¹ng th¸i TRANSACTION................................................................37
1.6.5. Tr¹ng th¸i UPDATE............................................................................40
1.6.6. VÝ dô vÒ mét phiªn giao dÞch POP3..................................................40
1.7. MIME (MULTIPURPOSE INTERNET MAIL EXTENSIONS)...............41
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)..................................................43
1.9.MAIL CLIENT, WEB MAIL.....................................................................43
CHÖÔNG 4 : GIÔÙI THIEÄU VEÀ CAÙC COÂNG NGHEÄ LIEÂN QUAN....................43
CHÖÔNG 4 : GIÔÙI THIEÄU VEÀ CAÙC COÂNG NGHEÄ LIEÂN QUAN........................43
2.1.GIÔÙI THIEÄU VEÀ JRUN WEBSERVER 3.1...............................................43
2.2.GIÔÙI THIEÄU VEÀ SQL SERVER 7.0..........................................................43
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.............................................................................45
2.2.2. Caáu truùc cô sôû döõ lieäu vaät lyù:............................................................46
2.2.2.1. Trang (page):.............................................................................46
....................................................................................................................46
2.2.2.2 .Extent:........................................................................................46
2.2.2.3 Nhöõng loaïi file trong CSDL:SQL Server coù 3 loaïi file:...............47
2.3. LYÙ THUYEÁT MOÂ HÌNH QUAN HEÄ........................................................47
2. 3.1. Caùc khaùi nieäm cô baûn..................................................................47
2.3.2. Khaùi Nieäm phuï thuoäc döõ lieäu vaø caùc daïng chuaån..........................48
2.3.3 Khaùi nieäm chæ daãn vaø khoùa chæ daãn ...........................................48
2.4.GIÔÙI THIEÄU VEÀ JAVA SERVLET..........................................................48
2.4.1.Khaùi nieäm veà JAVA SERVLET.........................................................48
2.4.2.Nhöõng öùng duïng thöïc teá cuûa JAVA SERVLET vaø kieán truùc cuûa JAVA
SERVLET....................................................................................................49
2.5.GIÔÙI THIEÄU VEÀ JAVA SERVER PAGES(JSP)........................................49
2.5.1.Khaùi nieäm veà JSP...............................................................................49

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 2
Ðo øn tot nqhIep
2.5.2.Quan heä giöõa Servlet vaø JSP..............................................................49
2.5.2.1.Caùch trình chuû bieân dòch trang JSP thaønh servlet.......................49
2.5.2.2. So saùnh giöõa Servlet vaø JSP......................................................50
2.6. GIÔÙI THIEÄU VEÀ JAVABEANS................................................................51
2.6.1.Khaùi nieäm veà JAVABEANS..............................................................51
2.6.2.Caùc theû chuaån cuûa JAVABEANS trong trang JSP.............................51
2.6.2.1.<jsp:useBean>............................................................................51
2.6.2.2.<jsp:setProperty>........................................................................51
2.6.2.3. <jsp:getProperty>......................................................................52
2.6.3.Theâm JAVABEANS vaøo JSP.............................................................52
PHAÀN 2 : XAÂY DÖÏNG ÖÙNG DUÏNG......................................................................53
CHÖÔNG 1 PHAÂN TÍCH BAØI TOAÙN.................................................................53
CHÖÔNG 1 PHAÂN TÍCH BAØI TOAÙN....................................................................53
1.1.TEÂN ÑEÀ TAØI..............................................................................................53
1.2.DEÀ CÖÔNG CHI TIEÁT..............................................................................53
1.2.1.Khaûo saùt.............................................................................................54
1.2.2.Yeâu caàu cuûa baøi toaùn..........................................................................54
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............54
1.2.4. Chöùc naêng cuûa heä thoáng thoâng tin quaûn lyù........................................55
1.3. LYÙ DO CHOÏN ÑEÀ TAØI.............................................................................55
CHÖÔNG 2 : THIEÁT KEÁ VAØ CAØI ÑAËT ÖÙNG DUÏNG........................................55
CHÖÔNG 2 : THIEÁT KEÁ VAØ CAØI ÑAËT ÖÙNG DUÏNG............................................55
2.1.PHAÂN TÍCH VAØ THEÁT KEÁ CÔ SÔÛ DÖÕ LIEÄU..........................................55
2.1.1.Phaân tích.............................................................................................55
......................................................................................................................57
........................................................................................................................57
2.1.2. Giaûi thích caùc chöùc naêng cuûa heä thoáng..............................................57
2.1.3.bieåu ñoà luoàng döõ lieäu( DFD – Data flow Diagram)............................57
2.1.4. THIEÁT KEÁ HEÄ THOÁNG....................................................................58
2.1.4.1. Caùc baûng döõ lieäu chính...............................................................58
2.2. CAØI ÑAËT MAILSERVER.........................................................................59
2.2.1.Phöông aùn toå chöùc löu tröõ mail treân Server........................................59
2.2.2.Caùc ñôn theå cuûa mailserver................................................................59
2.2.2.1. Xaây döïng SMTP Server.............................................................60
2.2.2.2. Xaây döïng POP3 Server................................................................73
2.3.CAØI ÑAËT MAILCLIENT...........................................................................86
.................................................................................................................90
Moät soá giao dieän chính.................................................................................90

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 3
Ðo øn tot nqhIep
LOI CAM ON
¹.:o |·| |o| x|i |ii ||ii| ia oi i ||i o :|io ||oi li| |o li|
:oi: .i |.:oi: li| |o ¹|. ´ii !|i ¹.ii: vi ||oi oi: !:|· ¹|oi: ¹|i
|.:oi: li| |o li| l|oi hi !o| ai |.ii: || |o |o| i|:i: ||·i ||: o |ii ii
|||·| |.oi: i|:i: iia |o v:i o.i a· |o| o ||· ||: ||·i |o| .oi ao ii ii.
La x|i |ii ||ii| ia oi ||i `ii ¹|· !|i| ai |ii ||i| :|.¡ ao vi |:oi:
aii ·a |oii |i| .oi ao ii ii. !:oi| .i |o| .i: x|i ia oi |i| i |ii |· ai
:|.¡ ao |o| |.oi: -.o| o.i |.|i| ||: ||·i ao ii.
!i a. ai .i| o :ii:. i|:i: |.oi: ||oii: ||o| :|ii |o ¡|·¡ .i: i|:
i|:i: |ii |· v· ||·i ||: i·i .oi ao ii ii .i |o| ||oi: ||· |.ii| ||o| i|:i:
|||·. -o|. ||i| v| vi. |o| .i| aoi: i|ii a:o -: :o¡ .i i ||i o :|io .i:
i|: |ii |· :ii xi vi i|:i: i i|ii |i |o |: o o.ii |ia a·i ||i| v: a:o
|.|i| |i |.oi: .oi ao ii ii.
hi !o|. ||ii: ¨ iia 2..°
Nguyeãn Xuaân Thanh

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 4
Ðo øn tot nqhIep
LOI NOI ÐAt
!:i ii vo| -: ¡|i| |.|·i aii| a· .i ||i |o vi oi: i:|· li|·.i·|. |i.
i|: ao| i::o| a·. ||i .o |o| || ai i a|| v. ao aii: li|·.i·| aii: |i|.
l|| v. ||: a|·i |: :o| |i| |i Lai|| |i ao| |.oi: i|:i: a|| v. a:o -: a.i:
i||·. i|i| |.·i li|·.i·| ||·i ii. l|| v. ii |o ¡|·¡ i i i|ii |i |o |:
|.io ao| ||: vo| i|i. ||oi: o.i aii: li|·.i·|. !||·. i::o| -: a.i: li|·.i·| || a·
a.i: a|| v. ii.
¹|oi: ||:oi:. ||| -: a.i: a|| v. ||: ||i a|·i |:. i::o| -: a.i: ||:oi: || |||
o.ii |ia x·a |· ||oi: |·i |.oi: ai ||: ||·i i|: ||· iio. `| vi. |o ( i::o| -:
a.i:) ao| || ||i a:o ao| i:i .i :i: a.i: a|| v. Lai|| vi ¡|ii :i: a.i: ao
a:o :o| |i !i|| ||·i|. |i |i -: a.i: a|| v. ||: ||i ai |.ia.
!|ia a. a|| ||·. .o |oi v· |oi| aoi: |·i |.oi: .i :i: a.i: Lai|| o
¡|ii .i: i¡ a|| v. ai ||:oi: a:o :o| |i !i|| ´·.v·.. |.oi: .oi ao ii ii |o|
x|i |.|i| |i ao| i| o |ii |· ||oi: ¡|. v. v|· |..·i ||: ||i a|·i |: |.·i o
-o ||a ||·. v· i ao ||i| |..·i ||oi: ||: ||i. i :|io ||: |..·i ||oi: |.ii.
i |oi| aoi: .i ao| |· !i|| ´·.v·..
`| ||o| :|ii o |ii vi o .i| i||·. i vii a· o ||·i o.ii. ao ao ao ii ii
|| |.|i| |i i|:i: vii a· o |ii i|i| v· a|| v. ||: ||i a|·i |: vi i| ai| ao|
|:oi: |.|i| aii: ||i| ||: i:||·a ao a|| v. ||: ||i a|·i |: ai ||o|.

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 5
Ðo øn tot nqhIep
PHA N 1 t CO SO L1 THt1E T
CHtONG 1 t GIO I THIEt CHtNG ¥E INTEHNET
¥A MOT SO GIAO THt C THt1E N THONG
THE N INTEHNET
1.1. GIOI THIEU CHUNG VE INTERNET
Mang Internet là mot tap hop gom hàng van he mang tren khap the giói, doc
phát trien vào thap ky bay moi. So long máy tính noi mang và so long ngòi truy cap
vào mang Internet tren toàn the giói dang ngày càng tang len nhanh chóng, dac biet tù
nam 1993 tro di. Mang Internet khong chi cho phép chuyen tai thong tin nhanh chóng
mà còn giúp cung cap thong tin, nó cüng là dien dàn và là th vien toàn cau dau tien.
Mang Internet có xuat xú nam 1969 tù mang máy tính toàn cuc ARPANET do
co quan quan lý các du án nghien cúu các cong trình nghien cúu khoa hoc tien tien
thuoc Bo Quoc phòng Mÿ (US Defense`s Advance Research Projects Agency - goi tat
là DARPA) tài tro. Tù giüa nam 1970, trung tam DARPA hóng tói mang Internet vói
kÿ thuat chuyen mach gói qua mang vo tuyen và thong tin ve tinh. Nam 1980, DARPA
thu nghiem dùng giao thúc TCP/IP và dã doc các tròng dai hoc o Mÿ ghép noi vói he
dieu hành UNIX BSD (Berkely Software Distribution).
He dieu hành UNIX là he phát trien manh vói rat nhieu cong cu ho tro và dam
bao các phan mem úng dung có the chuyen qua lai tren các ho máy khác nhau (máy
mini, máy tính lón và hien nay là máy vi tính). Ben canh dó he dieu hành UNIX BSD
còn cung cap nhieu thu tuc Internet co ban, da ra khái niem Socket và cho phép chong
trình úng dung tham nhap vào Internet mot cách de dàng.
Cau trúc mang Internet gom có:
♦ Tang úng dung: TELNET, FTP, SMTP:
♦ Tang giao van: TCP, UDP:
♦ Tang Internet: Internet Protocol:
♦ Tang mang: X.25, Ethernet, FDDI. . .:
♦ Tang vat lý: là các moi tròng truyen tin khác nhau.

1.2. HO GIAO THUC TCP/IP
TCP/IP là ho cua các giao thúc doc su dung cho viec truyen thong máy tính. Các
chü cái doc viet tat boi các tù (Transmission Control Protocol/Internet Protocol), hai

Sinh vien thuc hien Nguyen Xuan Thanh 6/3Q
Ðo øn tot nqhIep
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.

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 7
0 3 4 7 8 15 16 31
Ðo øn tot nqhIep
TCP/IP thuc chat là mot ho giao thúc cùng làm viec vói nhau de cung cap phong
tien truyen thong lien mang. Trong phan này chúng ta së xem xét giao thúc IP, giao
thúc TCP và mot so úng dung o tang tren nh Telnet, FTP, DNS, SMTP. . .
1.3. GIAO THUC LIEN MANG IP
Muc dích chính cua IP là cung cap kha nang ket noi các mang con thành lien
mang de truyen dü lieu. Vai trò cua IP tong tu vai trò cua giao thúc tang mang trong
mo hình OSI.
IP là mot giao thúc kieu ¨khong lien ket¨ (connectionless) có nghia là khong
can có giai doan thiet lap lien ket tróc khi truyen dü lieu. Ðon vi dü lieu dùng trong IP
doc goi là datagram, có khuon dang chi ra trong hình ben dói.
ý nghia cua các tham so nh sau:
• VER (4 bits): chi version hien hành cua IP doc cài dat
• IHL (4 bits): chi do dài phan dau (Internet Header Length) cua datagram,
tính theo don vi tù (word = 32 bits). Ðo dài toi thieu là 5 tù (20 bytes).
VE
R
IH
L
Type of Service Total Length
Indentification Fla
gs
Fragment
offset
Time to live Protocol Header Checksum

Sinh vien thuc hien Nguyen Xuan Thanh Trang 8
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 kien trúc ISO và TCP/IP
Header
0 3 4 7 8 15 16 31
Khuon dang cua IP datagram
0 1 2 3 4 5 6 7
Ðo øn tot nqhIep
Source Address
Destination Address
Options + Padding
Data
(max: 65.535 bytes)
• Type of service (8 bits): dac ta các tham so ve dich vu, có dang cu the nh sau:

Preceden
ce
D T R Reser
ved
trong dó:
Precedence (3 bits): chi thi ve quyen u tien gui datagram, cu the là:
111 - Network Control (cao nhat) 011 - Flash
110 - Internetwork Control 010 - Immediate
101 - CRITIC/ECP 001 - Priority
100 - Flas Override 000 - Routine (thap nhat)
D (Delay) (1 bit): chi do tre yeu cau
D = 0 do tre bình thòng
D = 1 do tre thap
T (Throughput) (1 bit): chi thong long yeu cau
T = 0 thong long bình thòng
T = 1 thong long cao
R (Reliability) (1 bit): chi do tin cay yeu cau
R = 0 do tin cay bình thòng
R = 1 do tin cay cao
• Total Length (16 bits): chi do dài toàn bo datagram, ke ca phan header
(tính theo don vi bytes).
• Indentification (16 bits): cùng vói các tham so khác (nh Source Address
và Destination Address) tham so này dùng de dinh danh duy nhat cho mot
datagram trong khoang thòi gian nó van còn tren lien mang.
• Flags (3 bits): lien quan den su phan doan (fragment) các datagram, cu
the là:

0 D M

Sinh vien thuc hien Nguyen Xuan Thanh Trang 9
0 1 2
Ðo øn tot nqhIep
F F
Bit 0: reserved - cha su dung , luon lay giá tri 0
Bit 1 (DF) = 0 (May Fragment)
= 1 (Don`t Fragment)
Bit 2 (MF) = 0 (Last Fragment)
= 1 (More Fragment)
• Fragment Offset (13 bits): chi vi trí cua doan (fragment) o trong
datagram, tính theo don vi 64 bits, có nghia là moi doan (trù doan cuoi cùng)
phai chúa mot vùng dü lieu có do dài là boi so cua 64 bits.
• Time to live (8 bits): qui dinh thòi gian ton tai (tính bang giay) cua datagram
trong lien mang de tránh tình trang mot datagram bi quan tren lien mang. Thòi
gian này doc cho boi tram gui và doc giam di (thòng qui óc là 1 don vi) khi
datagram di qua moi router cua lien mang.
• Protocol (8 bits): chi giao thúc tang tren ke tiep së nhan vùng dü lieu o
tram dích (hien tai thòng là TCP hoac UDP doc cài dat tren IP).
• Header Checksum (16 bits): mã kiem soát loi 16 bits theo phong pháp
CRC, chi cho vùng header.
• Source Address (32 bits): dia chi cua tram nguon.
• Destination Address (32 bits): dia chi cua tram dích.
• Options (do dài thay doi): khai báo các options do ngòi gui yeu cau.
• Padding (do dài thay doi): vùng dem, doc dùng de dam bao cho phan
header luon ket thúc o mot moc 32 bits.
• Data (do dài thay doi): vùng dü lieu, có do dài là boi so cua 8 bits, và toi
da là 65535 bytes.
So do dia chi hoá de dinh danh các tram (host) trong lien mang doc goi là dia
chi /P 32 bits (32- bit- IP address). Moi dia chi IP có do dài 32 bits doc tách thành 4
vùng (moi vùng 1 byte), có the doc bieu thi dói dang thap phan, bát phan, thap luc phan
hoac nhi phan. Cách viet pho bien nhat là dùng ký pháp thap phan có dau cham (dotted
decimal notation) de tách các vùng. Muc dích cua dia chi IP là de dinh danh duy nhat
cho mot host bat ky tren lien mang. Do to chúc và do lón cua các mang con (subnet)
cua lien mang có the khác nhau, ngòi ta chia các dia chi IP thành 5 lóp, ký hieu là A,
B, C, D và E, vói cau trúc doc chi ra trong hình ben dói.
0 1 7 8 15 16 23 24 31
0 netid
1 0 netid Hostid
1 1 0 netid hostid

Sinh vien thuc hien Nguyen Xuan Thanh Trang 10
hostid Lóp A
Lóp B
Lóp C
Lóp D
Lóp E
0
0
31
31
(Lóp A)
(Lóp B)
(Lóp C)
Ðo øn tot nqhIep
1 1 1 0 Multicast address
1 1 1 1 0 Reserved for future use
Cau trúc cua các lop dia chí IP
• Lóp A cho phép dinh danh tói 126 mang, vói toi da 16 trieu host tren moi
mang. Lóp này doc dùng cho các mang có so tram cuc lón.
• Lóp B cho phép dinh danh tói 16384 mang, vói toi da 65534 host tren
moi mang.
• Lóp C cho phép dinh danh tói 2 trieu mang, vói toi da 254 host tren moi
mang. Lóp này doc dùng cho các mang có ít tram.
• Lóp D dùng de gui IP datagram tói mot nhóm các host tren mot mang.
• Lóp E du phòng de dùng trong tong lai.
Ví du:
00001
010
00000
000
00000
000
00000
000
10000
000
00000
011
00000
010
00000
011
11000
000
00000
000
00000
001
11111
111
Mot dia chi có hostid (host identifier) bang 0 doc dùng de hóng tói mang dinh
danh boi vùng netid (network identifier). Ngoc lai, mot dia chi có vùng hostid gom
toàn so 1 doc dùng de hóng tói tat ca các host noi vào mang netid, và neu vùng netid
cüng gom toàn so 1 thì nó hóng tói tat ca các host trong lien mang.
Trong nhieu tròng hop, mot mang có the doc chia thành nhieu mang con
(subnet), lúc dó có the da them các vùng subnetid de dinh danh các mang con. Vùng
subnet doc lay tù hostid, cu the doi vói 3 lóp A, B, C nh sau (hình ben dói).
Netid Subnetid Hostid
7 8 15 16 23 24
Netid Subnetid Hostid
7 8 15 16 23 24
Netid Subn Host

Sinh vien thuc hien Nguyen Xuan Thanh Trang 11
= 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 huóng den tat ca các host
Ðo øn tot nqhIep
etid id
Bo sung vùng subnetid
Can lu ý rang các dia chi IP doc dùng de dinh danh các host và mang o tang
mang cua Mo hình OSI, và chúng khong phai là các dia chi vat lý (hay dia chi MAC -
Media Access Control) cua các tram dó tren mot mang cuc bo (Ethernet,Token
Ring...). Tren mot mang cuc bo nh vay, hai tram chi có the lien lac vói nhau neu chúng
biet dia chi vat lý cua nhau. Nh vay, van de dat ra là phai thuc hien ánh xa giüa dia chi
IP (32 bits) và dia chi vat lý (48 bits) cua mot tram. Giao thúc ARP (Address
Resolution Protocol) dã doc xay dung de chuyen doi tù dia chi IP sang dia chi vat lý
khi can thiet. Ngoc lai, giao thúc RARP (Reverse Address Resolution Protocol) doc
dùng de chuyen doi tù dia chi vat lý sang dia chi IP. Chú ý rang ca ARP và RARP deu
khong phai là bo phan cua IP. IP së dùng den chúng khi can.
Mot giao thúc khác cüng lien quan truc tiep den IP, dó là ICMP (Internet Control
Message Protocol). Giao thúc này thuc hien truyen các thong báo dieu khien (báo cáo
ve các tình trang loi tren mang,...) giüa các gateway hoac tram cua lien mang. Tình
trang loi có the là: mot datagram khong the tói doc dích cua nó, hoac mot router khong
du bo nhó dem de lu và chuyen mot datagram,... Mot thong báo ICMP doc tao và
chuyen cho IP. IP së ¨boc¨ (encapsulate) thong báo dó vói mot IP header và truyen den
cho router hoac tram dích.
Chúng ta có the tóm tat các bóc thuc hien boi mot thuc the IP nh sau:
• Doi voi thuc the /P o tram nguon, khi nhan doc mot primitive SEND tù
tang tren , nó thuc hien các bóc sau day:
1. Tao mot IP datagram dua tren các tham so cua primitive SEND
2. Tính checksum và ghép vào header cua datagram.
3. Ra quyet dinh chon dòng: hoac là tram dích nam tren cùng mang hoac mot
gateway së doc chon cho chang tiep theo.
4. Chuyen datagram xuong tang dói de truyen qua mang.
• Doi voi gateway, khi nhan doc mot datagram quá canh, nó thuc hien các
dong tác sau:
1. Tính checksum, neu bat cap thì loai bo datagram.
2. Giam giá tri cua tham so Time-to-Live. Neu thòi gian dã het thì loai bo
datagram.
3. Ra quyet dinh chon dòng.
4. Phan doan datagram, neu can.
5. Kien tao lai IP header, bao gom giá tri mói cua các vùng Time-to-Live,
Fragmentation và Checksum.
6. Chuyen datagram xuong tang dói de truyen qua mang.
• Cuoi cùng, khi mot datagram doc nhan boi thuc the /P o tram dich, nó së
thuc hien các cong viec sau:
1. Tính checksum. Neu bat cap thì loai bo datagram.

Sinh vien thuc hien Nguyen Xuan Thanh 6/3Q
Ðo øn tot nqhIep
2. Tap hop các doan cua datagram (neu có phan doan).
3. Chuyen dü lieu và các tham so dieu khien len tang tren bang cách dùng
primitive DELIVER.
1.4. GIAO THUC DIEU KHIEN TRUYEN TCP
Source Port Destination Port
Sequence Number
Acknowledgment Number
D
a
t
a
o
f
f
s
e
t
Reser
ved
UR
G
AC
K
PS
H
RS
T
SY
N
FIN
Window
Checksum Urgent Pointer
Options Padding
TCP data
Khuon dang cua TCP segment.
TCP là mot giao thúc kieu ¨có lien ket¨ (connection - oriented), nghia là can phai
thiet lap lien ket (logic) giüa mot cap thuc the TCP tróc khi chúng trao doi dü lieu vói
nhau.
Ðon vi dü lieu su dung trong TCP doc goi là (doan dü lieu), có khuon
dang mo ta trong hình ben dói.
Các tham so trong khuon dang tren có ý nghia nh sau:
• Source Port (16 bits): so hieu cong cua tram nguon.
• Destination Port (16 bits): so hieu cong cua tram dích.
• Sequence Number (32 bits): so hieu cua byte dau tien cua segment trù
khi bit SYN doc thiet lap. Neu bit SYN doc thiet lap thì Sequence Number là
so hieu tuan tu khoi dau (ISN) và byte dü lieu dau tien là ISN+1. Tham so này
có vai trò nh tham so N(S) trong HDLC.
• Acknowledgment Number (32 bits): so hieu cua segment tiep theo mà
tram nguon dang chò de nhan. Ngam ý báo nhan tot (các) segment mà tram
dích dã gui cho tram nguon - Tham so này có vai trò nh tham so N(R) trong
HDLC.
• Data offset (4 bits): so long tù - 32 bit (32 bit words) trong TCP header
(tham so này chi ra vi trí bat dau cua vùng dü lieu).

Sinh vien thuc hien Nguyen Xuan Thanh Trang 13
bit 0 15 16 31
Ðo øn tot nqhIep
• Reserved (6 bits): dành de dùng trong tong lai.
• Control bits (các bit dieu khien):
T trái sang phai:
URG: vùng con tro khan (Urgent Pointer) có hieu luc
ACK: vùng báo nhan (ACK number) có hieu luc
PSH: chúc nang PUSH
RST: khoi dong lai (reset) lien ket
SYN: dong bo hoá các so hieu tuan tu (sequence number)
FIN: khong còn dü lieu tù tram nguon
• Window (16 bits): cap phát credit de kiem soát luong dü lieu (co che cua
so). Ðay chính là so long các byte dü lieu, bat dau tù byte doc chi ra trong
vùng ACK number, mà tram nguon dã san sàng de nhan.
• Checksum (16 bits): mã kiem soát loi (theo phong pháp CRC) cho toàn
bo segment (header + data).
• Urgent Pointer (16 bits): con tro này tro tói so hieu tuan tu cua byte di
theo sau dü lieu khan, cho phép ben nhan biet doc do dài cua dü lieu khan.
Vùng này chi có hieu luc khi bit URG doc thiet lap.
• Options (do dài thay doi): khai báo các Options cua TCP, trong dó có do
dài toi da cua vùng TCP data trong mot segment.
• Padding (do dài thay doi): Phan chèn them vào header de bao dam phan
header luon ket thúc o mot moc 32 bits. Phan them này gom toàn so 0.
• TCP data (do dài thay doi): chúa dü lieu cua tang tren, có do dài toi da
ngam dinh là 536 bytes. Giá tri này có the dieu chinh bang cách khai báo
trong vùng options.
Mot tien trình úng dung trong mot host truy nhap vào các dich vu cua TCP cung
cap thong qua mot cong (port). Mot cong ket hop vói mot dia chi IP tao thành mot
socket duy nhat trong lien mang. Dich vu TCP doc cung cap nhò mot lien ket logic
giüa mot cap socket. Mot socket có the tham gia nhieu lien ket vói các socket o xa
khác nhau. Tróc khi truyen dü lieu giüa hai tram can phai thiet lap mot lien ket TCP
giüa chúng và khi khong còn nhu cau truyen dü lieu thì lien ket dó së doc giai phóng.
Cüng giong nh o các giao thúc khác, các thuc the o tang tren su dung TCP thong qua
các hàm dich vu nguyen thuy (service primitives), hay còn goi là các lòi goi hàm
(function calls).
CHtONG 2 t CO SO ¥E LAP THÎNH MA NG THEN
MO HÎNH CLIENT/SEH¥EH
2.1. LAP TRÌNH GIAO TIEP MANG VOI WINDOWS SOCKETS

Sinh vien thuc hien Nguyen Xuan Thanh 6/3Q%
Ðo øn tot nqhIep
Windows NT là mot he dieu hành manh, cho phép tan dung toi da kha nang cua
máy tính loai 32 bit, cung úng hàng loat các dich vu mang tren moi tròng Intranet và
Internet. Hien nay Windows NT doc su dung tong doi pho bien o các co quan: doanh
nghiep Viet Nam.
Giao thúc truyen thong TCP/IP dã doc dùng boi he dieu hành UNIX và mang
Internet, de các máy tren mang NT có the giao tiep vói các máy tren mang khác,
Windows NT cüng cung cap giao thúc này. Ngoài mot so lenh dùng giao thúc TCP/IP
dã doc viet san nh: ftp, telnet, finger..., Windows NT cho phép ngòi lap trình phát trien
các úng dung khai thác kÿ thuat TCP/IP thong qua mot th vien ten là Windows
Sockets.
Có ba lý do chính de ngòi lap trình su dung kÿ thuat TCP/IP:
• Có the viet các úng dung tren Windows NT de noi vào mang UNIX và khai thác các
dich vu có san tren dó.
• Tao ra các dich vu tren máy Windows NT de các máy UNIX có the khai thác nhüng
dich vu này.
• Viet các chong trình cho phép các máy Windows NT giao tiep tren he thong mang
Internet.
2.2. MOT SO KHAI NIEM CO BAN
2.2.1 .Dia chí Internet
Trong he thong mang Internet, moi máy deu có mot ten và mot dia chi IP (cüng
goi là dia chi Internet). Ví du nh, mot máy NT có ten là ntsvr.csc.hcmu.vn và dia chi là
192.48.94.200. Ten hay dia chi IP deu xác dinh duy nhat mot máy trong he thong
mang Internet. Khi lap trình, chúng ta có các hàm de chuyen doi tù ten sang dia chi IP
và ngoc lai.
2.2. 2. Khai niem socket va port
Mot socket là mot thiet bi truyen thong hai chieu tong tu nh tap tin, chúng ta có
the doc hay ghi len nó, tuy nhien moi socket là mot thành phan trong mot moi noi nào
dó giüa các máy tren mang máy tính và các thao tác doc/ghi chính là su trao doi dü
lieu giüa các úng dung tren nhieu máy khác nhau.
Trong giao thúc truyen thong TCP, moi moi noi giüa hai máy tính doc xác dinh
boi mot port, khái niem port o day khong phai là mot cong giao tiep tren thiet bi vat lý
mà chi là mot khái niem logic trong cách nhìn cua ngòi lap trình, moi port doc tong
úng vói mot so nguyen dong.
Hình ben dói minh hoa cách giao tiep giüa hai máy tính trong giao thúc truyen
thong TCP. Máy A tao ra mot socket và ket buoc (bind) socket này vói port X (túc là
mot so nguyen dong có ý nghia cuc bo trong máy A), trong khi dó máy B tao mot
socket khác và móc vào (connect) port X trong máy A.

Sinh vien thuc hien Nguyen Xuan Thanh 6/3Q-
Ðo øn tot nqhIep
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:
1. Gäi hµm socket ®Ó t¹o mét socket.
2. 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 ®ã.
3. Gäi hµm listen ®Ó chê ®Õn khi cã mét client nèi vµo port.
4. 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.
5. 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:
1. Gäi hµm socket ®Ó t¹o mét socket.
2. Gäi hµm connect ®Ó nèi vµo server.
3. 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.
4. 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:

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 16
socket socket
M¸y A
M¸y A
M¸y B
M¸y B
Port HÖ thèng m¹ng
C¸c socket vµ port trong mèi nèi TCP
Mèi nèi
ø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
Ðo øn tot nqhIep

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 17

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
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
Ðo øn tot nqhIep
CHtONG 3 t MO T SO NHAI NIEM LIE N QtAN
ÐE N THt ÐIEN Tt
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

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 18

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
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
Ðo øn tot nqhIep
tác vói he thong th dien tu. Các MTAs là các trình tien ích hoat dong o che do nen
(background) thuc hien các nhiem vu can thiet nh tiep nhan th dien tu và chuyÏn th qua
các he thong.
Ðac biet, các he thong th dien tu ho tro nam chúc nang co ban, doc mo ta dói day:
1. Composition: Xu lý viec tao các thong diep và tra lòi. Cho phép bat cú trình
soan thao nào có the doc su dung cho phan than cua thong diep, các he
thong có the tu nó dam trách viec dánh dia chi và chi so các tròng tieu de
(header fields) doc kèm theo cùng vói moi thong diep. Ví du nh, khi tra lòi
mot thong diep , he thong th dien tu có the tách dia chi cua ngòi gui tù các
th doc gui den và tu dong chèn nó vào các tròng thích hop trong phan hoi am
(reply).
2. Transfer: Làm nhiem vu chuyen các thong diep tù ngòi gui den noi ngòi
nhan. Trong phan này, viec chuyen các thong diep yeu cau phai thiet lap mot
ket noi den dích (ngòi nhan) hay mot so thao tác cua thiet bi nh xuat thong
diep và ket thúc viec ket noi. He thong th dien tu làm viec này mot cách tu
dong mà khong can có mot su can thiep nào cua ngòi su dung.
3. Reporting: Buoc phai thuc hien de báo cho ngòi gui nhüng gì xay ra doi vói
thong diep vùa gui là o tình huan dã gui den dích cha? hoac viec gui dã bi
huy bo? hoac th dã bi lac?.
4. Displaying: Nhüng thong diep gui den doc yeu cau làm sao de moi ngòi có
the doc doc th cua ho. Ðoi khi ngòi ta yeu cau quá trình chuyen doi hay mot
trình hien thi dac biet de ho tro, ví du nh, neu thong diep có dang mot tep
PostScript hay tieng nói doc so hóa kèm theo trong thong diep gui den.
5. Disposition: Là bóc cuoi cùng lien quan den nhüng gì ngòi nhan thuc hien
doi vói thong diep sau khi dã nhan nó. Nhüng kha nang có the là ném nó di
tróc khi doc, ném nó di sau khi doc, lu nó, v ..v. Nó cüng së có the thu nhan
de doc lai vói các thong diep dã doc lu lai, chuyen tiep chúng hoac xu lý
chúng bang nhüng phong pháp khác nhau khi doc yeu cau cua ngòi su dung.
Them vào dó các dich vu này, hau het các he thong th dien tu cung cap nhieu
dac tính nang cao khác nhau. Mot so dac tính tieu bieu nh, khi ngòi ta muon chuyen th
hay khi ho nghi xa hon ve các chi tiet ve thòi gian , có lë ho muon th cua ho doc
chuyen tiep, chính vì the mà he thong thuc hien dieu này mot cách tu dong.
Hau het các he thong cho phép ngòi su dung tao các hop th (mailboxes) de lu
trü các th chuyen den (incoming email). Các lenh doc ngòi ta yeu cau tao và huy bo
các hop th, kiem tra các noi dung hop th, chèn và xóa các thong diep khoi hop th, v..v.
Nhüng ngòi giám doc cong ty thòng can gui mot thong diep den moi ngòi trong
so nhüng ngòi cap dói, nhüng khách hàng, hay den các nhà cung cap. Thì dieu này da
ra mot ý tong ve danh sach th (mailing list), nó là mot danh sách các dia chi th dien tu.
Khi mot thong diep doc gui den mailing list, các ban sao giong het doc phát den moi
ngòi có dia chi tren danh sách.
Mot ý tong quan trong khác là th dien tu doc dang ký, de cho phép ngòi gui
(sender or originator) biet th cua ho dã den. Viec thong báo tu dong cua các th khong
doc phát di mot cách luan phien de ngòi ta có the biet. Trong bat ky tròng hop nào, ng-
òi gui nen có mot so dieu khien thong qua thong báo nhüng gì xay ra.

Sinh vien thuc hien Nguyen Xuan Thanh Trang 19
(a) (b)
Envelope
Messag
e
B
o
d
y

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
E
n
v
e
l
o
p
e
H
e
a
d
e
r
Phong thu và thong diep (a) Thu buu dien. (b) Thu dien tu
Ðo øn tot nqhIep
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.

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 20
Ðo øn tot nqhIep
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.

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 21
Ðo øn tot nqhIep
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

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 22
Ðo øn tot nqhIep
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

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 23
Ðo øn tot nqhIep
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" <ddd @Org>, JJV @ BBN
cã thÓ ®îc thay thÕ b»ng:
To: "Joe & J. Harvey" <ddd @ Org>,
JJV@BBN
vµ:
To: "Joe & J. Harvey"
<ddd@ Org>, JJV
@BBN
hay:
To: "Joe &
J. Harvey" <ddd @ Org>, 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.

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 24
Ðo øn tot nqhIep
<field-name> : <field-body> <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-name> ”:” [field-body] CRLF
field-name = 1*<any CHAR, excluding CTLs,SPACE,and ”:”>
field-body = *text<CRLF LWSP-char field-body>
1.4.3. C¸c tr êng header ®iÓn h×nh
a. Trêng RETURN-PATH
<Return> = “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> = “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> = “Forward-Path” “:” route-addr

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 25
Ðo øn tot nqhIep
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> = “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
<Dates> = “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> = “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> = “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> = “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> = “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> = “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 <Group@Host>
Sender: Secy@SHOST
To: ”Al Neuman”@Mad-Host,
Sam.Irving@Other-Host
Message-ID: <some.string@SHOST>
Subject: Test
...

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 26
Ðo øn tot nqhIep
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.

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 27
Ðo øn tot nqhIep

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 28
Ðo øn tot nqhIep
Ðe
thuc
hien doc
kha
nang chuyen tiep th tín tren mang, can phai cung cap ten cua máy chu cüng nh ten cua
hop th (mailbox) cuoi cùng can gui tói cho SMTP Server.
SMTP cung cap mot tap các lenh cho phép các máy tính tren mang có the trao doi
thuc tiep các thong tin theo mot chuan qui dinh. Nhò vào tap lenh này, các he thong th
tín khác nhau có the trao doi dü lieu th doc vói nhau. Moi lenh deu có cùng chieu dài
bon kí tu, hau het deu có tham so kèm theo.
Các lenh su dung trong viec gui/nhan th tín tuan theo mot cú pháp khat khe. Ðó là
các thong tin phan hoi luon o dang mã so kèm theo là các mo ta ve ket qua thuc hien
lenh. Các lenh và mã phan hoi khong phan biet chü hoa và chü thòng. Ðieu này có
nghia là mot lenh hoac mot thong báo phan hoi có the o dang in hoa, in thòng hoac
trong bat kì mot kieu ket hop nào giüa in hoa và in thòng.
Lu ý rang dieu này là khong dúng vói ten cua ¨user mailbox¨. Vói mot so máy
chu, user name là phan biet chü hoa, thòng và viec thuc hien các lenh SMTP can phai
quan tam de dam bao su thuc hien dúng dan trong tròng hop này. Ten cua máy chu
cüng khong phan biet chü hoa, thòng.
Các lenh và thong tin phan hoi doc xay dung boi các kí tu tù bo mã ASCII. Khi
dich vu giao van cung cap kenh truyen thong 8 bit, moi kí tu truyen di së chi su dung 7,
bit cao nhat së doc xoá ve 0.
Moi phien giao dich SMTP phai trai qua mot so giai doan. Các giai doan dó doc
thuc hien thong qua các thu tuc SMTP, kèm theo dó là các thong tin phan hoi:
• Thu tuc MAIL.
• Thu tuc FORWARDING.
• Các thu tuc MAILING và SENDING.
• Các thu tuc OPENING và CLOSING.
• Các mã tra lòi cua lenh SMTP.
1.5.3. Thu tuc Mail
Ðe bat dau mot phien giao dich th tín thì can phai thuc hien thu tuc MAIL. Nó
bao gom 3 bóc:
• Lenh MAIL doc gui di kèm theo là tham so ve dia chi ngòi gui th.

Sinh vien thuc hien Nguyen Xuan Thanh 6/3Ql
File
System
File
System
SMTP
Commands / Replies
Sender
SMTP
Sender
SMTP
Sender - SMTP
Mo hình tong quát su dung giao thúc SMTP
Receiver
SMTP
Receiver
SMTP
Receiver - SMTP
and Mail
File
System
File
System
User
User
Ðo øn tot nqhIep
• Lenh RCPT doc gui di kèm theo là tham so ve dia chi ngòi nhan th. Có the thuc
hien nhieu lan lenh này trong tròng hop muon gui th cho nhieu ngòi.
• Lenh DATA doc gui di de xác nhan bat dau gui dü lieu cua th.
Dói day là phan chi tiet ve 3 lenh tren.
a. Lenh MAIL FROM <reverse-path>
• Iham so: là mot xau ký tu dinh danh mailbox cua ngòi gui th.
• Han che: Chi có the thuc hien khi cha thuc hien chính lenh này.
• Chi tiet: Lenh này dùng de xác nhan ngòi gui th dong thòi thiet lap mot phien
giao dich SMTP vói Receiver-SMTP (Server). Nó da ra dòng dan <reverse-
path> de su dung trong tròng hop phien giao dich khong thuc hien thành cong.
Ngoc lai, thong tin ve ngòi gui së doc lu lai.
• Ihong tin phan hoi:
250 OK
Tròng hop còn lai bi loi.
\i du:
S: MAIL FROM: <Smith(Alpha.edu>
R: 250 OK
b. Lenh RCPT TO <forward-path>
• Iham so: là mot xau ký tu dinh danh mailbox cua ngòi nhan th.
• Han che: Chi có the thuc hien khi dã dinh danh ngòi gui th bang lenh MAIL.
• Chi tiet: Lenh này dùng de xác nhan ngòi nhan th doc chi dinh trong tham so
<forward-path>. Neu Receiver-SMTP chap nhan thì thong tin ve ngòi gui së d-
oc lu lai. Lenh này có the thuc hien nhieu lan de xác nhan nhieu ngòi nhan th.
• Ihong tin phan hoi:
250 OK
Tròng hop còn lai bi loi.
Ví du
S: RCPT TO: <Jones(Beta.gov>
R: 250 OK
S: rcpt to: <Green(Beta.gov>
R: 550 No such user here
c. Lenh DATA
• Iham so: khong.
• Han che: Chi có the thuc hien khi dã thuc hien thành cong viec xác nhan ngòi
gui và ngòi nhan th.
• Chi tiet: Lenh này dùng de xác nhan bat dau viec gui noi dung th. Neu SMTP
Receiver chap nhan, nó së tien hành nhan và lu trü tat ca các dòng van ban doc
gui den. Ðe ket thúc viec gui dü lieu, SMTP Sender can gui mot dòng chi chúa
mot dau cham ¨.¨. Lu ý rang phan dü lieu sau lenh DATA bao gom toàn bo
phan header cua th (nh cac tròng Date, Subject, CC, From, ...) cüng nh noi
dung th.
• Ihong tin phan hoi:
250 OK
\i du:
S: DATA

Sinh vien thuc hien Nguyen Xuan Thanh 6/3Q#T
Ðo øn tot nqhIep
R: 354 Start mail input; end with <CRLF>.<CRLF>
S:. . . Sends body of mail message . . .
S: <CR><LF>.<CR><LF>
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: <Postel@USC-ISIF.ARPA>
R: 250 OK
S: RCPT TO: <fabry@BERKELEY.ARPA>
R: 250 OK
S: RCPT TO: <eric@BERKELEY.ARPA>
R: 552 Recipient storage full, try again in another transaction
S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: Blah blah blah...
S: ...etc. etc. etc.
S: .
R: 250 OK
S: MAIL FROM: <Postel@USC-ISIF.ARPA>
R: 250 OK
S: RCPT TO: <eric@BERKELEY.ARPA>
R: 250 OK
S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
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è <forward-path> 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 <forward-path>
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 <forward-path> 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 <forward-path>

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 31
Ðo øn tot nqhIep
Thong tin phan hoi này chi ra rang, SMTP Receiver biet doc mailbox cua ngòi
nhan thuoc mot máy chu khác. Nó së da ra dia chi chính xác de su dung nhng trong tr-
òng hop này nó khong thuc hien viec gui th di. Chính vì vay, ngòi gui can phai xác
nhan lai các thong tin cho chính xác theo thong tin phan hoi cua SMTP Receiver hoac
tra lai thong báo loi cho ngòi gui ban dau.
Sau day là ví du ve cách su dung thu tuc này:
S: RCPT TO:<Postel(USC-ISI.ARPA>
R: 251 User not local:
will forward to <Postel(USC-ISIF.ARPA>
or
S: RCPT TO:<Paul(USC-ISIB.ARPA>
R: 551 User not local:
please try <Mockapetris(USC-ISIF.ARPA>
1.5.5. Các thu tuc Mailing và Sending
SMTP chu yeu cung cap các chúc nang phát th den mailbox cua ngòi su dung.
Tuy nhien, nó cüng có mot so các chúc nang thuc hien viec chuyen th den terminal cua
ngòi su dung.
Viec phát th den mailbox cua ngòi su dung doc goi là ¨mailing¨, còn viec phát th
den terminal doc goi là ¨sending¨. Dich vu sending là phan mo rong cua mot he thong
th tín dien tu.
Có ba dang cau lenh doc dinh nghia de ho tro cho các tùy chon sending. Các cau
lenh này doc dùng trong các phien giao dich SMTP thay the cho cau lenh MAIL và báo
cho Receiver-SMTP biet ý nghia dac biet cua phien giao dich này.
a. Lenh SEND FROM <reverse-path>
• Iham so: dia chi terminal cua ngòi nhan.
• Chi tiet: Lenh này yeu cau dü lieu cua th doc phan phát tói terminal cua ngòi su
dung. Neu ngòi su dung cha kích hoat (hoàc khong chap nhan kieu giao dich
này) thì Receiver-SMTP së gui tra mã 450. Phien giao dich là thành cong neu
th doc chuyen den terminal cua ngòi su dung.
• Ihong tin phan hoi:
450 OK
b. Lenh SOML FROM <reverse-path>
• Iham so: dia chi terminal cua ngòi nhan.
• Chi tiet: Lenh này (viet tåt cua chù Send Or MaiL) yeu cau dü lieu cua th doc
phan phát tói terminal cua ngòi su dung trong tròng hop ngòi su dung kích
hoat (và chap nhan kieu giao dich này). Trong tròng hop ngoc lai, nghia là ngòi
su dung cha kích hoat thì dü lieu cua th së doc chuyen den mailbox cua ngòi
nhan. Phien giao dich thành cong neu th doc chuyen den terminal cua ngòi su
dung.
c. Lenh SAML FROM <reverse-path>
• Iham so: dia chi terminal cua ngòi nhan.
• Chi tiet: Lenh này (viet tåt cua chù Send And MaiL) yeu cau dü lieu cua th doc
phan phát tói terminal cua ngòi su dung trong tròng hop ngòi su dung kích
hoat (và chap nhan kieu giao dich này). Trong bat cú tròng hop nào thì dü lieu

Sinh vien thuc hien Nguyen Xuan Thanh 6/3Q#
Ðo øn tot nqhIep
cua th cüng së doc chuyen den mailbox cua ngòi nhan. Phien giao dich thành
cong neu th doc chuyen den mailbox cua ngòi su dung.
1.5.6. Các thu tuc Opening và Closing
Khi mot phien giao dich th tín doc mo, can phai có su trao doi thong tin giüa các
máy chu (host) de dam bao su chính xác trong giao dich. Có hai lenh de thuc hien viec
dóng/mo mot phien giao dich.
a. HELO <domain>
• Iham so: ten domain cua máy chu thuc hien viec gui th (co the khong co).
• Chi tiet: Lenh này dùng de xác nhan domain máy chu SMTP Sender.
• Ihong tin phan hoi:
250 <domain>
\i du:
R: 220 BBN-UNIX.ARPA Simple Mail Transfer Service Ready
S: HELO USC-ISIF.ARPA
R: 250 BBN-UNIX.ARPA
b. QUIT
• Iham so: khong.
• Chi tiet: Lenh này dùng de ket thúc phien giao dich SMTP.
• Ihong tin phan hoi:
250 CRLF
\i du:
S: QUIT
R: 221 BBN-UNIX.ARPA Service closing transmission channel
1.5.7. Ma tra lòi cua các cau lenh SMTP
Trong mot phien giao dich SMTP, phía SMTP Sender gui các lenh yeu cau còn
phía SMTP Receiver së gui tra các thong tin phan hoi và các mã phan hoi.
Ðe dam bao tính thong nhat truyen thong trong quá trình truyen th, dong thòi de
dam bao phía SMTP Sender luon biet doc chính xác trang thái cua SMTP Receiver,
moi cau lenh yeu cau deu phai doc tra lòi bang các mã thong tin phan hoi chính xác.
Bang Mã thong tin phan hoi cua SMTP
Ma thong tin phan hoi Thong 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

Sinh vien thuc hien Nguyen Xuan Thanh Trang 33
Ðo øn tot nqhIep
421 Service not available, closing transmission channel
250 OK
251 User not local; will forward to <forward-path>
450 Mailbox unavailable (not found or no access)
551 User not local; please try <forward-path>
452 Insufficent system storage
552 Request mail action aborted
553 Mailbox name not allow (mailbox syntax incorrect)
354 Start mail input, end with <CRLF>.<CRLF>
554 Transaction failed
Mét m· th«ng tin ph¶n håi lµ mét sè cã 3 ch÷ sè vµ tiÕp theo lµ mét chuçi v¨n
b¶n m« t¶ vÒ m· ®ã. B¶ng trªn ®©y sÏ tr×nh bµy chi tiÕt c¸c th«ng tin ph¶n håi:
TruyÒn th«ng gi÷a Sender-SMTP vµ Receiver-SMTP ®îc coi nh mét cuéc héi
tho¹i, ®îc ®iÒu khiÓn bëi Sender-SMTP. Nh vËy, Sender-SMTP ®a ra mét lÖnh yªu cÇu
vµ Receiver- SMTP sÏ tr¶ l¹i mét m· th«ng tin ph¶n håi. Sau khi Sender-SMTP ®a ra
lÖnh yªu cÇu, nã ph¶i ®îi th«ng tin ph¶n håi tõ Receiver-SMTP råi míi ®a ra lÖnh tiÕp
theo.
Trong c¸c m· th«ng tin ph¶n håi, m· ph¶n håi quan träng nhÊt lµ 220. Nã ®Æc tr-
ng cho viÖc thùc hiÖn thµnh c«ng yªu cÇu.
1.6. PHAÂN TÍCH GIAO THÖÙC POP3 (RFC 1081,1082)
1.6.1. Giíi thiÖu
Giao thøc POP3 cho phÐp mét m¸y tr¹m cã thÓ truy nhËp ®Ó lÊy th trªn m¸y
chñ. Nã ®Þnh nghÜa c¸ch thøc giao tiÕp víi POP3 Server bëi c¸c lÖnh chuÈn ®îc quy
®Þnh trong RFC 1081 ®Ó lÊy th vÒ.
1.6.2. M« h×nh ho¹t ®éng phiªn giao dÞch
Vµo thêi ®iÓm b¾t ®Çu, tiÕn tr×nh phÝa Server b¾t ®Çu dÞch vô POP3 b»ng c¸ch
”l¾ng nghe” trªn cæng TCP 110. ThuËt ng÷ ”l¾ng nghe” ë ®©y ®îc hiÓu theo nghÜa lµ
tiÕn tr×nh phÝa Server lu«n lu«n tiÕp nhËn c¸c th«ng tin ®Õn ë cæng dÞch vô mµ nã cung
cÊp - trong trêng hîp nµy lµ cæng dÞch vô 110 - xö lý vµ göi kÕt qu¶ vÒ cho tiÕn tr×nh
yªu cÇu dÞch vô phÝa Client.
Khi mét tiÕn tr×nh phÝa Client muèn sö dông dÞch vô, nã thiÕt lËp mét kÕt nèi TCP
tíi m¸y chñ phÝa Server. Khi kÕt nèi ®îc thiÕt lËp, POP3 Server göi mét th«ng b¸o chÊp
nhËn vµ sau ®ã tiÕn tr×nh phÝa Client vµ POP3 Server cã thÓ trao ®æi c¸c lÖnh còng nh
c¸c th«ng tin ph¶n håi cho ®Õn khi kÕt nèi bÞ hñy bá hoÆc phiªn giao dÞch kÕt thóc.
C¸c lÖnh trong POP3 bao gåm tõ khãa, cã thÓ theo sau lµ mét hoÆc nhiÒu tham
sè. TÊt c¶ c¸c lÖnh ®Òu ®îc kÕt thóc bëi cÆp ký tù CRLF. Tõ khãa vµ c¸c tham sè lµ c¸c
kÝ tù in ®îc trong b¶ng m· kÝ tù ASCII, gi÷a chóng ®îc ph©n c¸ch bëi mét kÝ tù dÊu
c¸ch trèng. Tõ khãa cã thÓ dµi ba hoÆc bèn kÝ tù, cßn c¸c tham sè cã thÓ dµi tíi bèn m-
¬i kÝ tù.
Th«ng tin ph¶n håi cña POP3 bao gåm mét th«ng b¸o tr¹ng th¸i vµ mét tõ khãa
cã thÓ theo sau mét sè th«ng tin thªm. TÊt c¶ c¸c th«ng tin ph¶n håi ®Òu ®îc kÕt thóc
bëi cÆp ký tù CRLF.

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 34
Ðo øn tot nqhIep
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.

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 35
Ðo øn tot nqhIep
Trong tròng hop ngoc lai, neu thong tin phan hoi bat dau bang dau ¨-¨ (-ERR) cho
lenh USER thì phía Client có the thuc hien lai viec dinh danh hoac ket thúc phien giao
dich bang lenh QUIT.
Khi phía Client da vào lenh PASS, POP3 Server së su dung ket hop hai doi so da
vào boi hai lenh USER và PASS de xác dinh xem ngòi su dung này có ton tai hay
khong, có doc quyen truy nhap vào mailbox hay khong,.v.v
Sau khi dã xác dinh phía Client doc quyen truy nhap, POP3 Server së thuc hien
viec khoá mailbox de chong lai viec sua doi hoac xoá th trong mailbox tù các phien
POP3 khác, tróc khi chuyen sang trang thái UPDATE.
Neu nh viec khoá mailbox thành cong, phien giao dich POP3 së chuyen sang
trang thái TRANSACTION. Vào thòi diem này, cha có mot th nào bi dánh dau xoá.
Trong tròng hop ngoc lai, neu nh vì mot lý do nào dó khong the khoá doc
mailbox (vi du nh khong doc quyen truy nhap hoàc mailbox dã bi khoa,.v.v) thì POP3
Server së gui mot thong tin phan hoi ¨-ERR¨ và ket thúc luon phien giao dich.
Sau khi POP3 Server dã mo doc mailbox, nó së gan chi so cho moi mot búc th và
tính luon kích thóc tùng búc th. Chi so doc bat dau tù 1. Trong các lenh cua POP3 và
các thong tin phan hoi, tat ca các chi so và kích thóc th deu o dang co so 10.
Sau day là mot so lenh có the thuc hien trong trang thái AUTHORIZATION:
a. Lenh USER [name]
• Iham so: là mot xau ký tu dinh danh cua mailbox, duy nhat doi vói Server.
• Han che: Chi có the thuc hien trong trang thái AUTHORIZATION vào thòi
diem ban dau hoac sau khi viec dinh danh USER và PASS khong thành cong.
• Chi tiet: Lenh này dùng de dinh danh ngòi su dung.
• Ihong tin phan hoi:
+OK name is welcome here
-ERR Never heard of name
\i du:
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. Lenh PASS [string]
• Iham so: là mot xau ký tu dinh danh cua mat khau tong úng vói mailbox.
• Han che: Chi có the thuc hien trong trang thái AUTHORIZATION vào thòi
diem ban dau hoac sau khi viec dinh danh USER thành cong.
• Chi tiet: Lenh này dùng de xác dinh mat khau tong úng vói ngòi su dung dã
dinh danh bang lenh USER.
• Ihong tin phan hoi:
+OK maildrop locked and ready
-ERR invalid password
-ERR unable to lock maildrop
\i du:
C: USER mrose
S: +OK mrose is a real hoopy frood
C: PASS secret
S: +OK mrose`s maildrop has 2 messages

Sinh vien thuc hien Nguyen Xuan Thanh 6/3Q#
Ðo øn tot nqhIep
(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. Lenh QUIT
• Iham so: khong.
• Han che: khong
• Chi tiet: Lenh này dùng de ket thúc phien giao dich.
• Ihong tin phan hoi:
+OK
\i du:
C: QUIT
S: +OK dewey POP3 server signing off
1.6.4. Trang thái TRANSACTION
Moi lan phía Client thuc hien thành cong viec dinh danh vói POP3 Server,
mailbox tong úng së doc khoá và phien làm viec bay giò së o trang thái
TRANSACTION.
Phía Client có the su dung bat cú mot lenh POP3 nào de thuc hien giao dich vói
POP3 Server. Các lenh này có the lap lai mà khong bi han che gì ca. Sau moi lenh, phía
POP3 Server së gui tra mot thong tin phan hoi và ket qua thuc hien.
Cuoi cùng, phía Client thuc hien lenh QUIT de chuyen phien giao dich sang trang
thái UPDATE.
Sau day là mot so lenh có the thuc hien trong trang thái TRANSACTION:
a. Lenh STAT
• Iham so: khong.
• Han che: Chi có the thuc hien trong trang thái TRANSACTION.
• Chi tiet: Lenh này dùng de lay thong tin ve so th trong mailbox và kích thóc
cua mailbox tong úng vói ngòi su dung. Cau trúc cua dòng thong tin phan hoi
này là: '+OK¨, tiep theo là mot dau cách trong, so long th trong mailbox và
kích thóc cua mailbox tong úng vói ngòi dùng dã xác dinh.
• Ihong tin phan hoi:
+OK nn mm
\i du:
C: STAT
S: +OK 2 320
b. Lenh LIST [msg]
• Iham so: (co the co hoàc khong) là mot so hieu cua th trong so nhüng th hien
có trong mailbox cua ngòi dùng. Lu ý, nhüng th bi dánh dau xoá së bi bo qua.
• Han che: Chi có the thuc hien trong trang thái TRANSACTION.

Sinh vien thuc hien Nguyen Xuan Thanh 6/3Q#g
Ðo øn tot nqhIep
• Chi tiet: Lenh này dùng de liet ke danh sách các th có trong mailbox và kích
thóc tong úng hoac lay thong tin ve mot th cu the nào dó. Trong tròng hop
khong da vào tham so thì POP3 Server së tra lai '+OK¨ và mot danh sách các
th và so hieu tong úng trong mailbox cua ngòi dùng. Trong tròng hop ngoc lai,
có tham so, neu tham so nam trong khoang cho phép tù 1 den so th thì POP3
Server së tra lai '+OK¨ và so hieu cua th và kích thóc tong úng. Ngoc lai,
POP3 Server së tra lai '-ERR¨.
• Ihong tin phan hoi:
+OK scan listing follows
-ERR no such message
\i du:
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. Lenh RETR [msg]
• Iham so: So hieu cua th can lay.
• Han che: Chi có the thuc hien trong trang thái TRANSACTION.
• Chi tiet: Lenh này dùng de hien thi noi dung th tong úng vói so hieu da vào.
Neu thuc hien doc POP3 Server së gui tra mot thong tin phan hoi da dòng, bat
dau bang ¨+OK¨, tiep theo là các dòng chúa dung thong tin ve noi dung th
cüng nh tieu de cua th doc chon. Trong tròng hop có loi, POP3 Server së gui
tra ¨-ERR¨
• Ihong tin phan hoi:
+OK message follows
-ERR no such message
\i du:
C: RETR 1
S: +OK 120 octets
S: <the POP3 server sends the entire message here>
S: .
d. Lenh DELE [msg]
• Iham so: so hieu cua th can xoá.
• Han che: chi có the thuc hien trong trang thái TRANSACTION.
• Chi tiet: lenh này dùng de xoá mot th tong úng vói so hieu da vào. Neu thuc
hien doc, POP3 Server së gui tra mot thong tin phan hoi bat dau bang ¨+OK¨,
tiep theo là thong tin ve th dã bi xóa. Trong tròng hop có loi, POP3 Server së
gui tra ¨-ERR¨. Lu ý, POP3 Server chi thuc hien viec dánh dau xoá tren búc
th dó. Nó chi bi xoá thuc su sau khi phien giao dich chuyen sang trang thái
UPDATE.

Sinh vien thuc hien Nguyen Xuan Thanh 6/3Q#$
Ðo øn tot nqhIep
• Ihong tin phan hoi:
+OK message deleted
-ERR no such message
\i du:
C: DELE 1
S: +OK message 1 deleted
...
C: DELE 2
S: -ERR message 2 already deleted
e. Lenh NOOP
• Iham so: khong.
• Han che: chi có the thuc hien trong trang thái TRANSACTION.
• Chi tiet: lenh này dùng de xác nhan ket noi vói POP3 Server. POP3 Server
khong làm gì ca mà chi gui tra lai ¨+OK¨ cho Client.
• Ihong tin phan hoi:
+OK
\i du:
C: NOOP
S: +OK
f. Lenh LAST
• Iham so: khong.
• Han che: chi doc thuc hien trong trang thái TRANSACTION.
• Chi tiet: POP3 server dat mot tra lòi xác dinh vói dòng chúa so thong diep cao
nhat hien tai mà nó doc truy cap trong maildrop. Trong tròng hop còn dang o
trong trang thái TRANSACTION mà các th dã bi dánh dau xóa cha có lenh
RSET thì so th hien có trong maildrop van khong thay doi tính luon ca các th
dã doc dánh dau xoá.
• Ihong tin phan hoi:

+OK nn
:
C: STAT
S: +OK 4 320
C: LAST
S: +OK 1
C: RETR 3
S: +OK 120 octets
S: <the POP3 server sends the entire message here>
S: .
C: LAST
S: +OK 3
C: DELE 2
S: +OK message 2 deleted
C: LAST
S: +OK 3

Sinh vien thuc hien Nguyen Xuan Thanh Trang 39
Ðo øn tot nqhIep
C: RSET
S: +OK
C: LAST
S: +OK 1
g. Lenh RSET
• Iham so: khong.
• Han che: chi có the thuc hien trong trang thái TRANSACTION.
• Chi tiet: lenh này dùng de khoi phuc lai nhüng th dã bi dánh dau xóa. Neu thuc
hien doc POP3 Server së gui tra thong tin phan hoi ¨+OK¨ de xác nhan dã bo
dánh dau doi vói nhüng th dã bi dánh dau xóa. Trong tròng hop có loi, POP3
Server së gui tra lòi ¨-ERR¨
• Ihong tin phan hoi:
+OK
\i du:
C: RSET
S: +OK maildrop has 2 messages (320 octets)
1.6.5. Trang thái UPDATE
Khi phía Client thuc hien lenh QUIT dang o trong trang thái TRANSACTION.
phien giao dich POP3 së chuyen sang trang thái UPDATE.
Lu ý rang neu lenh QUIT doc thuc hien trong trang thái AUTHORIZATION thì
phien giao dich POP3 khong chuyen sang trang thái UPDATE.
Neu mot phien giao dich bi ket thúc vì mot lý do nào dó mà khong phai do phía
Client thuc hien lenh QUIT thì phien giao dich POP3 cüng khong chuyen sang trang
thái UPDATE và cüng khong thuc hien viec xóa bat ky mot th nào tù mailbox.
• Lenh QUIT
• Iham so: khong.
• Han che: khong.
• Chi tiet: Lenh này dùng de ket thúc phien giao dich mot cách hop le. POP3
Server së xóa vat lý tat ca th dã bi dánh dau xóa trong mailbox. Sau dó, nó së
gõ bo khóa doi vói mailbox dó và có mot thong tin phan hoi de xác nhan thao
tác này. Ket noi TCP së ket thúc.
• Ihong tin phan hoi:
+OK

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í du ve mot phien giao dich POP3

Sinh vien thuc hien Nguyen Xuan Thanh 6/3Q%T
Ðo øn tot nqhIep
S: <wait for connection on TCP port 110>
...
C: <open connection>
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: <the POP3 server sends message 1>
S: .
C: DELE 1
S: +OK message 1 deleted
C: RETR 2
S: +OK 200 octets
S: <the POP3 server sends message 2>
S: .
C: DELE 2
S: +OK message 2 deleted
C: QUIT
S: +OK dewey POP3 server signing off (maildrop empty)
C: <close connection>
S: <wait for next connection>
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:
1. 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.
2. 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. . .

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 41
Ðo øn tot nqhIep
3. 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. . .
4. 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
Applicatio
n
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

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 42
Ðo øn tot nqhIep
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.
CHtONG 4 t GIO I THIEt ¥E CAC CO NG NGHE
LIE N QtAN
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

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 43
Ðo øn tot nqhIep

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 44
Ðo øn tot nqhIep
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.

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 45
Ðo øn tot nqhIep
 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:

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 46
Ðo øn tot nqhIep
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ä:

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 47
Ðo øn tot nqhIep
 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=< x, v>= (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) .

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 48
Ðo øn tot nqhIep
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.

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 49
Ðo øn tot nqhIep
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.

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 50
Ðo øn tot nqhIep
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.<jsp:useBean>
Theû <jsp:useBean> 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û <jsp:useBean> 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.<jsp:setProperty>

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 51
Ðo øn tot nqhIep
Theû <jsp:setProperty> 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 <jsp:setProperty>
<jsp:setProperty name = “beanName” prop_expr/>
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û
<jsp:useProperty>
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. <jsp:getProperty>
Theû <jsp:getProperty> 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û <jsp:getProperty> nhö sau:
<jsp:getProperty name=”name” property=”propertyName”/>
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û <jsp:useProperty>
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û: < jsp:useBean >
< jsp : useBean id = “jb” scope = “page” class = “searchbean. searchbean”/>
< jsp : setProperty name = “jb” property = “job” param = “name”/>

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 52
Ðo øn tot nqhIep
PHAN 2 t XA1 Dt NG tNG DtNG
CHtONG 1 PHAN TÍCH HAI 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

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 53
Ðo øn tot nqhIep
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.

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 54
Ðo øn tot nqhIep
+ 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.
CHtONG 2 t THIE T NE ¥A CAI ÐAT tNG Dt 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.

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 55
Ðo øn tot nqhIep
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

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 56
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
Ðo øn tot nqhIep
Phaân tích chöùc naêng
Sô ñoà bieåu dieãn chöùc naêng cuûa heä thoáng

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)

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 57
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æ
Yeâu caàu
Thaønh vieân
Thaønh vieân
Ñaêng kyù
Thoâng baùo
Heä
thoáng
vietmail
Ðo øn tot nqhIep
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_k
hac
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

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 58
Ðo øn tot nqhIep
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:

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 59
Ðo øn tot nqhIep
- Ñô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
traùch nhieäm phaân tích caùc leänh SMTP vaø nhaän mail do trình khaùch gôûi leân. Lôùp
SMTP ñöôïc caøi ñaët nhö sau:
SMTPServer.java
import java.io.*;
import java.net.*;
import java.util.*;
public class SMTPServer extends Thread {
protected ServerSocket listenSocket = null;
protected Vector connections;
public Boolean stopRequested;
public SMTPServer() throws Exception {
int port = 0;
String portString = null;
// Laáy soá hieäu coång S MTP töø file caáu hình
try {
portString = Server.properties.getProperty("smtp.port");
port = Integer.parseInt(portString);
} catch (NumberFormatException e) {
throw new Exception("Invalid 'smtp.port' - " + portString);
}
// Môû socket laùng nghe keát noái töø trình khaùch
listenSocket = new ServerSocket(port);
// Maûng löu caùc keát noái töø trình khaùch
connections = new Vector(10, 10);

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 60
Ðo øn tot nqhIep
}
public void removeConnection(SMTPConnection connection) {
connections.removeElement(connection);
}
public void run() {
// Laëp voâ taän chôø nhaän keát noái cho ñeán khi coù tín hieäu döøng
stopRequested = new Boolean(false);
while (true) {
synchronized (stopRequested) {
if (stopRequested.booleanValue())
break;
}
// chaáp nhaän keát noái
try {
Socket s = listenSocket.accept();
System.out.println("Accept");
//Phaân tích caùc leänh SMTP cuûa trình khaùch – thöïc hieän vieäc tieáp nhaän mail
SMTPConnection connection = new SMTPConnection(s, this);
connections.addElement(connection);
connection.start();
} catch (IOException e) {
e.printStackTrace();
break;
}
}
// Ñoùng keát noái
try {
listenSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Lôùp SMTPConnection ñoùng vai troø chính trong SMTPServer.
SMTPConnection phaân tích caùc leänh SMTP, nhaän mail vaø löu vaø thö muïc töông
öùng vôùi ñòa chæ mail cuûa User. Chöông trình mailserver cuõng cho pheùp khaû naêng

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 61
Ðo øn tot nqhIep
relayvaø chuyeån tieáp mail. Caùc mail coù ñòa chæ khoâng thuoäc domain do mailserver
quaûn lyù seõ ñöôïc löu vaø thö muïc queue (hay haøng ñôïi). Chöông trình
SMTPRelayServer vaø SMTPRForrwardServer seõ xöû lyù caùc mail naøy. Lôùp
SMTPConnection ñöôïc caøi ñaët nhö sau:
SMTPConnection.java
import java.io.*;
import java.net.*;
import java.util.*;
/**
* SMTPConnection : Xöû lyù caùc leänh SMTP, löu mail vaøo thö muïc thích hôïp
*/
public class SMTPConnection extends Thread {
protected SMTPServer server;
protected Socket socket;
protected Vector recipients;
public BufferedReader in;
public PrintStream out;
public String returnPath;
protected Vector users;
protected boolean stopRequested;
public SMTPConnection(Socket socket, SMTPServer server) {
this.socket = socket;
this.server = server;
}
/**
* Ñoùng keát noái – hoaøn taát quaù trình nhaän mail töø trình khaùch
* */
public void close() {
try {
socket.close();
} catch (Exception e) {
System.err.println("Exception trying to close SMTPConnection socket!");
e.printStackTrace(System.err);
}
}
/**
* Xöû lyù leänh SMTP DATA
*/

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 62
Ðo øn tot nqhIep
public void processDATA() throws IOException {
String line;
StringBuffer data = new StringBuffer();
line = in.readLine();
while (!line.equals(".")) {
if (line.startsWith(".."))
line = line.substring(1);
// Ñaët chuoãi nhaän ñöôïc vaøo StringBuffer
System.out.println(line);
data.append(line + "\n");
line = in.readLine();
}
// Löu thoâng ñieäp
String messageId = Server.storage.saveMessage(users, data);
// Thoâng baùo cho trình khaùch thoâng ñieäp ñaõ ñöôïc löu
out.println("250 Message '" + messageId + "' accepted for delivery");
}
/**
* Xöû lyù leänh SMTP EHELO – Leänh naøy chæ daønh cho taäp leänh cuûa SMTP môû roäng
– noù töông öùng vôùi leänh baét tay HELO
**/
public void processEHLOCommand(StringTokenizer arguments) {
processHELOCommand(arguments);
}
/**
* Xöû lyù leänh SMTP HELO
**/
public void processHELOCommand(StringTokenizer arguments) {
if (!arguments.hasMoreTokens()) {
out.println("501 HELO requires domain address");
return;
}
out.println("250 " + Server.getAddress() + " Hello");
}

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 63
Ðo øn tot nqhIep
/**
* Xöû lyù leänh SMTP MAIL
**/
public boolean processMAIL() throws IOException {
String line = "";
while (true) {
line = in.readLine();
System.out.println(line);
if (line.length() < 4) {
out.println("500 Command Unknown '" + line + "'");
continue;
}
StringTokenizer tokenizer = new StringTokenizer(line);
String command = tokenizer.nextToken();
if (command.equalsIgnoreCase("HELO")) {
processHELOCommand(tokenizer);
continue;
}
if (command.equalsIgnoreCase("EHLO")) {
processEHLOCommand(tokenizer);
continue;
}
if (command.equalsIgnoreCase("VRFY")) {
processVRFYCommand(tokenizer);
continue;
}
if (command.equalsIgnoreCase("QUIT")) {
processQUITCommand(tokenizer);
return false;
}
if(command.equalsIgnoreCase("RCPT")||
command.equalsIgnoreCase("DATA")) {
out.println("503 Bad sequence of commands - specify MAIL first");
continue;
}

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 64
Ðo øn tot nqhIep
if (command.equalsIgnoreCase("MAIL")) {
if (processMAILCommand(tokenizer)) {
out.println("250 OK");
return true;
}
}
out.println("500 Command Unknown '" + line + "'");
}
}
public boolean processMAILCommand(StringTokenizer arguments) {
if (!arguments.hasMoreTokens()) {
out.println("503 Syntax: MAIL FROM:<user>");
return false;
}
returnPath = arguments.nextToken();
System.out.println(returnPath+" "+returnPath.length());
if (returnPath.length() < 5) {
out.println("503 Syntax: MAIL FROM:<user>");
return false;
}
if (!returnPath.substring(0, 5).equalsIgnoreCase("FROM:")) {
out.println("503 Syntax: MAIL FROM:<user>");
return false;
}
return true;
}
protected void processQUITCommand(StringTokenizer arguments) {
out.println("221 " + Server.getAddress() + " closing connection");
stopRequested = true;
}

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 65
Ðo øn tot nqhIep
public boolean processRCPT() throws IOException {
users = new Vector(2, 2);
String line = "";
while (true) {
line = in.readLine();
System.out.println(line);
if (line.length() < 4) {
out.println("500 Command Unknown '" + line + "'");
continue;
}
StringTokenizer tokenizer = new StringTokenizer(line);
String command = tokenizer.nextToken();
if (command.equalsIgnoreCase("EHLO")) {
processEHLOCommand(tokenizer);
continue;
}
if (command.equalsIgnoreCase("VRFY")) {
processVRFYCommand(tokenizer);
continue;
}
if (command.equalsIgnoreCase("RSET")) {
out.println("250 Reset state");
return false;
}
if (command.equalsIgnoreCase("QUIT")) {
processQUITCommand(tokenizer);
return false;
}
if (command.equalsIgnoreCase("MAIL")) {
out.println("503 Sender already specified");
continue;
}
if (command.equalsIgnoreCase("DATA")) {

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 66
Ðo øn tot nqhIep
if (users.size() == 0) {
out.println("503 Bad sequence of commands - specify RCPT first");
continue;
}
out.println("354 Enter mail, ending with '.' on a line by itself");
return true;
}
if (command.equalsIgnoreCase("RCPT")) {
processRCPTCommand(tokenizer);
continue;
}
out.println("500 Command Unknown '" + line + "'");
}
}
public void processRCPTCommand(StringTokenizer arguments) {
if (!arguments.hasMoreTokens()) {
out.println("501 Syntax: RCPT TO:<address>");
return;
}
String arg = arguments.nextToken();
if (!arg.substring(0, 3).equalsIgnoreCase("TO:")) {
out.println("501 Syntax: RCPT TO:<address>");
return;
}

// Ñòa chæ naèm sau "TO:"
System.out.println(arg);
// Moät vaøi trình khaùch gôûi leänh RCPT TO: khoâng coù khoaûng traéng sau TO
String address;
try{
address=arguments.nextToken(); //coù khoaûng traéng
} catch(Exception e){
address = arg.substring(3);//khoâng coù khoaûng traéng
}

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 67
Ðo øn tot nqhIep
System.out.println("Receipt address :"+address);
// Thoâng thöôøng ñòa chæ mail ñöôïc gôûi theo daïng <user@domainname>
if (address.substring(0, 1).equals("<") && address.substring(address.length() - 1,
address.length()).equals(">"))
address = address.substring(1, address.length() - 1);
// Laáy veà thoâng tin cuûa user töø ñòa chæ mail
User user = Server.storage.getUser(address);
// Baùo loãi cho trình khaùch neáu user khoâng toàn taïi
if (user == null) {
out.println("550 User " + address + " is not known");
return;
}
// Ñöa user vaøo danh saùch phaân phoái mail
users.addElement(user);
// Traû veà maõ loãi thaønh coâng
out.println("250 Recipient " + address + " ok");
}
public void processVRFYCommand(StringTokenizer arguments) {
out.println("252 VRFY command not implemented");
}
/**
* Phöông thöùc run() laëp lieân tuïc ñeå lyù leänh cho ñeán khi hoaøn taát
*/
public void run() {
try {
in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintStream(socket.getOutputStream());
} catch (IOException e) {
e.printStackTrace(System.err);
close();
return;
}
stopRequested = false;
out.println("220mail.goemaat.comJAVASMTPServer
(com.goemaat.email.SMTP) ready");

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 68
Ðo øn tot nqhIep
while (!stopRequested) {
try {
if (processMAIL()) {
if (processRCPT())
processDATA();
}
} catch (IOException e) {
e.printStackTrace(System.err);
stopRequested = true;
}
}
// Ñoùng socket ñaõ môû tröôùc ñoù
close();
// Loaïi boû keát noái trong danh saùch SMTPServer
server.removeConnection(this);
}
}
Chöông trình Server.java döôùi ñaây ñöôïc duøng ñeå ñoïc file caáu hình
email.properties, khôûi taïo SMTPServer. Server.java cuõng laøm nhieäm vuï khôûi taïo
trình chuû POPServer. Trình Server.java ñöôïc caøi ñaët nhö sau:
Server.java
import java.io.*;
import java.util.*;
public class Server {
public static Properties properties;
public static SMTPServer smtp;
public static EmailStorage storage;
public static POPServer pop;
public static String getAddress() {
String address = properties.getProperty("server.address");
if (address == null)
address = "UNKNOWN[server.address]";
return address;

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 69
Ðo øn tot nqhIep
}
protected static boolean getProperties() {
try {
String fileName = "email.properties";
// Kieåm tra söï toàn taïi cuûa file caáu hình email.properties
File file = new File(fileName);
if (!file.exists()) {
fileName = file.getAbsolutePath();
System.out.println("Specified properties file '" +
file.getAbsolutePath() + "' does not exist!");
return false;
}
// Ñoïc caùc thoâng tin caáu hình
properties = new Properties();
FileInputStream in = new FileInputStream(file);
properties.load(in);
in.close();
} catch (Exception e) {
System.out.println(e);
return false;
}
System.getProperties().put("line.separator", "\r\n");
return true;
}
/**
* Chöông trình chính
*/
public static void main(String[] args) {
if (!getProperties()) {
System.err.println("Could not get properties!");
return;
}

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 70
Ðo øn tot nqhIep
System.out.println(Server.properties.getProperty("smtp.port"));
// Thieát laäp nôi löu tröõ mail
if (!setupStorage()) {
System.out.println("Could not setup storage!");
return;
}
// Khôûi taïo SMTP server
if (!startSMTPServer()) {
System.err.println("Could not start SMTP server!");
return;
}
// Khôûi taïo POP server
if (!startPOPServer()) {
System.err.println("Could not start POP server!");
return;
}
}
/**
*Phöông thöùc khôûi taïo nôi löu tröõ mail
*/
public static boolean setupStorage() {
String className = properties.getProperty("storage.class");
if (className == null || className.length() == 0) {
System.err.println("No storage class specified in property
'storage.class'!");
return false;
}
Class c = null;
try {
c = Class.forName(className);
} catch (ClassNotFoundException e) {
System.err.println("Class '" + className + "' not found! (check
CLASSPATH)");
e.printStackTrace(System.err);
return false;

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 71
Ðo øn tot nqhIep
}
// Taïo theå hieän cuûa lôùp
try {
storage = (EmailStorage)c.newInstance();
} catch (InstantiationException e) {
e.printStackTrace(System.err);
return false;
} catch (IllegalAccessException e) {
e.printStackTrace(System.err);
return false;
}
return storage.init();
}
/**
* Khôûi taïo POP server.
*/
protected static boolean startPOPServer() {
try {
pop = new POPServer();
pop.setDaemon(false);
pop.start();
} catch (Exception e) {
e.printStackTrace(System.err);
return false;
}
return true;
}
/**
* Khôûi taïo SMTP server.
*/
protected static boolean startSMTPServer() {
try {
smtp = new SMTPServer();
smtp.setDaemon(false);
smtp.start();
} catch (Exception e) {
e.printStackTrace(System.err);
return false;

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 72
Ðo øn tot nqhIep
}
return true;
}
}
2.2.2.2. Xaây döïng POP3 Server
Trình POP3 Server goàm hai phaàn, phaàn POPServer chòu traùch nhieäm môû
socket vaø laéng nghe keát noái töø trình khaùch gôûi leân theo coång 110 (coång maëc ñònh
cuûa giao thöùc POP3). Khi nhaän ñöôïc keát noái, POPServer yeâu caàu lôùp
POÂPCnnection phaân tích caùc leänh cuûa giao thöùc POP3 vaø gôûi mail veà cho trình
khaùch. Lôùp POP3 ñöôïc caøi ñaët nhö sau:
POPServer.java
import java.io.*;
import java.net.*;
import java.util.*;
public class POPServer extends Thread {
public Vector connections;
public Boolean stopRequested;
protected ServerSocket listenSocket;
public POPServer() throws Exception {
int port = 0;
String portString = null;
// Laáy soù hieäu coång töø file caáu hình
try {
portString = Server.properties.getProperty("pop.port");
port = Integer.parseInt(portString);
} catch (NumberFormatException e) {
throw new Exception("Invalid 'pop.port' - " + portString);
}
// Laéng nghe treân socket söï keát noái töø trình khaùch
listenSocket = new ServerSocket(port);
// Taïo maûng chöùa danh saùch caùc keát noái
connections = new Vector(10, 10);
}

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 73
Ðo øn tot nqhIep
public void removeConnection(POPConnection connection) {
}
/**
* Xöû lyù keát noái
*/
public void run() {
// Laëp voâ taän cho ñeán khi coù yeâu caàu döøng
stopRequested = new Boolean(false);
while (true) {
synchronized (stopRequested) {
if (stopRequested.booleanValue())
break;
}
// Chaáp nhaän keát noái do trình khaùch gôûi leân
try {
Socket s = listenSocket.accept();
//Yeâu caàu lôùp POPConnection xöû lyù giao thöùc phuïc vuï trình khaùch
POPConnection connection = new POPConnection(s, this);
connections.addElement(connection);
connection.setDaemon(true);
connection.start();
} catch (IOException e) {
e.printStackTrace();
break;
}
}
// Ñoùng keát noái
try {
listenSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Lôùp POPConnection.java chòu traùch nhieäm chính trong vieäc xöû lyù caùc leänh
cuûa giao thöùc POP3. Lôùp POPConnection ñöôïc caøi ñaët nhö sau :

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 74
Ðo øn tot nqhIep
POPConnection.java
import java.io.*;
import java.net.*;
import java.util.*;
public class POPConnection extends Thread {
protected static final int ENTER_USER = 0;
protected static final int ENTER_PASSWORD = 1;
protected static final int TRANSACTION = 2;
protected static final int UPDATE = 3;
protected POPServer server;
protected Socket socket;
protected BufferedReader in;
protected PrintStream out;
protected boolean stopRequested;
protected int state;
protected String userName;
protected User user;
protected Vector messages = null;
public POPConnection(Socket socket, POPServer server) {
super();
this.socket = socket;
this.server = server;
}
protected void close() {
try {
socket.close();
} catch (Exception e) {
System.err.println("Exception trying to close POPConnection socket!");
e.printStackTrace(System.err);
}
}
// Ñeám soá mail coù trong hoäp thö
protected int countMessages() {
if (messages == null)
return 0;

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 75
Ðo øn tot nqhIep
Enumeration enum = messages.elements();
int count = 0;
while (enum.hasMoreElements()) {
Message message = (Message)enum.nextElement();
if (!message.isDeleted())
count++;
}
return count;
}
/**
* Laáy noäi dung mail döïa vaøo soá thöù töï cuûa mail löu trong hoäp thö
*/
protected Message getMessage(int number) {
if (number <= 0 || number > messages.size())
return null;
Message message = (Message)messages.elementAt(number - 1);
if (message.isDeleted())
return null;
return message;
}
protected Message getMessage(String messageNumber) {
int number;
try {
number = Integer.parseInt(messageNumber);
} catch (NumberFormatException e) {
return null;
}
return getMessage(number);
}
protected long getMessagesSize() {
if (messages == null)
return 0;
Enumeration enum = messages.elements();
long size = 0;
while (enum.hasMoreElements()) {
Message message = (Message)enum.nextElement();
if (!message.isDeleted())
size += message.getSize();

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 76
Ðo øn tot nqhIep
}
return size;
}
protected void processDELE(StringTokenizer arguments) {
if (!arguments.hasMoreTokens()) {
out.println("-ERR must supply message number");
} else {
Message message = getMessage(arguments.nextToken());
if (message == null) {
out.println("-ERR no such message");
}
message.setDeleted(true);
out.println("+OK");
}
}
/**
* Xöû lyù leänh PASS kieåm tra password
*/
protected void processEnterPassword(String command, StringTokenizer
arguments) {
if (command.equalsIgnoreCase("QUIT")) {
stopRequested = true;
out.println("+OK Signing off");
} else if (command.equalsIgnoreCase("PASS")) {
if (!arguments.hasMoreTokens()) {
out.println("-ERR must supply password");
return;
}
String password = arguments.nextToken();
if (arguments.hasMoreTokens()) {
out.println("-ERR only one argument to PASS, your password");
return;
}
// Kieåm tra quyeàn ñaêng nhaäp
user = Server.storage.login(userName, password);
if (user == null) {
out.println("-ERR invalid user or password");
state = ENTER_USER;
} else {

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 77
Ðo øn tot nqhIep
// user ñaõ ñaêng nhaäp – traû veà danh saùch caùc mail coù trong hoäp thö
messages = Server.storage.getMessages(user);
out.println("+OK mailbox open, " + countMessages() + " messages");
state = TRANSACTION;
}
} else {
out.println("-ERR Only use PASS or QUIT commands");
}
}
/**
* Xöû lyù leänh USER
*/
protected void processEnterUser(String command, StringTokenizer
arguments) {
if (command.equalsIgnoreCase("QUIT")) {
stopRequested = true;
out.println("+OK Signing off");
return;
}
if (command.equalsIgnoreCase("USER")) {
if (!arguments.hasMoreTokens()) {
out.println("-ERR must supply user name");
return;
}
userName = arguments.nextToken();
if (arguments.hasMoreTokens()) {
out.println("-ERR only one argument to USER, the user name");
return;
}
state = ENTER_PASSWORD;
out.println("+OK use PASS command to send password");
return;
}
out.println("-ERR Only use USER or QUIT commands");
}
/**
* Xöû lyù leänh LIST
*/

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 78
Ðo øn tot nqhIep
protected void processLIST(StringTokenizer arguments) {
if (!arguments.hasMoreTokens()) {
out.println("+OK " + countMessages() + " " + getMessagesSize());
for (int i = 1; i <= messages.size(); i++) {
Message message = getMessage(i);
if (message != null) {
out.println(i + " " + message.getSize());
}
}
out.println(".");
} else {
String messageNumber = arguments.nextToken();
Message message = getMessage(messageNumber);
if (message == null) {
out.println("-ERR no such message");
} else {
out.println("+OK " + messageNumber + " " + message.getSize());
}
}
}
/**
* Xöû lyù leänh NOOP – Leänh NOOP cuûa POP3 khoâng laøm gì caû, muïc ñích chæ
ñeå trình khaùch xem keát noái coøn hieäu löïc hay khoâng
*/
protected void processNOOP(StringTokenizer arguments) {
out.println("+OK");
}
/**
* Xöû lyù leänh QUIT
*/
protected void processQUIT(StringTokenizer arguments) {
Enumeration enum = messages.elements();
while (enum.hasMoreElements()) {
Message message = (Message)enum.nextElement();
if (message.isDeleted()) {
Server.storage.deleteMessage(message);
}
}

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 79
Ðo øn tot nqhIep
out.println("+OK Goodbye, " + user.getName());
stopRequested = true;
}
/**
* Xöû lyù leänh RETR traû veà noäi dung mail
*/
protected void processRETR(StringTokenizer arguments) {
if (!arguments.hasMoreTokens()) {
out.println("-ERR message number required, RETR 1");
} else {
String messageNumber = arguments.nextToken();
Message message = getMessage(messageNumber);
if (message == null) {
out.println("-ERR no such message");
return;
}
out.println("+OK " + message.getSize() + " octets");
// Ñoïc döõ lieäu mail
StringBuffer buffer = Server.storage.getMessageData(message);
BufferedReader reader = new BufferedReader(new
StringReader(buffer.toString()));
// Ñoïc töøng doøng
boolean done = false;
try {
while (reader.ready() && (!done)) {
String line = reader.readLine();
if (line == null)
break;
// Daáu chaám keát thuùc
if (line.length() >= 1) {
if (line.substring(0, 1).equals("."))
line = "." + line;
}
// Göûi döõ lieäu veà trình khaùch

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 80
Ðo øn tot nqhIep
out.println(line);
}
} catch (IOException e) {
System.err.println("POPConnection.processRETR()");
e.printStackTrace(System.err);
}
try {
reader.close();
} catch (IOException e) {
System.err.println("POPConnection.processRETR() - reader.close()");
e.printStackTrace(System.err);
}
out.println(".");
}
}
/**
* Xöû lyù leänh RSET
*/
protected void processRSET(StringTokenizer arguments) {
Enumeration enum = messages.elements();
while (enum.hasMoreElements()) {
Message message = (Message)enum.nextElement();
if (message.isDeleted())
message.setDeleted(false);
}
out.println("+OK");
}
/**
* Xöû lyù leänh STAT
*/
protected void processSTAT(StringTokenizer arguments) {
out.println("+OK " + countMessages() + " " + getMessagesSize());
}
/**
* Xöû lyù leänh TOP – traû veà trình khaùch caùc mail header
*/
protected void processTOP(StringTokenizer arguments) {
if (!arguments.hasMoreTokens()) {
out.println("-ERR syntax: TOP <msg> <lines>");
return;
}

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 81
Ðo øn tot nqhIep
String messageNumber = arguments.nextToken();
if (!arguments.hasMoreTokens()) {
out.println("-ERR syntax: TOP <msg> <lines>");
return;
}
int lines = 0;
try {
lines = Integer.parseInt(arguments.nextToken());
} catch (NumberFormatException e) {
out.println("-ERR bad number of lines");
return;
}
Message message = getMessage(messageNumber);
if (message == null) {
out.println("-ERR no such message");
return;
}
out.println("+OK " + message.getSize() + " octets");
StringBuffer buffer = Server.storage.getMessageData(message);
BufferedReader reader = new BufferedReader(new
StringReader(buffer.toString()));
boolean done = false;
boolean inBody = false;
int count = 0;
try {
while (reader.ready() && (!done) && (count <= lines)) {
String line = reader.readLine();
if (line == null)
break;
if (line.length() >= 1) {
if (line.substring(0, 1).equals("."))
line = "." + line;

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 82
Ðo øn tot nqhIep
} else {
inBody = true;
}
if (inBody) {
count++;
}
out.println(line);
}
} catch (IOException e) {
System.err.println("POPConnection.processTOP()");
e.printStackTrace(System.err);
}
try {
reader.close();
} catch (IOException e) {
System.err.println("POPConnection.processTOP() -
reader.close()");
e.printStackTrace(System.err);
}
out.println(".");
}
/**
* Xöû lyù caùc leänh cuûa giao thöùc POP3
*/
protected void processTransaction(String command, StringTokenizer
arguments) {
if (command.equalsIgnoreCase("STAT")) {
processSTAT(arguments);
} else if (command.equalsIgnoreCase("LIST")) {
processLIST(arguments);
} else if (command.equalsIgnoreCase("RETR")) {
processRETR(arguments);
} else if (command.equalsIgnoreCase("DELE")) {
processDELE(arguments);
} else if (command.equalsIgnoreCase("NOOP")) {
processTOP(arguments);
} else if (command.equalsIgnoreCase("TOP")) {
processTOP(arguments);

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 83
Ðo øn tot nqhIep
} else if (command.equalsIgnoreCase("UIDL")) {
processUIDL(arguments);
} else if (command.equalsIgnoreCase("RSET")) {
processRSET(arguments);
} else if (command.equalsIgnoreCase("QUIT")) {
processQUIT(arguments);
} else {
out.println("-ERR Unknown command " + command);
}
}
protected void processUIDL(StringTokenizer arguments) {
if (!arguments.hasMoreTokens()) {
out.println("+OK " + countMessages() + " " + getMessagesSize());
for (int i = 1; i <= messages.size(); i++) {
Message message = getMessage(i);
if (message != null) {
out.println(i + " " + message.getMessageId());
}
}
out.println(".");
} else {
String messageNumber = arguments.nextToken();
Message message = getMessage(messageNumber);
if (message == null) {
out.println("-ERR no such message");
} else {
out.println("+OK " + messageNumber + " " + message.getMessageId());
}
}
}
/**
* Nhaän keát noái vaø caùc leänh POP3 göûi leân töø trình khaùch
*/
public void run() {
try {
in = new BufferedReader(new
InputStreamReader(socket.getInputStream()));
out = new PrintStream(socket.getOutputStream());
} catch (IOException e) {
e.printStackTrace(System.err);
close();
return;

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 84
Ðo øn tot nqhIep
}
if (server == null) {
System.err.println("SERVER NOT SET!!!");
return;
}
stopRequested = false;
state = ENTER_USER;
out.println("+OK POP3 " + Server.getAddress());
while (!stopRequested) {
try {
String line = in.readLine();
if (line == null)
break;
StringTokenizer tokenizer = new StringTokenizer(line);
String command = "";
if (tokenizer.hasMoreTokens())
command = tokenizer.nextToken();
// Xöû lyù leänh tuyø theo traïng thaùi ñaêng nhaäp cuûa user
switch (state) {
case ENTER_USER:
processEnterUser(command, tokenizer);
break;
case ENTER_PASSWORD:
processEnterPassword(command, tokenizer);
break;
case TRANSACTION:
processTransaction(command, tokenizer);
break;
default:
out.println("-ERR invalid state! ");
System.err.println("Invalid State in POPConnection.run()");
stopRequested = true;
break;
}
} catch (Exception e) {

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 85
Change
Password
Ðo øn tot nqhIep
e.printStackTrace(System.err);
stopRequested = true;
}
}
// Ñoùng keát noái
close();
server.removeConnection(this);
}
public void setServer(POPServer server) {}
}
2.3.CAØI ÑAËT MAILCLIENT
Caáu truùc cuûa Website
Phaàn MailClient ñöôïc thieát keá döôùi daïng Web duøng Java Server Page neân
ñöôïc goïi laø moät WebMail. Trang Web vaø quaù trình söû duïng mailclient coù theå ñöôïc
hình dung qua sô ñoà vaø ñaëc taû ñöôùi ñaây

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 86
HomePage
Ñaêng Kyù
Thaønh Vieân
Login
Help
Menumail
Inbox AddressBook Option
Add Edit Review
Inf
Change
Password
Hình caáu truùc Website
Ðo øn tot nqhIep
1.Ñaêng nhaäp heä thoáng :
Laàn ñaàu tieân söû duïng CT ñeå göûi nhaän mail, chuùng ta phaûi ñaêng kyù moät
account môùi cho rieâng mình, nghóa laø chuùng ta phaûi coù moät username vaø password
rieâng cho mình nhaèm phaân bieät nhöõng ngöôøi söû duïng email khaùc nhau vaø baûo maät
thö cuûa töøng ngöôøi.
_ Ñaêng nhaäp username vaø password tröôùc khi vaøo heä thoáng .
Neáu laø “member”: baïn coù theå söû duïng CT göûi /nhaän thö .
Neáu laø “guest”: baïn phaûi Ñaêng kyù thaønh vieân
2.Ñaêng kyù thaønh vieân :
Cho laàn ñaàu tieân baïn ñaêng nhaäp vaøo heä thoáng , ghi caùc thoâng tin caù nhaân,
username vaø password cuûa baïn.
3.Caùc loaïi Address Book . Ñieàu chænh thoâng tin trong Personal Address Book :
(User coù quyeàn T, X, S addressbook cuûa mình)
Caùc thoâng tin veà ñòa chæ mail cuûa caùc Client ñöôïc löu tröõ trong caùc soå ñòa chæ.
Moãi ngöôøi söû duïng mail thöôøng coù moät soå ñòa chæ caù nhaân (Personal Address Book -
PAB) cuûa rieâng mình vaø ñöôïc löu tröõ trong oå ñóa cuïc boä .
Caùc thoâng tin caàn thieát khi theâm moät ñòa chæ E-mail vaøo PAB:
_ RealName laø hoï teân ñaày ñuû cuûa ngöôøi coù ñòa chæ mail caàn theâm vaøo PAB
_ E-mail Address ñòa chæ E-mail chính xaùc cuûa ngöôøi caàn theâm vaøo.
Ngoaøi ra, chuùng ta coù theå theâm vaøo nhöõng ñòa chæ email khaùc, soá phone,
mobile vaø ñòa chæ nhaø rieâng
4.Review Account Information:
_ User xem lai thoâng tin caù nhaân ñaõ ñaêng nhaäp vaø AddressBook cuûa mình.
_ Coù theå thay ñoåi Password (changepassword.asp) khi baïn muoán ñaët laïi moät
password môùi cho mình.

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 87
Ðo øn tot nqhIep
5.Thay ñoåi Pass :
_ Old Password: nhaäp laïi pass hieän taïi.
_ New password: nhaäp pass môùi. Baïn coù theå söû duïng caùc kyù töï chöõ, soá vaø caû heä
thoáng chaám caâu, nhöng khoâng theå söû duïng khoaûng traéng.
_ Nhaäp laïi password moät laàn nöõa. Neáu so truøng, vieäc thay ñoåi password xem
nhö thaønh coâng.
6.Kieåm tra thö:
Vuøng noäi dung caùc Folder seõ xuaát hieän tieâu ñeà caùc thö trong folder ñoù. Caùc
thö chöa ñöôïc ñoïc thöôøng ñöôïc trình baøy khaùc vôùi thö ñaõ ñöôïc ñoïc. Thoâng thöôøng
phaàn tieâu ñeàthö goàm caùc noäi dung nhö sau:
_ From: Teân ngöôøi göûi, noäi dung xuaát hieän ôû ñaây khoâng phaûi laø ñòa chæ e-
mail cuûa ngöôøi göûi maø laø hoï teân cuûa ngöôøi göûi.

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 88
INBOX
CheckMail Upload File Compose
Read Reply Delete
DownLoad
Send Error
Ok
Ðo øn tot nqhIep
_ Subject : Chu de cua la thu . Khi gui thu, nguoi gui thuong ghi mot noi
dung ngan vao vung subject de nguoi nhan biet duoc muc dích tong quat cua la thu
truoc khi quyet dinh co doc thu hay khong.
_ Date : Ngay gio nhan thu
_ Size: Kích thuoc la thu (thuong tính bang KB)
7.Ðoc thu :
Tat ca thu cua ban duoc liet ke trong mot bang trong Inbox voi moi hang la
mot thu. Ðe xem noi dung thu can click vao vung tieu de cua thu. Trong vung noi
dung thu, cac thong tin cua nguoi gui se duoc the hien cung noi dung la thu . Cac
thong tin nguoi gui bao gom: ten nguoi gui, thoi diem gui, ten nguoi nhan
Muon doc email nao, click vao cot From tuong ung. Sau khi doc xong, de doc
thu khac, click vao Inbox hay click vao nut Back cua Internet Explorer.
_ Sau khi doc xong thu ,Delete neu muon xoa thu.
_ Reply neu muon tra loi thu
_ Download attach file neu thu co gui file kem theo .
8.Viet email trong WebMail:
Chung ta co hai truong hop:
• Neu ban dang doc mot thu nao do, ban muon tra loi thu dothì click vao
nut Reply phía tren.
• Neu ban muon gui thu truc tiep, click vao nut Compose.
Khi muon gui thu cho mot nguoi da co dia chí trong mot AddressBook, dau
tien phai chuan bi noi dung thu de gui. Phan tieu de cua mot thu can gui bao gom
cac thong tin sau:
_ To : Ðia chí email ma ban muon gui toi.
_ Subject: mot doan text ngan cho biet muc dích cua noi dung thu can gui.
Ðoan text nay giup cho nguoi doc thu quyet dinh co nen xem noi dung cua thu hay
khong.
_ Attachments goi kem tap tin cho nguuoi nhan.
_ Noi dung soan trong comment
_ Sau khi soan thao noi dung thu xong, nhan nut Send de thu duoc cat vao
Outbox. Nghïa la, thu khong duoc truyen di ngay, do do chung ta co the soan thao
nhieu thu truoc khi ket noi voi Mail Server de gui di.
Khi thu da dua vao Outbox, moi chính sua tiep theo thuong lam thu khong gui di
duoc nua. Truong hop nay can phai soan thao mot la thu khac de gui di va xoa bo
la thu cu.
9.Gui kem file theo Mail (attach file)

Sinh vien thuc hien Nguyen Xuan Thanh Trang 89
Ðo øn tot nqhIep
Trong moät soá tröôøng hôïp caàn ñöa theâm toaøn boä noäi dung moät taäp tin ñang coù
saün treân ñóa cuïc boä vaøo thö ñeå göûi ñeán ngöoøi nhaän. Coâng vieäc naøy ñöôïc goïi laø
Attach file vaøo thö.
Caàn chuù yù raèng vieäc attach moät taäp tin vaøo mail caàn phaûi ñöôïc thöïc hieän ñoàng
boä giöõa ngöôøi göûi , ngöôøi nhaän vaø ñöôøng truyeàn thö.Neáu khoâng coù söï ñoàng boä, noäi
dung cuûa taäp tin ñöôïc attach coù ngöôøi nhaän khoâng ñoïc ñöôïc. Lyù do cuûa vieäc naøy laø
do noäi dung cuûa taäp tin ñöôïc attach seõ ñöôïc maõ hoaù theo UUENCODE hay theo
MIME (Multipurpose Internet Mail Extensions).
Thoâng thöôøng ñeå giaûm thôøi gian truyeàn thö, caùc taäp tin caàn attach vaøo thö seõ
ñöôïc neùn tröôùc khi thöïc hieän thao taùc attach. Caùch neùn thoâng duïng laø ZIP.
Caùc taäp tin ñöôïc göûi keøm coù theå löu thaønh moät taäp tin rieâng trong ñiaõ cuïc boä
cuûa ngöôøi söû duïng. Thoâng thöôøng dung löôïng taäp tin göûi keøm khoâng neân quaù 1MB,
neáu lôùn hôn ta caàn taùch ra göûi noù trong nhieàu thö.
10. Download / Upload file
Moät soá giao dieän chính
Trang ñaêng nhaäp cuûa vietmail

Sinh vieân thöïc hieän Nguyeãn Xuaân Thanh Trang 90
Ðo øn tot nqhIep
Menu chính
TAI LIEt THAM NHAO
• Phan tích, thiet ke va cai dat he thong thong tin quan ly
- Hieu dính: GS. Bach Hung Khang
• Co so du lieu quan he - Le Tan Vuong
• System Administrator for Microsoft SQL Serever 7.0 workbook
• Microsoft SQL Server 7.0 Database Implementation Training Kit
• Microsoft SQL Server hoach dinh va xay dung co so du lieu cao cap
• Allaire JRUN Developer Documentation
• Enterprise JavaBeans - Tom Valesky
• Enterprise JavaBeans by Example - Henri Jubin, Jurgen Friendichs
• HTML by Example - Todd Stauffer
• Special Edition Using HTML 4 - Jerry Honeycutt
• Special Edition Using JavaScript - Mark C. Reynolds
• Java by Example - Clayton Walnum
• Lap trình Java the nao? - Hoang Ngoc Giao
• Java lap trình mang - Nguyen Phuong Lan, Hoang Ðuc Hai
• Cac tai lieu ve JSP/EJB tai website: http://java.sun.com

Sinh vien thuc hien Nguyen Xuan Thanh Trang 91