You are on page 1of 91

o n tot nqhIep

Mt C LtC
PHAN 1 : C S LY THUYET................................................................................6
CHNG 1 : GII THIEU CHUNG VE INTERNET VA MOT SO GIAO
THC TRUYEN THONG TREN INTERNET......................................................6
CHNG 1 : GII THIEU CHUNG VE INTERNET VA MOT SO GIAO THC
TRUYEN THONG TREN INTERNET.....................................................................6
1.1. GII THIEU CHUNG VE INTERNET.....................................................6
1.2. HO GIAO THC TCP/IP............................................................................6
1.3. GIAO THC LIEN MANG IP....................................................................8
1.4. GIAO THC IEU KHIEN TRUYEN TCP ...........................................13
CHNG 2 : C S VE LAP TRNH MANG TREN MO HNH
CLIENT/SERVER...............................................................................................14
CHNG 2 : C S VE LAP TRNH MANG TREN MO HNH
CLIENT/SERVER...................................................................................................14
2.1. LAP TRNH GIAO TIEP MANG VI WINDOWS SOCKETS...............14
2.2. MOT SO KHAI NIEM C BAN..............................................................15
2.2.1.a ch Internet...................................................................................15
2.2.2. Khai niem socket va port..................................................................15
2.3. CACH CAI AT NG DUNG CLIENT/SERVER TCP.........................16
.....................................................................................................................16
2.3.1. Cach cai at server TCP...................................................................16
2.3.2. Cach cai at client TCP...................................................................16
CHNG 3 : MOT SO KHAI NIEM LIEN QUAN EN TH IEN T.........18
CHNG 3 : MOT SO KHAI NIEM LIEN QUAN EN TH IEN T.............18
1.1. MAILSERVER .........................................................................................18
1.2. GIAO THC GI MAIL (MAIL TRANSPORT PROTOCOL)................18
1.3.GII THIEU KIEN TRUC DCH VU TH IEN T..............................18
1.3.1. Kin trc v cc dch v......................................................................18
1.3.2. Tc nhn ngi s dng (The User Agent)............................................20
1.3.2.1.Gi th (Sending Email)...............................................................20
1.3.2.2. oc th (Reading Email).............................................................20
1.3.2.3.nh dang thong iep (Message Formats)....................................21
1.3.2.4.Chuan RFC 822............................................................................22
1.4.PHAN TCH CAU TRUC TH IEN T, CAC GIAO THC SMTP VA
POP3................................................................................................................23
1.4.1.Phan tch cau truc th ien t (RFC 822)...........................................24
1.4.1.1. Gii thiu....................................................................................24
1.4.1.2. Mo ta ve cau truc th...................................................................24
1.4.2. nh ngha v cc trng Header...........................................................25

Sinh vien thc hien Nguyen Xuan Thanh Trang 1
o n tot nqhIep
1.4.3. Cc trng header in hnh.................................................................25
1.4.4. V d v cu trc th..............................................................................26
1.5. PHAN TCH GIAO THC SMTP (RFC 821)...........................................27
1.5.1. Gii thiu chung................................................................................27
1.5.2. M hnh hot ng phin giao dch.................................................27
1.5.3. Th tc Mail.....................................................................................29
1.5.4. Th tc Forwarding ...........................................................................31
1.5.5. Cc th tc Mailing v Sending..........................................................32
1.5.6. Cc th tc Opening v Closing..........................................................33
1.5.7. M tr li ca cc cu lnh SMTP........................................................33
1.6. PHAN TCH GIAO THC POP3 (RFC 1081,1082).................................34
1.6.1. Gii thiu..........................................................................................34
1.6.2. M hnh hot ng phin giao dch.................................................34
1.6.3. Trng thi AUTHORIZATION...........................................................35
1.6.4. Trng thi TRANSACTION................................................................37
1.6.5. Trng thi UPDATE............................................................................40
1.6.6. V d v mt phin giao dch POP3..................................................40
1.7. MIME (MULTIPURPOSE INTERNET MAIL EXTENSIONS)...............41
1.8.POP BEFORE SMTP(CHNG THC QUYEN TRUY CAP THEO GIAO
THC POP TRC KHI S DUNG SMTP)..................................................43
1.9.MAIL CLIENT, WEB MAIL.....................................................................43
CHNG 4 : GII THIEU VE CAC CONG NGHE LIEN QUAN....................43
CHNG 4 : GII THIEU VE CAC CONG NGHE LIEN QUAN........................43
2.1.GII THIEU VE JRUN WEBSERVER 3.1...............................................43
2.2.GII THIEU VE SQL SERVER 7.0..........................................................43
2.2.1. Ly thuyet he quan tr c s d lieu sql server 7.0 va Cau truc c s
d lieu cua sql server 7.0.............................................................................45
2.2.2. Cau truc c s d lieu vat ly:............................................................46
2.2.2.1. Trang (page):.............................................................................46
....................................................................................................................46
2.2.2.2 .Extent:........................................................................................46
2.2.2.3 Nhng loai file trong CSDL:SQL Server co 3 loai file:...............47
2.3. LY THUYET MO HNH QUAN HE........................................................47
2. 3.1. Cac khai niem c ban..................................................................47
2.3.2. Khai Niem phu thuoc d lieu va cac dang chuan..........................48
2.3.3 Khai niem ch dan va khoa ch dan ...........................................48
2.4.GII THIEU VE JAVA SERVLET..........................................................48
2.4.1.Khai niem ve JAVA SERVLET.........................................................48
2.4.2.Nhng ng dung thc te cua JAVA SERVLET va kien truc cua JAVA
SERVLET....................................................................................................49
2.5.GII THIEU VE JAVA SERVER PAGES(JSP)........................................49
2.5.1.Khai niem ve JSP...............................................................................49

Sinh vien thc hien Nguyen Xuan Thanh Trang 2
o n tot nqhIep
2.5.2.Quan he gia Servlet va JSP..............................................................49
2.5.2.1.Cach trnh chu bien dch trang JSP thanh servlet.......................49
2.5.2.2. So sanh gia Servlet va JSP......................................................50
2.6. GII THIEU VE JAVABEANS................................................................51
2.6.1.Khai niem ve JAVABEANS..............................................................51
2.6.2.Cac the chuan cua 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.Them JAVABEANS vao JSP.............................................................52
PHAN 2 : XAY DNG NG DUNG......................................................................53
CHNG 1 PHAN TCH BAI TOAN.................................................................53
CHNG 1 PHAN TCH BAI TOAN....................................................................53
1.1.TEN E TAI..............................................................................................53
1.2.DE CNG CHI TIET..............................................................................53
1.2.1.Khao sat.............................................................................................54
1.2.2.Yeu cau cua bai toan..........................................................................54
1.2.3.D lieu vao, d lieu ra va cac chc nang x ly cua he thong............54
1.2.4. Chc nang cua he thong thong tin quan ly........................................55
1.3. LY DO CHON E TAI.............................................................................55
CHNG 2 : THIET KE VA CAI AT NG DUNG........................................55
CHNG 2 : THIET KE VA CAI AT NG DUNG............................................55
2.1.PHAN TCH VA THET KE C S D LIEU..........................................55
2.1.1.Phan tch.............................................................................................55
......................................................................................................................57
........................................................................................................................57
2.1.2. Giai thch cac chc nang cua he thong..............................................57
2.1.3.bieu o luong d lieu( DFD Data flow Diagram)............................57
2.1.4. THIET KE HE THONG....................................................................58
2.1.4.1. Cac bang d lieu chnh...............................................................58
2.2. CAI AT MAILSERVER.........................................................................59
2.2.1.Phng an to chc lu tr mail tren Server........................................59
2.2.2.Cac n the cua mailserver................................................................59
2.2.2.1. Xay dng SMTP Server.............................................................60
2.2.2.2. Xay dng POP3 Server................................................................73
2.3.CAI AT MAILCLIENT...........................................................................86
.................................................................................................................90
Mot so giao dien chnh.................................................................................90

Sinh vien thc hien Nguyen Xuan 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 ||: ii .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 ai ||i| v: a:o
|.|i| |i |.oi: .oi ao ii ii.
hi !o|. ||ii: iia 2..
Nguyen Xuan Thanh

Sinh vien thc hien Nguyen Xuan 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 xa | ||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 vien thc hien Nguyen Xuan 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 hng van he mang tren khap the gii, doc
pht trien vo thap ky bay moi. So long my tnh noi mang v so long ngi truy cap
vo mang Internet tren ton the gii dang ngy cng tang len nhanh chng, dac biet t
nam 1993 tro di. Mang Internet khong chi cho php chuyen tai thong tin nhanh chng
m cn gip cung cap thong tin, n cng l dien dn v l th vien ton cau dau tien.
Mang Internet c xuat x nam 1969 t mang my tnh ton cuc ARPANET do
co quan quan l cc du n nghien cu cc cong trnh nghien cu khoa hoc tien tien
thuoc Bo Quoc phng M (US Defense`s Advance Research Projects Agency - goi tat
l DARPA) ti tro. T gia nam 1970, trung tam DARPA hng ti mang Internet vi
k thuat chuyen mach gi qua mang vo tuyen v thong tin ve tinh. Nam 1980, DARPA
thu nghiem dng giao thc TCP/IP v d doc cc trng dai hoc o M ghp noi vi he
dieu hnh UNIX BSD (Berkely Software Distribution).
He dieu hnh UNIX l he pht trien manh vi rat nhieu cong cu ho tro v dam
bao cc phan mem ng dung c the chuyen qua lai tren cc ho my khc nhau (my
mini, my tnh ln v hien nay l my vi tnh). Ben canh d he dieu hnh UNIX BSD
cn cung cap nhieu thu tuc Internet co ban, da ra khi niem Socket v cho php chong
trnh ng dung tham nhap vo Internet mot cch de dng.
Cau trc 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 cc moi trng truyen tin khc nhau.

1.2. HO GIAO THUC TCP/IP
TCP/IP l ho cua cc giao thc doc su dung cho viec truyen thong my tnh. Cc
ch ci doc viet tat boi cc t (Transmission Control Protocol/Internet Protocol), hai

Sinh vien thuc hien Nguyen Xuan Thanh 6/3Q


o n tot nqhIep
giao thc ny c cch biu din khc nhau, ngi ta t khi s dng vi ci tn y ca
hai giao thc ny. Thng cc giao thc c nhm li thnh cc h (i khi cn c gi
l cc suites hay cc stacks). Cc giao thc no c nhm li vi nhau thng c xc
nh bi cc b ci t ca giao thc.
H giao thc TCP/IP bao gm cc giao thc 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 mt s cc giao thc khc. Hnh bn di m t kin trc ca mng TCP/IP
c so snh vi m hnh tham chiu OSI chng ta hnh dung c s tng ng v chc
nng ca cc tng.

Sinh vien thc hien Nguyen Xuan Thanh Trang 7
0 3 4 7 8 15 16 31
o n tot nqhIep
TCP/IP thuc chat l mot ho giao thc cng lm viec vi nhau de cung cap phong
tien truyen thong lien mang. Trong phan ny chng ta s xem xt giao thc IP, giao
thc TCP v mot so ng dung o tang tren nh Telnet, FTP, DNS, SMTP. . .
1.3. GIAO THUC LIEN MANG IP
Muc dch chnh cua IP l cung cap kha nang ket noi cc mang con thnh lien
mang de truyen d lieu. Vai tr cua IP tong tu vai tr cua giao thc tang mang trong
mo hnh OSI.
IP l mot giao thc kieu khong lien ket (connectionless) c nghia l khong
can c giai doan thiet lap lien ket trc khi truyen d lieu. on vi d lieu dng trong IP
doc goi l datagram, c khuon dang chi ra trong hnh ben di.
nghia cua cc tham so nh sau:
VER (4 bits): chi version hien hnh cua IP doc ci dat
IHL (4 bits): chi do di phan dau (Internet Header Length) cua datagram,
tnh theo don vi t (word = 32 bits). o di 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 snh cc kien trc 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 cc 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 bnh thng
D = 1 do tre thap
T (Throughput) (1 bit): chi thong long yeu cau
T = 0 thong long bnh thng
T = 1 thong long cao
R (Reliability) (1 bit): chi do tin cay yeu cau
R = 0 do tin cay bnh thng
R = 1 do tin cay cao
Total Length (16 bits): chi do di ton bo datagram, ke ca phan header
(tnh theo don vi bytes).
Indentification (16 bits): cng vi cc tham so khc (nh Source Address
v Destination Address) tham so ny dng de dinh danh duy nhat cho mot
datagram trong khoang thi gian n van cn tren lien mang.
Flags (3 bits): lien quan den su phan doan (fragment) cc 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, tnh theo don vi 64 bits, c nghia l moi doan (tr doan cuoi cng)
phai cha mot vng d lieu c do di l boi so cua 64 bits.
Time to live (8 bits): qui dinh thi gian ton tai (tnh bang giay) cua datagram
trong lien mang de trnh tnh trang mot datagram bi quan tren lien mang. Thi
gian ny doc cho boi tram gui v doc giam di (thng qui c l 1 don vi) khi
datagram di qua moi router cua lien mang.
Protocol (8 bits): chi giao thc tang tren ke tiep s nhan vng d lieu o
tram dch (hien tai thng l TCP hoac UDP doc ci dat tren IP).
Header Checksum (16 bits): m kiem sot loi 16 bits theo phong php
CRC, chi cho vng header.
Source Address (32 bits): dia chi cua tram nguon.
Destination Address (32 bits): dia chi cua tram dch.
Options (do di thay doi): khai bo cc options do ngi gui yeu cau.
Padding (do di thay doi): vng dem, doc dng de dam bao cho phan
header luon ket thc o mot moc 32 bits.
Data (do di thay doi): vng d lieu, c do di l boi so cua 8 bits, v toi
da l 65535 bytes.
So do dia chi ho de dinh danh cc tram (host) trong lien mang doc goi l dia
chi /P 32 bits (32- bit- IP address). Moi dia chi IP c do di 32 bits doc tch thnh 4
vng (moi vng 1 byte), c the doc bieu thi di dang thap phan, bt phan, thap luc phan
hoac nhi phan. Cch viet pho bien nhat l dng k php thap phan c dau cham (dotted
decimal notation) de tch cc vng. Muc dch cua dia chi IP l de dinh danh duy nhat
cho mot host bat ky tren lien mang. Do to chc v do ln cua cc mang con (subnet)
cua lien mang c the khc nhau, ngi ta chia cc dia chi IP thnh 5 lp, k hieu l A,
B, C, D v E, vi cau trc doc chi ra trong hnh ben di.
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 Lp A
Lp B
Lp C
Lp D
Lp E
0
0
31
31
(Lp A)
(Lp B)
(Lp C)
o n tot nqhIep
1 1 1 0 Multicast address
1 1 1 1 0 Reserved for future use
Cau trc cua cc lop dia ch IP
Lp A cho php dinh danh ti 126 mang, vi toi da 16 trieu host tren moi
mang. Lp ny doc dng cho cc mang c so tram cuc ln.
Lp B cho php dinh danh ti 16384 mang, vi toi da 65534 host tren
moi mang.
Lp C cho php dinh danh ti 2 trieu mang, vi toi da 254 host tren moi
mang. Lp ny doc dng cho cc mang c t tram.
Lp D dng de gui IP datagram ti mot nhm cc host tren mot mang.
Lp E du phng de dng 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 dng de hng ti mang dinh
danh boi vng netid (network identifier). Ngoc lai, mot dia chi c vng hostid gom
ton so 1 doc dng de hng ti tat ca cc host noi vo mang netid, v neu vng netid
cng gom ton so 1 th n hng ti tat ca cc host trong lien mang.
Trong nhieu trng hop, mot mang c the doc chia thnh nhieu mang con
(subnet), lc d c the da them cc vng subnetid de dinh danh cc mang con. Vng
subnet doc lay t hostid, cu the doi vi 3 lp A, B, C nh sau (hnh ben di).
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 (Lp A)
netid = 10
= 128.3.2.3 (Lp B)
netid = 128.3
hostid = 2.3
= 192.0.1.255 (Lp C)
netid = 192.0.1
hostid = 255 hung den tat ca cc host
o n tot nqhIep
etid id
Bo sung vng subnetid
Can lu rang cc dia chi IP doc dng de dinh danh cc host v mang o tang
mang cua Mo hnh OSI, v chng khong phai l cc dia chi vat l (hay dia chi MAC -
Media Access Control) cua cc tram d tren mot mang cuc bo (Ethernet,Token
Ring...). Tren mot mang cuc bo nh vay, hai tram chi c the lien lac vi nhau neu chng
biet dia chi vat l cua nhau. Nh vay, van de dat ra l phai thuc hien nh xa gia dia chi
IP (32 bits) v dia chi vat l (48 bits) cua mot tram. Giao thc 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 thc RARP (Reverse Address Resolution Protocol) doc
dng 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 dng den chng khi can.
Mot giao thc khc cng lien quan truc tiep den IP, d l ICMP (Internet Control
Message Protocol). Giao thc ny thuc hien truyen cc thong bo dieu khien (bo co
ve cc tnh trang loi tren mang,...) gia cc gateway hoac tram cua lien mang. Tnh
trang loi c the l: mot datagram khong the ti doc dch cua n, hoac mot router khong
du bo nh dem de lu v chuyen mot datagram,... Mot thong bo ICMP doc tao v
chuyen cho IP. IP s boc (encapsulate) thong bo d vi mot IP header v truyen den
cho router hoac tram dch.
Chng ta c the tm tat cc bc 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 cc bc sau day:
1. Tao mot IP datagram dua tren cc tham so cua primitive SEND
2. Tnh checksum v ghp vo header cua datagram.
3. Ra quyet dinh chon dng: hoac l tram dch nam tren cng mang hoac mot
gateway s doc chon cho chang tiep theo.
4. Chuyen datagram xuong tang di de truyen qua mang.
Doi voi gateway, khi nhan doc mot datagram qu canh, n thuc hien cc
dong tc sau:
1. Tnh checksum, neu bat cap th loai bo datagram.
2. Giam gi tri cua tham so Time-to-Live. Neu thi gian d het th loai bo
datagram.
3. Ra quyet dinh chon dng.
4. Phan doan datagram, neu can.
5. Kien tao lai IP header, bao gom gi tri mi cua cc vng Time-to-Live,
Fragmentation v Checksum.
6. Chuyen datagram xuong tang di de truyen qua mang.
Cuoi cng, khi mot datagram doc nhan boi thuc the /P o tram dich, n s
thuc hien cc cong viec sau:
1. Tnh checksum. Neu bat cap th loai bo datagram.

Sinh vien thuc hien Nguyen Xuan Thanh 6/3Q


o n tot nqhIep
2. Tap hop cc doan cua datagram (neu c phan doan).
3. Chuyen d lieu v cc tham so dieu khien len tang tren bang cch dng
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 thc kieu c lien ket (connection - oriented), nghia l can phai
thiet lap lien ket (logic) gia mot cap thuc the TCP trc khi chng trao doi d lieu vi
nhau.
on vi d lieu su dung trong TCP doc goi l (doan d lieu), c khuon
dang mo ta trong hnh ben di.
Cc 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 dch.
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 ny
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 bo nhan tot (cc) segment m tram
dch d gui cho tram nguon - Tham so ny 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 ny chi ra vi tr bat dau cua vng d lieu).

Sinh vien thuc hien Nguyen Xuan Thanh Trang 13
bit 0 15 16 31
o n tot nqhIep
Reserved (6 bits): dnh de dng trong tong lai.
Control bits (cc bit dieu khien):
T tri sang phai:
URG: vng con tro khan (Urgent Pointer) c hieu luc
ACK: vng bo nhan (ACK number) c hieu luc
PSH: chc nang PUSH
RST: khoi dong lai (reset) lien ket
SYN: dong bo ho cc so hieu tuan tu (sequence number)
FIN: khong cn d lieu t tram nguon
Window (16 bits): cap pht credit de kiem sot luong d lieu (co che cua
so). ay chnh l so long cc byte d lieu, bat dau t byte doc chi ra trong
vng ACK number, m tram nguon d san sng de nhan.
Checksum (16 bits): m kiem sot loi (theo phong php CRC) cho ton
bo segment (header + data).
Urgent Pointer (16 bits): con tro ny tro ti so hieu tuan tu cua byte di
theo sau d lieu khan, cho php ben nhan biet doc do di cua d lieu khan.
Vng ny chi c hieu luc khi bit URG doc thiet lap.
Options (do di thay doi): khai bo cc Options cua TCP, trong d c do
di toi da cua vng TCP data trong mot segment.
Padding (do di thay doi): Phan chn them vo header de bao dam phan
header luon ket thc o mot moc 32 bits. Phan them ny gom ton so 0.
TCP data (do di thay doi): cha d lieu cua tang tren, c do di toi da
ngam dinh l 536 bytes. Gi tri ny c the dieu chinh bang cch khai bo
trong vng options.
Mot tien trnh ng dung trong mot host truy nhap vo cc dich vu cua TCP cung
cap thong qua mot cong (port). Mot cong ket hop vi mot dia chi IP tao thnh mot
socket duy nhat trong lien mang. Dich vu TCP doc cung cap nh mot lien ket logic
gia mot cap socket. Mot socket c the tham gia nhieu lien ket vi cc socket o xa
khc nhau. Trc khi truyen d lieu gia hai tram can phai thiet lap mot lien ket TCP
gia chng v khi khong cn nhu cau truyen d lieu th lien ket d s doc giai phng.
Cng giong nh o cc giao thc khc, cc thuc the o tang tren su dung TCP thong qua
cc hm dich vu nguyen thuy (service primitives), hay cn goi l cc li goi hm
(function calls).
CHtONG 2 t CO SO E LAP THNH MA NG THEN
MO HNH CLIENT/SEHEH
2.1. LAP TRNH 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 hnh manh, cho php tan dung toi da kha nang cua
my tnh loai 32 bit, cung ng hng loat cc dich vu mang tren moi trng Intranet v
Internet. Hien nay Windows NT doc su dung tong doi pho bien o cc co quan: doanh
nghiep Viet Nam.
Giao thc truyen thong TCP/IP d doc dng boi he dieu hnh UNIX v mang
Internet, de cc my tren mang NT c the giao tiep vi cc my tren mang khc,
Windows NT cng cung cap giao thc ny. Ngoi mot so lenh dng giao thc TCP/IP
d doc viet san nh: ftp, telnet, finger..., Windows NT cho php ngi lap trnh pht trien
cc ng dung khai thc k thuat TCP/IP thong qua mot th vien ten l Windows
Sockets.
C ba l do chnh de ngi lap trnh su dung k thuat TCP/IP:
C the viet cc ng dung tren Windows NT de noi vo mang UNIX v khai thc cc
dich vu c san tren d.
Tao ra cc dich vu tren my Windows NT de cc my UNIX c the khai thc nhng
dich vu ny.
Viet cc chong trnh cho php cc my 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 my deu c mot ten v mot dia chi IP (cng
goi l dia chi Internet). V du nh, mot my NT c ten l ntsvr.csc.hcmu.vn v dia chi l
192.48.94.200. Ten hay dia chi IP deu xc dinh duy nhat mot my trong he thong
mang Internet. Khi lap trnh, chng ta c cc hm 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, chng ta c
the doc hay ghi len n, tuy nhien moi socket l mot thnh phan trong mot moi noi no
d gia cc my tren mang my tnh v cc thao tc doc/ghi chnh l su trao doi d
lieu gia cc ng dung tren nhieu my khc nhau.
Trong giao thc truyen thong TCP, moi moi noi gia hai my tnh doc xc dinh
boi mot port, khi niem port o day khong phai l mot cong giao tiep tren thiet bi vat l
m chi l mot khi niem logic trong cch nhn cua ngi lap trnh, moi port doc tong
ng vi mot so nguyen dong.
Hnh ben di minh hoa cch giao tiep gia hai my tnh trong giao thc truyen
thong TCP. My A tao ra mot socket v ket buoc (bind) socket ny vi port X (tc l
mot so nguyen dong c nghia cuc bo trong my A), trong khi d my B tao mot
socket khc v mc vo (connect) port X trong my A.

Sinh vien thuc hien Nguyen Xuan Thanh 6/3Q-


o n tot nqhIep
2.3. CACH CAI AT NG DUNG CLIENT/SERVER TCP
2.3.1 . Cach cai at server TCP
ng dng server lm vic theo qui trnh sau y:
1. Gi hm socket to mt socket.
2. Gi hm bind kt buc socket vi mt port, i vi mi giao thc ng chun th
s c mt hng s c nh ngha sn trong Winsock cho port ca giao thc .
3. Gi hm listen ch n khi c mt client ni vo port.
4. Khi c mt client ni vo th hm listen tr iu khin v, ng dng server gi hm
accept xc nhn mi ni ca client.
5. Gi cc hm gi hay nhn d liu trao i thng tin vi client, v d nh hm
send, recv.
Sau khi hon tt qu trnh trao i d liu, ng dng server gi hm closesocket
ng socket to.
2.3.2. Cach cai at client TCP
ng dng client thc hin cc bc sau:
1. Gi hm socket to mt socket.
2. Gi hm connect ni vo server.
3. Gi cc hm gi hay nhn d liu trao i thng tin vi server, v d nh cc
hm send, recv.
4. Sau khi hon tt qu trnh trao i d liu, ng dng client gi hm
closesocket ng socket to.
Hnh minh ha cc bc cn thit cc ng dng client v server giao tip vi
nhau nh sau:

Sinh vien thc hien Nguyen Xuan Thanh Trang 16
socket socket
My A
My A
My B
My B
Port H thng mng
Cc socket v port trong mi ni TCP
Mi ni
ng dng Server ng dng Client
Ni vo port ca
server
To mt socket
Kt buc socket
vi mt port (bind)
t socket trng
thi ch client ni
vo
Chp nhn kt ni
ca client
Chuyn i d liu gia client v server
To mt socket
Cc bc giao tip gia client v server trong giao thc TCP
o n tot nqhIep

Sinh vien thc hien Nguyen Xuan 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 hnh hoat ong khach chu, trnh chu la mot dch vu ong vai tro
ngi chu phuc vu trnh khach. Mail Server that ra la mot trnh m socket lang
nghe cac yeu cau (hay lenh gi mail) t trnh khach a en. Nh a noi, mail
server se tiep nhan noi dung mail, phan phoi mail en cac trnh chu khac, cho phep
trnh khach truy cap vao may chu e nhan mail ve, bao ve mailChnh v vay,
trc khi nhan hay gi mail can phai biet c a ch IP cua may chu mail server.
a ch nay thng c goi la mail host. Ve khai niem socket va a ch IP se
c trnh bay phan sau.
1.2. GIAO THC GI MAIL (MAIL TRANSPORT PROTOCOL)
e gi mail en may chu, trnh khach phai s dung mot giao thc tro chuyen
vi mail server. Tng t trnh duyet dung giao thc HTTP e tro chuyen vi trnh
chu Web server. Cac trnh khach muon bat tay vi trnh chu mail server va gi mail
len may chu se s dung giao thc SMTP (Simple Mail Transport Protocol). SMTP
c hau het cac mail server tren the gi s dung. a ch IP cua may chu nhan
mail gi i thng c goi la outgoing mail address. Trnh chu thc hien chc
nang tiep nhan mail theo giao thc SMTP goi la SMTP Server, trnh khach dung
giao thc SMTP e gi mail en trnh chu mail server goi la SMTP Client.
1.3.GII THIEU KIEN TRUC DCH VU TH IEN T
1.3.1. Kin trc v cc dch v
Cc h thng th in t thng bao gm hai h thng con: cc tc nhn ngi s
dng (the user agents - gi tt l UA), n cho php chng ta c v gi th, v cc tc
nhn truyn thng ip (the message transfer agents - gi tt l MTA), n lm nhim
v chuyn cc thng ip t ngun n ch. Cc UAs l cc chng trnh cc b h tr
da trn iu khin bng lnh, trnh n menu hay dng phng php ho tng

Sinh vien thc hien Nguyen Xuan 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
tc vi he thong th dien tu. Cc MTAs l cc trnh tien ch hoat dong o che do nen
(background) thuc hien cc nhiem vu can thiet nh tiep nhan th dien tu v chuyn th qua
cc he thong.
ac biet, cc he thong th dien tu ho tro nam chc nang co ban, doc mo ta di day:
1. Composition: Xu l viec tao cc thong diep v tra li. Cho php bat c trnh
soan thao no c the doc su dung cho phan than cua thong diep, cc he
thong c the tu n dam trch viec dnh dia chi v chi so cc trng tieu de
(header fields) doc km theo cng vi moi thong diep. V du nh, khi tra li
mot thong diep , he thong th dien tu c the tch dia chi cua ngi gui t cc
th doc gui den v tu dong chn n vo cc trng thch hop trong phan hoi am
(reply).
2. Transfer: Lm nhiem vu chuyen cc thong diep t ngi gui den noi ngi
nhan. Trong phan ny, viec chuyen cc thong diep yeu cau phai thiet lap mot
ket noi den dch (ngi nhan) hay mot so thao tc cua thiet bi nh xuat thong
diep v ket thc viec ket noi. He thong th dien tu lm viec ny mot cch tu
dong m khong can c mot su can thiep no cua ngi su dung.
3. Reporting: Buoc phai thuc hien de bo cho ngi gui nhng g xay ra doi vi
thong diep va gui l o tnh huan d gui den dch cha? hoac viec gui d bi
huy bo? hoac th d bi lac?.
4. Displaying: Nhng thong diep gui den doc yeu cau lm sao de moi ngi c
the doc doc th cua ho. oi khi ngi ta yeu cau qu trnh chuyen doi hay mot
trnh hien thi dac biet de ho tro, v du nh, neu thong diep c dang mot tep
PostScript hay tieng ni doc so ha km theo trong thong diep gui den.
5. Disposition: L bc cuoi cng lien quan den nhng g ngi nhan thuc hien
doi vi thong diep sau khi d nhan n. Nhng kha nang c the l nm n di
trc khi doc, nm n di sau khi doc, lu n, v ..v. N cng s c the thu nhan
de doc lai vi cc thong diep d doc lu lai, chuyen tiep chng hoac xu l
chng bang nhng phong php khc nhau khi doc yeu cau cua ngi su dung.
Them vo d cc dich vu ny, hau het cc he thong th dien tu cung cap nhieu
dac tnh nang cao khc nhau. Mot so dac tnh tieu bieu nh, khi ngi ta muon chuyen th
hay khi ho nghi xa hon ve cc chi tiet ve thi gian , c l ho muon th cua ho doc
chuyen tiep, chnh v the m he thong thuc hien dieu ny mot cch tu dong.
Hau het cc he thong cho php ngi su dung tao cc hop th (mailboxes) de lu
tr cc th chuyen den (incoming email). Cc lenh doc ngi ta yeu cau tao v huy bo
cc hop th, kiem tra cc noi dung hop th, chn v xa cc thong diep khoi hop th, v..v.
Nhng ngi gim doc cong ty thng can gui mot thong diep den moi ngi trong
so nhng ngi cap di, nhng khch hng, hay den cc nh cung cap. Th dieu ny da
ra mot tong ve danh sach th (mailing list), n l mot danh sch cc dia chi th dien tu.
Khi mot thong diep doc gui den mailing list, cc ban sao giong het doc pht den moi
ngi c dia chi tren danh sch.
Mot tong quan trong khc l th dien tu doc dang k, de cho php ngi gui
(sender or originator) biet th cua ho d den. Viec thong bo tu dong cua cc th khong
doc pht di mot cch luan phien de ngi ta c the biet. Trong bat ky trng hop no, ng-
i gui nen c mot so dieu khien thong qua thong bo nhng 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
Cc c tnh nng cao khc l ng gi (carbon copies), th c mc u tin cao
(high-priority email), bo mt th (secret email) c ngha l thng ip c m ha trc
khi gi i, thay i ngi nhn th (alternative recipients) nu ngi u tin khng c kh
nng nhn c, v cc kh nng cho cc c th k vn dng th ca cc ng ch ca
mnh.
Hin nay th in t c s dng rng ri trong vic kinh doanh cho vic truyn
thng tin trong cng ty. N cho php cc cng nhn xa hp tc v cc d n phc tp,
ngay c nhng ni phi mt nhiu thi gian mi n c. Mt s cng ty nh gi
rng th in t lm tng nng sut sn xut ca h ln 30 phn trm (Perry and
Adam 1992).
Mt khi nim quan trng trong tt c cc h thng th in t hin i l s phn
bit gia phong b (envelope) v cc ni dung bn trong ca n. Phong b bao bc
(encapsulate) c thng ip. N cha tt c cc thng tin cn thit cho vic truyn ti
thng ip, nh l a ch ch, u tin, v mc bo mt , tt c nhng ci u
khc bit vi thng ip bn trong n. Cc MTAs s dng phong b cho vic nh tuyn
ng truyn, iu ny cng ging nh cng vic ca bu in lm.
Thng ip bn trong phong b cha hai phn: phn u th (header) v phn
thn th (body). Phn header cha cc thng tin iu khin cho cc UAs. Phn thn l
phn hon ton dnh cho ngi nhn th. Cc phong b v cc thng ip c m t trong
hnh bn di.
1.3.2. Tc nhn ng i s dng (The User Agent)
Cc h thng th in t c hai phn c bn, nh chng ta thy gm: phn UA v
phn MTA. Trong phn ny chng ta s xt n phn UA. Mt UA thng l mt chng
trnh (i khi c gi l b phn c th) n nhn mt trong nhng lnh khc nhau nh l
cho mc ch son th, nhn th, v hi p cc thng ip, cng nh vic thao tc trn
cc hp th (mailboxes). Mt s UA (User Agent) c giao din trnh n (menu) hay
biu tng (icon) kh hp dn m n yu cu s dng chut hoc chp nhn cc lnh 1
k t t bn phm c cng chc nng vi menu v cc icon.
1.3.2.1.Gi th (Sending Email)
gi i mt thng ip, ngi s dng phi cung cp thng ip, a ch ch v
mt s tham s khc nu c (v d nh l mc u tin hay bo mt). Ngi s dng c th
to thng ip vi mt trnh son tho vn bn khc nhau, mt chng trnh s l t hay
vi b son tho c xy dng trn UA. a ch ch phi c mt nh dng m lm
sao cho UA c th hiu c. Nhiu UA tip nhn cc a ch DNS (Domain Name
System) c dng mailbox@location.
1.3.2.2. oc th (Reading Email)
Khi UA c khi ng n kim tra xem trong hp th ca ngi s dng c th gi
n khng trc khi hin th cc th khc ln mn hnh. Khi c l n s thng bo
mt s cc thng ip trong hp th hay hin th mt dng vn tt ca mi thng ip
v ch nhn lnh x l. Mt v d hnh bn di cho thy mt vin cnh sau khi
UA khi ng hin th nhng yu cu vn tt ca cc thng ip. Trong v d ny hp
th (mailbox) gm c tm thng ip.

Sinh vien thc hien Nguyen Xuan Thanh Trang 20
o n tot nqhIep
Mi dng hin th cha mt s trng c trch ra t phong th hay phn u
(header) ca tng thng ip c nh v trong hp th. Trong mt h thng th in t
n gin, s la chn ca cc trng hin th c ngi ta xy dng thnh mt chng
trnh. Trong cc h thng phc tp hn, ngi s dng c th xc nh cho cc trng no
c hin th bng cch cung cp mt hin trng ngi s dng (User Profile), hay mt
tp m t nh dng hin th. Trong v d ny, trng u tin l s thng ip c trong
hp th. Trng th hai, l cc c c th cha mt k t K, c ngha l thng ip c -
c c k trc ri v c lu li trong hp th; k t A c ngha l th ny c hi m
ri; k t F (c th c), c ngha l th ny c chuyn tip n ngi khc. Cc c khc
na cng c th c a vo ngoi nhng c ny.
# 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 students visit
Hin th cc ni dung ca hp th.
Trng th ba cho bit chiu di ca thng ip v trng th t cho bit ai l ngi
gi thng ip. V trng ny c trch ra t cc thng ip rt n gin nn trng ny
c th cha cc tn, h tn y , cc tn vit tt, cc tn ng nhp, hay bt c th g
m ngi gi c th t vo trong trng ny. Cui cng l trng ch th (Subject) cho
bit mt cu vn tt v nhng g trong ni dung thng ip. Nhng ngi no qun in
vo trng ny th thng c cho l nhng cu tr li cho th ca h l khng ch n
mc u tin cao nht.
Sau khi cc phn u c hin th, ngi s dng c th thc hin bt c lnh
no c th. Mt chn la tiu biu c lit k bng bn di (hnh bn di) l mt v
d khi mt ngi s dng bng h thng Mmdf ca h iu hnh UNIX. C mt s lnh
yu cu c tham s. K hiu # c ngha l ch s ca mt thng ip (hay c th c
nhiu thng ip) c chp nhn. Tng t, mu t a c th c s dng c ngha cho
tt c cc thng ip.
1.3.2.3.nh dang thong iep (Message Formats)
Chng ta by gi hy quay n t giao din ngi s dng n nh dng ca cc
thng ip th in t. Trc tin chng ta xt th in t da trn bn m ASCII s dng
chun RFC 822 (Request for Comments). Sau xt n cc m rng a phng tin
cho chun RFC 822.

Sinh vien thc hien Nguyen Xuan Thanh Trang 21
o n tot nqhIep
1.3.2.4.Chuan RFC 822
Cc thng ip bao gm mt phong b gc (c m t trong chun RFC 821),
mt s cc trng cho phn u (header), mt dng trng v sau l phn thn
(body). Mi trng header bao gm cc dng vn bn ASCII cha tn trng, du hai
chm, v cho hu ht cc trng u c mt gi tr. RFC 822 l mt chun c v gia
cc trng header ca phong b (envelope) khng phn bit r rng nh mt chun mi
khc. Khi s dng, thng thng UA xy dng mt thng ip v a n qua b phn tc
nhn truyn thng ip (message transfer agents - MTA), y n dng mt s cc tr-
ng header xy dng mt envelope thc s, thng ip c thay i bi ci c i
mt cht cng vi 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
Cc lnh iu khin th c bit
Cc trng header ch yu lin quan n vic chuyn giao thng ip c lit k
di bng sau. Trng To: trng ny cho bit a ch DNS ca ngi nhn u tin. Trng
hp nhiu ngi nhn cng c th cho php. Trng Cc: cho bit a ch ca nhng ngi
nhn k tip (cn gi l a ch ng gi). Trong cc thut ng ca vic pht th, khng
c s phn bit gia nhng ngi nhn th nht v ngi nhn th hai. Thut ng Cc
(Carbon copy) l mt mu c xc nh, v my tnh khng s dng cc trang giy
bn sao. Trng Bcc: (Blind carbon copy) ging nh trng Cc: ch tr l dng ny c
xa khi tt c cc bn sao c gi n nhng ngi nhn u tin v ngi nhn th hai.
c tnh ny cho php ngi ta gi cc bn sao n nhng ngi trong nhm th ba m
trong khng c ngi th nht v ngi th hai bit.
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 vien thc hien Nguyen Xuan 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
Cc trng header RFC 822 lin quan trong vic truyn thng ip
Hai trng k tip, From: v Sender: cho bit phn bit ngi vit v ngi gi
thng ip. Hai trng ny hon ton khng ging nhau. V d mt nh qun tr doanh
nghip c th vit mt thng ip nhng c th k l ngi tht s truyn n i. Trong tr-
ng hp ny, ngi qun tr phi c lit k vo trong trng 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
Mt s trng c s dng trong header thng ip RFC 822.
Trng From: yu cu phi c cn trng Sender: c th c b qua nu vic vit
v gi cng mt ngi. Cc trng ny cn thit khi trong trng hp thng ip khng -
c pht i v phi c tr li cho ngi gi.
Dng cha trng Received: c a vo bi cc MTAs dc theo ng truyn.
Dng ny cha nh danh ca agent, ngy thng v thi gian thng ip c nhn, v
cc thng tin khc c th c s dng cho vic tm kim cc li trong h thng nh
tuyn.
Trng Return-Path: c a vo bi MTAs cui cng v c dng cho vic gi
tr li ngi gi. Theo l thuyt, thng tin ny c th c tp hp li t cc header
Received: (loi tr tn ca hp th ngi gi), nhng n t khi c in y nh th v
ch c bit cha a ch ca ngi gi.
Thm vo cc trng ca hnh bn di cc thng ip RFC 822 cng c th cha
mt trong s cc trng khc c s dng bi cc UA hay nhng ngi nhn th. Nhng
trng thng thng nht c lit k trong hnh bn di. Hu ht nhng trng ny c tnh
cch gii thch, v th chng ta khng i su vo tng chi tit.
1.4.PHAN TCH CAU TRUC TH IEN T, CAC GIAO THC SMTP
VA POP3

Sinh vien thc hien Nguyen Xuan Thanh Trang 23
o n tot nqhIep
1.4.1.Phan tch cau truc th ien t (RFC 822)
1.4.1.1. Gii thiu
c th chuyn giao th gia cc my tnh trn mng, th cn phi c cu trc
theo mt chun no . Thng thng, mt bc th c cu to bi hai phn l phong b
(envelope) v ni dung (body). Khi nim ny hon ton ging nh trong h thng bu
chnh thng thng.
Trong khi phn phong b cha ng nhng thng tin cn thit c th thit lp
cc lin kt truyn thng v phn pht th i, th phn ni dung li cha ng nhng
thng tin v ngi gi, ngy gi,...
Th thng bao gm nhiu dng vn bn. N khng cung cp nhng tnh nng
ring bit nh: m ho cc hnh v, cc bn sao, ting ni hoc nhng vn bn c cu
trc. Hn na, n cng khng c s quan tm c bit i vi vic nn d liu, vic
truyn thng hoc vic lu tr c hiu qu.
Cu trc th bao gm mt s trng thng tin tun theo cc c php nghim ngt.
V d nh gia phn tiu th (header) v phn ni dung th (content) phi c mt dng
trng ngn cch,...
1.4.1.2. Mo ta ve cau truc th
Mt bc th bao gm cc trng header v phn body. Phn body l cc dng vn
bn k t theo bng m ASCII. N c phn cch vi phn header bi mt dng trng.
1.4.1.2.1. Cc trng header di
Mi trng header c th c xem nh mt dng vn bn cc k t theo bng m
ASCII, cu thnh bi tn trng (field-name) v ni dung ca trng (field-body).
thun tin cho vic so snh, phn field-body c th c chia ra lm nhiu
dng. Qu trnh chia ny c gi l folding. V d:
To: "Joe & J. Harvey" <ddd @Org>, JJV @ BBN
c th c thay th bng:
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 trnh thc hin ngc li kt hp nhiu dng header c folding nh trn
c gi l: unfolding. Unfolding c thc hin bng cch b cp k t CRLF v thay
bng mt du cch trng.
1.4.1.2.2. Cc trng header c cu trc
Mi trng c cu trc bao gm mt field-name, tip theo l du hai chm (:),
sau field-body v cui cng l cp k t CRLF.

Sinh vien thc hien Nguyen Xuan Thanh Trang 24
o n tot nqhIep
<field-name> : <field-body> <CRLF>
Phn field-name l cc k t in c trong bng m ASCII (c m t 33 n 126,
cc k t s, ngoi tr du hai chm).
Phn field-body c th cha bt k k t ASCII no, ngoi tr cp k t CRLF.
Cc trng thng tin header thc t c th c so snh bi cc mt vi h thng th
tn. Cc trng ny c gi l trng c cu trc. V d nh cc trng cha ng thng tin
v Date, Address,.v.v. Mt s trng khc nh Subject v Comments ch c coi nh
mt dng vn bn bnh thng.
Ch , bt k trng no m phn field-body c nh ngha khc i khng phi l
mt dng vn bn n thun th c gi l trng c cu trc.
1.4.1.2.3. Cc trng header khng c cu trc
Mt s trng nh Subject v Comments khng c coi l cc trng c cu trc
v chng c xem nh mt dng vn bn n thun cng nh ni dung th trong phn
body.
1.4.2. nh ngha v cc tr ng Header
Cc lut ng ngha y c trnh by theo s so snh mc cao. N khng dnh
ring cho trng no. Mc ch ca n l tr gip vic so snh v phn tch thng tin
cc trng.
Cu trc chung c dng:
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. Cc tr ng header in hnh
a. Trng RETURN-PATH
<Return> = Return-Path : route-addr
Trng thng tin ny c h thng truyn ti th tn cui cng (l h thng cui
cng pht th cho ngi nhn ca n) thm vo phn header ca th. N c dng cha
ng nhng thng tin v a ch tr v (return-address) ca ngi gi ban u.
b. Trng RECEIVED
<Received> = Received-From : domain
Mt bn sao ca trng thng tin ny s c thm vo bi mi mt h thng
truyn ti thng ip m th c chuyn qua. Thng tin trng ny rt hu ch trong tr-
ng hp xy ra li trong truyn thng.
Trng thng tin ny dng xc nh tn ca my ch gi (sending host), my
ch nhn v thi gian nhn c.
c. Trng FORWARD
<Forward> = Forward-Path : route-addr

Sinh vien thc hien Nguyen Xuan Thanh Trang 25
o n tot nqhIep
Trng thng tin ny c h thng truyn ti th tn cui cng (l h thng cui
cng pht th cho ngi nhn ca n) thm vo phn header ca th. N c dng cha
ng nhng thng tin v a ch ca ngi nhn th.
d. Trng FROM
<From> = From : mailbox
Trng thng tin ny cha ng thng tin v ngi gi th (sender). Qu trnh gi th
cn ngm nh trng ny l n. N xc minh a ch my tnh, xc nhn bn gi l
mt ngi, h thng hay mt tin trnh. Nu cng vic ny khng c thc hin th phi
thay th bng trng Sender
e. Trng DATE
<Dates> = Date : date-time
Trng ny cha ng thng tin v ngy, gi gi th.
f. Trng TO
<To> = To : mailbox
Trng ny cha ng thng tin v ngi nhn th (recipient) chnh thc.
g. Trng CC
<cc> = cc : address
Trng ny cha ng thng tin v ngi nhn th th hai, c ngha ng gi
(carbon copy-cc).
h. Trng BCC
<bcc> = bcc : address
Trng ny cha ng thng tin thm v ngi nhn th (blind carbon copy-bcc).
Ni dung ca trng ny khng cha ng trong bn sao th gi cho ngi nhn th u
tin v ngi nhn th hai.
i. Trng MESSAGE-ID
<Message-ID> = Message-ID : msg-id
Trng ny cha ng thng tin nh danh duy nht v bc th c gi i. Tnh duy
nht ca trng ny c bo m bi h thng sinh ra n. Trng ny c dng dnh
ring cho my tnh v khng cn thit i vi ngi s dng.
j. Trng SUBJECT
<Subject> = Subject : text
Trng ny cha ng thng tin v tiu th cn gi.
1.4.4. V d v cu trc 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 vien thc hien Nguyen Xuan Thanh Trang 26
o n tot nqhIep
1.5. PHAN TCH GIAO THC SMTP (RFC 821)
1.5.1. Gii thiu chung
Mc ch ca giao thc SMTP (Simple Mail Transfer Protocol) l truyn th
ng tin cy v c hiu qu.
SMTP c lp v h thng con truyn thng c bit v cc yu cu ch tin cy
theo knh lung d liu tun t.
c tnh quan trng ca SMTP l kh nng chuyn tip th tn qua cc mi trng
dch v truyn thng (transport service). Dch v truyn thng cung cp mt mi trng
truyn thng lin qu trnh (interprocess communication environment - IPCE). IPCE
c th l mt mng, nhiu mng hay mt tp hp con ca mt mng. iu quan trng
nhn thy rng cc h thng truyn thng (IPCEs) khng phi l vic truyn thng
tng ng mt ti mt (one-to-one) vi cc mng. Mt tin trnh c th truyn thng
qua li trc tip vi mt tin trnh khc thng qua bt k mt IPCE c bit. Th tn
l mt ng dng hay l vic s dng truyn thng lin tin trnh. Th tn c th c
truyn qua gia cc tin trnh theo cc IPCEs khc nhau bng cch chuyn tip qua
mt tin tin trnh c kt ni ti hai hay nhiu IPCEs. c bit hn na, th tn c th
c chuyn tip gia cc my ch (hosts) trn cc h thng truyn thng khc nhau bi
mt my ch trn c hai h thng truyn thng.
Giao thc SMTP nh ngha cch chuyn giao th tn trc tip gia cc my
tnh trn mng. N c hai vai tr l gi (sender-SMTP) v nhn (receiver-SMTP) th.
Thng thng, bn gi thit lp mt lin kt TCP vi bn nhn, v bn nhn s dng
cng truyn thng s 25 cung cp dch v th tn in t.
Trong mt phin giao dch th tn, bn gi v bn nhn trao i tun t cc lnh v
cc thng tin phn hi.
1.5.2. M hnh hot ng phin giao dch
SMTP c thit k da trn m hnh truyn thng sau: khi ngi s dng (user)
gi mt yu cu dch v th tn, trc tin Sender-SMTP thnh lp mt knh truyn thng
hai chiu ti Receiver-SMTP. Receiver-SMTP c th l ch cui cng hoc l mt
trm trung gian. Sau , cc lnh ca SMTP c sinh ra t pha Sender-SMTP v gi
ti Receiver-SMTP. Receiver-SMTP s thao tc trn cc lnh v gi tr kt qu v
pha Sender-SMTP.
SMTP cung cp c ch chuyn th trc tip t my ch ca ngi gi n my ch
ca ngi nhn khi hai my ch c kt ni trn cng mt dch v truyn thng hoc
qua mt hoc nhiu Server-SMTP chuyn tip khi cc my ch ngun v my ch ch
khng cng c kt ni ti cng mt dch v truyn thng.

Sinh vien thc hien Nguyen Xuan Thanh Trang 27
o n tot nqhIep

Sinh vien thc hien Nguyen Xuan Thanh Trang 28
o n tot nqhIep
e
thuc
hien doc
kha
nang chuyen tiep th tn tren mang, can phai cung cap ten cua my chu cng nh ten cua
hop th (mailbox) cuoi cng can gui ti cho SMTP Server.
SMTP cung cap mot tap cc lenh cho php cc my tnh tren mang c the trao doi
thuc tiep cc thong tin theo mot chuan qui dinh. Nh vo tap lenh ny, cc he thong th
tn khc nhau c the trao doi d lieu th doc vi nhau. Moi lenh deu c cng chieu di
bon k tu, hau het deu c tham so km theo.
Cc lenh su dung trong viec gui/nhan th tn tuan theo mot c php khat khe. l
cc thong tin phan hoi luon o dang m so km theo l cc mo ta ve ket qua thuc hien
lenh. Cc lenh v m phan hoi khong phan biet ch hoa v ch thng. ieu ny c
nghia l mot lenh hoac mot thong bo phan hoi c the o dang in hoa, in thng hoac
trong bat k mot kieu ket hop no gia in hoa v in thng.
Lu rang dieu ny l khong dng vi ten cua user mailbox. Vi mot so my
chu, user name l phan biet ch hoa, thng v viec thuc hien cc lenh SMTP can phai
quan tam de dam bao su thuc hien dng dan trong trng hop ny. Ten cua my chu
cng khong phan biet ch hoa, thng.
Cc lenh v thong tin phan hoi doc xay dung boi cc 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. Cc giai doan d doc
thuc hien thong qua cc thu tuc SMTP, km theo d l cc thong tin phan hoi:
Thu tuc MAIL.
Thu tuc FORWARDING.
Cc thu tuc MAILING v SENDING.
Cc thu tuc OPENING v CLOSING.
Cc m tra li cua lenh SMTP.
1.5.3. Thu tuc Mail
e bat dau mot phien giao dich th tn th can phai thuc hien thu tuc MAIL. N
bao gom 3 bc:
Lenh MAIL doc gui di km theo l tham so ve dia chi ngi 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 hnh tong qut su dung giao thc SMTP
Receiver
SMTP
Receiver
SMTP
Receiver - SMTP
and Mail
File
System
File
System
User
User
o n tot nqhIep
Lenh RCPT doc gui di km theo l tham so ve dia chi ngi nhan th. C the thuc
hien nhieu lan lenh ny trong trng hop muon gui th cho nhieu ngi.
Lenh DATA doc gui di de xc nhan bat dau gui d lieu cua th.
Di 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 ngi gui th.
Han che: Chi c the thuc hien khi cha thuc hien chnh lenh ny.
Chi tiet: Lenh ny dng de xc nhan ngi gui th dong thi thiet lap mot phien
giao dich SMTP vi Receiver-SMTP (Server). N da ra dng dan <reverse-
path> de su dung trong trng hop phien giao dich khong thuc hien thnh cong.
Ngoc lai, thong tin ve ngi gui s doc lu lai.
Ihong tin phan hoi:
250 OK
Trng hop cn 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 ngi nhan th.
Han che: Chi c the thuc hien khi d dinh danh ngi gui th bang lenh MAIL.
Chi tiet: Lenh ny dng de xc nhan ngi nhan th doc chi dinh trong tham so
<forward-path>. Neu Receiver-SMTP chap nhan th thong tin ve ngi gui s d-
oc lu lai. Lenh ny c the thuc hien nhieu lan de xc nhan nhieu ngi nhan th.
Ihong tin phan hoi:
250 OK
Trng hop cn 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 thnh cong viec xc nhan ngi
gui v ngi nhan th.
Chi tiet: Lenh ny dng de xc nhan bat dau viec gui noi dung th. Neu SMTP
Receiver chap nhan, n s tien hnh nhan v lu tr tat ca cc dng van ban doc
gui den. e ket thc viec gui d lieu, SMTP Sender can gui mot dng chi cha
mot dau cham .. Lu rang phan d lieu sau lenh DATA bao gom ton bo
phan header cua th (nh cac trng Date, Subject, CC, From, ...) cng 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 mt v d minh ho cho mt phin giao dch th tn SMTP. Phn thng
tin pha Server c bt u bng R: v m s, tip sau l thng tin. Phn pha Client l
cc lnh thc thi ca SMTP bt u bng S:. Ta s s dng dch v Telnet kch hot
dch v th tn trn cng 25 (SMTP).
d. V d v mt phin giao dch 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 tc Forwarding
Trong mt s trng hp a ch trong tham s <forward-path> b sai, nhng SMTP
Receiver li bit chnh xc a ch ch th cc thng tin phn hi c th c s dng
cho php ngi gi xc nhn li a ch ng.
251 User not local; will forward to <forward-path>
Thng tin phn hi ny ch ra rng mailbox ca ngi nhn thuc mt my ch
(host) khc. Nh vy, SMTP Receiver s ch ra <forward-path> chnh xc s dng v
n s chu trch nhim gi th ny.
551 User not local; please try <forward-path>

Sinh vien thc hien Nguyen Xuan Thanh Trang 31
o n tot nqhIep
Thong tin phan hoi ny chi ra rang, SMTP Receiver biet doc mailbox cua ngi
nhan thuoc mot my chu khc. N s da ra dia chi chnh xc de su dung nhng trong tr-
ng hop ny n khong thuc hien viec gui th di. Chnh v vay, ngi gui can phai xc
nhan lai cc thong tin cho chnh xc theo thong tin phan hoi cua SMTP Receiver hoac
tra lai thong bo loi cho ngi gui ban dau.
Sau day l v du ve cch su dung thu tuc ny:
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. Cc thu tuc Mailing v Sending
SMTP chu yeu cung cap cc chc nang pht th den mailbox cua ngi su dung.
Tuy nhien, n cng c mot so cc chc nang thuc hien viec chuyen th den terminal cua
ngi su dung.
Viec pht th den mailbox cua ngi su dung doc goi l mailing, cn viec pht th
den terminal doc goi l sending. Dich vu sending l phan mo rong cua mot he thong
th tn dien tu.
C ba dang cau lenh doc dinh nghia de ho tro cho cc ty chon sending. Cc cau
lenh ny doc dng trong cc phien giao dich SMTP thay the cho cau lenh MAIL v bo
cho Receiver-SMTP biet nghia dac biet cua phien giao dich ny.
a. Lenh SEND FROM <reverse-path>
Iham so: dia chi terminal cua ngi nhan.
Chi tiet: Lenh ny yeu cau d lieu cua th doc phan pht ti terminal cua ngi su
dung. Neu ngi su dung cha kch hoat (hoc khong chap nhan kieu giao dich
ny) th Receiver-SMTP s gui tra m 450. Phien giao dich l thnh cong neu
th doc chuyen den terminal cua ngi su dung.
Ihong tin phan hoi:
450 OK
b. Lenh SOML FROM <reverse-path>
Iham so: dia chi terminal cua ngi nhan.
Chi tiet: Lenh ny (viet tt cua ch Send Or MaiL) yeu cau d lieu cua th doc
phan pht ti terminal cua ngi su dung trong trng hop ngi su dung kch
hoat (v chap nhan kieu giao dich ny). Trong trng hop ngoc lai, nghia l ngi
su dung cha kch hoat th d lieu cua th s doc chuyen den mailbox cua ngi
nhan. Phien giao dich thnh cong neu th doc chuyen den terminal cua ngi su
dung.
c. Lenh SAML FROM <reverse-path>
Iham so: dia chi terminal cua ngi nhan.
Chi tiet: Lenh ny (viet tt cua ch Send And MaiL) yeu cau d lieu cua th doc
phan pht ti terminal cua ngi su dung trong trng hop ngi su dung kch
hoat (v chap nhan kieu giao dich ny). Trong bat c trng hop no th d lieu

Sinh vien thuc hien Nguyen Xuan Thanh 6/3Q#


o n tot nqhIep
cua th cng s doc chuyen den mailbox cua ngi nhan. Phien giao dich thnh
cong neu th doc chuyen den mailbox cua ngi su dung.
1.5.6. Cc thu tuc Opening v Closing
Khi mot phien giao dich th tn doc mo, can phai c su trao doi thong tin gia cc
my chu (host) de dam bao su chnh xc trong giao dich. C hai lenh de thuc hien viec
dng/mo mot phien giao dich.
a. HELO <domain>
Iham so: ten domain cua my chu thuc hien viec gui th (co the khong co).
Chi tiet: Lenh ny dng de xc nhan domain my 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 ny dng de ket thc 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 li cua cc cau lenh SMTP
Trong mot phien giao dich SMTP, pha SMTP Sender gui cc lenh yeu cau cn
pha SMTP Receiver s gui tra cc thong tin phan hoi v cc m phan hoi.
e dam bao tnh thong nhat truyen thong trong qu trnh truyen th, dong thi de
dam bao pha SMTP Sender luon biet doc chnh xc trang thi cua SMTP Receiver,
moi cau lenh yeu cau deu phai doc tra li bang cc m thong tin phan hoi chnh xc.
Bang M thong tin phan hoi cua SMTP
Ma thong tin phan hoi Thong tin km 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
Mt m thng tin phn hi l mt s c 3 ch s v tip theo l mt chui vn
bn m t v m . Bng trn y s trnh by chi tit cc thng tin phn hi:
Truyn thng gia Sender-SMTP v Receiver-SMTP c coi nh mt cuc hi
thoi, c iu khin bi Sender-SMTP. Nh vy, Sender-SMTP a ra mt lnh yu cu
v Receiver- SMTP s tr li mt m thng tin phn hi. Sau khi Sender-SMTP a ra
lnh yu cu, n phi i thng tin phn hi t Receiver-SMTP ri mi a ra lnh tip
theo.
Trong cc m thng tin phn hi, m phn hi quan trng nht l 220. N c tr-
ng cho vic thc hin thnh cng yu cu.
1.6. PHAN TCH GIAO THC POP3 (RFC 1081,1082)
1.6.1. Gii thiu
Giao thc POP3 cho php mt my trm c th truy nhp ly th trn my
ch. N nh ngha cch thc giao tip vi POP3 Server bi cc lnh chun c quy
nh trong RFC 1081 ly th v.
1.6.2. M hnh hot ng phin giao dch
Vo thi im bt u, tin trnh pha Server bt u dch v POP3 bng cch
lng nghe trn cng TCP 110. Thut ng lng nghe y c hiu theo ngha l
tin trnh pha Server lun lun tip nhn cc thng tin n cng dch v m n cung
cp - trong trng hp ny l cng dch v 110 - x l v gi kt qu v cho tin trnh
yu cu dch v pha Client.
Khi mt tin trnh pha Client mun s dng dch v, n thit lp mt kt ni TCP
ti my ch pha Server. Khi kt ni c thit lp, POP3 Server gi mt thng bo chp
nhn v sau tin trnh pha Client v POP3 Server c th trao i cc lnh cng nh
cc thng tin phn hi cho n khi kt ni b hy b hoc phin giao dch kt thc.
Cc lnh trong POP3 bao gm t kha, c th theo sau l mt hoc nhiu tham
s. Tt c cc lnh u c kt thc bi cp k t CRLF. T kha v cc tham s l cc
k t in c trong bng m k t ASCII, gia chng c phn cch bi mt k t du
cch trng. T kha c th di ba hoc bn k t, cn cc tham s c th di ti bn m-
i k t.
Thng tin phn hi ca POP3 bao gm mt thng bo trng thi v mt t kha
c th theo sau mt s thng tin thm. Tt c cc thng tin phn hi u c kt thc
bi cp k t CRLF.

Sinh vien thc hien Nguyen Xuan Thanh Trang 34
o n tot nqhIep
C hai thng bo trng thi l: Xc nh (+OK) xc nhn thnh cng v ph
nh (-ERR) xc nhn trong trng hp c li.
Cc thng tin phn hi cho cc lnh thc t l nhiu dng. Trong nhng trng hp
ny, sau khi gi dng u tin ca thng tin phn hi v mt cp CRLF, bt c mt
dng thm vo no c gi th u phi kt thc bng cp CRLF. Khi tt c cc thng
tin phn hi u c gi, mt dng cui cng c gi, bao gm m kt thc (m
thp phn 046, .) v mt cp CRLF.
Nu c mt dng no trong thng tin phn hi a dng bt u vi mt m k t
kt thc (du chm .), th dng coi nh cha c x l xong i vi thng tin phn
hi . V vy, mt thng tin phn hi a dng c kt thc bi b nm octets l CRLF.
CRLF.
Mt phin giao dch POP3 phi tri qua mt s cc trng thi trong sut thi gian
tn ti ca phin lm vic. Mi ln kt ni TCP c m v POP3 Server gi thng bo
chp nhn, phin lm vic chuyn sang trang thi AUTHORIZATION. trng thi
ny, Client phi t nh danh ca mnh cho POP3 Server.
Mi khi Client thc hin xong vic nh danh, Server nhn c ti nguyn tng
ng vi hp th ca Client, n s chuyn sang trng thi TRANSACTION.
Trong trng thi ny, cc yu cu ca Client c chuyn sang v c thc hin
bn pha POP3 Server. Khi Client a ra lnh QUIT, phin lm vic chuyn sang trng
thi UPDATE. Trong trng thi ny, POP3 Server gii phng mi ti nguyn thu c
trong sut trng thi TRANSACTION v kt thc. ng thi, kt ni TCP kt thc.
Mt POP3 Server c th c mt b xc nh thi gian. Nu sau mt khong thi
gian xc nh trc m pha Client khng c tc ng g th POP3 Server c th t ng
kt thc phin lm vic. Khong thi gian ny t nht l khong 10 pht.
Nu trong khong thi gian ny c bt k mt lnh no t pha Client, b xc
nh thi gian s c khi to li. Khi ht thi gian hiu lc, phin lm vic khng
chuyn sang trng thi UPDATE. Server s ng kt ni TCP m khng chuyn bt k
mt th no cng nh cc thng tin phn hi no v pha Client.
Nh vy, ta thy mt phin lm vic ca POP3 phi tri qua ba trng thi: trng
thi AUTHORIZATION, trng thi TRANSACTION v trng thi UPDATE.
Phn tip theo s trnh by chi tit v s hot ng ca POP3 Server trong tng
trng thi ca phin giao dch v cc lnh c th thc hin trong mi trng thi .
1.6.3. Trng thi AUTHORIZATION
Khi mt phin giao dch POP3 c kch hot bi mt POP3 Client, POP3 Server
s gi mt thng bo cho pha Client. Tng t nh phn trnh by v giao thc SMTP, ta
cng s dng Telnet kch hot dch v ny. Mt v d c th l:
S: +OK dewey POP3 server ready
Ch rng, y l thng tin phn hi t pha POP3 Server. Du + c ngha l
thnh cng, ngc li, du - l khng thnh cng b li. Phin lm vic POP3 hin ti
ang trng thi AUTHORIZATION. Pha Client by gi cn phi a vo cc lnh
xc nh ngi nhn th cho POP3 Server. thc hin vic ny, pha Client s dng hai
lnh l USER v PASS. u tin, Client s dng lnh USER vi tham s l account ca
ngi nhn.
Nu thng tin phn hi t pha POP3 Server bt u bng du + (+OK) th pha
Client c th gi tip lnh PASS vi tham s l mt khu ca ngi nhn kt thc
vic nh danh hoc cng c th gi lnh QUIT kt thc phin giao dch.

Sinh vien thc hien Nguyen Xuan Thanh Trang 35
o n tot nqhIep
Trong trng hop ngoc lai, neu thong tin phan hoi bat dau bang dau - (-ERR) cho
lenh USER th pha Client c the thuc hien lai viec dinh danh hoac ket thc phien giao
dich bang lenh QUIT.
Khi pha Client da vo lenh PASS, POP3 Server s su dung ket hop hai doi so da
vo boi hai lenh USER v PASS de xc dinh xem ngi su dung ny c ton tai hay
khong, c doc quyen truy nhap vo mailbox hay khong,.v.v
Sau khi d xc dinh pha 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 cc phien
POP3 khc, trc khi chuyen sang trang thi UPDATE.
Neu nh viec kho mailbox thnh cong, phien giao dich POP3 s chuyen sang
trang thi TRANSACTION. Vo thi diem ny, cha c mot th no bi dnh dau xo.
Trong trng hop ngoc lai, neu nh v mot l do no d khong the kho doc
mailbox (vi du nh khong doc quyen truy nhap hoc mailbox d bi khoa,.v.v) th POP3
Server s gui mot thong tin phan hoi -ERR v ket thc luon phien giao dich.
Sau khi POP3 Server d mo doc mailbox, n s gan chi so cho moi mot bc th v
tnh luon kch thc tng bc th. Chi so doc bat dau t 1. Trong cc lenh cua POP3 v
cc thong tin phan hoi, tat ca cc chi so v kch thc th deu o dang co so 10.
Sau day l mot so lenh c the thuc hien trong trang thi AUTHORIZATION:
a. Lenh USER [name]
Iham so: l mot xau k tu dinh danh cua mailbox, duy nhat doi vi Server.
Han che: Chi c the thuc hien trong trang thi AUTHORIZATION vo thi
diem ban dau hoac sau khi viec dinh danh USER v PASS khong thnh cong.
Chi tiet: Lenh ny dng de dinh danh ngi 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 vi mailbox.
Han che: Chi c the thuc hien trong trang thi AUTHORIZATION vo thi
diem ban dau hoac sau khi viec dinh danh USER thnh cong.
Chi tiet: Lenh ny dng de xc dinh mat khau tong ng vi ngi 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 ny dng de ket thc phien giao dich.
Ihong tin phan hoi:
+OK
\i du:
C: QUIT
S: +OK dewey POP3 server signing off
1.6.4. Trang thi TRANSACTION
Moi lan pha Client thuc hien thnh cong viec dinh danh vi POP3 Server,
mailbox tong ng s doc kho v phien lm viec bay gi s o trang thi
TRANSACTION.
Pha Client c the su dung bat c mot lenh POP3 no de thuc hien giao dich vi
POP3 Server. Cc lenh ny c the lap lai m khong bi han che g ca. Sau moi lenh, pha
POP3 Server s gui tra mot thong tin phan hoi v ket qua thuc hien.
Cuoi cng, pha Client thuc hien lenh QUIT de chuyen phien giao dich sang trang
thi UPDATE.
Sau day l mot so lenh c the thuc hien trong trang thi TRANSACTION:
a. Lenh STAT
Iham so: khong.
Han che: Chi c the thuc hien trong trang thi TRANSACTION.
Chi tiet: Lenh ny dng de lay thong tin ve so th trong mailbox v kch thc
cua mailbox tong ng vi ngi su dung. Cau trc cua dng thong tin phan hoi
ny l: '+OK, tiep theo l mot dau cch trong, so long th trong mailbox v
kch thc cua mailbox tong ng vi ngi dng d xc 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 hoc khong) l mot so hieu cua th trong so nhng th hien
c trong mailbox cua ngi dng. Lu , nhng th bi dnh dau xo s bi bo qua.
Han che: Chi c the thuc hien trong trang thi TRANSACTION.

Sinh vien thuc hien Nguyen Xuan Thanh 6/3Q#g


o n tot nqhIep
Chi tiet: Lenh ny dng de liet ke danh sch cc th c trong mailbox v kch
thc tong ng hoac lay thong tin ve mot th cu the no d. Trong trng hop
khong da vo tham so th POP3 Server s tra lai '+OK v mot danh sch cc
th v so hieu tong ng trong mailbox cua ngi dng. Trong trng hop ngoc lai,
c tham so, neu tham so nam trong khoang cho php t 1 den so th th POP3
Server s tra lai '+OK v so hieu cua th v kch thc 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 thi TRANSACTION.
Chi tiet: Lenh ny dng de hien thi noi dung th tong ng vi so hieu da vo.
Neu thuc hien doc POP3 Server s gui tra mot thong tin phan hoi da dng, bat
dau bang +OK, tiep theo l cc dng cha dung thong tin ve noi dung th
cng nh tieu de cua th doc chon. Trong trng 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 thi TRANSACTION.
Chi tiet: lenh ny dng de xo mot th tong ng vi so hieu da vo. 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 xa. Trong trng hop c loi, POP3 Server s
gui tra -ERR. Lu , POP3 Server chi thuc hien viec dnh dau xo tren bc
th d. N chi bi xo thuc su sau khi phien giao dich chuyen sang trang thi
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 thi TRANSACTION.
Chi tiet: lenh ny dng de xc nhan ket noi vi POP3 Server. POP3 Server
khong lm 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 thi TRANSACTION.
Chi tiet: POP3 server dat mot tra li xc dinh vi dng cha so thong diep cao
nhat hien tai m n doc truy cap trong maildrop. Trong trng hop cn dang o
trong trang thi TRANSACTION m cc th d bi dnh dau xa cha c lenh
RSET th so th hien c trong maildrop van khong thay doi tnh luon ca cc th
d doc dnh 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 thi TRANSACTION.
Chi tiet: lenh ny dng de khoi phuc lai nhng th d bi dnh dau xa. Neu thuc
hien doc POP3 Server s gui tra thong tin phan hoi +OK de xc nhan d bo
dnh dau doi vi nhng th d bi dnh dau xa. Trong trng hop c loi, POP3
Server s gui tra li -ERR
Ihong tin phan hoi:
+OK
\i du:
C: RSET
S: +OK maildrop has 2 messages (320 octets)
1.6.5. Trang thi UPDATE
Khi pha Client thuc hien lenh QUIT dang o trong trang thi TRANSACTION.
phien giao dich POP3 s chuyen sang trang thi UPDATE.
Lu rang neu lenh QUIT doc thuc hien trong trang thi AUTHORIZATION th
phien giao dich POP3 khong chuyen sang trang thi UPDATE.
Neu mot phien giao dich bi ket thc v mot l do no d m khong phai do pha
Client thuc hien lenh QUIT th phien giao dich POP3 cng khong chuyen sang trang
thi UPDATE v cng khong thuc hien viec xa bat ky mot th no t mailbox.
Lenh QUIT
Iham so: khong.
Han che: khong.
Chi tiet: Lenh ny dng de ket thc phien giao dich mot cch hop le. POP3
Server s xa vat l tat ca th d bi dnh dau xa trong mailbox. Sau d, n s
g bo kha doi vi mailbox d v c mot thong tin phan hoi de xc nhan thao
tc ny. Ket noi TCP s ket thc.
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 cac quy nh ve nh kieu va cau truc d lieu do noi dung mail e no co
the cha c cac loai tai lieu phc hp khac nhau nh: hnh anh, am thanh, file
nh phanMIME con c biet en nh mt giao thc Internet mi m c pht trin
cho php trao i cc thng ip th in t c ni dung phong ph thng qua mng
khng ng nht (heterogeneous network), my mc, v cc mi trng th in t.
Trong thc t, MIME cng c s dng v m rng bi cc ng dng khng phi
th in t. Hin nay, trn mng din rng Internet, i vi RFC 822 ch lm nhng
cng vic nh ngha cc header nhng cn ni dung bn trong th vn cn li thi,
chnh v th m vn ny khng cn thch hp na. Cc vn bao gm vic gi v
nhn th nh sau:
1. Nhng thng ip s dng cc ngn ng c du.
v d: Ting Php v ting c.
2. Nhng thng ip s dng cc ngn ng khng phi ch ci Latin.
v d: Ting Do thi, ting Nga. . .

Sinh vien thc hien Nguyen Xuan Thanh Trang 41
o n tot nqhIep
3. Nhng thng ip s dng cc ngn ng khng c trong cc bng ch
ci.
v d: Ting Trung Quc, ting Nht. . .
4. Nhng thng ip s khng cha vn bn.
v d: C m thanh v hnh nh.
Mt gii php c a ra trong RFC 1341 v c cp nht mi nht trong RFC
1521. Gii php ny c gi l MIME, hin nay c s dng rng ri.
Khi nim c bn ca MIME l tip tc s dng nh dng RFC 822, nhng thm
cu trc vo phn thn ca thng ip v nh ngha cc nguyn tc m ha cc thng
ip khng phi cc bng m ASCII. khi b lch hng ca RFC 822, cc thng
ip MIME c th c gi i c s dng cc giao thc v chng trnh th hin c. Tt
c cc chng trnh ny phi c thay i thnh cc chng trnh gi v nhn sao cho ng-
i dng c th dng c.
MIME nh ngha nm header thng ip mi c trnh by trong hnh bn di.
Cc header ny trc tin bo cho UA nhn thng ip m n ang dng bng thng
ip MIME v phin bn ca MIME ang dng. Bt c thng ip no khng cha
header MIME-Version: c gi nh l mt thng ip hnh thc c m ha bng
ting 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
Cc header RFC 822 c MIME thm vo.
By kiu chnh m t MIME c nh ngha trong RFC 1521, mi kiu ca n li
c mt hay nhiu kiu ph. Kiu chnh v kiu ph (xem hnh bn di) c phn bit
bi mt du vch cho, nh c dng 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 vien thc hien Nguyen Xuan Thanh Trang 42
o n tot nqhIep
Cc kiu chnh v kiu ph c nh ngha trong RFC 1521
1.8.POP BEFORE SMTP(CHNG THC QUYEN TRUY CAP THEO
GIAO THC POP TRC KHI S DUNG SMTP)
e tranh tnh trang cac may chu mail server b lam dung gi mail o at hay
con goi la bom th, c che POP before SMTP yeu cau may khach muon s dung
dch vu mai cua may chu trc het phai ang nhap vao tai khoan(account) theo
giao thc POP. Neu qua trnh ang nhap thanh cong, c che gi mail bang SMTP
mi co the dien ra tiep theo.
1.9.MAIL CLIENT, WEB MAIL
ay la cac chng trnh thng c dung nhat trong qua trnh gi, nhan,
oc mail. Nhng chng trnh ng dung thuoc dang mail client co rat nhieu v du
nh :Outlook Express, Netscap Communicatorneu chng trnh mail client c
viet di dang giao dien Web se c goi la Web mail. That ra Web mail tng tac
kho khan hn cac ng dung mail client thong thng v phai da voa trnh chu Web
Server. Tuy nhien u iem cua Web mail la ban co the truy cap mail c moi
luc moi ni, bat c khi nao ket noi c vao Internet.
CHtONG 4 t GIO I THIEt E CAC CO NG NGHE
LIE N QtAN
2.1.GII THIEU VE JRUN WEBSERVER 3.1
JRun la ng dung trnh chu Java (Java Web Server) nham phc vu
nhng cong nghe mi nhat cua Java nh Servlet/JSP va EB. Mac du hien nay co
rat nhieu trnh chu Web danh cho Java nh Java Web Server, Web Logic, Apache,
Trong e tai nay toi se ng dung JRun Web Server chay tren moi trng Windows
NT/2000, do JRun c viet bang Java nen ta co the s dung va cai at JRun ca
tren moi trng Linux lan Unix.
JRun khong ch n thuan la mot trnh chu Web ma con co cac tnh
nang ket hp vi cac trnh chu Web khac nh IIS cua Windows hay Apache
2.2.GII THIEU VE SQL SERVER 7.0

Sinh vien thc hien Nguyen Xuan Thanh Trang 43
o n tot nqhIep

Sinh vien thc hien Nguyen Xuan Thanh Trang 44
o n tot nqhIep
2.2.1. Ly thuyet he quan tr c s d lieu sql server 7.0 va Cau truc c s
d lieu cua sql server 7.0
SQL Server to chc d lieu lu trong C s d lieu(CSDL) thanh nhng
thanh phan logic. User lam viec tren nhng thanh phan logic nay nh bang (table),
view, procedure Thanh phan vat ly cua nhng file th trong suot (transparent), ch
co ngi quan ly C s d lieu mi c lam viec tren o.
SQL Server co 4 c s d lieu he thong ( master, msdb, model, temdb
database ) va cac c s d lieu cua user. Hnh minh hoa
Master database: Ghi lai cau hnh he thong cua SQL Server. No ghi lai tat ca
tai khoan ang ky cua user va cau hnh he thong, nhng file primary cha thong
tin khi ong cua C s d lieu cua user, cha thong tin khi ong cua SQL
Server. Nhng thao tac sau gay ra nhng thay oi trong master database:Tao ,
thay oi, xoa c s d lieu,thay oi transaction log. Them hay xoa cua nhng
sever s dung thu tuc he thong nh sp-addserver (them server) and sp-
dropserver (bo server).
Temdb database: cha nhng bang tam va nhng stored procedure tam. Nhng
bang tam va nhng stored procedure cua user khi noi ket vao he thong c lu
trong temdb database. Khi SQL khi ong th tat ca cac bang tam va cac stored
procedure trong temdb database eu mat.

Sinh vien thc hien Nguyen Xuan Thanh Trang 45
o n tot nqhIep
Stored procedure: la 1 tap hp bien dch trc cua nhng cau lenh cua
Transact-SQL c lu va x ly nh 1 n v (unit). Stored procedure san sang
cho viec quan ly SQL Server va hien th thong tin cua c s d lieu, cua nhng
ngi s dung. SQL Server cung cap nhng stored procedure goi la stored
procedure he thong.
Model database: c dung nh 1 khuon mau cua CSDL trong he thong. Khi
tao ra 1 CSDL th phan au cua CSDL la ban sao cua model database, phan
con lai la nhng trang trong.
Msdb database: SQL Server Agent dung msdb database e lap ke hoach alert,
job. Alert la 1 nh ngha cua ngi s dung ap ng 1 s kien cua SQL Server.
Alert co the thc thi ca nhiem vu nh ngha hoac gi e-mail en 1 ngi ch
nh. Job la s thc hien 1 hanh ong quan ly cha 1 hoac nhieu bc, thay the
cho thuat ng task cua SQL Server 6.5.
2.2.2. Cau truc c s d lieu vat ly:
2.2.2.1. Trang (page):
n v c ban lu tr d lieu la trang (page). Trong SQL Server 7.0 , 1 trang
co kch thc 8MB, ta se co 128 trang/1MB. 96 byte au cua moi trang cha
header cua trang gom thong tin he thong nh loai trang, so vung trong cua trang.
Cau truc trang d lieu: Cac hang d lieu (data row) c a vao tuan t
ngay sau page header, row offset c bat au t cuoi trang, ch en data row va
cho biet byte bat au cua data row, kch thc hang toi a la 8060 byte.
2.2.2.2 .Extent:
Extent la n v c ban ch vung lu bang va index. Moi extent gom 8 trang
lien tuc nhau. Co 2 loai extent:

Sinh vien thc hien Nguyen Xuan Thanh Trang 46
o n tot nqhIep
Mixed extent co the lu nhng oi tng khac nhau.
Uniform extent ch co the lu 1 oi tng duy nhat.
2.2.2.3 Nhng loai file trong CSDL:SQL Server co 3 loai file:
Primary file: la file bat au cua c s d lieu. Moi c s d lieu ch co 1 file
primary, ten file co phan m rong la .mdf
Secondary file: la file lu nhng g con lai cua c s d lieu ma khong cha
trong primary file, co the co nhieu file secondary, ten file co phan m rong la
.ndf.
Log file: cha nhng thong tin transaction log, c dung e khoi phuc c s d
lieu, moi c s d lieu co t nhat 1 log file, ten file co phan m rong la .ldf.
File cua SQL Server co 2 ten:
Logical_file_name: la ten dung trong nhng cau lenh Transact_SQL.
Os_file _name: la ten file vat ly, ch ro ng dan cua file
MyDB_primary la ten logical_file_name, c:\Mssql7\Data\MyData1.mdf la ten
os_file_name.
Nhng trang trong file c anh so bat au t 0. Moi file co 1 so ID. Moi
trang trong file gom ca ID file va so th t trang trong file.
V du: file primary co kch thc 4MB, va secondary co kch thc 1 MB.
Trang au tien trong moi file la trang header file cha thong tin ve thuoc tnh cua
file. Trang th 9 trong primary file la trang khi ong c s d lieu cha thong tin
ve thuoc tnh cua c s d lieu.
2.3. LY THUYET MO HNH QUAN HE
2. 3.1. Cac khai niem c ban
Thc the: la mot oi tng cu the nao o
Thuoc tnh thc the: Tnh chat xac nh thc the
Lp thc the : Cac thc the co cung thuoc tnh
Lc o quan he:

Sinh vien thc hien Nguyen Xuan Thanh Trang 47
o n tot nqhIep
Thuoc tnh: Ten thuoc tnh, mien xac nh cua thuoc tnh
Lc o quan he gom cac thuoc tnh cua thc the (ten, mien xac nh) cung vi
cac menh e rang buoc
Lc o cua mot quan he: R=< x, v>= (A1: D1 A2 : D2 ,,An :Dn , M)
trong o: AI :Ten thuoc tnh, DI :Mien xac nh cua thuoc tnh,M: Menh e rang
buoc
2.3.2. Khai Niem phu thuoc d lieu va cac dang chuan
Mot thuoc tnh goi la phu thuoc vao cac thuoc tnh khac khi gia tr cua thuoc
tnh nay phu thuoc vao gia tr cua thuoc tnh kia. S phu thuoc co the la trc
tiep hay gian tiep.
Mot quan he bao gi cung co mot nhom thuoc tnh ma gia tr cua chung qui
nh gia tr cua cac thuoc tnh khac, nhom thuoc tnh o goi la khoa.
Vi mot quan he tuy vao cac phu thuoc cua cac thuoc tnh vao khoa trong o
ma ta phan chia cac quan he o thanh cac dang chuan khac nhau. Cac dang
chuan c ban:
Dang chuan 1
Dang chuan 2
Dang chuan 3
Cac d lieu lu gi di dang chuan 3 tranh c hien tng d tha d lieu,
tao cho d lieu co tnh oc lap cao. Cac quan he neu cha dang chuan 3 se c
phan ra thanh cac quan he nho hn dang chuan 3.
2.3.3 Khai niem ch dan va khoa ch dan
e co the tm kiem thong tin nhanh theo mot tieu chuan nao o chung ta tao
ra cac thong tin ch dan theo tieu chuan o. Cac thong tin ch dan la cac thong tin
giup ta tm kiem d lieu nhanh. Cac thong tin nay goi la khoa ch dan . Khoa ch
dan co the la mot trng, hoac nhieu trng .
Vi cach tao ra khoa ch dan theo tieu chuan nao o ta co the tm kiem nhanh
d lieu theo tieu chuan o.
2.4.GII THIEU VE JAVA SERVLET
2.4.1.Khai niem ve JAVA SERVLET
Ma nguon cua Servlet dc bien dch ra ma byte code cua Java. Servlet de
s dung va phat trien nhng ng dung Web nhanh hn CGI. Servlet chay t ong
khi chung c goi t trnh chu (Web server) .

Sinh vien thc hien Nguyen Xuan Thanh Trang 48
o n tot nqhIep
Servlet chay toan bo tren may ao Java, x ly va sinh ma HTML tra ve trnh
khach. Bang cach nay Servlet co the chay tren rat nhieu trnh chu hieu Java va
chung khong phu thuoc va trnh duyet (browser).
2.4.2.Nhng ng dung thc te cua JAVA SERVLET va kien truc cua
JAVA SERVLET
Servlet co the c s dung trong bat ky mot ng dung nao lien quan en
Web. Hai goi tao nen kien truc cua Java Servlet la : javax.servlet va
javax.servlet.http. Goi javax.servlet cha ng phan giao dien tong quat phuc vu
cho Servlet. javax.servlet.http cha ng cac lp phuc vu cho giao thc trieu goi
HTTP. Bo khung hnh thanh nen Servlet bao gom cac phng thc sau:
init() Phng thc khi tao servlet.
service() Phng thc nhan va tra li t pha ngi s dung.
destroy() Phng thc thc hien viec huy servlet.
Cac tap tin Servlet eu c at trong giao dien bao gom cac phng
thc tren. Chung rat ro rang trong giai phap lap trnh oi tng va de dang m
rong.
2.5.GII THIEU VE JAVA SERVER PAGES(JSP)
2.5.1.Khai niem ve JSP
JSP la cong nghe rat manh e tao trang HTML ong ve pha trnh
chu. JSP la phan m rong trc tiep cua Java Servlet, bo dien dch JSP se anh xa
trc tiep ma JSP thanh Servlet. Viet trang JSP ta khong can phai thong qua qua
trnh bien dch tap tin thc thi .class nh trong Servlet. JSP cung cap mo hnh lap
trnh Web de dang va tien dung hn Servlet. Cong viec bien dch trang JSP c
thc hien t ong bi trnh chu.
2.5.2.Quan he gia Servlet va JSP
2.5.2.1.Cach trnh chu bien dch trang JSP thanh servlet
That s cac trang JSP c trnh chu dch ra thanh servlet trc
khi cho thc thi. Khi trnh khach trieu goi trnh chu Web server se thc hien cac
bc sau:
Bc 1: Kiem tra trang JSP a c dch ra than ma nguon
tng ng cua servlet cha.
Bc 2 : Neu cha bien dch trang JSP thanh file nguon thanh
file nguon .java theo cau truc cua servlet. Goi trnh bien dch javac bien dch file
nguon .java thanh file thc thi cua servlet .class.

Sinh vien thc hien Nguyen Xuan Thanh Trang 49
o n tot nqhIep
Bc 3 : Nap servlet a bien dch bc 2, thc thi ket qua tra
ve cho trnh khach.
Bc 4 :Neu file JSP a c bien dch trc o : thc hien
viec kiem tra xem noi dung file JSP co thay oi hay khong. Neu co, quay lai bc
2 bien dch lai trang. Neu khong thc hien lai bc 3.
2.5.2.2. So sanh gia Servlet va JSP
Do ma trang JSP thi thc thi eu c bien dch ra
servlet cho nen tat ca nhng g servlet lam c cung ong ngha vi trang JSP lam
c. Viet trang JSP oi khi n gian hn trang servlet v khong can phai qua bc
ang ky va bien dch thu cong.
JSP co the tron lan ma java vi cac the HTML nen viec
thiet ke trang JSP thng n gian va de bo sung hn so vi servlet. Tuy nhien ay
cung la yeu to khong nen lam dung oi vi JSP. Neu tap trung tat ca ma Java vao
cung vi ma HTML th mot khi d an m rong va tr nen phc tap tat nhien viec
bao tr va nang cap ng dung Web vi hang tram trang JSP se rat kho khan. Trong
qua trnh phat trien ng dung Web theo nhom, viec tron lan ma Java va HTML
trong trang JSP cho thay khong hieu qua. Kho co the tach ri gia cong viec viet
ma cho ng dung (thng la vai tro cua lap trnh vien programmer) va nhom xay
dng giao dien (nhom thiet ke Web Web designer). Ma trang JSP dang thuan
van ban nen thng khong che c ma nguon cua logic chng trnh.
Vi servlet tuy phai bien dch va ang ky thu cong vi
trnh chu nhng bu lai tnh bao mat cao hn. Ta ch can cung cap cho trnh chu Web
Server ban servlet nh phan ( file .class ) a qua bc bien dch ma khong can en
ma nguon cua servlet ban au. Mat khac, cac servlet co the tng tac lien hoan vi
nhau e tao nen nhng ket xuat tuy bien va a dang trc khi tra ket qua ve cho
trnh khach. Servlet co the phan ra cac n the cua d an va phat trien oc lap
nhau nh cac thanh phan rieng biet e rap lai trong mot tong the chung. Mac du
vay, viec ket xuat trong servlet thng da vao phng thc print() hoac println()
nen viec ket xuat phu thuoc vao lap trnh vien vi hang loat cac lenh print() va
println() rat kho quan ly.
Viec quyet nh s dung trang JSP, Servlet hay ket hp
ca hai la tuy vao tng d an va muc ch cua chng trnh can phat trien. Thong
thng oi vi nhng d an nho, yeu cau thi gian nhanh, JSP la la chon thch hp
nhat. oi vi nhng d an can s oc lap va ch thien ve x ly ta nen s dung
servlet. Trng hp d an ln ta nen ket hp ca servlet va JSP. Mo hnh ket hp tot
nhat gia servlet va JSP thng c goi la MCV (Model View Controler)
trong o servlet ong vai tro trung tam ieu khien (controler) a ra quyet nh x
ly, JSP ong vai tro the hien giao dien hay hien th d lieu a x ly (View). Quy
trnh tnh toan logic cua ng dung c giao lai cho cac thanh phan JavaBean hay
EJB.

Sinh vien thc hien Nguyen Xuan Thanh Trang 50
o n tot nqhIep
2.6. GII THIEU VE JAVABEANS
2.6.1.Khai niem ve JAVABEANS
JavaBeans la mot thanh phan oi tng c xay dng t ngon ng
Java. JavaBeans co the la viec va chay tren moi may ao Java. Yeu cau toi thieu
nhat e tao nen thanh phan JavaBeans la : cong cu va trnh bien dch JDK 1.1 tr
len. JavaBeans co the s dung cac phng thc get/set e lay ve va at thuoc tnh
cho oi tng Bean ma no the hien.
2.6.2.Cac the chuan cua JAVABEANS trong trang JSP
2.6.2.1.<jsp:useBean>
The <jsp:useBean> dung e khai bao pham vi va nh danh
id(identify) nhan dang Bean. No tng t nh khai bao bien oi tng trong ma
java.
The <jsp:useBean> co cu phap nh sau:
<jsp:useBean id=name
scope=page | request | session | application
class=packagename.classname>
Thuoc tnh Dien giai
Id Thuoc tnh nay la nh danh nhan dang cua oi tng Bean trong
mot pham vi cho trc. name la ten cua Bean co phan biet ch
hoa, thng.
Scope Thuoc tnh pham vi cho biet moi trng song cua oi tng. Pham
vi cua khai bao ma thanh phan Bean co hieu lc bao gom page
(Bean ch co hieu lc va pham vi truy xuat trong khai bao no).
Request (Bean co hieu lc trong mot lan yeu cau t may khach).
Session (hieu lc cua bean tng t hieu lc cua cac bien session).
Application (hieu lc cua bean tng t hieu lc cua cac bien
application)
Class Ten ay u cua lp Bean. ay la ten tap tin .class sua khi a bien
dch t ma nguon .java. ten nay cung phan biet ch hoa va ch
thng
BeanName Nay e tham chieu en ten cua Bean
Type Thuoc tnh ch ra loai bien kch ban. Neu bien nay khong ch ro
gia tr cua no se la gia tr cua thuoc tnh lp
2.6.2.2.<jsp:setProperty>

Sinh vien thc hien Nguyen Xuan Thanh Trang 51
o n tot nqhIep
The <jsp:setProperty> dung e gan gia tr vao thuoc tnh Bean.
Thuoc tnh ten cua Bean ch nh cho oi tng phai c nh ngha va nam trong
pham vi cho phep.
Cu phap cua <jsp:setProperty>
<jsp:setProperty name = beanName prop_expr/>
Trong cu phap tren, name cho biet ten Bean ma thuoc tnh cua
no a c cai at. prop_expr co the co cac khai bao sau:
property =* |
property = propertyName |
property = propertyName param=parameterName|
property = propertyName value= propertyValue
Thuoc tnh Dien giai
Name Thuoc tnh trnh bay ten cua Bean, ten
nay a c nh ngha bi the
<jsp:useProperty>
Property Thuoc tnh cua Bean can lay gia tr
Param Tham so can dung cho thuoc tnh cua
Bean
Value Gia tr c gan vao cho thuoc tnh
cua Bean
2.6.2.3. <jsp:getProperty>
The <jsp:getProperty> dung e lay gia tr thuoc tnh Bean va
chuyen gia tr thanh kieu chuoi. Cu phap cho the <jsp:getProperty> nh sau:
<jsp:getProperty name=name property=propertyName/>
Thuoc tnh Dien giai
Name Thuoc tnh trnh bay ten cua Bean, ten nay a c khai
bao va nh ngha bi the <jsp:useProperty>
Property Thuoc tnh cua Bean can lay gia tr
2.6.3.Them JAVABEANS vao JSP
e s dung JavaBeans trong trang JSP, ban can khai bao Bean vi
the: < jsp:useBean >
< jsp : useBean id = jb scope = page class = searchbean. searchbean/>
< jsp : setProperty name = jb property = job param = name/>

Sinh vien thc hien Nguyen Xuan Thanh Trang 52
o n tot nqhIep
PHAN 2 t XA1 Dt NG tNG DtNG
CHtONG 1 PHAN TCH HAI TOA N
1.1.TEN E TAI
Tm hieu xay dng ng dung th ien t
1.2.DE CNG CHI TIET

Sinh vien thc hien Nguyen Xuan Thanh Trang 53
o n tot nqhIep
1.2.1.Khao sat
Trong thi gian thc tap tot nghiep toi a khao sat, tm hieu he thong th tn
ien t. Qua trnh xay dng mot ng dung th ien t (Email) rat a dang nhng
chu yeu tap trung vao hai phan:
- Xay dng mail server : la chng trnh hoat ong pha may chu
nhan, lu tr mail, phan phoi, gi mail en cac trnh chu khac. Cac chng trnh
nh Mail Deamon, SendMail, Mail Exchange la nhng mail server.
- Xay dng mail client : la chng trnh hoat ong pha may khach
thc hien chc nang cho phep ngi dung nhap vao noi dung mail, gi mail en
may chu mail server xac nh. Nhan mail t may chu ve va hien th cho ngi dung
xem noi dung mail. V du nh Outlook Express cua Windows hay Web mail tren
Internet la nhng trnh ong vai tro mail client.
1.2.2.Yeu cau cua bai toan
Yeu cau chnh cua bai toan
- Phan mail client: thc hien c c ban nhat nhng chc nang cua
mot mail client nh viec gi, nhan, hien th noi dung mail thong qua trnh duyet
Web vi giao thc HTTP cua Internet.
- Phan mail server : thc hien c chc nang tiep nhan mail do trnh
khach (mail client) gi len (SMTP Server), lu tr mail trong th muc nhat nh cho
phep ngi dung s dung giao thc POP3 oc mail (POP3 Server), chuyen mail
en may chu khac (Forward Server) hoac phan giai a ch mail gi thang en ch
(Relay Server).
1.2.3.D lieu vao, d lieu ra va cac chc nang x ly cua he thong
* D lieu vao :
- Phan mail client :
+ Thong tin ang ky cua ngi dung
- Phan mail server :
+ Mail do trnh khach gi len
+ Thong tin ve v tr th muc lu tr mail tren server
* D lieu ra :
- Phan mail client :
+ Thong tin ve tai khoan th ien t cua ngi dung.

Sinh vien thc hien Nguyen Xuan Thanh Trang 54
o n tot nqhIep
+ Th muc tng ng vi ten tai khoan, thong tin ve user
name va password e dung cho viec POP3 Server chng thc quyen truy cap cua
ngi dung khi can oc mail
- Phan mail server :
+ Lu tr mail do trnh khach gi en
+ Chuyen tiep nhng mail khong thuoc domain mail do
mail server quan ly.
1.2.4. Chc nang cua he thong thong tin quan ly
* Quan ly toan bo thong tin lien quan en user nh: ho, ten, ngay
thang nam sinh, nghe nghiep, gii tnh, quoc gia, thanh pho
* Quan ly so a ch
1.3. LY DO CHON E TAI
Ngay nay oi vi moi chung ta th ien t khong co g xa la tuy nhien o la
ng ve phng dien ngi dung. Xuat phat t mong muon tm hieu mot cach
tng tan hn he thong th ien t nhn t kha canh nha thiet ke nen toi a quyet
nh chon e tai xay dng ng dung th ien t theo mo hnh Client Server.
CHtONG 2 t THIE T NE A CAI AT tNG Dt NG
2.1.PHAN TCH VA THET KE C S D LIEU
2.1.1.Phan tch
C s d lieu c thiet ke n gian va dung vao muc ch quan ly danh
sach thanh vien ang ky s dung dch vu th ien t cua vietmail.

Sinh vien thc hien Nguyen Xuan Thanh Trang 55
o n tot nqhIep
Vi muc ch o CSDL ch bao gom hai thc the chnh la c the hien trong bang
sau :
STT Ten thc the Thuoc tnh
1 members
(thanh vien)
userid (ma thanh vien ), user_name (ten ang nhap),
password (mat khau), question (cau hoi), answer (cau tra
li), ho (ho), ten (ten), ngay (ngay sinh), thang (thang
sinh), nam (nam sinh), gioi_tinh (gii tnh)
nuoc (quoc gia), thanh_pho (thanh pho), thanh_pho_khac
(thanh pho khong thuoc Viet Nam), job (nghe nghiep),
thong_tin_khac (thong tin phu khac),
date(ngay ang ky)
2 addressbook
(So a chh)
addressid (ma so a ch), userid (ma thanh vien),
quickname (ten gi nh), ho (ho), ten (ten), email (a ch
email), phone (so ien thoai), diachi (a ch)
CAC LC O QUAN HE
T nhng thc the va thc the trung gian tren, bang cac nguyen tac
bien oi, ta xay dng thanh cac lc 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)
Lc o quan he d lieu

Sinh vien thc hien Nguyen Xuan 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
Phan tch chc nang
S o bieu dien chc nang cua he thong

2.1.2. Giai
thch cac chc nang cua he thong
- chc nang : ang ky thanh vien
y ngha : thu thap cac thong tin cua thanh vien nham muc ch quan ly
cung nh thiet lap cac thong so phuc vu cho viec gi va nhan th ien t cua thanh
vien
- chc nang : Quan ly so a ch
y ngha : tao mot danh sach boa gom cac a ch do thanh vien t tao
rong qua trnh s dung he thong.
2.1.3.bieu o luong d lieu( DFD Data flow Diagram)
.Bieu o luong d lieu mc khung canh (BFD)

Sinh vien thc hien Nguyen Xuan Thanh Trang 57
He thong quan ly thanh vien cua vietmail
ang ky thanh vien Quan ly so a ch
Yeu cau
Thanh vien
Thanh vien
ang ky
Thong bao
He
thong
vietmail
o n tot nqhIep
2.1.4. THIET KE HE THONG
2.1.4.1. Cac bang d lieu chnh
Ky hieu:
PK: Khoa chnh (Primary Key)
FK: Khoa ngoai (Foreign Key)
Bang d lieu: Member ( Thanh vien)
Ten trng Kieu DL o ln Rang buoc Khoa Ghi chu
userid int 4 Not Null PK
user_name varchar 20 Not Null Ten ang nhap
password char 10 Mat khau
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
Bangd lieu : Addresbook (so a ch)
Ten trng Kieu DL o ln Rang buoc 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 vien thc hien Nguyen Xuan Thanh Trang 58
o n tot nqhIep
diachi text
2.2. CAI AT MAILSERVER
2.2.1.Phng an to chc lu tr mail tren Server
e lu tr mail gi en tren server, moi trnh mailserver se co mot phng
an rieng e lu tr. Chang han co the lu tr thong iep mail nh la cac record
trong bang d lieu cua database hoac lu trong cung mot file text phan cach moi
thong iep bang mot dau hieu ac trng nao o. Tuy nhien viec lu thong iep
mail di dang cac file trong tng th muc tng ng cua cac User to ra n gian
hn va cung khong kem phan hieu qua. V vay trong o an nay toi quyet nh chon
phng an lu thong iep mail di dang tap tin tren a cuc bo. Trc khi cai at
cac n the Mail server ta can to chc th muc e SMTP server lu tr mail nh
sau:
Hnh : To chc th muc lu tr mail
Moi mailserver co the co nhieu ten domain cho a ch mail, cac ten domain
nay c to chc trong 1 th muc, ay ta chon vietmail.com la ten domain mail.
Luc nay mot a ch e mail hp le gi en SMTP server cua ta phai co dang nh
sau username@vietmail.com. He thong mail server con cho phep m rong them
vao cac domain mail khac. Danh sach cac ten domain main nam trong file
domain.txt.
Trong th muc email\data\vietmail.com cha danh sach cac th muc con ai
dien cho tng tai khoan (nh thanhboeing, xuanthu). Thong tin ang nhap cua tai
khoan c at trong file User.txt.
2.2.2.Cac n the cua mailserver
Trnh MailServer co cac n the c cai at bang ngon ng java va bao
gom cac phan chnh sau:

Sinh vien thc hien Nguyen Xuan Thanh Trang 59
o n tot nqhIep
- n the x ly tap lenh SMTP
- n the x ly tap lenh POP3
2.2.2.1. Xay dng SMTP Server
Nhiem vuchnh cua SMTP Server la s ly tap lenh SMTP, tra
lai ma loi do trnh khach gi len khong hp le. Tiep nhan d lieu va lu vao th
muc nhat nh e trnh chu POP3 Server co the truy xuat sau nay. SMTP server se
m socket lang nghe tren cong 25 (cong mac nh cua SMTP). Ta cung co the thay
oi so hieu cong trong file cau hnh email.properties. khi nhan c ket noi t
trnh khach, SMTP server se m mot tuyen (thread) la lp SMTPConection chu
trach nhiem phan tch cac lenh SMTP va nhan mail do trnh khach gi len. Lp
SMTP c cai at 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;
// Lay so hieu cong S MTP t file cau hnh
try {
portString = Server.properties.getProperty("smtp.port");
port = Integer.parseInt(portString);
} catch (NumberFormatException e) {
throw new Exception("Invalid 'smtp.port' - " + portString);
}
// M socket lang nghe ket noi t trnh khach
listenSocket = new ServerSocket(port);
// Mang lu cac ket noi t trnh khach
connections = new Vector(10, 10);

Sinh vien thc hien Nguyen Xuan Thanh Trang 60
o n tot nqhIep
}
public void removeConnection(SMTPConnection connection) {
connections.removeElement(connection);
}
public void run() {
// Lap vo tan ch nhan ket noi cho en khi co tn hieu dng
stopRequested = new Boolean(false);
while (true) {
synchronized (stopRequested) {
if (stopRequested.booleanValue())
break;
}
// chap nhan ket noi
try {
Socket s = listenSocket.accept();
System.out.println("Accept");
//Phan tch cac lenh SMTP cua trnh khach thc hien viec tiep nhan mail
SMTPConnection connection = new SMTPConnection(s, this);
connections.addElement(connection);
connection.start();
} catch (IOException e) {
e.printStackTrace();
break;
}
}
// ong ket noi
try {
listenSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Lp SMTPConnection ong vai tro chnh trong SMTPServer.
SMTPConnection phan tch cac lenh SMTP, nhan mail va lu va th muc tng
ng vi a ch mail cua User. Chng trnh mailserver cung cho phep kha nang

Sinh vien thc hien Nguyen Xuan Thanh Trang 61
o n tot nqhIep
relayva chuyen tiep mail. Cac mail co a ch khong thuoc domain do mailserver
quan ly se c lu va th muc queue (hay hang i). Chng trnh
SMTPRelayServer va SMTPRForrwardServer se x ly cac mail nay. Lp
SMTPConnection c cai at nh sau:
SMTPConnection.java
import java.io.*;
import java.net.*;
import java.util.*;
/**
* SMTPConnection : X ly cac lenh SMTP, lu mail vao th muc thch hp
*/
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;
}
/**
* ong ket noi hoan tat qua trnh nhan mail t trnh khach
* */
public void close() {
try {
socket.close();
} catch (Exception e) {
System.err.println("Exception trying to close SMTPConnection socket!");
e.printStackTrace(System.err);
}
}
/**
* X ly lenh SMTP DATA
*/

Sinh vien thc hien Nguyen Xuan 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);
// at chuoi nhan c vao StringBuffer
System.out.println(line);
data.append(line + "\n");
line = in.readLine();
}
// Lu thong iep
String messageId = Server.storage.saveMessage(users, data);
// Thong bao cho trnh khach thong iep a c lu
out.println("250 Message '" + messageId + "' accepted for delivery");
}
/**
* X ly lenh SMTP EHELO Lenh nay ch danh cho tap lenh cua SMTP m rong
no tng ng vi lenh bat tay HELO
**/
public void processEHLOCommand(StringTokenizer arguments) {
processHELOCommand(arguments);
}
/**
* X ly lenh 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 vien thc hien Nguyen Xuan Thanh Trang 63
o n tot nqhIep
/**
* X ly lenh 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 vien thc hien Nguyen Xuan 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 vien thc hien Nguyen Xuan 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 vien thc hien Nguyen Xuan 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 nam sau "TO:"
System.out.println(arg);
// Mot vai trnh khach gi lenh RCPT TO: khong co khoang trang sau TO
String address;
try{
address=arguments.nextToken(); //co khoang trang
} catch(Exception e){
address = arg.substring(3);//khong co khoang trang
}

Sinh vien thc hien Nguyen Xuan Thanh Trang 67
o n tot nqhIep
System.out.println("Receipt address :"+address);
// Thong thng a ch mail c gi theo dang <user@domainname>
if (address.substring(0, 1).equals("<") && address.substring(address.length() - 1,
address.length()).equals(">"))
address = address.substring(1, address.length() - 1);
// Lay ve thong tin cua user t a ch mail
User user = Server.storage.getUser(address);
// Bao loi cho trnh khach neu user khong ton tai
if (user == null) {
out.println("550 User " + address + " is not known");
return;
}
// a user vao danh sach phan phoi mail
users.addElement(user);
// Tra ve ma loi thanh cong
out.println("250 Recipient " + address + " ok");
}
public void processVRFYCommand(StringTokenizer arguments) {
out.println("252 VRFY command not implemented");
}
/**
* Phng thc run() lap lien tuc e ly lenh cho en khi hoan tat
*/
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 vien thc hien Nguyen Xuan Thanh Trang 68
o n tot nqhIep
while (!stopRequested) {
try {
if (processMAIL()) {
if (processRCPT())
processDATA();
}
} catch (IOException e) {
e.printStackTrace(System.err);
stopRequested = true;
}
}
// ong socket a m trc o
close();
// Loai bo ket noi trong danh sach SMTPServer
server.removeConnection(this);
}
}
Chng trnh Server.java di ay c dung e oc file cau hnh
email.properties, khi tao SMTPServer. Server.java cung lam nhiem vu khi tao
trnh chu POPServer. Trnh Server.java c cai at 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 vien thc hien Nguyen Xuan Thanh Trang 69
o n tot nqhIep
}
protected static boolean getProperties() {
try {
String fileName = "email.properties";
// Kiem tra s ton tai cua file cau hnh 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;
}
// oc cac thong tin cau hnh
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;
}
/**
* Chng trnh chnh
*/
public static void main(String[] args) {
if (!getProperties()) {
System.err.println("Could not get properties!");
return;
}

Sinh vien thc hien Nguyen Xuan Thanh Trang 70
o n tot nqhIep
System.out.println(Server.properties.getProperty("smtp.port"));
// Thiet lap ni lu tr mail
if (!setupStorage()) {
System.out.println("Could not setup storage!");
return;
}
// Khi tao SMTP server
if (!startSMTPServer()) {
System.err.println("Could not start SMTP server!");
return;
}
// Khi tao POP server
if (!startPOPServer()) {
System.err.println("Could not start POP server!");
return;
}
}
/**
*Phng thc khi tao ni lu 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 vien thc hien Nguyen Xuan Thanh Trang 71
o n tot nqhIep
}
// Tao the hien cua lp
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();
}
/**
* Khi tao 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;
}
/**
* Khi tao 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 vien thc hien Nguyen Xuan Thanh Trang 72
o n tot nqhIep
}
return true;
}
}
2.2.2.2. Xay dng POP3 Server
Trnh POP3 Server gom hai phan, phan POPServer chu trach nhiem m
socket va lang nghe ket noi t trnh khach gi len theo cong 110 (cong mac nh
cua giao thc POP3). Khi nhan c ket noi, POPServer yeu cau lp
POPCnnection phan tch cac lenh cua giao thc POP3 va gi mail ve cho trnh
khach. Lp POP3 c cai at 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;
// Lay so hieu cong t file cau hnh
try {
portString = Server.properties.getProperty("pop.port");
port = Integer.parseInt(portString);
} catch (NumberFormatException e) {
throw new Exception("Invalid 'pop.port' - " + portString);
}
// Lang nghe tren socket s ket noi t trnh khach
listenSocket = new ServerSocket(port);
// Tao mang cha danh sach cac ket noi
connections = new Vector(10, 10);
}

Sinh vien thc hien Nguyen Xuan Thanh Trang 73
o n tot nqhIep
public void removeConnection(POPConnection connection) {
}
/**
* X ly ket noi
*/
public void run() {
// Lap vo tan cho en khi co yeu cau dng
stopRequested = new Boolean(false);
while (true) {
synchronized (stopRequested) {
if (stopRequested.booleanValue())
break;
}
// Chap nhan ket noi do trnh khach gi len
try {
Socket s = listenSocket.accept();
//Yeu cau lp POPConnection x ly giao thc phuc vu trnh khach
POPConnection connection = new POPConnection(s, this);
connections.addElement(connection);
connection.setDaemon(true);
connection.start();
} catch (IOException e) {
e.printStackTrace();
break;
}
}
// ong ket noi
try {
listenSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Lp POPConnection.java chu trach nhiem chnh trong viec x ly cac lenh
cua giao thc POP3. Lp POPConnection c cai at nh sau :

Sinh vien thc hien Nguyen Xuan 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);
}
}
// em so mail co trong hop th
protected int countMessages() {
if (messages == null)
return 0;

Sinh vien thc hien Nguyen Xuan 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;
}
/**
* Lay noi dung mail da vao so th t cua mail lu trong hop 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 vien thc hien Nguyen Xuan 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 lenh PASS kiem 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;
}
// Kiem tra quyen ang nhap
user = Server.storage.login(userName, password);
if (user == null) {
out.println("-ERR invalid user or password");
state = ENTER_USER;
} else {

Sinh vien thc hien Nguyen Xuan Thanh Trang 77
o n tot nqhIep
// user a ang nhap tra ve danh sach cac mail co trong hop 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 lenh 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 lenh LIST
*/

Sinh vien thc hien Nguyen Xuan 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 lenh NOOP Lenh NOOP cua POP3 khong lam g ca, muc ch ch
e trnh khach xem ket noi con hieu lc hay khong
*/
protected void processNOOP(StringTokenizer arguments) {
out.println("+OK");
}
/**
* X ly lenh 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 vien thc hien Nguyen Xuan Thanh Trang 79
o n tot nqhIep
out.println("+OK Goodbye, " + user.getName());
stopRequested = true;
}
/**
* X ly lenh RETR tra ve noi 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");
// oc d lieu mail
StringBuffer buffer = Server.storage.getMessageData(message);
BufferedReader reader = new BufferedReader(new
StringReader(buffer.toString()));
// oc tng dong
boolean done = false;
try {
while (reader.ready() && (!done)) {
String line = reader.readLine();
if (line == null)
break;
// Dau cham ket thuc
if (line.length() >= 1) {
if (line.substring(0, 1).equals("."))
line = "." + line;
}
// Gi d lieu ve trnh khach

Sinh vien thc hien Nguyen Xuan 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 lenh 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 lenh STAT
*/
protected void processSTAT(StringTokenizer arguments) {
out.println("+OK " + countMessages() + " " + getMessagesSize());
}
/**
* X ly lenh TOP tra ve trnh khach cac mail header
*/
protected void processTOP(StringTokenizer arguments) {
if (!arguments.hasMoreTokens()) {
out.println("-ERR syntax: TOP <msg> <lines>");
return;
}

Sinh vien thc hien Nguyen Xuan 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 vien thc hien Nguyen Xuan 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 cac lenh cua giao thc 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 vien thc hien Nguyen Xuan 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());
}
}
}
/**
* Nhan ket noi va cac lenh POP3 gi len t trnh khach
*/
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 vien thc hien Nguyen Xuan 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 lenh tuy theo trang thai ang nhap cua 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 vien thc hien Nguyen Xuan Thanh Trang 85
Change
Password
o n tot nqhIep
e.printStackTrace(System.err);
stopRequested = true;
}
}
// ong ket noi
close();
server.removeConnection(this);
}
public void setServer(POPServer server) {}
}
2.3.CAI AT MAILCLIENT
Cau truc cua Website
Phan MailClient c thiet ke di dang Web dung Java Server Page nen
c goi la mot WebMail. Trang Web va qua trnh s dung mailclient co the c
hnh dung qua s o va ac ta i ay

Sinh vien thc hien Nguyen Xuan Thanh Trang 86
HomePage
ang Ky
Thanh Vien
Login
Help
Menumail
Inbox AddressBook Option
Add Edit Review
Inf
Change
Password
Hnh cau truc Website
o n tot nqhIep
1.ang nhap he thong :
Lan au tien s dung CT e gi nhan mail, chung ta phai ang ky mot
account mi cho rieng mnh, ngha la chung ta phai co mot username va password
rieng cho mnh nham phan biet nhng ngi s dung email khac nhau va bao mat
th cua tng ngi.
_ ang nhap username va password trc khi vao he thong .
Neu la member: ban co the s dung CT gi /nhan th .
Neu la guest: ban phai ang ky thanh vien
2.ang ky thanh vien :
Cho lan au tien ban ang nhap vao he thong , ghi cac thong tin ca nhan,
username va password cua ban.
3.Cac loai Address Book . ieu chnh thong tin trong Personal Address Book :
(User co quyen T, X, S addressbook cua mnh)
Cac thong tin ve a ch mail cua cac Client c lu tr trong cac so a ch.
Moi ngi s dung mail thng co mot so a ch ca nhan (Personal Address Book -
PAB) cua rieng mnh va c lu tr trong o a cuc bo .
Cac thong tin can thiet khi them mot a ch E-mail vao PAB:
_ RealName la ho ten ay u cua ngi co a ch mail can them vao PAB
_ E-mail Address a ch E-mail chnh xac cua ngi can them vao.
Ngoai ra, chung ta co the them vao nhng a ch email khac, so phone,
mobile va a ch nha rieng
4.Review Account Information:
_ User xem lai thong tin ca nhan a ang nhap va AddressBook cua mnh.
_ Co the thay oi Password (changepassword.asp) khi ban muon at lai mot
password mi cho mnh.

Sinh vien thc hien Nguyen Xuan Thanh Trang 87
o n tot nqhIep
5.Thay oi Pass :
_ Old Password: nhap lai pass hien tai.
_ New password: nhap pass mi. Ban co the s dung cac ky t ch, so va ca he
thong cham cau, nhng khong the s dung khoang trang.
_ Nhap lai password mot lan na. Neu so trung, viec thay oi password xem
nh thanh cong.
6.Kiem tra th:
Vung noi dung cac Folder se xuat hien tieu e cac th trong folder o. Cac
th cha c oc thng c trnh bay khac vi th a c oc. Thong thng
phan tieu eth gom cac noi dung nh sau:
_ From: Ten ngi gi, noi dung xuat hien ay khong phai la a ch e-
mail cua ngi gi ma la ho ten cua ngi gi.

Sinh vien thc hien Nguyen Xuan 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 dch tong quat cua la thu
truoc khi quyet dinh co doc thu hay khong.
_ Date : Ngay gio nhan thu
_ Size: Kch thuoc la thu (thuong tnh 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 pha 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 dch 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. Ngha 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 chnh 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 mot so trng hp can a them toan bo noi dung mot tap tin ang co
san tren a cuc bo vao th e gi en ngoi nhan. Cong viec nay c goi la
Attach file vao th.
Can chu y rang viec attach mot tap tin vao mail can phai c thc hien ong
bo gia ngi gi , ngi nhan va ng truyen th.Neu khong co s ong bo, noi
dung cua tap tin c attach co ngi nhan khong oc c. Ly do cua viec nay la
do noi dung cua tap tin c attach se c ma hoa theo UUENCODE hay theo
MIME (Multipurpose Internet Mail Extensions).
Thong thng e giam thi gian truyen th, cac tap tin can attach vao th se
c nen trc khi thc hien thao tac attach. Cach nen thong dung la ZIP.
Cac tap tin c gi kem co the lu thanh mot tap tin rieng trong ia cuc bo
cua ngi s dung. Thong thng dung lng tap tin gi kem khong nen qua 1MB,
neu ln hn ta can tach ra gi no trong nhieu th.
10. Download / Upload file
Mot so giao dien chnh
Trang ang nhap cua vietmail

Sinh vien thc hien Nguyen Xuan Thanh Trang 90
o n tot nqhIep
Menu chnh
TAI LIEt THAM NHAO
Phan tch, thiet ke va cai dat he thong thong tin quan ly
- Hieu dnh: 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 trnh Java the nao? - Hoang Ngoc Giao
Java lap trnh 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

You might also like