You are on page 1of 91

o n tot nghIeg

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 nghIeg
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 nghIeg
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 nghIeg
LOI CAM ON
.:o || |o| x|i |ii ||ii| ia oi i ||iy o _|io ||oi li| |o li|
:oi_ .i |.:oi_ li| |o |.y 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 j.i a |o| o || ||: ||i |o| .oi ao ii iiy.
La x|i |ii ||ii| ia oi ||iy `ii | !|i| ai |ii ||i| _|. ao vi |:oi_
aii a |oii |i| .oi ao ii iiy. !_oi| .i |o| .i_ x|i ia oi |i| i |ii | ai
_|. ao |o| |.oi_ -.o| j.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 iiy .i |o| ||oi_ || |.ii| ||o| i|:i_
|||. -o|. ||i| v| viy. |o| .i| aoi_ i|ii a:o -: _o y .i i ||iy o _|io .i_
i|: |ii | _ii xi vi i|:i_ i i|ii |iy |o |: o j.ii |ia ai ||i| v: a:o
|.|i| |iy |.oi_ .oi ao ii iiy.
hi !o|. ||ii_ iia 2..
Nguyen Xuan Thanh

Sinh vien thc hien Nguyen Xuan Thanh Trang 4
o n tot nghIeg
LOI NOI At
!_iy iiy vo| -: |i| |.|i aii| a .i ||i |o vi oi_ i_| li|.i|. |i.
i|: ao| i_:o| a. ||iy .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 iiy. l|| v. iiy |o | i i i|ii |iy |o |:
|.io ao| ||: vo| i|i. ||oi_ j.i aii_ li|.i|. !||. i_:o| -: a.i_ li|.i| || a
a.i_ a|| v. iiy.
|oi_ ||:oi_. ||| -: a.i_ a|| v. ||: ||i a|i |:. i_:o| -: a.i_ ||:oi_ || |||
j.ii |ia xa | ||oi_ |i |.oi_ ai ||: ||i i|: || iio. `| viy. |o ( i_:o| -:
a.i_) ao| || ||iy a:o ao| i:i .i :i_ a.i_ a|| v. Lai|| vi |ii :i_ a.i_ ao
a:o _o| |i !i|| ||i|. |iy |i -: a.i_ a|| v. ||: ||i aiy |.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 iiy |o|
x|i |.|i| |iy ao| i| o |ii | ||oi_ |. v. v| |..yi ||: ||i a|i |: |.i o
-o ||a ||. v i ao ||i| |..yi ||oi_ ||: ||i. i _|io ||: |..yi ||oi_ |.ii.
i |oi| aoi_ .i ao| | !i|| .v..
`| ||o| _|ii o |ii vi o .i| i||. i vii a o ||i j.ii. ao ao ao ii iiy
|| |.|i| |iy 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 nghIeg
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. GII THIEU CHUNG VE INTERNET
Mng Internet l mt tp hp gm hng vn h mng trn khp th gii, c
pht trin vo thp k by mi. S lng my tnh ni mng v s lng ngi truy cp
vo mng Internet trn ton th gii ang ngy cng tng ln nhanh chng, c bit t
nm 1993 tr i. Mng Internet khng ch cho php chuyn ti thng tin nhanh chng
m cn gip cung cp thng tin, n cng l din n v l th vin ton cu u tin.
Mng Internet c xut x nm 1969 t mng my tnh ton cc ARPANET do
c quan qun l cc d n nghin cu cc cng trnh nghin cu khoa hc tin tin
thuc B Quc phng M (US Defenses Advance Research Projects Agency - gi tt
l DARPA) ti tr. T gia nm 1970, trung tm DARPA hng ti mng Internet vi
k thut chuyn mch gi qua mng v tuyn v thng tin v tinh. Nm 1980, DARPA
th nghim dng giao thc TCP/IP v c cc trng i hc M ghp ni vi h
iu hnh UNIX BSD (Berkely Software Distribution).
H iu hnh UNIX l h pht trin mnh vi rt nhiu cng c h tr v m
bo cc phn mm ng dng c th chuyn qua li trn cc h my khc nhau (my
mini, my tnh ln v hin nay l my vi tnh). Bn cnh h iu hnh UNIX BSD
cn cung cp nhiu th tc Internet c bn, a ra khi nim Socket v cho php chng
trnh ng dng thm nhp vo Internet mt cch d dng.
Cu trc mng Internet gm c:
Tng ng dng: TELNET, FTP, SMTP;
Tng giao vn: TCP, UDP;
Tng Internet: Internet Protocol;
Tng mng: X.25, Ethernet, FDDI. . .;
Tng vt l: l cc mi trng truyn tin khc nhau.

1.2. HO GIAO THC TCP/IP
TCP/IP l h ca cc giao thc c s dng cho vic truyn thng my tnh. Cc
ch ci c vit tt bi cc t (Transmission Control Protocol/Internet Protocol), hai

Sinh vien thc hien Nguyen Xuan Thanh Trang 6
0 3 4 7 8 15 16 31
o n tot nghIeg
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 nghIeg
TCP/IP thc cht l mt h giao thc cng lm vic vi nhau cung cp phng
tin truyn thng lin mng. Trong phn ny chng ta s xem xt giao thc IP, giao
thc TCP v mt s ng dng tng trn nh Telnet, FTP, DNS, SMTP. . .
1.3. GIAO THC LIEN MANG IP
Mc ch chnh ca IP l cung cp kh nng kt ni cc mng con thnh lin
mng truyn d liu. Vai tr ca IP tng t vai tr ca giao thc tng mng trong
m hnh OSI.
IP l mt giao thc kiu khng lin kt (connectionless) c ngha l khng
cn c giai on thit lp lin kt trc khi truyn d liu. n v d liu dng trong IP
c gi l datagram, c khun dng ch ra trong hnh bn di.
ngha ca cc tham s nh sau:
VER (4 bits): ch version hin hnh ca IP c ci t
IHL (4 bits): ch di phn u (Internet Header Length) ca datagram,
tnh theo n v t (word = 32 bits). di ti thiu 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 thc 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 kin trc ISO v TCP/IP
Header
0 3 4 7 8 15 16 31
Khun dng ca IP datagram
0 1 2 3 4 5 6 7
o n tot nghIeg
Source Address
Destination Address
Options + Padding
Data
(max: 65.535 bytes)
Type of service (8 bits): c t cc tham s v dch v, c dng c th nh sau:

Preceden
ce
D T R Reser
ved
trong :
Precedence (3 bits): ch th v quyn u tin gi datagram, c th l:
111 - Network Control (cao nht) 011 - Flash
110 - Internetwork Control 010 - Immediate
101 - CRITIC/ECP 001 - Priority
100 - Flas Override 000 - Routine (thp nht)
D (Delay) (1 bit): ch tr yu cu
D = 0 tr bnh thng
D = 1 tr thp
T (Throughput) (1 bit): ch thng lng yu cu
T = 0 thng lng bnh thng
T = 1 thng lng cao
R (Reliability) (1 bit): ch tin cy yu cu
R = 0 tin cy bnh thng
R = 1 tin cy cao
Total Length (16 bits): ch di ton b datagram, k c phn header
(tnh theo n v bytes).
Indentification (16 bits): cng vi cc tham s khc (nh Source Address
v Destination Address) tham s ny dng nh danh duy nht cho mt
datagram trong khong thi gian n vn cn trn lin mng.
Flags (3 bits): lin quan n s phn on (fragment) cc datagram, c
th l:

0 D M

Sinh vien thc hien Nguyen Xuan Thanh Trang 9
0 1 2
o n tot nghIeg
F F
Bit 0: reserved - cha s dng , lun ly gi tr 0
Bit 1 (DF) = 0 (May Fragment)
= 1 (Dont Fragment)
Bit 2 (MF) = 0 (Last Fragment)
= 1 (More Fragment)
Fragment Offset (13 bits): ch v tr ca on (fragment) trong
datagram, tnh theo n v 64 bits, c ngha l mi on (tr on cui cng)
phi cha mt vng d liu c di l bi s ca 64 bits.
Time to live (8 bits): qui nh thi gian tn ti (tnh bng giy) ca datagram
trong lin mng trnh tnh trng mt datagram b qun trn lin mng. Thi
gian ny c cho bi trm gi v c gim i (thng qui c l 1 n v) khi
datagram i qua mi router ca lin mng.
Protocol (8 bits): ch giao thc tng trn k tip s nhn vng d liu
trm ch (hin ti thng l TCP hoc UDP c ci t trn IP).
Header Checksum (16 bits): m kim sot li 16 bits theo phng php
CRC, ch cho vng header.
Source Address (32 bits): a ch ca trm ngun.
Destination Address (32 bits): a ch ca trm ch.
Options ( di thay i): khai bo cc options do ngi gi yu cu.
Padding ( di thay i): vng m, c dng m bo cho phn
header lun kt thc mt mc 32 bits.
Data ( di thay i): vng d liu, c di l bi s ca 8 bits, v ti
a l 65535 bytes.
S a ch ho nh danh cc trm (host) trong lin mng c gi l a
ch IP 32 bits (32- bit- IP address). Mi a ch IP c di 32 bits c tch thnh 4
vng (mi vng 1 byte), c th c biu th di dng thp phn, bt phn, thp lc phn
hoc nh phn. Cch vit ph bin nht l dng k php thp phn c du chm (dotted
decimal notation) tch cc vng. Mc ch ca a ch IP l nh danh duy nht
cho mt host bt k trn lin mng. Do t chc v ln ca cc mng con (subnet)
ca lin mng c th khc nhau, ngi ta chia cc a ch IP thnh 5 lp, k hiu l A,
B, C, D v E, vi cu trc c ch ra trong hnh bn di.
0 1 7 8 15 16 23 24 31
0 netid
1 0 netid Hostid
1 1 0 netid hostid

Sinh vien thc 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 nghIeg
1 1 1 0 Multicast address
1 1 1 1 0 Reserved for future use
Cu trc ca cc lp a ch IP
Lp A cho php nh danh ti 126 mng, vi ti a 16 triu host trn mi
mng. Lp ny c dng cho cc mng c s trm cc ln.
Lp B cho php nh danh ti 16384 mng, vi ti a 65534 host trn
mi mng.
Lp C cho php nh danh ti 2 triu mng, vi ti a 254 host trn mi
mng. Lp ny c dng cho cc mng c t trm.
Lp D dng gi IP datagram ti mt nhm cc host trn mt mng.
Lp E d phng dng trong tng lai.
V d:
00001
010
00000
000
00000
000
00000
000
10000
000
00000
011
00000
010
00000
011
11000
000
00000
000
00000
001
11111
111
Mt a ch c hostid (host identifier) bng 0 c dng hng ti mng nh
danh bi vng netid (network identifier). Ngc li, mt a ch c vng hostid gm
ton s 1 c dng hng ti tt c cc host ni vo mng netid, v nu vng netid
cng gm ton s 1 th n hng ti tt c cc host trong lin mng.
Trong nhiu trng hp, mt mng c th c chia thnh nhiu mng con
(subnet), lc c th a thm cc vng subnetid nh danh cc mng con. Vng
subnet c ly t hostid, c th i vi 3 lp A, B, C nh sau (hnh bn di).
Netid Subnetid Hostid
7 8 15 16 23 24
Netid Subnetid Hostid
7 8 15 16 23 24
Netid Subn Host

Sinh vien thc 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 hng n tt c cc host
o n tot nghIeg
etid id
B sung vng subnetid
Cn lu rng cc a ch IP c dng nh danh cc host v mng tng
mng ca M hnh OSI, v chng khng phi l cc a ch vt l (hay a ch MAC -
Media Access Control) ca cc trm trn mt mng cc b (Ethernet,Token
Ring...). Trn mt mng cc b nh vy, hai trm ch c th lin lc vi nhau nu chng
bit a ch vt l ca nhau. Nh vy, vn t ra l phi thc hin nh x gia a ch
IP (32 bits) v a ch vt l (48 bits) ca mt trm. Giao thc ARP (Address
Resolution Protocol) c xy dng chuyn i t a ch IP sang a ch vt l
khi cn thit. Ngc li, giao thc RARP (Reverse Address Resolution Protocol) c
dng chuyn i t a ch vt l sang a ch IP. Ch rng c ARP v RARP u
khng phi l b phn ca IP. IP s dng n chng khi cn.
Mt giao thc khc cng lin quan trc tip n IP, l ICMP (Internet Control
Message Protocol). Giao thc ny thc hin truyn cc thng bo iu khin (bo co
v cc tnh trng li trn mng,...) gia cc gateway hoc trm ca lin mng. Tnh
trng li c th l: mt datagram khng th ti c ch ca n, hoc mt router khng
b nh m lu v chuyn mt datagram,... Mt thng bo ICMP c to v
chuyn cho IP. IP s bc (encapsulate) thng bo vi mt IP header v truyn n
cho router hoc trm ch.
Chng ta c th tm tt cc bc thc hin bi mt thc th IP nh sau:
i vi thc th IP trm ngun, khi nhn c mt primitive SEND t
tng trn , n thc hin cc bc sau y:
1. To mt IP datagram da trn cc tham s ca primitive SEND
2. Tnh checksum v ghp vo header ca datagram.
3. Ra quyt nh chn ng: hoc l trm ch nm trn cng mng hoc mt
gateway s c chn cho chng tip theo.
4. Chuyn datagram xung tng di truyn qua mng.
i vi gateway, khi nhn c mt datagram qu cnh, n thc hin cc
ng tc sau:
1. Tnh checksum, nu bt cp th loi b datagram.
2. Gim gi tr ca tham s Time-to-Live. Nu thi gian ht th loi b
datagram.
3. Ra quyt nh chn ng.
4. Phn on datagram, nu cn.
5. Kin to li IP header, bao gm gi tr mi ca cc vng Time-to-Live,
Fragmentation v Checksum.
6. Chuyn datagram xung tng di truyn qua mng.
Cui cng, khi mt datagram c nhn bi thc th IP trm ch, n s
thc hin cc cng vic sau:
1. Tnh checksum. Nu bt cp th loi b datagram.

Sinh vien thc hien Nguyen Xuan Thanh Trang 12
o n tot nghIeg
2. Tp hp cc on ca datagram (nu c phn on).
3. Chuyn d liu v cc tham s iu khin ln tng trn bng cch dng
primitive DELIVER.
1.4. GIAO THC IEU 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
Khun dng ca TCP segment.
TCP l mt giao thc kiu c lin kt (connection - oriented), ngha l cn phi
thit lp lin kt (logic) gia mt cp thc th TCP trc khi chng trao i d liu vi
nhau.
n v d liu s dng trong TCP c gi l segment (on d liu), c khun
dng m t trong hnh bn di.
Cc tham s trong khun dng trn c ngha nh sau:
Source Port (16 bits): s hiu cng ca trm ngun.
Destination Port (16 bits): s hiu cng ca trm ch.
Sequence Number (32 bits): s hiu ca byte u tin ca segment tr
khi bit SYN c thit lp. Nu bit SYN c thit lp th Sequence Number l
s hiu tun t khi u (ISN) v byte d liu u tin l ISN+1. Tham s ny
c vai tr nh tham s N(S) trong HDLC.
Acknowledgment Number (32 bits): s hiu ca segment tip theo m
trm ngun ang ch nhn. Ngm bo nhn tt (cc) segment m trm
ch gi cho trm ngun - Tham s ny c vai tr nh tham s N(R) trong
HDLC.
Data offset (4 bits): s lng t - 32 bit (32 bit words) trong TCP header
(tham s ny ch ra v tr bt u ca vng d liu).

Sinh vien thc hien Nguyen Xuan Thanh Trang 13
bit 0 15 16 31
o n tot nghIeg
Reserved (6 bits): dnh dng trong tng lai.
Control bits (cc bit iu khin):
T tri sang phi:
URG: vng con tr khn (Urgent Pointer) c hiu lc
ACK: vng bo nhn (ACK number) c hiu lc
PSH: chc nng PUSH
RST: khi ng li (reset) lin kt
SYN: ng b ho cc s hiu tun t (sequence number)
FIN: khng cn d liu t trm ngun
Window (16 bits): cp pht credit kim sot lung d liu (c ch ca
s). y chnh l s lng cc byte d liu, bt u t byte c ch ra trong
vng ACK number, m trm ngun sn sng nhn.
Checksum (16 bits): m kim sot li (theo phng php CRC) cho ton
b segment (header + data).
Urgent Pointer (16 bits): con tr ny tr ti s hiu tun t ca byte i
theo sau d liu khn, cho php bn nhn bit c di ca d liu khn.
Vng ny ch c hiu lc khi bit URG c thit lp.
Options ( di thay i): khai bo cc Options ca TCP, trong c
di ti a ca vng TCP data trong mt segment.
Padding ( di thay i): Phn chn thm vo header bo m phn
header lun kt thc mt mc 32 bits. Phn thm ny gm ton s 0.
TCP data ( di thay i): cha d liu ca tng trn, c di ti a
ngm nh l 536 bytes. Gi tr ny c th iu chnh bng cch khai bo
trong vng options.
Mt tin trnh ng dng trong mt host truy nhp vo cc dch v ca TCP cung
cp thng qua mt cng (port). Mt cng kt hp vi mt a ch IP to thnh mt
socket duy nht trong lin mng. Dch v TCP c cung cp nh mt lin kt logic
gia mt cp socket. Mt socket c th tham gia nhiu lin kt vi cc socket xa
khc nhau. Trc khi truyn d liu gia hai trm cn phi thit lp mt lin kt TCP
gia chng v khi khng cn nhu cu truyn d liu th lin kt s c gii phng.
Cng ging nh cc giao thc khc, cc thc th tng trn s dng TCP thng qua
cc hm dch v nguyn thu (service primitives), hay cn gi l cc li gi 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 VI WINDOWS SOCKETS

Sinh vien thc hien Nguyen Xuan Thanh Trang 14
o n tot nghIeg
Windows NT l mt h iu hnh mnh, cho php tn dng ti a kh nng ca
my tnh loi 32 bit, cung ng hng lot cc dch v mng trn mi trng Intranet v
Internet. Hin nay Windows NT c s dng tng i ph bin cc c quan; doanh
nghip Vit Nam.
Giao thc truyn thng TCP/IP c dng bi h iu hnh UNIX v mng
Internet, cc my trn mng NT c th giao tip vi cc my trn mng khc,
Windows NT cng cung cp giao thc ny. Ngoi mt s lnh dng giao thc TCP/IP
c vit sn nh: ftp, telnet, finger..., Windows NT cho php ngi lp trnh pht trin
cc ng dng khai thc k thut TCP/IP thng qua mt th vin tn l Windows
Sockets.
C ba l do chnh ngi lp trnh s dng k thut TCP/IP:
C th vit cc ng dng trn Windows NT ni vo mng UNIX v khai thc cc
dch v c sn trn .
To ra cc dch v trn my Windows NT cc my UNIX c th khai thc nhng
dch v ny.
Vit cc chng trnh cho php cc my Windows NT giao tip trn h thng mng
Internet.
2.2. MOT SO KHAI NIEM C BAN
2.2.1 .a ch Internet
Trong h thng mng Internet, mi my u c mt tn v mt a ch IP (cng
gi l a ch Internet). V d nh, mt my NT c tn l ntsvr.csc.hcmu.vn v a ch l
192.48.94.200. Tn hay a ch IP u xc nh duy nht mt my trong h thng
mng Internet. Khi lp trnh, chng ta c cc hm chuyn i t tn sang a ch IP
v ngc li.
2.2. 2. Khai niem socket va port
Mt socket l mt thit b truyn thng hai chiu tng t nh tp tin, chng ta c
th c hay ghi ln n, tuy nhin mi socket l mt thnh phn trong mt mi ni no
gia cc my trn mng my tnh v cc thao tc c/ghi chnh l s trao i d
liu gia cc ng dng trn nhiu my khc nhau.
Trong giao thc truyn thng TCP, mi mi ni gia hai my tnh c xc nh
bi mt port, khi nim port y khng phi l mt cng giao tip trn thit b vt l
m ch l mt khi nim logic trong cch nhn ca ngi lp trnh, mi port c tng
ng vi mt s nguyn dng.
Hnh bn di minh ha cch giao tip gia hai my tnh trong giao thc truyn
thng TCP. My A to ra mt socket v kt buc (bind) socket ny vi port X (tc l
mt s nguyn dng c ngha cc b trong my A), trong khi my B to mt
socket khc v mc vo (connect) port X trong my A.

Sinh vien thc hien Nguyen Xuan Thanh Trang 15
o n tot nghIeg
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 nghIeg

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 nghIeg
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 nghIeg
tc vi h thng th in t. Cc MTAs l cc trnh tin ch hot ng ch nn
(background) thc hin cc nhim v cn thit nh tip nhn th in t v chuyn th qua
cc h thng.
c bit, cc h thng th in t h tr nm chc nng c bn, c m t di y:
1. Composition: X l vic to cc thng ip v tr li. Cho php bt c trnh
son tho no c th c s dng cho phn thn ca thng ip, cc h
thng c th t n m trch vic nh a ch v ch s cc trng tiu
(header fields) c km theo cng vi mi thng ip. V d nh, khi tr li
mt thng ip , h thng th in t c th tch a ch ca ngi gi t cc
th c gi n v t ng chn n vo cc trng thch hp trong phn hi m
(reply).
2. Transfer: Lm nhim v chuyn cc thng ip t ngi gi n ni ngi
nhn. Trong phn ny, vic chuyn cc thng ip yu cu phi thit lp mt
kt ni n ch (ngi nhn) hay mt s thao tc ca thit b nh xut thng
ip v kt thc vic kt ni. H thng th in t lm vic ny mt cch t
ng m khng cn c mt s can thip no ca ngi s dng.
3. Reporting: Buc phi thc hin bo cho ngi gi nhng g xy ra i vi
thng ip va gi l tnh hun gi n ch cha? hoc vic gi b
hu b? hoc th b lc?.
4. Displaying: Nhng thng ip gi n c yu cu lm sao mi ngi c
th c c th ca h. i khi ngi ta yu cu qu trnh chuyn i hay mt
trnh hin th c bit h tr, v d nh, nu thng ip c dng mt tp
PostScript hay ting ni c s ha km theo trong thng ip gi n.
5. Disposition: L bc cui cng lin quan n nhng g ngi nhn thc hin
i vi thng ip sau khi nhn n. Nhng kh nng c th l nm n i
trc khi c, nm n i sau khi c, lu n, v ..v. N cng s c th thu nhn
c li vi cc thng ip c lu li, chuyn tip chng hoc x l
chng bng nhng phng php khc nhau khi c yu cu ca ngi s dng.
Thm vo cc dch v ny, hu ht cc h thng th in t cung cp nhiu
c tnh nng cao khc nhau. Mt s c tnh tiu biu nh, khi ngi ta mun chuyn th
hay khi h ngh xa hn v cc chi tit v thi gian , c l h mun th ca h c
chuyn tip, chnh v th m h thng thc hin iu ny mt cch t ng.
Hu ht cc h thng cho php ngi s dng to cc hp th (mailboxes) lu
tr cc th chuyn n (incoming email). Cc lnh c ngi ta yu cu to v hy b
cc hp th, kim tra cc ni dung hp th, chn v xa cc thng ip khi hp th, v..v.
Nhng ngi gim c cng ty thng cn gi mt thng ip n mi ngi trong
s nhng ngi cp di, nhng khch hng, hay n cc nh cung cp. Th iu ny a
ra mt tng v danh sch th (mailing list), n l mt danh sch cc a ch th in t.
Khi mt thng ip c gi n mailing list, cc bn sao ging ht c pht n mi
ngi c a ch trn danh sch.
Mt tng quan trng khc l th in t c ng k, cho php ngi gi
(sender or originator) bit th ca h n. Vic thng bo t ng ca cc th khng
c pht i mt cch lun phin ngi ta c th bit. Trong bt k trng hp no, ng-
i gi nn c mt s iu khin thng qua thng bo nhng g xy ra.

Sinh vien thc 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 th v thng ip (a) Th bu in. (b) Th in t
o n tot nghIeg
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 nghIeg
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 nghIeg
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 nghIeg
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 nghIeg
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 nghIeg
<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 nghIeg
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 nghIeg
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 nghIeg

Sinh vien thc hien Nguyen Xuan Thanh Trang 28
o n tot nghIeg

thc
hin c
kh
nng chuyn tip th tn trn mng, cn phi cung cp tn ca my ch cng nh tn ca
hp th (mailbox) cui cng cn gi ti cho SMTP Server.
SMTP cung cp mt tp cc lnh cho php cc my tnh trn mng c th trao i
thc tip cc thng tin theo mt chun qui nh. Nh vo tp lnh ny, cc h thng th
tn khc nhau c th trao i d liu th c vi nhau. Mi lnh u c cng chiu di
bn k t, hu ht u c tham s km theo.
Cc lnh s dng trong vic gi/nhn th tn tun theo mt c php kht khe. l
cc thng tin phn hi lun dng m s km theo l cc m t v kt qu thc hin
lnh. Cc lnh v m phn hi khng phn bit ch hoa v ch thng. iu ny c
ngha l mt lnh hoc mt thng bo phn hi c th dng in hoa, in thng hoc
trong bt k mt kiu kt hp no gia in hoa v in thng.
Lu rng iu ny l khng ng vi tn ca user mailbox. Vi mt s my
ch, user name l phn bit ch hoa, thng v vic thc hin cc lnh SMTP cn phi
quan tm m bo s thc hin ng n trong trng hp ny. Tn ca my ch
cng khng phn bit ch hoa, thng.
Cc lnh v thng tin phn hi c xy dng bi cc k t t b m ASCII. Khi
dch v giao vn cung cp knh truyn thng 8 bit, mi k t truyn i s ch s dng 7,
bit cao nht s c xo v 0.
Mi phin giao dch SMTP phi tri qua mt s giai on. Cc giai on c
thc hin thng qua cc th tc SMTP, km theo l cc thng tin phn hi:
Th tc MAIL.
Th tc FORWARDING.
Cc th tc MAILING v SENDING.
Cc th tc OPENING v CLOSING.
Cc m tr li ca lnh SMTP.
1.5.3. Th tc Mail
bt u mt phin giao dch th tn th cn phi thc hin th tc MAIL. N
bao gm 3 bc:
Lnh MAIL c gi i km theo l tham s v a ch ngi gi th.

Sinh vien thc hien Nguyen Xuan Thanh Trang 29
File
System
File
System
SMTP
Commands / Replies
Sender
SMTP
Sender
SMTP
Sender - SMTP
M hnh tng qut s dng giao thc SMTP
Receiver
SMTP
Receiver
SMTP
Receiver - SMTP
and Mail
File
System
File
System
User
User
o n tot nghIeg
Lnh RCPT c gi i km theo l tham s v a ch ngi nhn th. C th thc
hin nhiu ln lnh ny trong trng hp mun gi th cho nhiu ngi.
Lnh DATA c gi i xc nhn bt u gi d liu ca th.
Di y l phn chi tit v 3 lnh trn.
a. Lnh MAIL FROM <reverse-path>
Tham s: l mt xu k t nh danh mailbox ca ngi gi th.
Hn ch: Ch c th thc hin khi cha thc hin chnh lnh ny.
Chi tit: Lnh ny dng xc nhn ngi gi th ng thi thit lp mt phin
giao dch SMTP vi Receiver-SMTP (Server). N a ra ng dn <reverse-
path> s dng trong trng hp phin giao dch khng thc hin thnh cng.
Ngc li, thng tin v ngi gi s c lu li.
Thng tin phn hi:
250 OK
Trng hp cn li b li.
V d:
S: MAIL FROM: <Smith@Alpha.edu>
R: 250 OK
b. Lnh RCPT TO <forward-path>
Tham s: l mt xu k t nh danh mailbox ca ngi nhn th.
Hn ch: Ch c th thc hin khi nh danh ngi gi th bng lnh MAIL.
Chi tit: Lnh ny dng xc nhn ngi nhn th c ch nh trong tham s
<forward-path>. Nu Receiver-SMTP chp nhn th thng tin v ngi gi s -
c lu li. Lnh ny c th thc hin nhiu ln xc nhn nhiu ngi nhn th.
Thng tin phn hi:
250 OK
Trng hp cn li b li.
V d
S: RCPT TO: <Jones@Beta.gov>
R: 250 OK
S: rcpt to: <Green@Beta.gov>
R: 550 No such user here
c. Lnh DATA
Tham s: khng.
Hn ch: Ch c th thc hin khi thc hin thnh cng vic xc nhn ngi
gi v ngi nhn th.
Chi tit: Lnh ny dng xc nhn bt u vic gi ni dung th. Nu SMTP
Receiver chp nhn, n s tin hnh nhn v lu tr tt c cc dng vn bn c
gi n. kt thc vic gi d liu, SMTP Sender cn gi mt dng ch cha
mt du chm .. Lu rng phn d liu sau lnh DATA bao gm ton b
phn header ca th (nh cc trng Date, Subject, CC, From, ...) cng nh ni
dung th.
Thng tin phn hi:
250 OK
V d:
S: DATA

Sinh vien thc hien Nguyen Xuan Thanh Trang 30
o n tot nghIeg
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 nghIeg
Thng tin phn hi ny ch ra rng, SMTP Receiver bit c mailbox ca ngi
nhn thuc mt my ch khc. N s a ra a ch chnh xc s dng nhng trong tr-
ng hp ny n khng thc hin vic gi th i. Chnh v vy, ngi gi cn phi xc
nhn li cc thng tin cho chnh xc theo thng tin phn hi ca SMTP Receiver hoc
tr li thng bo li cho ngi gi ban u.
Sau y l v d v cch s dng th tc 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 th tc Mailing v Sending
SMTP ch yu cung cp cc chc nng pht th n mailbox ca ngi s dng.
Tuy nhin, n cng c mt s cc chc nng thc hin vic chuyn th n terminal ca
ngi s dng.
Vic pht th n mailbox ca ngi s dng c gi l mailing, cn vic pht th
n terminal c gi l sending. Dch v sending l phn m rng ca mt h thng
th tn in t.
C ba dng cu lnh c nh ngha h tr cho cc ty chn sending. Cc cu
lnh ny c dng trong cc phin giao dch SMTP thay th cho cu lnh MAIL v bo
cho Receiver-SMTP bit ngha c bit ca phin giao dch ny.
a. Lnh SEND FROM <reverse-path>
Tham s: a ch terminal ca ngi nhn.
Chi tit: Lnh ny yu cu d liu ca th c phn pht ti terminal ca ngi s
dng. Nu ngi s dng cha kch hot (hoc khng chp nhn kiu giao dch
ny) th Receiver-SMTP s gi tr m 450. Phin giao dch l thnh cng nu
th c chuyn n terminal ca ngi s dng.
Thng tin phn hi:
450 OK
b. Lnh SOML FROM <reverse-path>
Tham s: a ch terminal ca ngi nhn.
Chi tit: Lnh ny (vit tt ca ch Send Or MaiL) yu cu d liu ca th c
phn pht ti terminal ca ngi s dng trong trng hp ngi s dng kch
hot (v chp nhn kiu giao dch ny). Trong trng hp ngc li, ngha l ngi
s dng cha kch hot th d liu ca th s c chuyn n mailbox ca ngi
nhn. Phin giao dch thnh cng nu th c chuyn n terminal ca ngi s
dng.
c. Lnh SAML FROM <reverse-path>
Tham s: a ch terminal ca ngi nhn.
Chi tit: Lnh ny (vit tt ca ch Send And MaiL) yu cu d liu ca th c
phn pht ti terminal ca ngi s dng trong trng hp ngi s dng kch
hot (v chp nhn kiu giao dch ny). Trong bt c trng hp no th d liu

Sinh vien thc hien Nguyen Xuan Thanh Trang 32
o n tot nghIeg
ca th cng s c chuyn n mailbox ca ngi nhn. Phin giao dch thnh
cng nu th c chuyn n mailbox ca ngi s dng.
1.5.6. Cc th tc Opening v Closing
Khi mt phin giao dch th tn c m, cn phi c s trao i thng tin gia cc
my ch (host) m bo s chnh xc trong giao dch. C hai lnh thc hin vic
ng/m mt phin giao dch.
a. HELO <domain>
Tham s: tn domain ca my ch thc hin vic gi th (c th khng c).
Chi tit: Lnh ny dng xc nhn domain my ch SMTP Sender.
Thng tin phn hi:
250 <domain>
V d:
R: 220 BBN-UNIX.ARPA Simple Mail Transfer Service Ready
S: HELO USC-ISIF.ARPA
R: 250 BBN-UNIX.ARPA
b. QUIT
Tham s: khng.
Chi tit: Lnh ny dng kt thc phin giao dch SMTP.
Thng tin phn hi:
250 CRLF
V d:
S: QUIT
R: 221 BBN-UNIX.ARPA Service closing transmission channel
1.5.7. M tr li ca cc cu lnh SMTP
Trong mt phin giao dch SMTP, pha SMTP Sender gi cc lnh yu cu cn
pha SMTP Receiver s gi tr cc thng tin phn hi v cc m phn hi.
m bo tnh thng nht truyn thng trong qu trnh truyn th, ng thi
m bo pha SMTP Sender lun bit c chnh xc trng thi ca SMTP Receiver,
mi cu lnh yu cu u phi c tr li bng cc m thng tin phn hi chnh xc.
Bng M thng tin phn hi ca SMTP
M thng tin phn hi Thng 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 thc hien Nguyen Xuan Thanh Trang 33
o n tot nghIeg
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 nghIeg
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 nghIeg
Trong trng hp ngc li, nu thng tin phn hi bt u bng du - (-ERR) cho
lnh USER th pha Client c th thc hin li vic nh danh hoc kt thc phin giao
dch bng lnh QUIT.
Khi pha Client a vo lnh PASS, POP3 Server s s dng kt hp hai i s a
vo bi hai lnh USER v PASS xc nh xem ngi s dng ny c tn ti hay
khng, c c quyn truy nhp vo mailbox hay khng,.v.v
Sau khi xc nh pha Client c quyn truy nhp, POP3 Server s thc hin
vic kho mailbox chng li vic sa i hoc xo th trong mailbox t cc phin
POP3 khc, trc khi chuyn sang trng thi UPDATE.
Nu nh vic kho mailbox thnh cng, phin giao dch POP3 s chuyn sang
trng thi TRANSACTION. Vo thi im ny, cha c mt th no b nh du xo.
Trong trng hp ngc li, nu nh v mt l do no khng th kho c
mailbox (v d nh khng c quyn truy nhp hoc mailbox b kho,.v.v) th POP3
Server s gi mt thng tin phn hi -ERR v kt thc lun phin giao dch.
Sau khi POP3 Server m c mailbox, n s gn ch s cho mi mt bc th v
tnh lun kch thc tng bc th. Ch s c bt u t 1. Trong cc lnh ca POP3 v
cc thng tin phn hi, tt c cc ch s v kch thc th u dng c s 10.
Sau y l mt s lnh c th thc hin trong trng thi AUTHORIZATION:
a. Lnh USER [name]
Tham s: l mt xu k t nh danh ca mailbox, duy nht i vi Server.
Hn ch: Ch c th thc hin trong trng thi AUTHORIZATION vo thi
im ban u hoc sau khi vic nh danh USER v PASS khng thnh cng.
Chi tit: Lnh ny dng nh danh ngi s dng.
Thng tin phn hi:
+OK name is welcome here
-ERR Never heard of name
V d:
C: USER mrose
S: +OK mrose is a real hoopy frood
...
C: USER frated
S: -ERR sorry, frated doesn't get his mail here
b. Lnh PASS [string]
Tham s: l mt xu k t nh danh ca mt khu tng ng vi mailbox.
Hn ch: Ch c th thc hin trong trng thi AUTHORIZATION vo thi
im ban u hoc sau khi vic nh danh USER thnh cng.
Chi tit: Lnh ny dng xc nh mt khu tng ng vi ngi s dng
nh danh bng lnh USER.
Thng tin phn hi:
+OK maildrop locked and ready
-ERR invalid password
-ERR unable to lock maildrop
V d:
C: USER mrose
S: +OK mrose is a real hoopy frood
C: PASS secret
S: +OK mroses maildrop has 2 messages

Sinh vien thc hien Nguyen Xuan Thanh Trang 36
o n tot nghIeg
(320 octets)
...
C: USER mrose
S: +OK mrose is a real hoopy frood
C: PASS secret
S: -ERR unable to lock mroses maildrop, file
already locked
c. Lnh QUIT
Tham s: khng.
Hn ch: khng
Chi tit: Lnh ny dng kt thc phin giao dch.
Thng tin phn hi:
+OK
V d:
C: QUIT
S: +OK dewey POP3 server signing off
1.6.4. Trng thi TRANSACTION
Mi ln pha Client thc hin thnh cng vic nh danh vi POP3 Server,
mailbox tng ng s c kho v phin lm vic by gi s trng thi
TRANSACTION.
Pha Client c th s dng bt c mt lnh POP3 no thc hin giao dch vi
POP3 Server. Cc lnh ny c th lp li m khng b hn ch g c. Sau mi lnh, pha
POP3 Server s gi tr mt thng tin phn hi v kt qu thc hin.
Cui cng, pha Client thc hin lnh QUIT chuyn phin giao dch sang trng
thi UPDATE.
Sau y l mt s lnh c th thc hin trong trng thi TRANSACTION:
a. Lnh STAT
Tham s: khng.
Hn ch: Ch c th thc hin trong trng thi TRANSACTION.
Chi tit: Lnh ny dng ly thng tin v s th trong mailbox v kch thc
ca mailbox tng ng vi ngi s dng. Cu trc ca dng thng tin phn hi
ny l: +OK, tip theo l mt du cch trng, s lng th trong mailbox v
kch thc ca mailbox tng ng vi ngi dng xc nh.
Thng tin phn hi:
+OK nn mm
V d:
C: STAT
S: +OK 2 320
b. Lnh LIST [msg]
Tham s: (c th c hoc khng) l mt s hiu ca th trong s nhng th hin
c trong mailbox ca ngi dng. Lu , nhng th b nh du xo s b b qua.
Hn ch: Ch c th thc hin trong trng thi TRANSACTION.

Sinh vien thc hien Nguyen Xuan Thanh Trang 37
o n tot nghIeg
Chi tit: Lnh ny dng lit k danh sch cc th c trong mailbox v kch
thc tng ng hoc ly thng tin v mt th c th no . Trong trng hp
khng a vo tham s th POP3 Server s tr li +OK v mt danh sch cc
th v s hiu tng ng trong mailbox ca ngi dng. Trong trng hp ngc li,
c tham s, nu tham s nm trong khong cho php t 1 n s th th POP3
Server s tr li +OK v s hiu ca th v kch thc tng ng. Ngc li,
POP3 Server s tr li -ERR.
Thng tin phn hi:
+OK scan listing follows
-ERR no such message
V d:
C: LIST
S: +OK 2 messages (320 octets)
S: 1 120
S: 2 200
S: .
...
C: LIST 2
S: +OK 2 200
...
C: LIST 3
S: -ERR no such message, only 2 messages in maildrop
c. Lnh RETR [msg]
Tham s: S hiu ca th cn ly.
Hn ch: Ch c th thc hin trong trng thi TRANSACTION.
Chi tit: Lnh ny dng hin th ni dung th tng ng vi s hiu a vo.
Nu thc hin c POP3 Server s gi tr mt thng tin phn hi a dng, bt
u bng +OK, tip theo l cc dng cha ng thng tin v ni dung th
cng nh tiu ca th c chn. Trong trng hp c li, POP3 Server s gi
tr -ERR
Thng tin phn hi:
+OK message follows
-ERR no such message
V d:
C: RETR 1
S: +OK 120 octets
S: <the POP3 server sends the entire message here>
S: .
d. Lnh DELE [msg]
Tham s: s hiu ca th cn xo.
Hn ch: ch c th thc hin trong trng thi TRANSACTION.
Chi tit: lnh ny dng xo mt th tng ng vi s hiu a vo. Nu thc
hin c, POP3 Server s gi tr mt thng tin phn hi bt u bng +OK,
tip theo l thng tin v th b xa. Trong trng hp c li, POP3 Server s
gi tr -ERR. Lu , POP3 Server ch thc hin vic nh du xo trn bc
th . N ch b xo thc s sau khi phin giao dch chuyn sang trng thi
UPDATE.

Sinh vien thc hien Nguyen Xuan Thanh Trang 38
o n tot nghIeg
Thng tin phn hi:
+OK message deleted
-ERR no such message
V d:
C: DELE 1
S: +OK message 1 deleted
...
C: DELE 2
S: -ERR message 2 already deleted
e. Lnh NOOP
Tham s: khng.
Hn ch: ch c th thc hin trong trng thi TRANSACTION.
Chi tit: lnh ny dng xc nhn kt ni vi POP3 Server. POP3 Server
khng lm g c m ch gi tr li +OK cho Client.
Thng tin phn hi:
+OK
V d:
C: NOOP
S: +OK
f. Lnh LAST
Tham s: khng.
Hn ch: ch c thc hin trong trng thi TRANSACTION.
Chi tit: POP3 server t mt tr li xc nh vi dng cha s thng ip cao
nht hin ti m n c truy cp trong maildrop. Trong trng hp cn ang
trong trng thi TRANSACTION m cc th b nh du xa cha c lnh
RSET th s th hin c trong maildrop vn khng thay i tnh lun c cc th
c nh du xo.
Thng tin phn hi:

+OK nn
V d:
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 thc hien Nguyen Xuan Thanh Trang 39
o n tot nghIeg
C: RSET
S: +OK
C: LAST
S: +OK 1
g. Lnh RSET
Tham s: khng.
Hn ch: ch c th thc hin trong trng thi TRANSACTION.
Chi tit: lnh ny dng khi phc li nhng th b nh du xa. Nu thc
hin c POP3 Server s gi tr thng tin phn hi +OK xc nhn b
nh du i vi nhng th b nh du xa. Trong trng hp c li, POP3
Server s gi tr li -ERR
Thng tin phn hi:
+OK
V d:
C: RSET
S: +OK maildrop has 2 messages (320 octets)
1.6.5. Trng thi UPDATE
Khi pha Client thc hin lnh QUIT ang trong trng thi TRANSACTION.
phin giao dch POP3 s chuyn sang trng thi UPDATE.
Lu rng nu lnh QUIT c thc hin trong trng thi AUTHORIZATION th
phin giao dch POP3 khng chuyn sang trng thi UPDATE.
Nu mt phin giao dch b kt thc v mt l do no m khng phi do pha
Client thc hin lnh QUIT th phin giao dch POP3 cng khng chuyn sang trng
thi UPDATE v cng khng thc hin vic xa bt k mt th no t mailbox.
Lnh QUIT
Tham s: khng.
Hn ch: khng.
Chi tit: Lnh ny dng kt thc phin giao dch mt cch hp l. POP3
Server s xa vt l tt c th b nh du xa trong mailbox. Sau , n s
g b kha i vi mailbox v c mt thng tin phn hi xc nhn thao
tc ny. Kt ni TCP s kt thc.
Thng tin phn hi:
+OK
V d:
C: QUIT
S: +OK dewey POP3 server signing off (maildrop empty)
...
C: QUIT
S: +OK dewey POP3 server signing off (2 messages left)
...
1.6.6. V d v mt phin giao dch POP3

Sinh vien thc hien Nguyen Xuan Thanh Trang 40
o n tot nghIeg
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 nghIeg
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 nghIeg
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 nghIeg

Sinh vien thc hien Nguyen Xuan Thanh Trang 44
o n tot nghIeg
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 nghIeg
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 nghIeg
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 nghIeg
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 nghIeg
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 nghIeg
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 nghIeg
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 nghIeg
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 nghIeg
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 nghIeg
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 nghIeg
+ 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 nghIeg
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 nghIeg
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 nghIeg
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 nghIeg
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 nghIeg
- 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 nghIeg
}
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 nghIeg
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 nghIeg
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 nghIeg
/**
* 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 nghIeg
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 nghIeg
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 nghIeg
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 nghIeg
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 nghIeg
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 nghIeg
}
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 nghIeg
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 nghIeg
}
// 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 nghIeg
}
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 nghIeg
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 nghIeg
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 nghIeg
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 nghIeg
}
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 nghIeg
// 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 nghIeg
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 nghIeg
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 nghIeg
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 nghIeg
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 nghIeg
} 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 nghIeg
} 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 nghIeg
}
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 nghIeg
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 nghIeg
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 nghIeg
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 nghIeg
_ Subject : Chu e cua la th . Khi gi th, ngoi gi thng ghi mot noi
dung ngan vao vung subject e ngi nhan biet c muc ch tong quat cua la th
trc khi quyet nh co oc th hay khong.
_ Date : Ngay gi nhan th
_ Size: Kch thc la th (thng tnh bang KB)
7.oc th :
Tat ca th cua ban c liet ke trong mot bang trong Inbox vi moi hang la
mot th. e xem noi dung th can click vao vung tieu e cua th. Trong vung noi
dung th, cac thong tin cua ngoi gi se c the hien cung noi dung la th . Cac
thong tin ngi gi bao gom: ten ngi gi, thi iem gi, ten ngi nhan
Muon oc email nao, click vao cot From tng ng. Sau khi oc xong, e oc
th khac, click vao Inbox hay click vao nut Back cua Internet Explorer.
_ Sau khi oc xong th ,Delete neu muon xoa th.
_ Reply neu muon tra li th
_ Download attach file neu th co gi file kem theo .
8.Viet email trong WebMail:
Chung ta co hai trng hp:
Neu ban ang oc mot th nao o, ban muon tra li th oth click vao
nut Reply pha tren.
Neu ban muon gi th trc tiep, click vao nut Compose.
Khi muon gi th cho mot ngi a co a ch trong mot AddressBook, au
tien phai chuan b noi dung th e gi. Phan tieu e cua mot th can gi bao gom
cac thong tin sau:
_ To : a ch email ma ban muon gi ti.
_ Subject: mot oan text ngan cho biet muc ch cua noi dung th can gi.
oan text nay giup cho ngi oc th quyet nh co nen xem noi dung cua th hay
khong.
_ Attachments gi kem tap tin cho ngui nhan.
_ Noi dung soan trong comment
_ Sau khi soan thao noi dung th xong, nhan nut Send e th c cat vao
Outbox. Ngha la, th khong c truyen i ngay, do o chung ta co the soan thao
nhieu th trc khi ket noi vi Mail Server e gi i.
Khi th a a vao Outbox, moi chnh sa tiep theo thng lam th khong gi i
c na. Trng hp nay can phai soan thao mot la th khac e gi i va xoa bo
la th cu.
9.Gi kem file theo Mail (attach file)

Sinh vien thc hien Nguyen Xuan Thanh Trang 89
o n tot nghIeg
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 nghIeg
Menu chnh
TAI LIEt THAM NHAO
Phan tch, thiet ke va cai at he thong thong tin quan ly
- Hieu nh: GS. Bach Hng Khang
C s d lieu quan he - Le Tan Vng
System Administrator for Microsoft SQL Serever 7.0 workbook
Microsoft SQL Server 7.0 Database Implementation Training Kit
Microsoft SQL Server hoach nh va xay dng c s d 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 Phng Lan, Hoang c Hai
Cac tai lieu ve JSP/EJB tai website: http://java.sun.com

Sinh vien thc hien Nguyen Xuan Thanh Trang 91

You might also like