SlideShare a Scribd company logo
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 1
Đề tài:
“Xây dựng ứng dụng Webmail”
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 2
MỤC LỤC
PHẦN 1 : CƠ SỞ LÝ THUYẾT.................................................................................. 9
CHƯƠNG 1 : GIỚI THIỆU CHUNG VỀ INTERNET VÀ
MỘT SỐ GIAO THỨC TRUYỀN THÔNG TRÊN INTERNET
.............................................................................................................................. 10
1.1. GIỚI THIỆU CHUNG VỀ INTERNET..................................................... 10
1.2. HỌ GIAO THỨC TCP/IP........................................................................... 11
1.3. GIAO THỨC LIÊN MẠNG IP ................................................................... 12
1.4. GIAO THỨC ĐIỀU KHIỂN TRUYỀN TCP ............................................. 19
CHƯƠNG 2 : CƠ SỞ VỀ LẬP TRÌNH MẠNG TRÊN MÔ
HÌNH CLIENT/SERVER ......................................................................... 21
2.1. LẬP TRÌNH GIAO TIẾP MẠNG VỚI WINDOWS SOCKETS................. 21
2.2. MỘT SỐ KHÁI NIỆM CƠ BẢN................................................................ 22
2.2.1.Địa chỉ Internet ................................................................................... 22
2.2.2. Khái niệm socket và port .................................................................. 22
2.3. CÁCH CÀI ĐẶT ỨNG DỤNG CLIENT/SERVER TCP........................... 23
2.3.1. Cách cài đặt server TCP ................................................................... 24
2.3.2. Cách cài đặt client TCP ................................................................... 24
CHƯƠNG 3 : MỘT SỐ KHÁI NIỆM LIÊN QUAN ĐẾN THƯ
ĐIỆN TỬ.......................................................................................................... 26
1.1. MAILSERVER........................................................................................... 26
1.2. GIAO THỨC GỬI MAIL (MAIL TRANSPORT PROTOCOL)................. 26
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 3
1.3.GIỚI THIỆU KIẾN TRÚC DỊCH VỤ THƯ ĐIỆN TỬ................................ 27
1.3.1. Kiến trúc và các dịch vụ.................................................................... 27
1.3.2. Tác nhân người sử dụng (The User Agent)...................................... 30
1.3.2.1.Gửi thư (Sending Email) ................................................................ 30
1.3.2.2. Đọc thư (Reading Email)............................................................... 31
1.3.2.3.Định dạng thông điệp (Message Formats)....................................... 32
1.3.2.4.Chuẩn RFC 822.............................................................................. 33
1.4.PHÂN TÍCH CẤU TRÚC THƯ ĐIỆN TỬ, CÁC GIAO THỨC SMTP VÀ
POP3 ................................................................................................................. 36
1.4.1.Phân tích cấu trúc thư điện tử (RFC 822).......................................... 36
1.4.1.1. Giới thiệu ..................................................................................... 36
1.4.1.2. Mô tả về cấu trúc thư..................................................................... 37
1.4.2. Định nghĩa về các trường Header..................................................... 39
1.4.3. Các trường header điển hình............................................................ 39
1.4.4. Ví dụ về cấu trúc thư......................................................................... 41
1.5. PHÂN TÍCH GIAO THỨC SMTP (RFC 821)............................................ 42
1.5.1. Giới thiệu chung................................................................................ 42
1.5.2. Mô hình hoạt động phiên giao dịch.................................................. 43
1.5.3. Thủ tục Mail...................................................................................... 45
1.5.4. Thủ tục Forwarding........................................................................... 48
1.5.5. Các thủ tục Mailing và Sending......................................................... 49
1.5.6. Các thủ tục Opening và Closing ........................................................ 51
1.5.7. Mã trả lời của các câu lệnh SMTP .................................................... 52
1.6. PHÂN TÍCH GIAO THỨC POP3 (RFC 1081,1082) .................................. 53
1.6.1. Giới thiệu........................................................................................... 54
1.6.2. Mô hình hoạt động phiên giao dịch.................................................. 54
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 4
1.6.3. Trạng thái AUTHORIZATION ....................................................... 56
1.6.4. Trạng thái TRANSACTION ............................................................ 59
1.6.5. Trạng thái UPDATE......................................................................... 64
1.6.6. Ví dụ về một phiên giao dịch POP3.................................................. 65
1.7. MIME (MULTIPURPOSE INTERNET MAIL EXTENSIONS)................. 67
1.8.POP BEFORE SMTP(CHỨNG THỰC QUYỀN TRUY CẬP THEO GIAO
THỨC POP TRƯỚC KHI SỬ DỤNG SMTP)................................................... 69
1.9.MAIL CLIENT, WEB MAIL ...................................................................... 70
CHƯƠNG 4 : GIỚI THIỆU VỀ CÁC CÔNG NGHỆ LIÊN
QUAN ............................................................................................................... 70
2.1.GIỚI THIỆU VỀ JRUN WEBSERVER 3.1................................................. 70
2.2.GIỚI THIỆU VỀ SQL SERVER 7.0............................................................ 71
2.2.1. Lý thuyết hệ quản trị cơ sở dữ liệu sql server 7.0 và Cấu trúc cơ sở
dữ liệu của sql server 7.0 ............................................................................. 71
2.2.2. Cấu trúc cơ sở dữ liệu vật lý:............................................................. 72
2.2.2.1. Trang (page):................................................................................. 72
2.2.2.2 .Extent:........................................................................................... 73
2.2.2.3 Những loại file trong CSDL:SQL Server có 3 loại file: .................. 73
2.3. LÝ THUYẾT MÔ HÌNH QUAN HỆ.......................................................... 74
2. 3.1. Các khái niệm cơ bản........................................................................ 74
2.3.2. Khái Niệm phụ thuộc dữ liệu và các dạng chuẩn ............................. 74
2.3.3 Khái niệm chỉ dẫn và khóa chỉ dẫn.................................................... 75
2.4.GIỚI THIỆU VỀ JAVA SERVLET............................................................ 75
2.4.1.Khái niệm về JAVA SERVLET ......................................................... 75
2.4.2.Những ứng dụng thực tế của JAVA SERVLET và kiến trúc của
JAVA SERVLET......................................................................................... 76
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 5
2.5.GIỚI THIỆU VỀ JAVA SERVER PAGES(JSP) ......................................... 76
2.5.1.Khái niệm về JSP ................................................................................ 76
2.5.2.Quan hệ giữa Servlet và JSP .............................................................. 77
2.5.2.1.Cách trình chủ biên dịch trang JSP thành servlet ............................ 77
2.5.2.2. So sánh giữa Servlet và JSP........................................................... 77
2.6. GIỚI THIỆU VỀ JAVABEANS ................................................................. 78
2.6.1.Khái niệm về JAVABEANS................................................................ 78
2.6.2.Các thẻ chuẩn của JAVABEANS trong trang JSP........................... 79
2.6.2.1.<jsp:useBean>................................................................................ 79
2.6.2.2.<jsp:setProperty> ........................................................................... 80
2.6.2.3. <jsp:getProperty>.......................................................................... 81
2.6.3.Thêm JAVABEANS vào JSP.............................................................. 81
PHẦN 2 : XÂY DỰNG ỨNG DỤNG....................................................................... 83
CHƯƠNG 1 PHÂN TÍCH BÀI TOÁN............................................... 83
1.1.TÊN ĐỀ TÀI ............................................................................................... 83
1.2.DỀ CƯƠNG CHI TIẾT ............................................................................... 83
1.2.1.Khảo sát............................................................................................... 83
1.2.2.Yêu cầu của bài toán........................................................................... 83
1.2.3.Dữ liệu vào, dữ liệu ra và các chức năng xử lý của hệ thống ............ 84
1.2.4. Chức năng của hệ thống thông tin quản lý ....................................... 85
1.3. LÝ DO CHỌN ĐỀ TÀI .............................................................................. 85
CHƯƠNG 2 : THIẾT KẾ VÀ CÀI ĐẶT ỨNG DỤNG............... 86
2.1.PHÂN TÍCH VÀ THẾT KẾ CƠ SỞ DỮ LIỆU............................................ 86
2.1.1.Phân tích.............................................................................................. 86
2.1.2. Giải thích các chức năng của hệ thống.............................................. 88
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 6
2.1.3.biểu đồ luồng dữ liệu( DFD – Data flow Diagram)............................ 89
2.1.4. THIẾT KẾ HỆ THỐNG.................................................................... 89
2.1.4.1. Các bảng dữ liệu chính.................................................................. 89
2.2. CÀI ĐẶT MAILSERVER .......................................................................... 91
2.2.1.Phương án tổ chức lưu trữ mail trên Server...................................... 91
2.2.2.Các đơn thể của mailserver ................................................................ 92
2.2.2.1. Xây dựng SMTP Server ................................................................ 93
2.2.2.2. Xây dựng POP3 Server................................................................ 114
2.3.CÀI ĐẶT MAILCLIENT .......................................................................... 136
Một số giao diện chính................................................................................. 142
LỜI CẢM ƠN
Trước hết tôi xin chân thành cảm ơn các thầy cô giáo khoa Đại học
Đại Cương của trường Đại học Thuỷ Sản Nha Trang và khoa Công Nghệ
Thông Tin trường Đại học Bách Khoa Hà Nội đã trang bị cho tôi những
kiến thức cơ bản cần thiết trong những năm học vừa qua để tôi có thể thực
hiện tốt cuốn đồ án này.
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 7
Em xin chân thành cảm ơn thầy Văn Thế Minh đã tận tình giúp đỡ và
hướng dẫn em hoàn tất cuốn đồ án này. Ngoài ra tôi cũng xin cảm ơn tất cả
bạn bè đã giúp đỡ tôi trong suốt quá trình thực hiện đồ án.
Mặc dù đã rất cố gắng, nhưng trong khoảng thời gian cho phép cũng
như những hạn chế về kiến thức nên cuốn đồ án này của tôi không thể
tránh khỏi những thiếu sót. Chính vì vậy, tôi rất mong nhận được sự góp ý
của các thầy cô giáo cũng như bạn bè gần xa và những cá nhân hay tổ chức
có quan tâm đến lĩnh vực được trình bày trong cuốn đồ án này.
Hà Nội, tháng 5 năm
2003
Nguyễn Xuân Thanh
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 8
LỜI NÓI ĐẦU
Ngày nay với sự phát triển mạnh mẽ của tin học và công nghệ
Internet, hầu như mọi người đều thấy rõ lợi ích mà các dịch vụ do mạng
Internet mang lại.
Dịch vụ thư điện tử gọi tắt là Email là một trong nhưng dịch vụ được
sử dụng nhiều nhất trên Internet hiện nay. Dịch vụ này cho phép các cá
nhân hay tổ chức trao đổi thư với nhau thông qua mạng Internet. Nhiều
người sử dụng Internet chỉ để dùng dịch vụ này.
Thông thường, khi sử dụng dịch vụ thư tín điện tử, người sử dụng
thường ít khi quan tâm xem hệ thống bên trong đã thực hiện như thế nào.
Vì vậy, họ ( người sử dụng) mới chỉ thấy được một nửa của ứng dụng dịch
vụ Email và phần ứng dụng đó được gọi là Mail Client, hay là sử dụng dịch
vụ thư tín máy trạm.
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 9
Nhằm mục đích hiểu rõ hơn về hoạt động bên trong của ứng dụng
Email ở phần cung cấp dịch vụ mà thường được gọi là Mail Server, trong
cuốn đồ án này tôi xin trình bày một cách cơ bản hệ thống phục vụ việc
truyền thư tín điện tử trên cơ sở tìm hiểu về các mô hình truyền thông thư
tín, các giao thức truyền thông chuẩn, các hoạt động của một hệ Mail
Server.
Vì thời gian có hạn và có rất nhiều các vấn đề có liên quan, do đó đồ
án này chỉ trình bày những vấn đề cơ bản nhất về dịch vụ thư tín điện tử và
cài đặt một chương trình mang tính thử nghiệm do dịch vụ thư tín điện tử
mà thôi.
PHẦN 1 : CƠ SỞ LÝ THUYẾT
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 10
CHƯƠNG 1 : GIỚI THIỆU CHUNG VỀ INTERNET VÀ
MỘT SỐ GIAO THỨC TRUYỀN THÔNG TRÊN
INTERNET
1.1. GIỚI THIỆU CHUNG VỀ INTERNET
Mạng Internet là một tập hợp gồm hàng vạn hệ mạng trên khắp thế giới, được
phát triển vào thập kỷ bảy mươi. Số lượng máy tính nối mạng và số lượng người truy
cập vào mạng Internet trên toàn thế giới đang ngày càng tăng lên nhanh chóng, đặc
biệt từ năm 1993 trở đi. Mạng Internet không chỉ cho phép chuyển tải thông tin nhanh
chóng mà còn giúp cung cấp thông tin, nó cũng là diễn đàn và là thư viện toàn cầu đầu
tiên.
Mạng Internet có xuất xứ năm 1969 từ mạng máy tính toàn cục ARPANET do
cơ quan quản lý các dự án nghiên cứu các công trình nghiên cứu khoa học tiên tiến
thuộc Bộ Quốc phòng Mỹ (US Defense’s Advance Research Projects Agency - gọi tắt
là DARPA) tài trợ. Từ giữa năm 1970, trung tâm DARPA hướng tới mạng Internet với
kỹ thuật chuyển mạch gói qua mạng vô tuyến và thông tin vệ tinh. Năm 1980, DARPA
thử nghiệm dùng giao thức TCP/IP và đã được các trường đại học ở Mỹ ghép nối với
hệ điều hành UNIX BSD (Berkely Software Distribution).
Hệ điều hành UNIX là hệ phát triển mạnh với rất nhiều công cụ hỗ trợ và đảm
bảo các phần mềm ứng dụng có thể chuyển qua lại trên các họ máy khác nhau (máy
mini, máy tính lớn và hiện nay là máy vi tính). Bên cạnh đó hệ điều hành UNIX BSD
còn cung cấp nhiều thủ tục Internet cơ bản, đưa ra khái niệm Socket và cho phép
chương trình ứng dụng thâm nhập vào Internet một cách dễ dàng.
Cấu trúc mạng Internet gồm có:
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 11
 Tầng ứng dụng: TELNET, FTP, SMTP;
 Tầng giao vận: TCP, UDP;
 Tầng Internet: Internet Protocol;
 Tầng mạng: X.25, Ethernet, FDDI. . .;
 Tầng vật lý: là các môi trường truyền tin khác nhau.
1.2. HỌ GIAO THỨC TCP/IP
TCP/IP là họ của các giao thức được sử dụng cho việc truyền thông máy tính.
Các chữ cái được viết tắt bởi các từ (Transmission Control Protocol/Internet Protocol),
hai giao thức này có cách biểu diễn khác nhau, người ta ít khi sử dụng với cái tên đầy
đủ của hai giao thức này. Thường các giao thức được nhóm lại thành các họ (đôi khi
còn được gọi là các suites hay các stacks). Các giao thức nào được nhóm lại với nhau
thường được xác định bởi các bộ cài đặt của giao thức.
Họ giao thức TCP/IP bao gồm các giao thức như là IP (Internet Protocol) , ARP
(Address Resolution Protocol), ICMP (Internet Control Message Protocol), UDP (User
Datagram Protocol), TCP (Transport Control Protocol), RIP (Routing Information
Protocol), Telnet, SMTP (Simple Mail Transfer Protocol), DNS (Domain Name
System) và một số các giao thức khác. Hình bên dưới mô tả kiến trúc của mạng
TCP/IP có so sánh với mô hình tham chiếu OSI để chúng ta hình dung được sự tương
ứng về chức năng của các tầng.
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 12
TCP/IP thực chất là một họ giao thức cùng làm việc với nhau để cung cấp
phương tiện truyền thông liên mạng. Trong phần này chúng ta sẽ xem xét giao thức IP,
giao thức TCP và một số ứng dụng ở tầng trên như Telnet, FTP, DNS, SMTP. . .
1.3. GIAO THỨC LIÊN MẠNG IP
Mục đích chính của IP là cung cấp khả năng kết nối các mạng con thành liên
mạng để truyền dữ liệu. Vai trò của IP tương tự vai trò của giao thức tầng mạng trong
mô hình OSI.
IP là một giao thức kiểu ”không liên kết” (connectionless) có nghĩa là không
cần có giai đoạn thiết lập liên kết trước khi truyền dữ liệu. Đơn vị dữ liệu dùng trong
IP được gọi là datagram, có khuôn dạng chỉ ra trong hình bên dưới.
ý nghĩa của các tham số như sau:
 VER (4 bits): chỉ version hiện hành của IP được cài đặt
TCP/IP Protocol SuiteOSI 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
IPARP
IGMP ICMP
Ethernet Token
Ring
Frame
Relay
ATM
So sánh các kiến trúc ISO và TCP/IP
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 13
0 1 2 3 4 5 6 7
 IHL (4 bits): chỉ độ dài phần đầu (Internet Header Length) của datagram, tính
theo đơn vị từ (word = 32 bits). Độ dài tối thiểu là 5 từ (20 bytes).
VE
R
IH
L
Type of Service Total Length
Indentification Fla
gs
Fragment
offset
Time to live Protocol Header Checksum
Source Address
Destination Address
Options + Padding
Data
(max: 65.535 bytes)
 Type of service (8 bits): đặc tả các tham số về dịch vụ, có dạng cụ thể như sau:
Precedenc
e
D T R Reser
ved
trong đó:
Precedence (3 bits): chỉ thị về quyền ưu tiên gửi datagram, cụ thể là:
111 - Network Control (cao nhất) 011 - Flash
110 - Internetwork Control 010 - Immediate
101 - CRITIC/ECP 001 - Priority
100 - Flas Override 000 - Routine (thấp nhất)
D (Delay) (1 bit): chỉ độ trễ yêu cầu
D = 0 độ trễ bình thường
Header
0 3 4 7 8 15 16 31
Khuôn dạng của IP datagram
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 14
D = 1 độ trễ thấp
T (Throughput) (1 bit): chỉ thông lượng yêu cầu
T = 0 thông lượng bình thường
T = 1 thông lượng cao
R (Reliability) (1 bit): chỉ độ tin cậy yêu cầu
R = 0 độ tin cậy bình thường
R = 1 độ tin cậy cao
 Total Length (16 bits): chỉ độ dài toàn bộ datagram, kể cả phần header (tính
theo đơn vị bytes).
 Indentification (16 bits): cùng với các tham số khác (như Source Address và
Destination Address) tham số này dùng để định danh duy nhất cho một
datagram trong khoảng thời gian nó vẫn còn trên liên mạng.
 Flags (3 bits): liên quan đến sự phân đoạn (fragment) các datagram, cụ thể là:
0 D
F
M
F
Bit 0: reserved - chưa sử dụng , luôn lấy giá trị 0
Bit 1 (DF) = 0 (May Fragment)
= 1 (Don’t Fragment)
Bit 2 (MF) = 0 (Last Fragment)
= 1 (More Fragment)
 Fragment Offset (13 bits): chỉ vị trí của đoạn (fragment) ở trong datagram, tính
theo đơn vị 64 bits, có nghĩa là mỗi đoạn (trừ đoạn cuối cùng) phải chứa một
vùng dữ liệu có độ dài là bội số của 64 bits.
 Time to live (8 bits): qui định thời gian tồn tại (tính bằng giây) của datagram
trong liên mạng để tránh tình trạng một datagram bị quẩn trên liên mạng. Thời
0 1 2
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 15
gian này được cho bởi trạm gửi và được giảm đi (thường qui ước là 1 đơn vị)
khi datagram đi qua mỗi router của liên mạng.
 Protocol (8 bits): chỉ giao thức tầng trên kế tiếp sẽ nhận vùng dữ liệu ở trạm
đích (hiện tại thường là TCP hoặc UDP được cài đặt trên IP).
 Header Checksum (16 bits): mã kiểm soát lỗi 16 bits theo phương pháp CRC,
chỉ cho vùng header.
 Source Address (32 bits): địa chỉ của trạm nguồn.
 Destination Address (32 bits): địa chỉ của trạm đích.
 Options (độ dài thay đổi): khai báo các options do người gửi yêu cầu.
 Padding (độ dài thay đổi): vùng đệm, được dùng để đảm bảo cho phần header
luôn kết thúc ở một mốc 32 bits.
 Data (độ dài thay đổi): vùng dữ liệu, có độ dài là bội số của 8 bits, và tối đa là
65535 bytes.
Sơ đồ địa chỉ hoá để định danh các trạm (host) trong liên mạng được gọi là địa
chỉ IP 32 bits (32- bit- IP address). Mỗi địa chỉ IP có độ dài 32 bits được tách thành 4
vùng (mỗi vùng 1 byte), có thể được biểu thị dưới dạng thập phân, bát phân, thập lục
phân hoặc nhị phân. Cách viết phổ biến nhất là dùng ký pháp thập phân có dấu chấm
(dotted decimal notation) để tách các vùng. Mục đích của địa chỉ IP là để định danh
duy nhất cho một host bất kỳ trên liên mạng. Do tổ chức và độ lớn của các mạng con
(subnet) của liên mạng có thể khác nhau, người ta chia các địa chỉ IP thành 5 lớp, ký
hiệu là A, B, C, D và E, với cấu trúc được chỉ ra trong hình bên dưới.
0 1 7 8 15 16 23 24 31
netid
netid Hostid
netid hostid
hostidLớp A
Lớp B
Lớp C
Lớp D
Lớp E
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 16
Multicast address
Reserved for future use
Cấu trúc của các lớp địa chỉ IP
 Lớp A cho phép định danh tới 126 mạng, với tối đa 16 triệu host trên mỗi
mạng. Lớp này được dùng cho các mạng có số trạm cực lớn.
 Lớp B cho phép định danh tới 16384 mạng, với tối đa 65534 host trên mỗi
mạng.
 Lớp C cho phép định danh tới 2 triệu mạng, với tối đa 254 host trên mỗi mạng.
Lớp này được dùng cho các mạng có ít trạm.
 Lớp D dùng để gửi IP datagram tới một nhóm các host trên một mạng.
 Lớp E dự phòng để dùng trong tương lai.
Ví dụ:
00001
010
00000
000
00000
000
00000
000
10000
000
00000
011
00000
010
00000
011
11000
000
00000
000
00000
001
11111
111
Một địa chỉ có hostid (host identifier) bằng 0 được dùng để hướng tới mạng
định danh bởi vùng netid (network identifier). Ngược lại, một địa chỉ có vùng hostid
= 10.0.0.0 (Líp A)
netid = 10
= 128.3.2.3 (Líp B)
netid = 128.3
hostid = 2.3
= 192.0.1.255 (Lớp C)
netid = 192.0.1
hostid = 255 hướng đến tất cả các host
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 17
0
0
31
31
(Lớp A)
(Lớp B)
(Lớp C)
gồm toàn số 1 được dùng để hướng tới tất cả các host nối vào mạng netid, và nếu vùng
netid cũng gồm toàn số 1 thì nó hướng tới tất cả các host trong liên mạng.
Trong nhiều trường hợp, một mạng có thể được chia thành nhiều mạng con
(subnet), lúc đó có thể đưa thêm các vùng subnetid để định danh các mạng con. Vùng
subnet được lấy từ hostid, cụ thể đối với 3 lớp A, B, C như sau (hình bên dưới).
Netid Subnetid Hostid
7 8 15 16 23 24
Netid Subnetid Hostid
7 8 15 16 23 24
Netid Subn
etid
Host
id
Bổ sung vùng subnetid
Cần lưu ý rằng các địa chỉ IP được dùng để định danh các host và mạng ở tầng
mạng của Mô hình OSI, và chúng không phải là các địa chỉ vật lý (hay địa chỉ MAC -
Media Access Control) của các trạm đó trên một mạng cục bộ (Ethernet,Token
Ring...). Trên một mạng cục bộ như vậy, hai trạm chỉ có thể liên lạc với nhau nếu
chúng biết địa chỉ vật lý của nhau. Như vậy, vấn đề đặt ra là phải thực hiện ánh xạ giữa
địa chỉ IP (32 bits) và địa chỉ vật lý (48 bits) của một trạm. Giao thức ARP (Address
Resolution Protocol) đã được xây dựng để chuyển đổi từ địa chỉ IP sang địa chỉ vật lý
khi cần thiết. Ngược lại, giao thức RARP (Reverse Address Resolution Protocol) được
dùng để chuyển đổi từ địa chỉ vật lý sang địa chỉ IP. Chú ý rằng cả ARP và RARP đều
không phải là bộ phận của IP. IP sẽ dùng đến chúng khi cần.
Một giao thức khác cũng liên quan trực tiếp đến IP, đó là ICMP (Internet Control
Message Protocol). Giao thức này thực hiện truyền các thông báo điều khiển (báo cáo
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 18
về các tình trạng lỗi trên mạng,...) giữa các gateway hoặc trạm của liên mạng. Tình
trạng lỗi có thể là: một datagram không thể tới được đích của nó, hoặc một router
không đủ bộ nhớ đệm để lưu và chuyển một datagram,... Một thông báo ICMP được
tạo và chuyển cho IP. IP sẽ ”bọc” (encapsulate) thông báo đó với một IP header và
truyền đến cho router hoặc trạm đích.
Chúng ta có thể tóm tắt các bước thực hiện bởi một thực thể IP như sau:
 Đối với thực thể IP ở trạm nguồn, khi nhận được một primitive SEND từ
tầng trên , nó thực hiện các bước sau đây:
1. Tạo một IP datagram dựa trên các tham số của primitive SEND
2. Tính checksum và ghép vào header của datagram.
3. Ra quyết định chọn đường: hoặc là trạm đích nằm trên cùng mạng hoặc một
gateway sẽ được chọn cho chặng tiếp theo.
4. Chuyển datagram xuống tầng dưới để truyền qua mạng.
 Đối với gateway, khi nhận được một datagram quá cảnh, nó thực hiện các
động tác sau:
1. Tính checksum, nếu bất cập thì loại bỏ datagram.
2. Giảm giá trị của tham số Time-to-Live. Nếu thời gian đã hết thì loại bỏ
datagram.
3. Ra quyết định chọn đường.
4. Phân đoạn datagram, nếu cần.
5. Kiến tạo lại IP header, bao gồm giá trị mới của các vùng Time-to-Live,
Fragmentation và Checksum.
6. Chuyển datagram xuống tầng dưới để truyền qua mạng.
 Cuối cùng, khi một datagram được nhận bởi thực thể IP ở trạm đích, nó sẽ
thực hiện các công việc sau:
1. Tính checksum. Nếu bất cập thì loại bỏ datagram.
2. Tập hợp các đoạn của datagram (nếu có phân đoạn).
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 19
3. Chuyển dữ liệu và các tham số điều khiển lên tầng trên bằng cách dùng
primitive DELIVER.
1.4. GIAO THỨC ĐIỀU KHIỂN TRUYỀN TCP
Source Port Destination Port
Sequence Number
Acknowledgment Number
D
a
t
a
o
f
f
s
e
t
Reser
ved
Window
Checksum Urgent Pointer
Options Padding
TCP data
Khuôn dạng của TCP segment.
TCP là một giao thức kiểu ”có liên kết” (connection - oriented), nghĩa là cần phải
thiết lập liên kết (logic) giữa một cặp thực thể TCP trước khi chúng trao đổi dữ liệu
với nhau.
Đơn vị dữ liệu sử dụng trong TCP được gọi là segment (đoạn dữ liệu), có khuôn
dạng mô tả trong hình bên dưới.
Các tham số trong khuôn dạng trên có ý nghĩa như sau:
bit 0 15 16 31
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 20
 Source Port (16 bits): số hiệu cổng của trạm nguồn.
 Destination Port (16 bits): số hiệu cổng của trạm đích.
 Sequence Number (32 bits): số hiệu của byte đầu tiên của segment trừ khi bit
SYN được thiết lập. Nếu bit SYN được thiết lập thì Sequence Number là số
hiệu tuần tự khởi đầu (ISN) và byte dữ liệu đầu tiên là ISN+1. Tham số này
có vai trò như tham số N(S) trong HDLC.
 Acknowledgment Number (32 bits): số hiệu của segment tiếp theo mà trạm
nguồn đang chờ để nhận. Ngầm ý báo nhận tốt (các) segment mà trạm đích đã
gửi cho trạm nguồn - Tham số này có vai trò như tham số N(R) trong HDLC.
 Data offset (4 bits): số lượng từ - 32 bit (32 bit words) trong TCP header
(tham số này chỉ ra vị trí bắt đầu của vùng dữ liệu).
 Reserved (6 bits): dành để dùng trong tương lai.
 Control bits (các bit điều khiển):
Tư trái sang phải:
URG: vùng con trỏ khẩn (Urgent Pointer) có hiệu lực
ACK: vùng báo nhận (ACK number) có hiệu lực
PSH: chức năng PUSH
RST: khởi động lại (reset) liên kết
SYN: đồng bộ hoá các số hiệu tuần tự (sequence number)
FIN: không còn dữ liệu từ trạm nguồn
Window (16 bits): cấp phát credit để kiểm soát luồng dữ liệu (cơ chế cửa sổ).
Đây chính là số lượng các byte dữ liệu, bắt đầu từ byte được chỉ ra trong vùng
ACK number, mà trạm nguồn đã sẵn sàng để nhận.
Checksum (16 bits): mã kiểm soát lỗi (theo phương pháp CRC) cho toàn bộ
segment (header + data).
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 21
 Urgent Pointer (16 bits): con trỏ này trỏ tới số hiệu tuần tự của byte đi theo sau
dữ liệu khẩn, cho phép bên nhận biết được độ dài của dữ liệu khẩn. Vùng này
chỉ có hiệu lực khi bit URG được thiết lập.
Options (độ dài thay đổi): khai báo các Options của TCP, trong đó có độ dài tối
đa của vùng TCP data trong một segment.
Padding (độ dài thay đổi): Phần chèn thêm vào header để bảo đảm phần header
luôn kết thúc ở một mốc 32 bits. Phần thêm này gồm toàn số 0.
 TCP data (độ dài thay đổi): chứa dữ liệu của tầng trên, có độ dài tối đa ngầm
định là 536 bytes. Giá trị này có thể điều chỉnh bằng cách khai báo trong vùng
options.
Một tiến trình ứng dụng trong một host truy nhập vào các dịch vụ của TCP
cung cấp thông qua một cổng (port). Một cổng kết hợp với một địa chỉ IP tạo thành
một socket duy nhất trong liên mạng. Dịch vụ TCP được cung cấp nhờ một liên kết
logic giữa một cặp socket. Một socket có thể tham gia nhiều liên kết với các socket ở
xa khác nhau. Trước khi truyền dữ liệu giữa hai trạm cần phải thiết lập một liên kết
TCP giữa chúng và khi không còn nhu cầu truyền dữ liệu thì liên kết đó sẽ được giải
phóng. Cũng giống như ở các giao thức khác, các thực thể ở tầng trên sử dụng TCP
thông qua các hàm dịch vụ nguyên thuỷ (service primitives), hay còn gọi là các lời gọi
hàm (function calls).
CHƯƠNG 2 : CƠ SỞ VỀ LẬP TRÌNH MẠNG TRÊN MÔ
HÌNH CLIENT/SERVER
2.1. LẬP TRÌNH GIAO TIẾP MẠNG VỚI WINDOWS SOCKETS
Windows NT là một hệ điều hành mạnh, cho phép tận dụng tối đa khả năng của
máy tính loại 32 bit, cung ứng hàng loạt các dịch vụ mạng trên môi trường Intranet và
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 22
Internet. Hiện nay Windows NT được sử dụng tương đối phổ biến ở các cơ quan;
doanh nghiệp Việt Nam.
Giao thức truyền thông TCP/IP đã được dùng bởi hệ điều hành UNIX và mạng
Internet, để các máy trên mạng NT có thể giao tiếp với các máy trên mạng khác,
Windows NT cũng cung cấp giao thức này. Ngoài một số lệnh dùng giao thức TCP/IP
đã được viết sẵn như: ftp, telnet, finger..., Windows NT cho phép người lập trình phát
triển các ứng dụng khai thác kỹ thuật TCP/IP thông qua một thư viện tên là Windows
Sockets.
Có ba lý do chính để người lập trình sử dụng kỹ thuật TCP/IP:
 Có thể viết các ứng dụng trên Windows NT để nối vào mạng UNIX và khai thác các
dịch vụ có sẵn trên đó.
 Tạo ra các dịch vụ trên máy Windows NT để các máy UNIX có thể khai thác những
dịch vụ này.
 Viết các chương trình cho phép các máy Windows NT giao tiếp trên hệ thống mạng
Internet.
2.2. MỘT SỐ KHÁI NIỆM CƠ BẢN
2.2.1.Địa chỉ Internet
Trong hệ thống mạng Internet, mỗi máy đều có một tên và một địa chỉ IP (cũng
gọi là địa chỉ Internet). Ví dụ như, một máy NT có tên là ntsvr.csc.hcmu.vn và địa chỉ
là 192.48.94.200. Tên hay địa chỉ IP đều xác định duy nhất một máy trong hệ thống
mạng Internet. Khi lập trình, chúng ta có các hàm để chuyển đổi từ tên sang địa chỉ IP
và ngược lại.
2.2.2. Khái niệm socket và port
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 23
Một socket là một thiết bị truyền thông hai chiều tương tự như tập tin, chúng ta
có thể đọc hay ghi lên nó, tuy nhiên mỗi socket là một thành phần trong một mối nối
nào đó giữa các máy trên mạng máy tính và các thao tác đọc/ghi chính là sự trao đổi
dữ liệu giữa các ứng dụng trên nhiều máy khác nhau.
Trong giao thức truyền thông TCP, mỗi mối nối giữa hai máy tính được xác
định bởi một port, khái niệm port ở đây không phải là một cổng giao tiếp trên thiết bị
vật lý mà chỉ là một khái niệm logic trong cách nhìn của người lập trình, mỗi port
được tương ứng với một số nguyên dương.
Hình bên dưới minh họa cách giao tiếp giữa hai máy tính trong giao thức truyền
thông TCP. Máy A tạo ra một socket và kết buộc (bind) socket này với port X (tức là
một số nguyên dương có ý nghĩa cục bộ trong máy A), trong khi đó máy B tạo một
socket khác và móc vào (connect) port X trong máy A.
2.3. CÁCH CÀI ĐẶT ỨNG DỤNG CLIENT/SERVER TCP
socketsocketMÁY A MÁY B
Port Hệ thống mạng
Các socket và port trong mối nối TCP
Mối nối
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 24
2.3.1. Cách cài đặt server TCP
ứng dụng server làm việc theo qui trình sau đây:
1. Gọi hàm socket để tạo một socket.
2. Gọi hàm bind để kết buộc socket với một port, đối với mỗi giao thức ứng chuẩn thì
sẽ có một hằng số được định nghĩa sẵn trong Winsock cho port của giao thức đó.
3. Gọi hàm listen để chờ đến khi có một client nối vào port.
4. Khi có một client nối vào thì hàm listen trả điều khiển về, ứng dụng server gọi
hàm accept để xác nhận mối nối của client.
5. Gọi các hàm gửi hay nhận dữ liệu để trao đổi thông tin với client, ví dụ như hàm
send, recv.
Sau khi đã hoàn tất quá trình trao đổi dữ liệu, ứng dụng server gọi hàm closesocket để
đóng socket đã tạo.
2.3.2. Cách cài đặt client TCP
ứng dụng client thực hiện các bước sau:
1. Gọi hàm socket để tạo một socket.
2. Gọi hàm connect để nối vào server.
3. Gọi các hàm gửi hay nhận dữ liệu để trao đổi thông tin với server, ví dụ như
các hàm send, recv.
4. Sau khi đã hoàn tất quá trình trao đổi dữ liệu, ứng dụng client gọi hàm
closesocket để đóng socket đã tạo.
Hình minh họa các bước cần thiết để các ứng dụng client và server giao tiếp
với nhau như sau:
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 25
ứng dụng Server ứng dụng Client
Nối vào port của
server
Tạo một socket
Kết buộc socket
với một port (bind)
Đặt socket ở trạng
thái chờ client nối
vào
Chấp nhận kết nối
của client
Chuyển đổi dữ liệu giữa client và server
Tạo một socket
Các bước giao tiếp giữa client và server trong giao thức TCP
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 26
CHƯƠNG 3 : MỘT SỐ KHÁI NIỆM LIÊN QUAN ĐẾN
THƯ ĐIỆN TỬ
1.1. MAILSERVER
Theo mô hình hoạt động khách chủ, trình chủ là một dịch vụ đóng vai trò người
chủ phục vụ trình khách. Mail Server thật ra là một trình mở socket lắng nghe các yêu
cầu (hay lệnh gửi mail) từ trình khách đưa đến. Như đã nói, mail server sẽ tiếp nhận
nội dung mail, phân phối mail đến các trình chủ khác, cho phép trình khách truy cập
vào máy chủ để nhận mail về, bảo vệ mail…Chính vì vậy, trước khi nhận hay gửi mail
cần phải biết được địa chỉ IP của máy chủ mail server. Địa chỉ này thường được gọi là
mail host. Về khái niệm socket và địa chỉ IP sẽ được trình bày ở phần sau.
1.2. GIAO THỨC GỬI MAIL (MAIL TRANSPORT PROTOCOL)
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 27
Để gửi mail đến máy chủ, trình khách phải sử dụng một giao thức trò chuyện
với mail server. Tương tự trình duyệt dùng giao thức HTTP để trò chuyện với trình
chủ Web server. Các trình khách muốn bắt tay với trình chủ mail server và gửi mail
lên máy chủ sẽ sử dụng giao thức SMTP (Simple Mail Transport Protocol). SMTP
được hầu hết các mail server trên thế gới sử dụng. Địa chỉ IP của máy chủ nhận mail
gửi đi thường được gọi là outgoing mail address. Trình chủ thực hiện chức năng tiếp
nhận mail theo giao thức SMTP gọi là SMTP Server, trình khách dùng giao thức
SMTP để gửi mail đến trình chủ mail server gọi là SMTP Client.
1.3.GIỚI THIỆU KIẾN TRÚC DỊCH VỤ THƯ ĐIỆN TỬ
1.3.1. Kiến trúc và các dịch vụ
Các hệ thống thư điện tử thường bao gồm hai hệ thống con: các tác nhân người
sử dụng (the user agents - gọi tắt là UA), nó cho phép chúng ta đọc và gửi thư, và các
tác nhân truyền thông điệp (the message transfer agents - gọi tắt là MTA), nó làm
nhiệm vụ chuyển các thông điệp từ nguồn đến đích. Các UAs là các chương trình cục
bộ hỗ trợ dựa trên điều khiển bằng lệnh, trình đơn menu hay dùng phương pháp đồ hoạ
để tương tác với hệ thống thư điện tử. Các MTAs là các trình tiện ích hoạt động ở chế
độ nền (background) thực hiện các nhiệm vụ cần thiết như tiếp nhận thư điện tử và
chuyĨn thư qua các hệ thống.
Đặc biệt, các hệ thống thư điện tử hỗ trợ năm chức năng cơ bản, được mô tả dưới
đây:
1. Composition: Xử lý việc tạo các thông điệp và trả lời. Cho phép bất cứ
trình soạn thảo nào có thể được sử dụng cho phần thân của thông điệp, các
hệ thống có thể tự nó đảm trách việc đánh địa chỉ và chỉ số các trường tiêu
đề (header fields) được kèm theo cùng với mỗi thông điệp. Ví dụ như, khi
trả lời một thông điệp , hệ thống thư điện tử có thể tách địa chỉ của người
gửi từ các thư được gửi đến và tự động chèn nó vào các trường thích hợp
trong phần hồi âm (reply).
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 28
2. Transfer: Làm nhiệm vụ chuyển các thông điệp từ người gửi đến nơi người
nhận. Trong phần này, việc chuyển các thông điệp yêu cầu phải thiết lập
một kết nối đến đích (người nhận) hay một số thao tác của thiết bị như xuất
thông điệp và kết thúc việc kết nối. Hệ thống thư điện tử làm việc này một
cách tự động mà không cần có một sự can thiệp nào của người sử dụng.
3. Reporting: Buộc phải thực hiện để báo cho người gửi những gì xảy ra đối
với thông điệp vừa gửi là ở tình huấn đã gửi đến đích chưa? hoặc việc gửi đã
bị huỷ bỏ? hoặc thư đã bị lạc?.
4. Displaying: Những thông điệp gửi đến được yêu cầu làm sao để mọi người
có thể đọc được thư của họ. Đôi khi người ta yêu cầu quá trình chuyển đổi
hay một trình hiển thị đặc biệt để hỗ trợ, ví dụ như, nếu thông điệp có dạng
một tệp PostScript hay tiếng nói được số hóa kèm theo trong thông điệp gửi
đến.
5. Disposition: Là bước cuối cùng liên quan đến những gì người nhận thực
hiện đối với thông điệp sau khi đã nhận nó. Những khả năng có thể là ném
nó đi trước khi đọc, ném nó đi sau khi đọc, lưu nó, v ..v. Nó cũng sẽ có thể
thu nhận để đọc lại với các thông điệp đã được lưu lại, chuyển tiếp chúng
hoặc xử lý chúng bằng những phương pháp khác nhau khi được yêu cầu của
người sử dụng.
Thêm vào đó các dịch vụ này, hầu hết các hệ thống thư điện tử cung cấp nhiều
đặc tính nâng cao khác nhau. Một số đặc tính tiêu biểu như, khi người ta muốn chuyển
thư hay khi họ nghĩ xa hơn về các chi tiết về thời gian , có lẽ họ muốn thư của họ được
chuyển tiếp, chính vì thế mà hệ thống thực hiện điều này một cách tự động.
Hầu hết các hệ thống cho phép người sử dụng tạo các hộp thư (mailboxes) để
lưu trữ các thư chuyển đến (incoming email). Các lệnh được người ta yêu cầu tạo và
hủy bỏ các hộp thư, kiểm tra các nội dung hộp thư, chèn và xóa các thông điệp khỏi
hộp thư, v..v.
Những người giám đốc công ty thường cần gửi một thông điệp đến mỗi người
trong số những người cấp dưới, những khách hàng, hay đến các nhà cung cấp. Thì điều
này đưa ra một ý tưởng về danh sách thư (mailing list), nó là một danh sách các địa
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 29
chỉ thư điện tử. Khi một thông điệp được gửi đến mailing list, các bản sao giống hệt
được phát đến mọi người có địa chỉ trên danh sách.
Một ý tưởng quan trọng khác là thư điện tử được đăng ký, để cho phép người
gửi (sender or originator) biết thư của họ đã đến. Việc thông báo tự động của các thư
không được phát đi một cách luân phiên để người ta có thể biết. Trong bất kỳ trường
hợp nào, người gửi nên có một số điều khiển thông qua thông báo những gì xảy ra.
Các đặc tính nâng cao khác là đồng gửi (carbon copies), thư có mức ưu tiên cao
(high-priority email), bảo mật thư (secret email) có nghĩa là thông điệp được mã hóa
trước khi gửi đi, thay đổi người nhận thư (alternative recipients) nếu người đầu tiên
không có khả năng nhận được, và các khả năng cho các cô thư ký vận dụng thư của
các ông chủ của mình.
Hiện nay thư điện tử được sử dụng rộng rãi trong việc kinh doanh cho việc truyền
thông tin trong công ty. Nó cho phép các công nhân ở xa hợp tác về các dự án phức
(a) (b)
Envelope
Message
Body
Mr. Daniel Dumkopf
18 Willow Lane
White Plains, NY 10604
United Gizmo
180 Main St
Boston, MA
02120
April, 5, 2001
Subject: Invoice 1081
Dear Mr. Dumkopf,
Our computer records
show that you still have not
paid the above invoice of $0.00.
Please send us a check for
$0.00 promptly.
Yous truly
United Gizmo
 Name: Mr. Daniel Dumkopf
Street: 18 Willow Lane
State: NY
Zip code: 10604
Priority: Urgent
Encryption: None
From: United Gizmo
Address: 180 Main St
Location: Boston, MA 02120
Date: April, 5, 2001
Subject: Invoice 1081
Dear Mr. Dumkopf,
Our computer records
show that you still have not
paid the above invoice of $0.00.
Please send us a check for
$0.00 promptly.
Yous truly
United Gizmo
EnvelopeHeader
Phong thư và thông điệp (a) Thư bưu điện. (b) Thư điện tử
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 30
tạp, ngay cả những nơi phải mất nhiều thời gian mới đến được. Một số công ty đã đánh
giá rằng thư điện tử đã làm tăng năng suất sản xuất của họ lên 30 phần trăm (Perry and
Adam 1992).
Một khái niệm quan trọng trong tất cả các hệ thống thư điện tử hiện đại là sự
phân biệt giữa phong bì (envelope) và các nội dung bên trong của nó. Phong bì bao
bọc (encapsulate) cả thông điệp. Nó chứa tất cả các thông tin cần thiết cho việc truyền
tải thông điệp, như là địa chỉ đích, độ ưu tiên, và mức độ bảo mật , tất cả những cái đó
đều khác biệt với thông điệp bên trong nó. Các MTAs sử dụng phong bì cho việc định
tuyến đường truyền, điều này cũng giống như công việc của bưu điện làm.
Thông điệp ở bên trong phong bì chứa hai phần: phần đầu thư (header) và phần
thân thư (body). Phần header chứa các thông tin điều khiển cho các UAs. Phần thân là
phần hoàn toàn dành cho người nhận thư. Các phong bì và các thông điệp được mô tả
trong hình bên dưới.
1.3.2. Tác nhân người sử dụng (The User Agent)
Các hệ thống thư điện tử có hai phần cơ bản, như chúng ta đã thấy gồm: phần UA
và phần MTA. Trong phần này chúng ta sẽ xét đến phần UA. Một UA thường là một
chương trình (đôi khi được gọi là bộ phận đọc thư) nó nhận một trong những lệnh khác
nhau như là cho mục đích soạn thư, nhận thư, và hồi đáp các thông điệp, cũng như
việc thao tác trên các hộp thư (mailboxes). Một số UA (User Agent) có giao diện trình
đơn (menu) hay biểu tượng (icon) khá hấp dẫn mà nó yêu cầu sử dụng chuột hoặc chấp
nhận các lệnh 1 ký tự từ bàn phím có cùng chức năng với menu và các icon.
1.3.2.1.Gửi thư (Sending Email)
Để gửi đi một thông điệp, người sử dụng phải cung cấp thông điệp, địa chỉ đích
và một số tham số khác nếu có (ví dụ như là mức ưu tiên hay bảo mật). Người sử dụng
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 31
có thể tạo thông điệp với một trình soạn thảo văn bản khác nhau, một chương trình sử
lý từ hay với bộ soạn thảo được xây dựng trên UA. Địa chỉ đích phải có một định dạng
mà làm sao cho UA có thể hiểu được. Nhiều UA tiếp nhận các địa chỉ DNS (Domain
Name System) có dạng mailbox@location.
1.3.2.2. Đọc thư (Reading Email)
Khi UA được khởi động nó kiểm tra xem trong hộp thư của người sử dụng có thư
gửi đến không trước khi hiển thị các thứ khác lên màn hình. Khi đó có lẽ nó sẽ thông
báo một số các thông điệp trong hộp thư hay hiển thị một dòng vắn tắt của mỗi thông
điệp và chờ nhận lệnh để xử lý. Một ví dụ ở hình bên dưới cho thấy một viễn cảnh sau
khi UA khởi động hiển thị những yêu cầu vắn tắt của các thông điệp. Trong ví dụ này
hộp thư (mailbox) gồm có tám thông điệp.
Mỗi dòng hiển thị chứa một số trường được trích ra từ phong thư hay phần đầu
(header) của từng thông điệp được định vị trong hộp thư. Trong một hệ thống thư điện
tử đơn giản, sự lựa chọn của các trường hiển thị được người ta xây dựng thành một
chương trình. Trong các hệ thống phức tạp hơn, người sử dụng có thể xác định cho các
trường nào được hiển thị bằng cách cung cấp một hiện trạng người sử dụng (User
Profile), hay một tệp mô tả định dạng hiển thị. Trong ví dụ này, trường đầu tiên là số
thông điệp có trong hộp thư. Trường thứ hai, là các cờ có thể chứa một kí tự K, có
nghĩa là thông điệp cũ đã được đọc kỳ trước rồi và được lưu lại trong hộp thư; kí tự A
có nghĩa là thư này đã được hồi âm rồi; ký tự F (có thể có), có nghĩa là thư này được
chuyển tiếp đến người khác. Các cờ khác nữa cũng có thể được đưa vào ngoài những
cờ này.
# Flags Bytes Sender Subject
1 K 1030 Asw Changes to MINIX
2 KA 6348 Radia Comments on material you sent me
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 32
3 KF 4519 Amy N. Wong Request for information
4 1236 Bal Deadline for grant proposal
5 103610 Kaashoek Text of DCS paper
6 1223 Emily E. Pointer to WWW page
7 3110 Saniya Referee reports for the page
8 1204 Dmr Re: My student’s visit
Hiển thị các nội dung của hộp thư.
Trường thứ ba cho biết chiều dài của thông điệp và trường thứ tư cho biết ai là
người gửi thông điệp. Vì trường này được trích ra từ các thông điệp rất đơn giản nên
trường này có thể chứa các tên, họ tên đầy đủ, các tên viết tắt, các tên đăng nhập, hay
bất cứ thứ gì mà người gửi có thể đặt vào trong trường này. Cuối cùng là trường chủ
đề thư (Subject) cho biết một câu vắn tắt về những gì trong nội dung thông điệp.
Những người nào quên điền vào trường này thì thường được cho là những câu trả lời
cho thư của họ là không chú ý đến mức ưu tiên cao nhất.
Sau khi các phần đầu đã được hiển thị, người sử dụng có thể thực hiện bất cứ
lệnh nào có thể. Một chọn lựa tiêu biểu được liệt kê ở bảng bên dưới (hình bên dưới) là
một ví dụ khi một người sử dụng bằng hệ thống Mmdf của hệ điều hành UNIX. Có
một số lệnh yêu cầu có tham số. Ký hiệu # có nghĩa là chỉ số của một thông điệp (hay
có thể có nhiều thông điệp) được chấp nhận. Tương tự, mẫu tự a có thể được sử dụng
có nghĩa cho tất cả các thông điệp.
1.3.2.3.Định dạng thông điệp (Message Formats)
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 33
Chúng ta bây giờ hãy quay đến từ giao diện người sử dụng đến định dạng của
các thông điệp thư điện tử. Trước tiên chúng ta xét thư điện tử dựa trên bản mã ASCII
sử dụng chuẩn RFC 822 (Request for Comments). Sau đó xét đến các mở rộng đa
phương tiện cho chuẩn RFC 822.
1.3.2.4.Chuẩn RFC 822
Các thông điệp bao gồm một phong bì gốc (được mô tả trong chuẩn RFC 821),
một số các trường cho phần đầu (header), một dòng để trống và sau đó là phần thân
(body). Mỗi trường header bao gồm các dòng văn bản ASCII chứa tên trường, dấu hai
chấm, và cho hầu hết các trường đều có một giá trị. RFC 822 là một chuẩn cũ và giữa
các trường header của phong bì (envelope) không phân biệt rõ ràng như một chuẩn
mới khác. Khi sử dụng, thông thường UA xây dựng một thông điệp và đưa nó qua bộ
phận tác nhân truyền thông điệp (message transfer agents - MTA), ở đây nó dùng một
số các trường header để xây dựng một envelope thực sự, thông điệp được thay đổi bởi
cái cũ đi một chút cùng với envelope.
Command Parameter Description
H # Display header(s) on the screen
C Display current header only
T # Type message(s) on the screen
S Address Send a message
F # Forward message(s)
A # Answer message(s)
D # Delete message(s)
U # Undelete previously deleted message(s)
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 34
M # Move message(s) to another mailbox
K # Keep message(s) after exiting
R Mailbox Read a new mailbox
N Go to the next message and display it
B Backup to the previous message and display it
G # Go to a specific message but do not display it
E Exit the mail system and update the mailbox
Các lệnh điều khiển thư đặc biệt
Các trường header chủ yếu liên quan đến việc chuyển giao thông điệp được liệt
kê dưới bảng sau. Trường To: trường này cho biết địa chỉ DNS của người nhận đầu
tiên. Trường hợp nhiều người nhận cũng có thể cho phép. Trường Cc: cho biết địa chỉ
của những người nhận kế tiếp (còn gọi là địa chỉ đồng gửi). Trong các thuật ngữ của
việc phát thư, không có sự phân biệt giữa những người nhận thứ nhất và người nhận
thứ hai. Thuật ngữ Cc (Carbon copy) là một mẫu đã được xác định, vì máy tính không
sử dụng các trang giấy bản sao. Trường Bcc: (Blind carbon copy) giống như trường
Cc: chỉ trừ là dòng này được xóa khỏi tất cả các bản sao được gửi đến những người
nhận đầu tiên và người nhận thứ hai. Đặc tính này cho phép người ta gửi các bản sao
đến những người trong nhóm thứ ba mà trong đó không có người thứ nhất và người
thứ hai biết.
Header Meaning
To: Email address(es) of primary recipient(s)
Cc: Email address(es) of secondary recipient(s)
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 35
Bcc: Email address(es) for blind carbon copies
From: Person or people who created the message
Sender: Email address of the actual sender
Received: Line added by each transfer agent along the route
Return-Path: Can be used to identify a path back to the sender
Các trường header RFC 822 liên quan trong việc truyền thông điệp
Hai trường kế tiếp, From: và Sender: cho biết để phân biệt người viết và người
gửi thông điệp. Hai trường này hoàn toàn không giống nhau. Ví dụ một nhà quản trị
doanh nghiệp có thể viết một thông điệp nhưng cô thư ký là người thật sự truyền nó đi.
Trong trường hợp này, người quản trị phải được liệt kê vào trong trường From: và cô
thư ký trong trường Sender:.
Header Meaning
Date: The date and time the message was sent
Reply-To: Email address to which replies should be sent
Message-Id: Unique number for referencing this message latter
In-Reply-To: Message-Id of the message to which this is a reply
References: Other relevant Message-Ids
Keywords: User chosen keywords
Subject: Short summary of the message for the one-line display
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 36
Một số trường được sử dụng trong header thông điệp RFC 822.
Trường From: yêu cầu phải có còn trường Sender: có thể được bỏ qua nếu việc
viết và gửi cùng một người. Các trường này cần thiết khi trong trường hợp thông điệp
không được phát đi và phải được trả lại cho người gửi.
Dòng chứa trường Received: được đưa vào bởi các MTAs dọc theo đường
truyền. Dòng này chứa định danh của agent, ngày tháng và thời gian thông điệp được
nhận, và các thông tin khác có thể được sử dụng cho việc tìm kiếm các lỗi trong hệ
thống định tuyến.
Trường Return-Path: được đưa vào bởi MTAs cuối cùng và được dùng cho việc
gửi trở lại người gửi. Theo lý thuyết, thông tin này có thể được tập hợp lại từ các
header Received: (loại trừ tên của hộp thư người gửi), nhưng nó ít khi được điền đầy
đủ như thế và chỉ đặc biệt chứa địa chỉ của người gửi.
Thêm vào các trường của hình bên dưới các thông điệp RFC 822 cũng có thể
chứa một trong số các trường khác được sử dụng bởi các UA hay những người nhận
thư. Những trường thông thường nhất được liệt kê trong hình bên dưới. Hầu hết những
trường này có tính cách giải thích, vì thế chúng ta không đi sâu vào từng chi tiết.
1.4.PHÂN TÍCH CẤU TRÚC THƯ ĐIỆN TỬ, CÁC GIAO THỨC SMTP
VÀ POP3
1.4.1.Phân tích cấu trúc thư điện tử (RFC 822)
1.4.1.1. Giới thiệu
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 37
Để có thể chuyển giao thư giữa các máy tính trên mạng, thư cần phải được cấu
trúc theo một chuẩn nào đó. Thông thường, một bức thư được cấu tạo bởi hai phần là
phong bì (envelope) và nội dung (body). Khái niệm này hoàn toàn giống như trong hệ
thống bưu chính thông thường.
Trong khi phần phong bì chứa đựng những thông tin cần thiết để có thể thiết lập
các liên kết truyền thông và phân phát thư đi, thì phần nội dung lại chứa đựng những
thông tin về người gửi, ngày gửi,...
Thư thường bao gồm nhiều dòng văn bản. Nó không cung cấp những tính năng
riêng biệt như: mã hoá các hình vẽ, các bản sao, tiếng nói hoặc những văn bản có cấu
trúc. Hơn nữa, nó cũng không có sự quan tâm đặc biệt đối với việc nén dữ liệu, việc
truyền thông hoặc việc lưu trữ có hiệu quả.
Cấu trúc thư bao gồm một số trường thông tin tuân theo các cú pháp nghiêm
ngặt. Ví dụ như giữa phần tiêu đề thư (header) và phần nội dung thư (content) phải có
một dòng trống ngăn cách,...
1.4.1.2. Mô tả về cấu trúc thư
Một bức thư bao gồm các trường header và phần body. Phần body là các dòng
văn bản kí tự theo bảng mã ASCII. Nó được phân cách với phần header bởi một dòng
trống.
1.4.1.2.1. Các trường header dài
Mỗi trường header có thể được xem như một dòng văn bản các kí tự theo bảng
mã ASCII, cấu thành bởi tên trường (field-name) và nội dung của trường (field-body).
Để thuận tiện cho việc so sánh, phần field-body có thể được chia ra làm nhiều
dòng. Quá trình chia này được gọi là ”folding”. Ví dụ:
To: "Joe & J. Harvey" <ddd @Org>, JJV @ BBN
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 38
có thể được thay thế bằng:
To: "Joe & J. Harvey" <ddd @ Org>,
JJV@BBN
và:
To: "Joe & J. Harvey"
<ddd@ Org>, JJV
@BBN
hay:
To: "Joe &
J. Harvey" <ddd @ Org>, JJV @ BBN
Quá trình thực hiện ngược lại để kết hợp nhiều dòng header đã được folding như
trên được gọi là: ”unfolding”. Unfolding được thực hiện bằng cách bỏ cặp kí tự CRLF
và thay bằng một dấu cách trống.
1.4.1.2.2. Các trường header có cấu trúc
Mỗi trường có cấu trúc bao gồm một field-name, tiếp theo là dấu hai chấm (”:”),
sau đó field-body và cuối cùng là cặp kí tự CRLF.
<field-name> : <field-body> <CRLF>
Phần field-name là các kí tự in được trong bảng mã ASCII (có mã từ 33 đến 126,
các kí tự số, ngoại trừ dấu hai chấm).
Phần field-body có thể chứa bất kì kí tự ASCII nào, ngoại trừ cặp kí tự CRLF.
Các trường thông tin header thực tế có thể được so sánh bởi các một vài hệ thống
thư tín. Các trường này được gọi là trường có cấu trúc. Ví dụ như các trường chứa
đựng thông tin về Date, Address,.v.v. Một số trường khác như ”Subject” và
“Comments” chỉ được coi như một dòng văn bản bình thường.
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 39
Chú ý, bất kỳ trường nào mà phần field-body được định nghĩa khác đi không
phải là một dòng văn bản đơn thuần thì được gọi là trường có cấu trúc.
1.4.1.2.3. Các trường header không có cấu trúc
Một số trường như “Subject” và “Comments” không được coi là các trường có
cấu trúc và chúng được xem như một dòng văn bản đơn thuần cũng như nội dung thư
trong phần body.
1.4.2. Định nghĩa về các trường Header
Các luật ngữ nghĩa ở đây được trình bày theo sự so sánh mức cao. Nó không
dành riêng cho trường nào. Mục đích của nó là để trợ giúp việc so sánh và phân tích
thông tin ở các trường.
Cấu trúc chung có dạng:
field = <field-name> ”:” [field-body] CRLF
field-name = 1*<any CHAR, excluding CTLs,SPACE,and ”:”>
field-body = *text<CRLF LWSP-char field-body>
1.4.3. Các trường header điển hình
a. Trường RETURN-PATH
<Return> = “Return-Path” “:” route-addr
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 40
Trường thông tin này được hệ thống truyền tải thư tín cuối cùng (là hệ thống cuối
cùng phát thư cho người nhận của nó) thêm vào phần header của thư. Nó được dùng
để chứa đựng những thông tin về địa chỉ trả về (return-address) của người gửi ban đầu.
b. Trường RECEIVED
<Received> = “Received-From” “:” domain
Một bản sao của trường thông tin này sẽ được thêm vào bởi mỗi một hệ thống
truyền tải thông điệp mà thư được chuyển qua. Thông tin ở trường này rất hữu ích
trong trường hợp xảy ra lỗi trong truyền thông.
Trường thông tin này dùng để xác định tên của máy chủ gửi (sending host), máy
chủ nhận và thời gian nhận được.
c. Trường FORWARD
<Forward> = “Forward-Path” “:” route-addr
Trường thông tin này được hệ thống truyền tải thư tín cuối cùng (là hệ thống cuối
cùng phát thư cho người nhận của nó) thêm vào phần header của thư. Nó được dùng
để chứa đựng những thông tin về địa chỉ của người nhận thư.
d. Trường FROM
<From> = “From” “:” mailbox
Trường thông tin này chứa đựng thông tin về người gửi thư (sender). Quá trình
gửi thư cần ngầm định trường này là đơn. Nó xác minh địa chỉ máy tính, xác nhận bên
gửi là một người, hệ thống hay một tiến trình. Nếu công việc này không được thực
hiện thì phải thay thế bằng trường Sender
e. Trường DATE
<Dates> = “Date” “:” date-time
Trường này chứa đựng thông tin về ngày, giờ gửi thư.
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 41
f. Trường TO
<To> = “To” “:” mailbox
Trường này chứa đựng thông tin về người nhận thư (recipient) chính thức.
g. Trường CC
<cc> = “cc” “:” address
Trường này chứa đựng thông tin về người nhận thư thứ hai, có nghĩa đồng gửi
(carbon copy-cc).
h. Trường BCC
<bcc> = “bcc” “:” address
Trường này chứa đựng thông tin thêm về người nhận thư (blind carbon copy-
bcc). Nội dung của trường này không chứa đựng trong bản sao thư gửi cho người nhận
thứ đầu tiên và người nhận thư hai.
i. Trường MESSAGE-ID
<Message-ID> = “Message-ID” “:” msg-id
Trường này chứa đựng thông tin định danh duy nhất về bức thư được gửi đi. Tính
duy nhất của trường này được bảo đảm bởi hệ thống sinh ra nó. Trường này được dùng
để dành riêng cho máy tính và không cần thiết đối với người sử dụng.
j. Trường SUBJECT
<Subject> = “Subject” “:” text
Trường này chứa đựng thông tin về tiêu đề thư cần gửi.
1.4.4. Ví dụ về cấu trúc thư
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 42
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
...
1.5. PHÂN TÍCH GIAO THỨC SMTP (RFC 821)
1.5.1. Giới thiệu chung
Mục đích của giao thức SMTP (Simple Mail Transfer Protocol) là để truyền thư
đáng tin cậy và có hiệu quả.
SMTP đọc lập về hệ thống con truyền thông đặc biệt và các yêu cầu chỉ tin cậy
theo kênh luồng dữ liệu tuần tự.
Đặc tính quan trọng của SMTP là khả năng chuyển tiếp thư tín qua các môi
trường dịch vụ truyền thông (transport service). Dịch vụ truyền thông cung cấp một
môi trường truyền thông liên quá trình (interprocess communication environment -
IPCE). IPCE có thể là một mạng, nhiều mạng hay một tập hợp con của một mạng.
Điều quan trọng để nhận thấy rằng các hệ thống truyền thông (IPCEs) không phải là
việc truyền thông tương ứng một tới một (one-to-one) với các mạng. Một tiến trình có
thể truyền thông qua lại trực tiếp với một tiến trình khác thông qua bất kỳ một IPCE đã
được biết. Thư tín là một ứng dụng hay là việc sử dụng truyền thông liên tiến trình.
Thư tín có thể được truyền qua giữa các tiến trình theo các IPCEs khác nhau bắng cách
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 43
chuyển tiếp qua một tiến tiến trình được kết nối tới hai hay nhiều IPCEs. Đặc biệt hơn
nữa, thư tín có thể được chuyển tiếp giữa các máy chủ (hosts) trên các hệ thống truyền
thông khác nhau bởi một máy chủ trên cả hai hệ thống truyền thông.
Giao thức SMTP định nghĩa cách để chuyển giao thư tín trực tiếp giữa các máy
tính trên mạng. Nó có hai vai trò là gửi (sender-SMTP) và nhận (receiver-SMTP) thư.
Thông thường, bên gửi thiết lập một liên kết TCP với bên nhận, và bên nhận sử dụng
cổng truyền thông số 25 để cung cấp dịch vụ thư tín điện tử.
Trong một phiên giao dịch thư tín, bên gửi và bên nhận trao đổi tuần tự các lệnh
và các thông tin phản hồi.
1.5.2. Mô hình hoạt động phiên giao dịch
SMTP được thiết kế dựa trên mô hình truyền thông sau: khi người sử dụng
(user) gửi một yêu cầu dịch vụ thư tín, trước tiên Sender-SMTP thành lập một kênh
truyền thông hai chiều tới Receiver-SMTP. Receiver-SMTP có thể là đích cuối cùng
hoặc là một trạm trung gian. Sau đó, các lệnh của SMTP được sinh ra từ phía Sender-
SMTP và gửi tới Receiver-SMTP. Receiver-SMTP sẽ thao tác trên các lệnh đó và gửi
trả kết quả về phía Sender-SMTP.
SMTP cung cấp cơ chế chuyển thư trực tiếp từ máy chủ của người gửi đến máy
chủ của người nhận khi hai máy chủ được kết nối trên cùng một dịch vụ truyền thông
hoặc qua một hoặc nhiều Server-SMTP chuyển tiếp khi các máy chủ nguồn và máy
chủ đích không cùng được kết nối tới cùng một dịch vụ truyền thông.
File
System
SMTP
Commands / RepliesSender
SMTP
Sender - SMTP
Mô hình tổng quát sử dụng giao thức SMTP
Receiver
SMTP
Receiver - SMTP
and Mail
File
System
User
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 44
Để thực hiện được khả năng chuyển tiếp thư tín trên mạng, cần phải cung cấp tên
của máy chủ cũng như tên của hộp thư (mailbox) cuối cùng cần gửi tới cho SMTP
Server.
SMTP cung cấp một tập các lệnh cho phép các máy tính trên mạng có thể trao
đổi thực tiếp các thông tin theo một chuẩn qui định. Nhờ vào tập lệnh này, các hệ
thống thư tín khác nhau có thể trao đổi dữ liệu thư được với nhau. Mỗi lệnh đều có
cùng chiều dài bốn kí tự, hầu hết đều có tham số kèm theo.
Các lệnh sử dụng trong việc gửi/nhận thư tín tuân theo một cú pháp khắt khe. Đó
là các thông tin phản hồi luôn ở dạng mã số kèm theo là các mô tả về kết quả thực hiện
lệnh. Các lệnh và mã phản hồi không phân biệt chữ hoa và chữ thường. Điều này có
nghĩa là một lệnh hoặc một thông báo phản hồi có thể ở dạng in hoa, in thường hoặc
trong bất kì một kiểu kết hợp nào giữa in hoa và in thường.
Lưu ý rằng điều này là không đúng với tên của ”user mailbox”. Với một số máy
chủ, user name là phân biệt chữ hoa, thường và việc thực hiện các lệnh SMTP cần phải
quan tâm để đảm bảo sự thực hiện đúng đắn trong trường hợp này. Tên của máy chủ
cũng không phân biệt chữ hoa, thường.
Các lệnh và thông tin phản hồi được xây dựng bởi các kí tự từ bộ mã ASCII. Khi
dịch vụ giao vận cung cấp kênh truyền thông 8 bit, mỗi kí tự truyền đi sẽ chỉ sử dụng
7, bit cao nhất sẽ được xoá về 0.
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 45
Mỗi phiên giao dịch SMTP phải trải qua một số giai đoạn. Các giai đoạn đó được
thực hiện thông qua các thủ tục SMTP, kèm theo đó là các thông tin phản hồi:
 Thủ tục MAIL.
 Thủ tục FORWARDING.
 Các thủ tục MAILING và SENDING.
 Các thủ tục OPENING và CLOSING.
 Các mã trả lời của lệnh SMTP.
1.5.3. Thủ tục Mail
Để bắt đầu một phiên giao dịch thư tín thì cần phải thực hiện thủ tục MAIL. Nó
bao gồm 3 bước:
 Lệnh MAIL được gửi đi kèm theo là tham số về địa chỉ người gửi thư.
 Lệnh RCPT được gửi đi kèm theo là tham số về địa chỉ người nhận thư. Có thể
thực hiện nhiều lần lệnh này trong trường hợp muốn gửi thư cho nhiều người.
 Lệnh DATA được gửi đi để xác nhận bắt đầu gửi dữ liệu của thư.
Dưới đây là phần chi tiết về 3 lệnh trên.
a. Lệnh MAIL FROM <reverse-path>
 Tham số: là một xâu ký tự định danh mailbox của người gửi thư.
 Hạn chế: Chỉ có thể thực hiện khi chưa thực hiện chính lệnh này.
 Chi tiết: Lệnh này dùng để xác nhận người gửi thư đồng thời thiết lập một
phiên giao dịch SMTP với Receiver-SMTP (Server). Nó đưa ra đường dẫn
<reverse-path> để sử dụng trong trường hợp phiên giao dịch không thực hiện
thành công. Ngược lại, thông tin về người gửi sẽ được lưu lại.
 Thông tin phản hồi:
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 46
250 OK
Trường hợp còn lại bị lỗi.
Ví dụ:
S: MAIL FROM: <Smith@Alpha.edu>
R: 250 OK
b. Lệnh RCPT TO <forward-path>
 Tham số: là một xâu ký tự định danh mailbox của người nhận thư.
 Hạn chế: Chỉ có thể thực hiện khi đã định danh người gửi thư bằng lệnh
MAIL.
 Chi tiết: Lệnh này dùng để xác nhận người nhận thư được chỉ định trong tham
số <forward-path>. Nếu Receiver-SMTP chấp nhận thì thông tin về người gửi
sẽ được lưu lại. Lệnh này có thể thực hiện nhiều lần để xác nhận nhiều người
nhận thư.
 Thông tin phản hồi:
250 OK
Trường hợp còn lại bị lỗi.
Ví dụ
S: RCPT TO: <Jones@Beta.gov>
R: 250 OK
S: rcpt to: <Green@Beta.gov>
R: 550 No such user here
c. Lệnh DATA
 Tham số: không.
 Hạn chế: Chỉ có thể thực hiện khi đã thực hiện thành công việc xác nhận người
gửi và người nhận thư.
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 47
 Chi tiết: Lệnh này dùng để xác nhận bắt đầu việc gửi nội dung thư. Nếu SMTP
Receiver chấp nhận, nó sẽ tiến hành nhận và lưu trữ tất cả các dòng văn bản
được gửi đến. Để kết thúc việc gửi dữ liệu, SMTP Sender cần gửi một dòng
chỉ chứa một dấu chấm ”.”. Lưu ý rằng phần dữ liệu sau lệnh DATA bao gồm
toàn bộ phần header của thư (như các trường Date, Subject, CC, From, ...)
cũng như nội dung thư.
 Thông tin phản hồi:
250 OK
Ví dụ:
S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S:. . . Sends body of mail message . . .
S: <CR><LF>.<CR><LF>
R: 250 OK
S: QUIT
S: 221 Beta.gov Service Closing Transmission Channel
Sau đây là một ví dụ minh hoạ cho một phiên giao dịch thư tín SMTP. Phần
thông tin phía Server được bắt đầu bằng R: và mã số, tiếp sau là thông tin. Phần phía
Client là các lệnh thực thi của SMTP bắt đầu bằng S:. Ta sẽ sử dụng dịch vụ Telnet để
kích hoạt dịch vụ thư tín trên cổng 25 (SMTP).
d. Ví dụ về một phiên giao dịch SMTP
R: 220 BERKELEY.ARPA Simple Mail Transfer Service Ready
S: HELO USC-ISIF.ARPA
R: 250 BERKELEY.ARPA
S: MAIL FROM: <Postel@USC-ISIF.ARPA>
R: 250 OK
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 48
S: RCPT TO: <fabry@BERKELEY.ARPA>
R: 250 OK
S: RCPT TO: <eric@BERKELEY.ARPA>
R: 552 Recipient storage full, try again in another transaction
S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: Blah blah blah...
S: ...etc. etc. etc.
S: .
R: 250 OK
S: MAIL FROM: <Postel@USC-ISIF.ARPA>
R: 250 OK
S: RCPT TO: <eric@BERKELEY.ARPA>
R: 250 OK
S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: Blah blah blah...
S: ...etc. etc. etc.
S: .
R: 250 OK
S: QUIT
R: 221 BERKELEY.ARPA Service closing transmission channel
1.5.4. Thủ tục Forwarding
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 49
Trong một số trường hợp địa chỉ trong tham số <forward-path> bị sai, nhưng
SMTP Receiver lại biết chính xác địa chỉ đích thì các thông tin phản hồi có thể được
sử dụng để cho phép người gửi xác nhận lại địa chỉ đúng.
251 User not local; will forward to <forward-path>
Thông tin phản hồi này chỉ ra rằng mailbox của người nhận thuộc một máy chủ
(host) khác. Như vậy, SMTP Receiver sẽ chỉ ra <forward-path> chính xác để sử dụng
và nó sẽ chịu trách nhiệm gửi thư này.
551 User not local; please try <forward-path>
Thông tin phản hồi này chỉ ra rằng, SMTP Receiver biết được mailbox của
người nhận thuộc một máy chủ khác. Nó sẽ đưa ra địa chỉ chính xác để sử dụng nhưng
trong trường hợp này nó không thực hiện việc gửi thư đi. Chính vì vậy, người gửi cần
phải xác nhận lại các thông tin cho chính xác theo thông tin phản hồi của SMTP
Receiver hoặc trả lại thông báo lỗi cho người gửi ban đầu.
Sau đây là ví dụ về cách sử dụng thủ tục này:
S: RCPT TO:<Postel@USC-ISI.ARPA>
R: 251 User not local;
will forward to <Postel@USC-ISIF.ARPA>
or
S: RCPT TO:<Paul@USC-ISIB.ARPA>
R: 551 User not local;
please try <Mockapetris@USC-ISIF.ARPA>
1.5.5. Các thủ tục Mailing và Sending
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 50
SMTP chủ yếu cung cấp các chức năng phát thư đến mailbox của người sử dụng.
Tuy nhiên, nó cũng có một số các chức năng thực hiện việc chuyển thư đến terminal
của người sử dụng.
Việc phát thư đến mailbox của người sử dụng được gọi là ”mailing”, còn việc
phát thư đến terminal được gọi là ”sending”. Dịch vụ sending là phần mở rộng của một
hệ thống thư tín điện tử.
Có ba dạng câu lệnh được định nghĩa để hỗ trợ cho các tùy chọn sending. Các
câu lệnh này được dùng trong các phiên giao dịch SMTP thay thế cho câu lệnh MAIL
và báo cho Receiver-SMTP biết ý nghĩa đặc biệt của phiên giao dịch này.
a. Lệnh SEND FROM <reverse-path>
 Tham số: địa chỉ terminal của người nhận.
 Chi tiết: Lệnh này yêu cầu dữ liệu của thư được phân phát tới terminal của
người sử dụng. Nếu người sử dụng chưa kích hoạt (hoặc không chấp nhận
kiểu giao dịch này) thì Receiver-SMTP sẽ gửi trả mã 450. Phiên giao dịch là
thành công nếu thư được chuyển đến terminal của người sử dụng.
 Thông tin phản hồi:
450 OK
b. Lệnh SOML FROM <reverse-path>
 Tham số: địa chỉ terminal của người nhận.
 Chi tiết: Lệnh này (viết tắt của chữ Send Or MaiL) yêu cầu dữ liệu của thư
được phân phát tới terminal của người sử dụng trong trường hợp người sử
dụng kích hoạt (và chấp nhận kiểu giao dịch này). Trong trường hợp ngược
lại, nghĩa là người sử dụng chưa kích hoạt thì dữ liệu của thư sẽ được chuyển
đến mailbox của người nhận. Phiên giao dịch thành công nếu thư được chuyển
đến terminal của người sử dụng.
c. Lệnh SAML FROM <reverse-path>
 Tham số: địa chỉ terminal của người nhận.
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 51
 Chi tiết: Lệnh này (viết tắt của chữ Send And MaiL) yêu cầu dữ liệu của thư
được phân phát tới terminal của người sử dụng trong trường hợp người sử
dụng kích hoạt (và chấp nhận kiểu giao dịch này). Trong bất cứ trường hợp
nào thì dữ liệu của thư cũng sẽ được chuyển đến mailbox của người nhận.
Phiên giao dịch thành công nếu thư được chuyển đến mailbox của người sử
dụng.
1.5.6. Các thủ tục Opening và Closing
Khi một phiên giao dịch thư tín được mở, cần phải có sự trao đổi thông tin giữa
các máy chủ (host) để đảm bảo sự chính xác trong giao dịch. Có hai lệnh để thực hiện
việc đóng/mở một phiên giao dịch.
a. HELO <domain>
 Tham số: tên domain của máy chủ thực hiện việc gửi thư (có thể không có).
 Chi tiết: Lệnh này dùng để xác nhận domain máy chủ SMTP Sender.
 Thông tin phản hồi:
250 <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ố: không.
 Chi tiết: Lệnh này dùng để kết thúc phiên giao dịch SMTP.
 Thông tin phản hồi:
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 52
250 CRLF
Ví dụ:
S: QUIT
R: 221 BBN-UNIX.ARPA Service closing transmission channel
1.5.7. Mã trả lời của các câu lệnh SMTP
Trong một phiên giao dịch SMTP, phía SMTP Sender gửi các lệnh yêu cầu còn
phía SMTP Receiver sẽ gửi trả các thông tin phản hồi và các mã phản hồi.
Để đảm bảo tính thống nhất truyền thông trong quá trình truyền thư, đồng thời để
đảm bảo phía SMTP Sender luôn biết được chính xác trạng thái của SMTP Receiver,
mọi câu lệnh yêu cầu đều phải được trả lời bằng các mã thông tin phản hồi chính xác.
Bảng Mã thông tin phản hồi của SMTP
Mã thông tin phản hồi Thông tin kèm theo
500 Syntax error or Command unregconized
501 Syntax error in parameters or arguments
503 Bad sequence of command
504 Command parameter not implement
211 System status or System help reply
214 Help message
220 Simple Mail Transfer Service ready
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 53
221 Service closing transmission channel
421 Service not available, closing transmission channel
250 OK
251 User not local; will forward to <forward-path>
450 Mailbox unavailable (not found or no access)
551 User not local; please try <forward-path>
452 Insufficent system storage
552 Request mail action aborted
553 Mailbox name not allow (mailbox syntax incorrect)
354 Start mail input, end with <CRLF>.<CRLF>
554 Transaction failed
Một mã thông tin phản hồi là một số có 3 chữ số và tiếp theo là một chuỗi văn
bản mô tả về mã đó. Bảng trên đây sẽ trình bày chi tiết các thông tin phản hồi:
Truyền thông giữa Sender-SMTP và Receiver-SMTP được coi như một cuộc hội
thoại, được điều khiển bởi Sender-SMTP. Như vậy, Sender-SMTP đưa ra một lệnh
yêu cầu và Receiver- SMTP sẽ trả lại một mã thông tin phản hồi. Sau khi Sender-
SMTP đưa ra lệnh yêu cầu, nó phải đợi thông tin phản hồi từ Receiver-SMTP rồi mới
đưa ra lệnh tiếp theo.
Trong các mã thông tin phản hồi, mã phản hồi quan trọng nhất là 220. Nó đặc
trưng cho việc thực hiện thành công yêu cầu.
1.6. PHÂN TÍCH GIAO THỨC POP3 (RFC 1081,1082)
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 54
1.6.1. Giới thiệu
Giao thức POP3 cho phép một máy trạm có thể truy nhập để lấy thư trên máy
chủ. Nó định nghĩa cách thức giao tiếp với POP3 Server bởi các lệnh chuẩn được quy
định trong RFC 1081 để lấy thư về.
1.6.2. Mô hình hoạt động phiên giao dịch
Vào thời điểm bắt đầu, tiến trình phía Server bắt đầu dịch vụ POP3 bằng cách
”lắng nghe” trên cổng TCP 110. Thuật ngữ ”lắng nghe” ở đây được hiểu theo nghĩa là
tiến trình phía Server luôn luôn tiếp nhận các thông tin đến ở cổng dịch vụ mà nó cung
cấp - trong trường hợp này là cổng dịch vụ 110 - xử lý và gửi kết quả về cho tiến trình
yêu cầu dịch vụ phía Client.
Khi một tiến trình phía Client muốn sử dụng dịch vụ, nó thiết lập một kết nối
TCP tới máy chủ phía Server. Khi kết nối được thiết lập, POP3 Server gửi một thông
báo chấp nhận và sau đó tiến trình phía Client và POP3 Server có thể trao đổi các lệnh
cũng như các thông tin phản hồi cho đến khi kết nối bị hủy bỏ hoặc phiên giao dịch kết
thúc.
Các lệnh trong POP3 bao gồm từ khóa, có thể theo sau là một hoặc nhiều tham
số. Tất cả các lệnh đều được kết thúc bởi cặp ký tự CRLF. Từ khóa và các tham số là
các kí tự in được trong bảng mã kí tự ASCII, giữa chúng được phân cách bởi một kí tự
dấu cách trống. Từ khóa có thể dài ba hoặc bốn kí tự, còn các tham số có thể dài tới
bốn mươi kí tự.
Thông tin phản hồi của POP3 bao gồm một thông báo trạng thái và một từ khóa
có thể theo sau một số thông tin thêm. Tất cả các thông tin phản hồi đều được kết thúc
bởi cặp ký tự CRLF.
Có hai thông báo trạng thái là: Xác định (”+OK”) để xác nhận thành công và phủ
định (”-ERR”) để xác nhận trong trường hợp có lỗi.
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 55
Các thông tin phản hồi cho các lệnh thực tế là nhiều dòng. Trong những trường
hợp này, sau khi gửi dòng đầu tiên của thông tin phản hồi và một cặp CRLF, bất cứ
một dòng thêm vào nào được gửi thì đều phải kết thúc bằng cặp CRLF. Khi tất cả các
thông tin phản hồi đều đã được gửi, một dòng cuối cùng được gửi, bao gồm mã kết
thúc (mã thập phân 046, ”.”) và một cặp CRLF.
Nếu có một dòng nào trong thông tin phản hồi đa dòng bắt đầu với một mã ký tự
kết thúc (dấu chấm ”.”), thì dòng đó coi như chưa được xử lí xong đối với thông tin
phản hồi . Vì vậy, một thông tin phản hồi đa dòng được kết thúc bởi bộ năm octets là
”CRLF. CRLF”.
Một phiên giao dịch POP3 phải trải qua một số các trạng thái trong suốt thời gian
tồn tại của phiên làm việc. Mỗi lần kết nối TCP được mở và POP3 Server gửi thông
báo chấp nhận, phiên làm việc chuyển sang trang thái AUTHORIZATION. ở trạng
thái này, Client phải tự định danh của mình cho POP3 Server.
Mỗi khi Client thực hiện xong việc định danh, Server nhận được tài nguyên
tương ứng với hộp thư của Client, nó sẽ chuyển sang trạng thái TRANSACTION.
Trong trạng thái này, các yêu cầu của Client được chuyển sang và được thực hiện
bên phía POP3 Server. Khi Client đưa ra lệnh QUIT, phiên làm việc chuyển sang
trạng thái UPDATE. Trong trạng thái này, POP3 Server giải phóng mọi tài nguyên thu
được trong suốt trạng thái TRANSACTION và kết thúc. Đồng thời, kết nối TCP kết
thúc.
Một POP3 Server có thể có một bộ xác định thời gian. Nếu sau một khoảng thời
gian xác định trước mà phía Client không có tác động gì thì POP3 Server có thể tự
động kết thúc phiên làm việc. Khoảng thời gian này ít nhất là khoảng 10 phút.
Nếu trong khoảng thời gian này có bất kì một lệnh nào từ phía Client, bộ xác
định thời gian sẽ được khởi tạo lại. Khi hết thời gian hiệu lực, phiên làm việc không
chuyển sang trạng thái UPDATE. Server sẽ đóng kết nối TCP mà không chuyển bất kì
một thư nào cũng như các thông tin phản hồi nào về phía Client.
Như vậy, ta thấy một phiên làm việc của POP3 phải trải qua ba trạng thái: trạng
thái AUTHORIZATION, trạng thái TRANSACTION và trạng thái UPDATE.
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 56
Phần tiếp theo sẽ trình bày chi tiết về sự hoạt động của POP3 Server trong từng
trạng thái của phiên giao dịch và các lệnh có thể thực hiện trong mỗi trạng thái đó.
1.6.3. Trạng thái AUTHORIZATION
Khi một phiên giao dịch POP3 được kích hoạt bởi một POP3 Client, POP3
Server sẽ gửi một thông báo cho phía Client. Tương tự như phần trình bày về giao
thức SMTP, ta cũng sử dụng Telnet để kích hoạt dịch vụ này. Một ví dụ có thể là:
S: +OK dewey POP3 server ready
Chú ý rằng, đây là thông tin phản hồi từ phía POP3 Server. Dấu ”+” có nghĩa là
thành công, ngược lại, dấu ”-” là không thành công bị lỗi. Phiên làm việc POP3 hiện
tại đang ở trạng thái AUTHORIZATION. Phía Client bây giờ cần phải đưa vào các
lệnh để xác định người nhận thư cho POP3 Server. Để thực hiện việc này, phía Client
sử dụng hai lệnh là USER và PASS. Đầu tiên, Client sử dụng lệnh USER với tham số
là account của người nhận.
Nếu thông tin phản hồi từ phía POP3 Server bắt đầu bằng dấu ”+” (+OK) thì
phía Client có thể gửi tiếp lệnh PASS với tham số là mật khẩu của người nhận để kết
thúc việc định danh hoặc cũng có thể gửi lệnh QUIT để kết thúc phiên giao dịch.
Trong trường hợp ngược lại, nếu thông tin phản hồi bắt đầu bằng dấu ”-” (-ERR)
cho lệnh USER thì phía Client có thể thực hiện lại việc định danh hoặc kết thúc phiên
giao dịch bằng lệnh QUIT.
Khi phía Client đưa vào lệnh PASS, POP3 Server sẽ sử dụng kết hợp hai đối số
đưa vào bởi hai lệnh USER và PASS để xác định xem người sử dụng này có tồn tại
hay không, có được quyền truy nhập vào mailbox hay không,.v.v
Sau khi đã xác định phía Client được quyền truy nhập, POP3 Server sẽ thực hiện
việc khoá mailbox để chống lại việc sửa đổi hoặc xoá thư trong mailbox từ các phiên
POP3 khác, trước khi chuyển sang trạng thái UPDATE.
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 57
Nếu như việc khoá mailbox thành công, phiên giao dịch POP3 sẽ chuyển sang
trạng thái TRANSACTION. Vào thời điểm này, chưa có một thư nào bị đánh dấu xoá.
Trong trường hợp ngược lại, nếu như vì một lý do nào đó không thể khoá được
mailbox (ví dụ như không được quyền truy nhập hoặc mailbox đã bị khoá,.v.v) thì
POP3 Server sẽ gửi một thông tin phản hồi ”-ERR” và kết thúc luôn phiên giao dịch.
Sau khi POP3 Server đã mở được mailbox, nó sẽ gắn chỉ số cho mỗi một bức thư
và tính luôn kích thước từng bức thư. Chỉ số được bắt đầu từ 1. Trong các lệnh của
POP3 và các thông tin phản hồi, tất cả các chỉ số và kích thước thư đều ở dạng cơ số
10.
Sau đây là một số lệnh có thể thực hiện trong trạng thái AUTHORIZATION:
a. Lệnh USER [name]
 Tham số: là một xâu ký tự định danh của mailbox, duy nhất đối với Server.
 Hạn chế: Chỉ có thể thực hiện trong trạng thái AUTHORIZATION vào thời
điểm ban đầu hoặc sau khi việc định danh USER và PASS không thành công.
 Chi tiết: Lệnh này dùng để định danh người sử dụng.
 Thông tin phản hồi:
+OK name is welcome here
-ERR Never heard of name
Ví dụ:
C: USER mrose
S: +OK mrose is a real hoopy frood
...
C: USER frated
S: -ERR sorry, frated doesn't get his mail here
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 58
b. Lệnh PASS [string]
 Tham số: là một xâu ký tự định danh của mật khẩu tương ứng với mailbox.
 Hạn chế: Chỉ có thể thực hiện trong trạng thái AUTHORIZATION vào thời
điểm ban đầu hoặc sau khi việc định danh USER thành công.
 Chi tiết: Lệnh này dùng để xác định mật khẩu tương ứng với người sử dụng đã
định danh bằng lệnh USER.
 Thông tin phản hồi:
+OK maildrop locked and ready
-ERR invalid password
-ERR unable to lock maildrop
Ví dụ:
C: USER mrose
S: +OK mrose is a real hoopy frood
C: PASS secret
S: +OK mrose’s maildrop has 2 messages
(320 octets)
...
C: USER mrose
S: +OK mrose is a real hoopy frood
C: PASS secret
S: -ERR unable to lock mrose’s maildrop, file
already locked
c. Lệnh QUIT
 Tham số: không.
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 59
 Hạn chế: không
 Chi tiết: Lệnh này dùng để kết thúc phiên giao dịch.
 Thông tin phản hồi:
+OK
Ví dụ:
C: QUIT
S: +OK dewey POP3 server signing off
1.6.4. Trạng thái TRANSACTION
Mỗi lần phía Client thực hiện thành công việc định danh với POP3 Server,
mailbox tương ứng sẽ được khoá và phiên làm việc bây giờ sẽ ở trạng thái
TRANSACTION.
Phía Client có thể sử dụng bất cứ một lệnh POP3 nào để thực hiện giao dịch với
POP3 Server. Các lệnh này có thể lặp lại mà không bị hạn chế gì cả. Sau mỗi lệnh,
phía POP3 Server sẽ gửi trả một thông tin phản hồi và kết quả thực hiện.
Cuối cùng, phía Client thực hiện lệnh QUIT để chuyển phiên giao dịch sang
trạng thái UPDATE.
Sau đây là một số lệnh có thể thực hiện trong trạng thái TRANSACTION:
a. Lệnh STAT
 Tham số: không.
 Hạn chế: Chỉ có thể thực hiện trong trạng thái TRANSACTION.
 Chi tiết: Lệnh này dùng để lấy thông tin về số thư trong mailbox và kích thước
của mailbox tương ứng với người sử dụng. Cấu trúc của dòng thông tin phản
hồi này là: “+OK”, tiếp theo là một dấu cách trống, số lượng thư trong
mailbox và kích thước của mailbox tương ứng với người dùng đã xác định.
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 60
 Thông tin phản hồi:
+OK nn mm
Ví dụ:
C: STAT
S: +OK 2 320
b. Lệnh LIST [msg]
 Tham số: (có thể có hoặc không) là một số hiệu của thư trong số những thư
hiện có trong mailbox của người dùng. Lưu ý, những thư bị đánh dấu xoá sẽ bị
bỏ qua.
 Hạn chế: Chỉ có thể thực hiện trong trạng thái TRANSACTION.
 Chi tiết: Lệnh này dùng để liệt kê danh sách các thư có trong mailbox và kích
thước tương ứng hoặc lấy thông tin về một thư cụ thể nào đó. Trong trường
hợp không đưa vào tham số thì POP3 Server sẽ trả lại “+OK” và một danh
sách các thư và số hiệu tương ứng trong mailbox của người dùng. Trong
trường hợp ngược lại, có tham số, nếu tham số nằm trong khoảng cho phép từ
1 đến số thư thì POP3 Server sẽ trả lại “+OK” và số hiệu của thư và kích
thước tương ứng. Ngược lại, POP3 Server sẽ trả lại “-ERR”.
 Thông tin phản hồi:
+OK scan listing follows
-ERR no such message
Ví dụ:
C: LIST
S: +OK 2 messages (320 octets)
S: 1 120
S: 2 200
Đồ án tốt nghiệp
Sinh viên thực hiện Nguyễn Xuân Thanh Trang 61
S: .
...
C: LIST 2
S: +OK 2 200
...
C: LIST 3
S: -ERR no such message, only 2 messages in maildrop
c. Lệnh RETR [msg]
 Tham số: Số hiệu của thư cần lấy.
 Hạn chế: Chỉ có thể thực hiện trong trạng thái TRANSACTION.
 Chi tiết: Lệnh này dùng để hiện thị nội dung thư tương ứng với số hiệu đưa
vào. Nếu thực hiện được POP3 Server sẽ gửi trả một thông tin phản hồi đa
dòng, bắt đầu bằng ”+OK”, tiếp theo là các dòng chứa đựng thông tin về nội
dung thư cũng như tiêu đề của thư được chọn. Trong trường hợp có lỗi, POP3
Server sẽ gửi trả ”-ERR”
 Thông tin phản hồi:
+OK message follows
-ERR no such message
Ví dụ:
C: RETR 1
S: +OK 120 octets
S: <the POP3 server sends the entire message here>
S: .
d. Lệnh DELE [msg]
 Tham số: số hiệu của thư cần xoá.
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail
Tailieu.vncty.com   webmail

More Related Content

What's hot

Vien tham - 10 phan loai anh - a
Vien tham - 10 phan loai anh - aVien tham - 10 phan loai anh - a
Vien tham - 10 phan loai anh - attungbmt
 
Đề tài: Hệ thống giao thông thông minh và ứng dụng của nó, HOT
Đề tài: Hệ thống giao thông thông minh và ứng dụng của nó, HOTĐề tài: Hệ thống giao thông thông minh và ứng dụng của nó, HOT
Đề tài: Hệ thống giao thông thông minh và ứng dụng của nó, HOT
Dịch vụ viết bài trọn gói ZALO 0917193864
 
Lập trình hướng đối tượng tailieumienphi.edu.vn
Lập trình hướng đối tượng tailieumienphi.edu.vnLập trình hướng đối tượng tailieumienphi.edu.vn
Lập trình hướng đối tượng tailieumienphi.edu.vntailieumienphi
 
Nghiên cứu thiết kế hệ thống điều khiển trên thiết bị bay không người lái UAV...
Nghiên cứu thiết kế hệ thống điều khiển trên thiết bị bay không người lái UAV...Nghiên cứu thiết kế hệ thống điều khiển trên thiết bị bay không người lái UAV...
Nghiên cứu thiết kế hệ thống điều khiển trên thiết bị bay không người lái UAV...
Man_Ebook
 
Robot Scara - Tính Toán Động Học & Điều Khiển
Robot Scara - Tính Toán Động Học & Điều KhiểnRobot Scara - Tính Toán Động Học & Điều Khiển
Robot Scara - Tính Toán Động Học & Điều Khiển
PHÚ QUÝ ĐINH
 
Kỹ thuật bình trang điện tử.pdf
Kỹ thuật bình trang điện tử.pdfKỹ thuật bình trang điện tử.pdf
Kỹ thuật bình trang điện tử.pdf
Man_Ebook
 
Tài liệu Matlab kỹ thuật
Tài liệu Matlab kỹ thuậtTài liệu Matlab kỹ thuật
Tài liệu Matlab kỹ thuật
Pham Hoang
 
Giáo trình Lập trình C căn bản - Aptech
Giáo trình Lập trình C căn bản - AptechGiáo trình Lập trình C căn bản - Aptech
Giáo trình Lập trình C căn bản - AptechMasterCode.vn
 
Bài giảng Assembly
Bài giảng AssemblyBài giảng Assembly
Bài giảng Assembly
Bùi Công Thành
 
Thuyết minh dự án nhà máy sản xuất dầu thực vật
Thuyết minh dự án nhà máy sản xuất dầu thực vậtThuyết minh dự án nhà máy sản xuất dầu thực vật
Thuyết minh dự án nhà máy sản xuất dầu thực vật
LẬP DỰ ÁN VIỆT
 
Luận văn: Bài toán nhận dạng biển số xe, HAY
Luận văn: Bài toán nhận dạng biển số xe, HAYLuận văn: Bài toán nhận dạng biển số xe, HAY
Luận văn: Bài toán nhận dạng biển số xe, HAY
Dịch vụ viết bài trọn gói ZALO: 0909232620
 
Giáo trình hệ thống khí nén - Các phần tử khí nén
Giáo trình hệ thống khí nén - Các phần tử khí nénGiáo trình hệ thống khí nén - Các phần tử khí nén
Giáo trình hệ thống khí nén - Các phần tử khí nénTâm Đỗ Đức
 
Xu lý tín hiệu số
Xu lý tín hiệu sốXu lý tín hiệu số
Xu lý tín hiệu sốHao Truong
 
Giáo trình xử lý ảnh
Giáo trình xử lý ảnhGiáo trình xử lý ảnh
Giáo trình xử lý ảnhTùng Trần
 
Đề tài: Thiết kế hệ thống đo nhiệt độ, HAY, 9đ
Đề tài: Thiết kế hệ thống đo nhiệt độ, HAY, 9đĐề tài: Thiết kế hệ thống đo nhiệt độ, HAY, 9đ
Đề tài: Thiết kế hệ thống đo nhiệt độ, HAY, 9đ
Dịch vụ viết bài trọn gói ZALO 0917193864
 
Quá trình phát triển thần kỳ của kinh tế Nhật Bản (1952 – 1973)
Quá trình phát triển thần kỳ của kinh tế Nhật Bản (1952 – 1973)Quá trình phát triển thần kỳ của kinh tế Nhật Bản (1952 – 1973)
Quá trình phát triển thần kỳ của kinh tế Nhật Bản (1952 – 1973)
Dịch vụ viết bài trọn gói ZALO 0917193864
 
Đề tài: Chế tạo và điều khiển cánh tay robot 3 bậc tự do, HAY
Đề tài: Chế tạo và điều khiển cánh tay robot 3 bậc tự do, HAYĐề tài: Chế tạo và điều khiển cánh tay robot 3 bậc tự do, HAY
Đề tài: Chế tạo và điều khiển cánh tay robot 3 bậc tự do, HAY
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Đề tài: Nghiên cứu ứng dụng lập trình điều khiển động cơ, HOT
Đề tài: Nghiên cứu ứng dụng lập trình điều khiển động cơ, HOTĐề tài: Nghiên cứu ứng dụng lập trình điều khiển động cơ, HOT
Đề tài: Nghiên cứu ứng dụng lập trình điều khiển động cơ, HOT
Dịch vụ viết bài trọn gói ZALO: 0909232620
 
Họ vi xử lí 8086 intel
Họ vi xử lí 8086 intelHọ vi xử lí 8086 intel
Họ vi xử lí 8086 intel
dark_valley
 

What's hot (20)

Vien tham - 10 phan loai anh - a
Vien tham - 10 phan loai anh - aVien tham - 10 phan loai anh - a
Vien tham - 10 phan loai anh - a
 
Đề tài: Hệ thống giao thông thông minh và ứng dụng của nó, HOT
Đề tài: Hệ thống giao thông thông minh và ứng dụng của nó, HOTĐề tài: Hệ thống giao thông thông minh và ứng dụng của nó, HOT
Đề tài: Hệ thống giao thông thông minh và ứng dụng của nó, HOT
 
Lập trình hướng đối tượng tailieumienphi.edu.vn
Lập trình hướng đối tượng tailieumienphi.edu.vnLập trình hướng đối tượng tailieumienphi.edu.vn
Lập trình hướng đối tượng tailieumienphi.edu.vn
 
Nghiên cứu thiết kế hệ thống điều khiển trên thiết bị bay không người lái UAV...
Nghiên cứu thiết kế hệ thống điều khiển trên thiết bị bay không người lái UAV...Nghiên cứu thiết kế hệ thống điều khiển trên thiết bị bay không người lái UAV...
Nghiên cứu thiết kế hệ thống điều khiển trên thiết bị bay không người lái UAV...
 
Robot Scara - Tính Toán Động Học & Điều Khiển
Robot Scara - Tính Toán Động Học & Điều KhiểnRobot Scara - Tính Toán Động Học & Điều Khiển
Robot Scara - Tính Toán Động Học & Điều Khiển
 
Kỹ thuật bình trang điện tử.pdf
Kỹ thuật bình trang điện tử.pdfKỹ thuật bình trang điện tử.pdf
Kỹ thuật bình trang điện tử.pdf
 
Tài liệu Matlab kỹ thuật
Tài liệu Matlab kỹ thuậtTài liệu Matlab kỹ thuật
Tài liệu Matlab kỹ thuật
 
Giáo trình Lập trình C căn bản - Aptech
Giáo trình Lập trình C căn bản - AptechGiáo trình Lập trình C căn bản - Aptech
Giáo trình Lập trình C căn bản - Aptech
 
Ngôn ngữ lập trình C#
Ngôn ngữ lập trình C#Ngôn ngữ lập trình C#
Ngôn ngữ lập trình C#
 
Bài giảng Assembly
Bài giảng AssemblyBài giảng Assembly
Bài giảng Assembly
 
Thuyết minh dự án nhà máy sản xuất dầu thực vật
Thuyết minh dự án nhà máy sản xuất dầu thực vậtThuyết minh dự án nhà máy sản xuất dầu thực vật
Thuyết minh dự án nhà máy sản xuất dầu thực vật
 
Luận văn: Bài toán nhận dạng biển số xe, HAY
Luận văn: Bài toán nhận dạng biển số xe, HAYLuận văn: Bài toán nhận dạng biển số xe, HAY
Luận văn: Bài toán nhận dạng biển số xe, HAY
 
Giáo trình hệ thống khí nén - Các phần tử khí nén
Giáo trình hệ thống khí nén - Các phần tử khí nénGiáo trình hệ thống khí nén - Các phần tử khí nén
Giáo trình hệ thống khí nén - Các phần tử khí nén
 
Xu lý tín hiệu số
Xu lý tín hiệu sốXu lý tín hiệu số
Xu lý tín hiệu số
 
Giáo trình xử lý ảnh
Giáo trình xử lý ảnhGiáo trình xử lý ảnh
Giáo trình xử lý ảnh
 
Đề tài: Thiết kế hệ thống đo nhiệt độ, HAY, 9đ
Đề tài: Thiết kế hệ thống đo nhiệt độ, HAY, 9đĐề tài: Thiết kế hệ thống đo nhiệt độ, HAY, 9đ
Đề tài: Thiết kế hệ thống đo nhiệt độ, HAY, 9đ
 
Quá trình phát triển thần kỳ của kinh tế Nhật Bản (1952 – 1973)
Quá trình phát triển thần kỳ của kinh tế Nhật Bản (1952 – 1973)Quá trình phát triển thần kỳ của kinh tế Nhật Bản (1952 – 1973)
Quá trình phát triển thần kỳ của kinh tế Nhật Bản (1952 – 1973)
 
Đề tài: Chế tạo và điều khiển cánh tay robot 3 bậc tự do, HAY
Đề tài: Chế tạo và điều khiển cánh tay robot 3 bậc tự do, HAYĐề tài: Chế tạo và điều khiển cánh tay robot 3 bậc tự do, HAY
Đề tài: Chế tạo và điều khiển cánh tay robot 3 bậc tự do, HAY
 
Đề tài: Nghiên cứu ứng dụng lập trình điều khiển động cơ, HOT
Đề tài: Nghiên cứu ứng dụng lập trình điều khiển động cơ, HOTĐề tài: Nghiên cứu ứng dụng lập trình điều khiển động cơ, HOT
Đề tài: Nghiên cứu ứng dụng lập trình điều khiển động cơ, HOT
 
Họ vi xử lí 8086 intel
Họ vi xử lí 8086 intelHọ vi xử lí 8086 intel
Họ vi xử lí 8086 intel
 

Viewers also liked

giáo trình an toàn thư điện tử
giáo trình an toàn thư điện tửgiáo trình an toàn thư điện tử
giáo trình an toàn thư điện tử
sang dang
 
Athena_BaoCao_TTTN_Huynh_Chanh_Thong_MailServer
Athena_BaoCao_TTTN_Huynh_Chanh_Thong_MailServerAthena_BaoCao_TTTN_Huynh_Chanh_Thong_MailServer
Athena_BaoCao_TTTN_Huynh_Chanh_Thong_MailServer
Huỳnh Thông
 
Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web
Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng webBài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web
Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web
MasterCode.vn
 
Giao thức ftp, smtp
Giao thức ftp, smtpGiao thức ftp, smtp
Giao thức ftp, smtpLittle April
 
Protocolo SMTP (Simple Mail Transfer Protocol)
Protocolo  SMTP (Simple Mail Transfer Protocol)Protocolo  SMTP (Simple Mail Transfer Protocol)
Protocolo SMTP (Simple Mail Transfer Protocol)
Luis Alfredo Sanchez
 
Bài 2 Cơ chế làm việc của CSS - Giáo trình FPT
Bài 2 Cơ chế làm việc của CSS - Giáo trình FPTBài 2 Cơ chế làm việc của CSS - Giáo trình FPT
Bài 2 Cơ chế làm việc của CSS - Giáo trình FPT
MasterCode.vn
 
Quy chuẩn làm powerpoint
Quy chuẩn làm powerpointQuy chuẩn làm powerpoint
Quy chuẩn làm powerpoint
Nguyễn Thân
 

Viewers also liked (8)

giáo trình an toàn thư điện tử
giáo trình an toàn thư điện tửgiáo trình an toàn thư điện tử
giáo trình an toàn thư điện tử
 
Athena_BaoCao_TTTN_Huynh_Chanh_Thong_MailServer
Athena_BaoCao_TTTN_Huynh_Chanh_Thong_MailServerAthena_BaoCao_TTTN_Huynh_Chanh_Thong_MailServer
Athena_BaoCao_TTTN_Huynh_Chanh_Thong_MailServer
 
Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web
Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng webBài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web
Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web
 
Giao thức ftp, smtp
Giao thức ftp, smtpGiao thức ftp, smtp
Giao thức ftp, smtp
 
Protocolo SMTP (Simple Mail Transfer Protocol)
Protocolo  SMTP (Simple Mail Transfer Protocol)Protocolo  SMTP (Simple Mail Transfer Protocol)
Protocolo SMTP (Simple Mail Transfer Protocol)
 
Bài 2 Cơ chế làm việc của CSS - Giáo trình FPT
Bài 2 Cơ chế làm việc của CSS - Giáo trình FPTBài 2 Cơ chế làm việc của CSS - Giáo trình FPT
Bài 2 Cơ chế làm việc của CSS - Giáo trình FPT
 
Smtp
SmtpSmtp
Smtp
 
Quy chuẩn làm powerpoint
Quy chuẩn làm powerpointQuy chuẩn làm powerpoint
Quy chuẩn làm powerpoint
 

Similar to Tailieu.vncty.com webmail

Ltnc giao trinh 2017
Ltnc giao trinh 2017Ltnc giao trinh 2017
Ltnc giao trinh 2017
TaiTranQuang
 
Bai giang asp.net full
Bai giang asp.net fullBai giang asp.net full
Bai giang asp.net fullBoom Su
 
Bai giang asp.net full
Bai giang asp.net full Bai giang asp.net full
Bai giang asp.net full
Đỗ Đức Hiển
 
Bai giang asp.net full
Bai giang asp.net fullBai giang asp.net full
Bai giang asp.net full
Ly hai
 
Luận án: Nghiên cứu hệ thống thông tin chuyển tiếp sử dụng đa truy nhập không...
Luận án: Nghiên cứu hệ thống thông tin chuyển tiếp sử dụng đa truy nhập không...Luận án: Nghiên cứu hệ thống thông tin chuyển tiếp sử dụng đa truy nhập không...
Luận án: Nghiên cứu hệ thống thông tin chuyển tiếp sử dụng đa truy nhập không...
Dịch Vụ Viết Thuê Khóa Luận Zalo/Telegram 0917193864
 
Giáo trình Quản trị mạng
Giáo trình Quản trị mạngGiáo trình Quản trị mạng
Giáo trình Quản trị mạngTran Tien
 
Giao trinh quan tri mang&thietbimang
Giao trinh quan tri mang&thietbimangGiao trinh quan tri mang&thietbimang
Giao trinh quan tri mang&thietbimangLe Ngoc Thanh
 
ĐỒ ÁN THIẾT KẾ VÀ THI CÔNG NGÔI NHÀ THÔNG MINH
ĐỒ ÁN THIẾT KẾ VÀ THI CÔNG NGÔI NHÀ THÔNG MINHĐỒ ÁN THIẾT KẾ VÀ THI CÔNG NGÔI NHÀ THÔNG MINH
ĐỒ ÁN THIẾT KẾ VÀ THI CÔNG NGÔI NHÀ THÔNG MINH
lamluanvan.net Viết thuê luận văn
 
Hướng dẫn tự học Linux
Hướng dẫn tự học LinuxHướng dẫn tự học Linux
Hướng dẫn tự học LinuxNguyễn Duy Nhân
 
Giao trinh csharp tieng viet[bookbooming.com]
Giao trinh csharp tieng viet[bookbooming.com]Giao trinh csharp tieng viet[bookbooming.com]
Giao trinh csharp tieng viet[bookbooming.com]bookbooming1
 
Giao trinh csharp tieng viet[bookbooming.com]
Giao trinh csharp tieng viet[bookbooming.com]Giao trinh csharp tieng viet[bookbooming.com]
Giao trinh csharp tieng viet[bookbooming.com]bookbooming1
 
Gt thiet ke lan wan
Gt thiet ke lan wanGt thiet ke lan wan
Gt thiet ke lan wan
Le Ngoc Thanh
 
Phan tich-thiet-ke-he-thong-tin
Phan tich-thiet-ke-he-thong-tinPhan tich-thiet-ke-he-thong-tin
Phan tich-thiet-ke-he-thong-tinxxxabcyyy
 
2516102 phan-tich-thiet-ke-he-thong-thong-tin
2516102 phan-tich-thiet-ke-he-thong-thong-tin2516102 phan-tich-thiet-ke-he-thong-thong-tin
2516102 phan-tich-thiet-ke-he-thong-thong-tinTruong Tuyen
 

Similar to Tailieu.vncty.com webmail (20)

Ltnc giao trinh 2017
Ltnc giao trinh 2017Ltnc giao trinh 2017
Ltnc giao trinh 2017
 
Lập trình java
Lập trình javaLập trình java
Lập trình java
 
Bai giang asp.net full
Bai giang asp.net fullBai giang asp.net full
Bai giang asp.net full
 
Bai giang asp.net full
Bai giang asp.net full Bai giang asp.net full
Bai giang asp.net full
 
Bai giang asp.net full
Bai giang asp.net fullBai giang asp.net full
Bai giang asp.net full
 
Luận án: Nghiên cứu hệ thống thông tin chuyển tiếp sử dụng đa truy nhập không...
Luận án: Nghiên cứu hệ thống thông tin chuyển tiếp sử dụng đa truy nhập không...Luận án: Nghiên cứu hệ thống thông tin chuyển tiếp sử dụng đa truy nhập không...
Luận án: Nghiên cứu hệ thống thông tin chuyển tiếp sử dụng đa truy nhập không...
 
Giáo trình Quản trị mạng
Giáo trình Quản trị mạngGiáo trình Quản trị mạng
Giáo trình Quản trị mạng
 
Tin hoc ung dung
Tin hoc ung dungTin hoc ung dung
Tin hoc ung dung
 
Giao trinh quan tri mang&thietbimang
Giao trinh quan tri mang&thietbimangGiao trinh quan tri mang&thietbimang
Giao trinh quan tri mang&thietbimang
 
ĐỒ ÁN THIẾT KẾ VÀ THI CÔNG NGÔI NHÀ THÔNG MINH
ĐỒ ÁN THIẾT KẾ VÀ THI CÔNG NGÔI NHÀ THÔNG MINHĐỒ ÁN THIẾT KẾ VÀ THI CÔNG NGÔI NHÀ THÔNG MINH
ĐỒ ÁN THIẾT KẾ VÀ THI CÔNG NGÔI NHÀ THÔNG MINH
 
Tu hoc su dung linux 2
Tu hoc su dung linux 2Tu hoc su dung linux 2
Tu hoc su dung linux 2
 
Tu hoc su dung linux
Tu hoc su dung linuxTu hoc su dung linux
Tu hoc su dung linux
 
Tu hoc su_dung_linux
Tu hoc su_dung_linuxTu hoc su_dung_linux
Tu hoc su_dung_linux
 
Hướng dẫn tự học Linux
Hướng dẫn tự học LinuxHướng dẫn tự học Linux
Hướng dẫn tự học Linux
 
Giao trinh csharp tieng viet[bookbooming.com]
Giao trinh csharp tieng viet[bookbooming.com]Giao trinh csharp tieng viet[bookbooming.com]
Giao trinh csharp tieng viet[bookbooming.com]
 
Giao trinh csharp tieng viet[bookbooming.com]
Giao trinh csharp tieng viet[bookbooming.com]Giao trinh csharp tieng viet[bookbooming.com]
Giao trinh csharp tieng viet[bookbooming.com]
 
Gt thiet ke lan wan
Gt thiet ke lan wanGt thiet ke lan wan
Gt thiet ke lan wan
 
Baigiang ltm
Baigiang ltmBaigiang ltm
Baigiang ltm
 
Phan tich-thiet-ke-he-thong-tin
Phan tich-thiet-ke-he-thong-tinPhan tich-thiet-ke-he-thong-tin
Phan tich-thiet-ke-he-thong-tin
 
2516102 phan-tich-thiet-ke-he-thong-thong-tin
2516102 phan-tich-thiet-ke-he-thong-thong-tin2516102 phan-tich-thiet-ke-he-thong-thong-tin
2516102 phan-tich-thiet-ke-he-thong-thong-tin
 

More from Trần Đức Anh

Tailieu.vncty.com 5275 1261
Tailieu.vncty.com   5275 1261Tailieu.vncty.com   5275 1261
Tailieu.vncty.com 5275 1261
Trần Đức Anh
 
Tailieu.vncty.com 5249 5591
Tailieu.vncty.com   5249 5591Tailieu.vncty.com   5249 5591
Tailieu.vncty.com 5249 5591
Trần Đức Anh
 
Tailieu.vncty.com 5219 0449
Tailieu.vncty.com   5219 0449Tailieu.vncty.com   5219 0449
Tailieu.vncty.com 5219 0449
Trần Đức Anh
 
Tailieu.vncty.com 5208 2542
Tailieu.vncty.com   5208 2542Tailieu.vncty.com   5208 2542
Tailieu.vncty.com 5208 2542
Trần Đức Anh
 
Tailieu.vncty.com 5145 0887
Tailieu.vncty.com   5145 0887Tailieu.vncty.com   5145 0887
Tailieu.vncty.com 5145 0887
Trần Đức Anh
 
Tailieu.vncty.com 5142 5647
Tailieu.vncty.com   5142 5647Tailieu.vncty.com   5142 5647
Tailieu.vncty.com 5142 5647
Trần Đức Anh
 
Tailieu.vncty.com 5138 529
Tailieu.vncty.com   5138 529Tailieu.vncty.com   5138 529
Tailieu.vncty.com 5138 529
Trần Đức Anh
 
Tailieu.vncty.com 5125 4608
Tailieu.vncty.com   5125 4608Tailieu.vncty.com   5125 4608
Tailieu.vncty.com 5125 4608
Trần Đức Anh
 
Tailieu.vncty.com 5117 1019
Tailieu.vncty.com   5117 1019Tailieu.vncty.com   5117 1019
Tailieu.vncty.com 5117 1019
Trần Đức Anh
 
Tailieu.vncty.com 5106 4775
Tailieu.vncty.com   5106 4775Tailieu.vncty.com   5106 4775
Tailieu.vncty.com 5106 4775
Trần Đức Anh
 
Tailieu.vncty.com 5089 2417
Tailieu.vncty.com   5089 2417Tailieu.vncty.com   5089 2417
Tailieu.vncty.com 5089 2417
Trần Đức Anh
 
Tailieu.vncty.com 5088 8018
Tailieu.vncty.com   5088 8018Tailieu.vncty.com   5088 8018
Tailieu.vncty.com 5088 8018
Trần Đức Anh
 
Tailieu.vncty.com 5067 1967
Tailieu.vncty.com   5067 1967Tailieu.vncty.com   5067 1967
Tailieu.vncty.com 5067 1967
Trần Đức Anh
 
Tailieu.vncty.com nst gioi-tinh_va_di_truyen_lien_ket_gioi_tinh_747
Tailieu.vncty.com   nst gioi-tinh_va_di_truyen_lien_ket_gioi_tinh_747Tailieu.vncty.com   nst gioi-tinh_va_di_truyen_lien_ket_gioi_tinh_747
Tailieu.vncty.com nst gioi-tinh_va_di_truyen_lien_ket_gioi_tinh_747
Trần Đức Anh
 
Tailieu.vncty.com nhom 6-de_tai_flo_9602
Tailieu.vncty.com   nhom 6-de_tai_flo_9602Tailieu.vncty.com   nhom 6-de_tai_flo_9602
Tailieu.vncty.com nhom 6-de_tai_flo_9602
Trần Đức Anh
 
Tailieu.vncty.com lai phan-tu_2413
Tailieu.vncty.com   lai phan-tu_2413Tailieu.vncty.com   lai phan-tu_2413
Tailieu.vncty.com lai phan-tu_2413
Trần Đức Anh
 
Tailieu.vncty.com duong hoa-hoc_3666
Tailieu.vncty.com   duong hoa-hoc_3666Tailieu.vncty.com   duong hoa-hoc_3666
Tailieu.vncty.com duong hoa-hoc_3666
Trần Đức Anh
 
Tailieu.vncty.com do an-nhan_giong_in_vi_tro_cay_co_ngot_stevia_4562
Tailieu.vncty.com   do an-nhan_giong_in_vi_tro_cay_co_ngot_stevia_4562Tailieu.vncty.com   do an-nhan_giong_in_vi_tro_cay_co_ngot_stevia_4562
Tailieu.vncty.com do an-nhan_giong_in_vi_tro_cay_co_ngot_stevia_4562
Trần Đức Anh
 
Tailieu.vncty.com tieu luanc4v-1324
Tailieu.vncty.com   tieu luanc4v-1324Tailieu.vncty.com   tieu luanc4v-1324
Tailieu.vncty.com tieu luanc4v-1324
Trần Đức Anh
 
Tailieu.vncty.com do an-cong_nghe_san_xuat_sua_tiet_trung_9366
Tailieu.vncty.com   do an-cong_nghe_san_xuat_sua_tiet_trung_9366Tailieu.vncty.com   do an-cong_nghe_san_xuat_sua_tiet_trung_9366
Tailieu.vncty.com do an-cong_nghe_san_xuat_sua_tiet_trung_9366
Trần Đức Anh
 

More from Trần Đức Anh (20)

Tailieu.vncty.com 5275 1261
Tailieu.vncty.com   5275 1261Tailieu.vncty.com   5275 1261
Tailieu.vncty.com 5275 1261
 
Tailieu.vncty.com 5249 5591
Tailieu.vncty.com   5249 5591Tailieu.vncty.com   5249 5591
Tailieu.vncty.com 5249 5591
 
Tailieu.vncty.com 5219 0449
Tailieu.vncty.com   5219 0449Tailieu.vncty.com   5219 0449
Tailieu.vncty.com 5219 0449
 
Tailieu.vncty.com 5208 2542
Tailieu.vncty.com   5208 2542Tailieu.vncty.com   5208 2542
Tailieu.vncty.com 5208 2542
 
Tailieu.vncty.com 5145 0887
Tailieu.vncty.com   5145 0887Tailieu.vncty.com   5145 0887
Tailieu.vncty.com 5145 0887
 
Tailieu.vncty.com 5142 5647
Tailieu.vncty.com   5142 5647Tailieu.vncty.com   5142 5647
Tailieu.vncty.com 5142 5647
 
Tailieu.vncty.com 5138 529
Tailieu.vncty.com   5138 529Tailieu.vncty.com   5138 529
Tailieu.vncty.com 5138 529
 
Tailieu.vncty.com 5125 4608
Tailieu.vncty.com   5125 4608Tailieu.vncty.com   5125 4608
Tailieu.vncty.com 5125 4608
 
Tailieu.vncty.com 5117 1019
Tailieu.vncty.com   5117 1019Tailieu.vncty.com   5117 1019
Tailieu.vncty.com 5117 1019
 
Tailieu.vncty.com 5106 4775
Tailieu.vncty.com   5106 4775Tailieu.vncty.com   5106 4775
Tailieu.vncty.com 5106 4775
 
Tailieu.vncty.com 5089 2417
Tailieu.vncty.com   5089 2417Tailieu.vncty.com   5089 2417
Tailieu.vncty.com 5089 2417
 
Tailieu.vncty.com 5088 8018
Tailieu.vncty.com   5088 8018Tailieu.vncty.com   5088 8018
Tailieu.vncty.com 5088 8018
 
Tailieu.vncty.com 5067 1967
Tailieu.vncty.com   5067 1967Tailieu.vncty.com   5067 1967
Tailieu.vncty.com 5067 1967
 
Tailieu.vncty.com nst gioi-tinh_va_di_truyen_lien_ket_gioi_tinh_747
Tailieu.vncty.com   nst gioi-tinh_va_di_truyen_lien_ket_gioi_tinh_747Tailieu.vncty.com   nst gioi-tinh_va_di_truyen_lien_ket_gioi_tinh_747
Tailieu.vncty.com nst gioi-tinh_va_di_truyen_lien_ket_gioi_tinh_747
 
Tailieu.vncty.com nhom 6-de_tai_flo_9602
Tailieu.vncty.com   nhom 6-de_tai_flo_9602Tailieu.vncty.com   nhom 6-de_tai_flo_9602
Tailieu.vncty.com nhom 6-de_tai_flo_9602
 
Tailieu.vncty.com lai phan-tu_2413
Tailieu.vncty.com   lai phan-tu_2413Tailieu.vncty.com   lai phan-tu_2413
Tailieu.vncty.com lai phan-tu_2413
 
Tailieu.vncty.com duong hoa-hoc_3666
Tailieu.vncty.com   duong hoa-hoc_3666Tailieu.vncty.com   duong hoa-hoc_3666
Tailieu.vncty.com duong hoa-hoc_3666
 
Tailieu.vncty.com do an-nhan_giong_in_vi_tro_cay_co_ngot_stevia_4562
Tailieu.vncty.com   do an-nhan_giong_in_vi_tro_cay_co_ngot_stevia_4562Tailieu.vncty.com   do an-nhan_giong_in_vi_tro_cay_co_ngot_stevia_4562
Tailieu.vncty.com do an-nhan_giong_in_vi_tro_cay_co_ngot_stevia_4562
 
Tailieu.vncty.com tieu luanc4v-1324
Tailieu.vncty.com   tieu luanc4v-1324Tailieu.vncty.com   tieu luanc4v-1324
Tailieu.vncty.com tieu luanc4v-1324
 
Tailieu.vncty.com do an-cong_nghe_san_xuat_sua_tiet_trung_9366
Tailieu.vncty.com   do an-cong_nghe_san_xuat_sua_tiet_trung_9366Tailieu.vncty.com   do an-cong_nghe_san_xuat_sua_tiet_trung_9366
Tailieu.vncty.com do an-cong_nghe_san_xuat_sua_tiet_trung_9366
 

Tailieu.vncty.com webmail

  • 1. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 1 Đề tài: “Xây dựng ứng dụng Webmail”
  • 2. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 2 MỤC LỤC PHẦN 1 : CƠ SỞ LÝ THUYẾT.................................................................................. 9 CHƯƠNG 1 : GIỚI THIỆU CHUNG VỀ INTERNET VÀ MỘT SỐ GIAO THỨC TRUYỀN THÔNG TRÊN INTERNET .............................................................................................................................. 10 1.1. GIỚI THIỆU CHUNG VỀ INTERNET..................................................... 10 1.2. HỌ GIAO THỨC TCP/IP........................................................................... 11 1.3. GIAO THỨC LIÊN MẠNG IP ................................................................... 12 1.4. GIAO THỨC ĐIỀU KHIỂN TRUYỀN TCP ............................................. 19 CHƯƠNG 2 : CƠ SỞ VỀ LẬP TRÌNH MẠNG TRÊN MÔ HÌNH CLIENT/SERVER ......................................................................... 21 2.1. LẬP TRÌNH GIAO TIẾP MẠNG VỚI WINDOWS SOCKETS................. 21 2.2. MỘT SỐ KHÁI NIỆM CƠ BẢN................................................................ 22 2.2.1.Địa chỉ Internet ................................................................................... 22 2.2.2. Khái niệm socket và port .................................................................. 22 2.3. CÁCH CÀI ĐẶT ỨNG DỤNG CLIENT/SERVER TCP........................... 23 2.3.1. Cách cài đặt server TCP ................................................................... 24 2.3.2. Cách cài đặt client TCP ................................................................... 24 CHƯƠNG 3 : MỘT SỐ KHÁI NIỆM LIÊN QUAN ĐẾN THƯ ĐIỆN TỬ.......................................................................................................... 26 1.1. MAILSERVER........................................................................................... 26 1.2. GIAO THỨC GỬI MAIL (MAIL TRANSPORT PROTOCOL)................. 26
  • 3. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 3 1.3.GIỚI THIỆU KIẾN TRÚC DỊCH VỤ THƯ ĐIỆN TỬ................................ 27 1.3.1. Kiến trúc và các dịch vụ.................................................................... 27 1.3.2. Tác nhân người sử dụng (The User Agent)...................................... 30 1.3.2.1.Gửi thư (Sending Email) ................................................................ 30 1.3.2.2. Đọc thư (Reading Email)............................................................... 31 1.3.2.3.Định dạng thông điệp (Message Formats)....................................... 32 1.3.2.4.Chuẩn RFC 822.............................................................................. 33 1.4.PHÂN TÍCH CẤU TRÚC THƯ ĐIỆN TỬ, CÁC GIAO THỨC SMTP VÀ POP3 ................................................................................................................. 36 1.4.1.Phân tích cấu trúc thư điện tử (RFC 822).......................................... 36 1.4.1.1. Giới thiệu ..................................................................................... 36 1.4.1.2. Mô tả về cấu trúc thư..................................................................... 37 1.4.2. Định nghĩa về các trường Header..................................................... 39 1.4.3. Các trường header điển hình............................................................ 39 1.4.4. Ví dụ về cấu trúc thư......................................................................... 41 1.5. PHÂN TÍCH GIAO THỨC SMTP (RFC 821)............................................ 42 1.5.1. Giới thiệu chung................................................................................ 42 1.5.2. Mô hình hoạt động phiên giao dịch.................................................. 43 1.5.3. Thủ tục Mail...................................................................................... 45 1.5.4. Thủ tục Forwarding........................................................................... 48 1.5.5. Các thủ tục Mailing và Sending......................................................... 49 1.5.6. Các thủ tục Opening và Closing ........................................................ 51 1.5.7. Mã trả lời của các câu lệnh SMTP .................................................... 52 1.6. PHÂN TÍCH GIAO THỨC POP3 (RFC 1081,1082) .................................. 53 1.6.1. Giới thiệu........................................................................................... 54 1.6.2. Mô hình hoạt động phiên giao dịch.................................................. 54
  • 4. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 4 1.6.3. Trạng thái AUTHORIZATION ....................................................... 56 1.6.4. Trạng thái TRANSACTION ............................................................ 59 1.6.5. Trạng thái UPDATE......................................................................... 64 1.6.6. Ví dụ về một phiên giao dịch POP3.................................................. 65 1.7. MIME (MULTIPURPOSE INTERNET MAIL EXTENSIONS)................. 67 1.8.POP BEFORE SMTP(CHỨNG THỰC QUYỀN TRUY CẬP THEO GIAO THỨC POP TRƯỚC KHI SỬ DỤNG SMTP)................................................... 69 1.9.MAIL CLIENT, WEB MAIL ...................................................................... 70 CHƯƠNG 4 : GIỚI THIỆU VỀ CÁC CÔNG NGHỆ LIÊN QUAN ............................................................................................................... 70 2.1.GIỚI THIỆU VỀ JRUN WEBSERVER 3.1................................................. 70 2.2.GIỚI THIỆU VỀ SQL SERVER 7.0............................................................ 71 2.2.1. Lý thuyết hệ quản trị cơ sở dữ liệu sql server 7.0 và Cấu trúc cơ sở dữ liệu của sql server 7.0 ............................................................................. 71 2.2.2. Cấu trúc cơ sở dữ liệu vật lý:............................................................. 72 2.2.2.1. Trang (page):................................................................................. 72 2.2.2.2 .Extent:........................................................................................... 73 2.2.2.3 Những loại file trong CSDL:SQL Server có 3 loại file: .................. 73 2.3. LÝ THUYẾT MÔ HÌNH QUAN HỆ.......................................................... 74 2. 3.1. Các khái niệm cơ bản........................................................................ 74 2.3.2. Khái Niệm phụ thuộc dữ liệu và các dạng chuẩn ............................. 74 2.3.3 Khái niệm chỉ dẫn và khóa chỉ dẫn.................................................... 75 2.4.GIỚI THIỆU VỀ JAVA SERVLET............................................................ 75 2.4.1.Khái niệm về JAVA SERVLET ......................................................... 75 2.4.2.Những ứng dụng thực tế của JAVA SERVLET và kiến trúc của JAVA SERVLET......................................................................................... 76
  • 5. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 5 2.5.GIỚI THIỆU VỀ JAVA SERVER PAGES(JSP) ......................................... 76 2.5.1.Khái niệm về JSP ................................................................................ 76 2.5.2.Quan hệ giữa Servlet và JSP .............................................................. 77 2.5.2.1.Cách trình chủ biên dịch trang JSP thành servlet ............................ 77 2.5.2.2. So sánh giữa Servlet và JSP........................................................... 77 2.6. GIỚI THIỆU VỀ JAVABEANS ................................................................. 78 2.6.1.Khái niệm về JAVABEANS................................................................ 78 2.6.2.Các thẻ chuẩn của JAVABEANS trong trang JSP........................... 79 2.6.2.1.<jsp:useBean>................................................................................ 79 2.6.2.2.<jsp:setProperty> ........................................................................... 80 2.6.2.3. <jsp:getProperty>.......................................................................... 81 2.6.3.Thêm JAVABEANS vào JSP.............................................................. 81 PHẦN 2 : XÂY DỰNG ỨNG DỤNG....................................................................... 83 CHƯƠNG 1 PHÂN TÍCH BÀI TOÁN............................................... 83 1.1.TÊN ĐỀ TÀI ............................................................................................... 83 1.2.DỀ CƯƠNG CHI TIẾT ............................................................................... 83 1.2.1.Khảo sát............................................................................................... 83 1.2.2.Yêu cầu của bài toán........................................................................... 83 1.2.3.Dữ liệu vào, dữ liệu ra và các chức năng xử lý của hệ thống ............ 84 1.2.4. Chức năng của hệ thống thông tin quản lý ....................................... 85 1.3. LÝ DO CHỌN ĐỀ TÀI .............................................................................. 85 CHƯƠNG 2 : THIẾT KẾ VÀ CÀI ĐẶT ỨNG DỤNG............... 86 2.1.PHÂN TÍCH VÀ THẾT KẾ CƠ SỞ DỮ LIỆU............................................ 86 2.1.1.Phân tích.............................................................................................. 86 2.1.2. Giải thích các chức năng của hệ thống.............................................. 88
  • 6. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 6 2.1.3.biểu đồ luồng dữ liệu( DFD – Data flow Diagram)............................ 89 2.1.4. THIẾT KẾ HỆ THỐNG.................................................................... 89 2.1.4.1. Các bảng dữ liệu chính.................................................................. 89 2.2. CÀI ĐẶT MAILSERVER .......................................................................... 91 2.2.1.Phương án tổ chức lưu trữ mail trên Server...................................... 91 2.2.2.Các đơn thể của mailserver ................................................................ 92 2.2.2.1. Xây dựng SMTP Server ................................................................ 93 2.2.2.2. Xây dựng POP3 Server................................................................ 114 2.3.CÀI ĐẶT MAILCLIENT .......................................................................... 136 Một số giao diện chính................................................................................. 142 LỜI CẢM ƠN Trước hết tôi xin chân thành cảm ơn các thầy cô giáo khoa Đại học Đại Cương của trường Đại học Thuỷ Sản Nha Trang và khoa Công Nghệ Thông Tin trường Đại học Bách Khoa Hà Nội đã trang bị cho tôi những kiến thức cơ bản cần thiết trong những năm học vừa qua để tôi có thể thực hiện tốt cuốn đồ án này.
  • 7. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 7 Em xin chân thành cảm ơn thầy Văn Thế Minh đã tận tình giúp đỡ và hướng dẫn em hoàn tất cuốn đồ án này. Ngoài ra tôi cũng xin cảm ơn tất cả bạn bè đã giúp đỡ tôi trong suốt quá trình thực hiện đồ án. Mặc dù đã rất cố gắng, nhưng trong khoảng thời gian cho phép cũng như những hạn chế về kiến thức nên cuốn đồ án này của tôi không thể tránh khỏi những thiếu sót. Chính vì vậy, tôi rất mong nhận được sự góp ý của các thầy cô giáo cũng như bạn bè gần xa và những cá nhân hay tổ chức có quan tâm đến lĩnh vực được trình bày trong cuốn đồ án này. Hà Nội, tháng 5 năm 2003 Nguyễn Xuân Thanh
  • 8. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 8 LỜI NÓI ĐẦU Ngày nay với sự phát triển mạnh mẽ của tin học và công nghệ Internet, hầu như mọi người đều thấy rõ lợi ích mà các dịch vụ do mạng Internet mang lại. Dịch vụ thư điện tử gọi tắt là Email là một trong nhưng dịch vụ được sử dụng nhiều nhất trên Internet hiện nay. Dịch vụ này cho phép các cá nhân hay tổ chức trao đổi thư với nhau thông qua mạng Internet. Nhiều người sử dụng Internet chỉ để dùng dịch vụ này. Thông thường, khi sử dụng dịch vụ thư tín điện tử, người sử dụng thường ít khi quan tâm xem hệ thống bên trong đã thực hiện như thế nào. Vì vậy, họ ( người sử dụng) mới chỉ thấy được một nửa của ứng dụng dịch vụ Email và phần ứng dụng đó được gọi là Mail Client, hay là sử dụng dịch vụ thư tín máy trạm.
  • 9. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 9 Nhằm mục đích hiểu rõ hơn về hoạt động bên trong của ứng dụng Email ở phần cung cấp dịch vụ mà thường được gọi là Mail Server, trong cuốn đồ án này tôi xin trình bày một cách cơ bản hệ thống phục vụ việc truyền thư tín điện tử trên cơ sở tìm hiểu về các mô hình truyền thông thư tín, các giao thức truyền thông chuẩn, các hoạt động của một hệ Mail Server. Vì thời gian có hạn và có rất nhiều các vấn đề có liên quan, do đó đồ án này chỉ trình bày những vấn đề cơ bản nhất về dịch vụ thư tín điện tử và cài đặt một chương trình mang tính thử nghiệm do dịch vụ thư tín điện tử mà thôi. PHẦN 1 : CƠ SỞ LÝ THUYẾT
  • 10. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 10 CHƯƠNG 1 : GIỚI THIỆU CHUNG VỀ INTERNET VÀ MỘT SỐ GIAO THỨC TRUYỀN THÔNG TRÊN INTERNET 1.1. GIỚI THIỆU CHUNG VỀ INTERNET Mạng Internet là một tập hợp gồm hàng vạn hệ mạng trên khắp thế giới, được phát triển vào thập kỷ bảy mươi. Số lượng máy tính nối mạng và số lượng người truy cập vào mạng Internet trên toàn thế giới đang ngày càng tăng lên nhanh chóng, đặc biệt từ năm 1993 trở đi. Mạng Internet không chỉ cho phép chuyển tải thông tin nhanh chóng mà còn giúp cung cấp thông tin, nó cũng là diễn đàn và là thư viện toàn cầu đầu tiên. Mạng Internet có xuất xứ năm 1969 từ mạng máy tính toàn cục ARPANET do cơ quan quản lý các dự án nghiên cứu các công trình nghiên cứu khoa học tiên tiến thuộc Bộ Quốc phòng Mỹ (US Defense’s Advance Research Projects Agency - gọi tắt là DARPA) tài trợ. Từ giữa năm 1970, trung tâm DARPA hướng tới mạng Internet với kỹ thuật chuyển mạch gói qua mạng vô tuyến và thông tin vệ tinh. Năm 1980, DARPA thử nghiệm dùng giao thức TCP/IP và đã được các trường đại học ở Mỹ ghép nối với hệ điều hành UNIX BSD (Berkely Software Distribution). Hệ điều hành UNIX là hệ phát triển mạnh với rất nhiều công cụ hỗ trợ và đảm bảo các phần mềm ứng dụng có thể chuyển qua lại trên các họ máy khác nhau (máy mini, máy tính lớn và hiện nay là máy vi tính). Bên cạnh đó hệ điều hành UNIX BSD còn cung cấp nhiều thủ tục Internet cơ bản, đưa ra khái niệm Socket và cho phép chương trình ứng dụng thâm nhập vào Internet một cách dễ dàng. Cấu trúc mạng Internet gồm có:
  • 11. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 11  Tầng ứng dụng: TELNET, FTP, SMTP;  Tầng giao vận: TCP, UDP;  Tầng Internet: Internet Protocol;  Tầng mạng: X.25, Ethernet, FDDI. . .;  Tầng vật lý: là các môi trường truyền tin khác nhau. 1.2. HỌ GIAO THỨC TCP/IP TCP/IP là họ của các giao thức được sử dụng cho việc truyền thông máy tính. Các chữ cái được viết tắt bởi các từ (Transmission Control Protocol/Internet Protocol), hai giao thức này có cách biểu diễn khác nhau, người ta ít khi sử dụng với cái tên đầy đủ của hai giao thức này. Thường các giao thức được nhóm lại thành các họ (đôi khi còn được gọi là các suites hay các stacks). Các giao thức nào được nhóm lại với nhau thường được xác định bởi các bộ cài đặt của giao thức. Họ giao thức TCP/IP bao gồm các giao thức như là IP (Internet Protocol) , ARP (Address Resolution Protocol), ICMP (Internet Control Message Protocol), UDP (User Datagram Protocol), TCP (Transport Control Protocol), RIP (Routing Information Protocol), Telnet, SMTP (Simple Mail Transfer Protocol), DNS (Domain Name System) và một số các giao thức khác. Hình bên dưới mô tả kiến trúc của mạng TCP/IP có so sánh với mô hình tham chiếu OSI để chúng ta hình dung được sự tương ứng về chức năng của các tầng.
  • 12. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 12 TCP/IP thực chất là một họ giao thức cùng làm việc với nhau để cung cấp phương tiện truyền thông liên mạng. Trong phần này chúng ta sẽ xem xét giao thức IP, giao thức TCP và một số ứng dụng ở tầng trên như Telnet, FTP, DNS, SMTP. . . 1.3. GIAO THỨC LIÊN MẠNG IP Mục đích chính của IP là cung cấp khả năng kết nối các mạng con thành liên mạng để truyền dữ liệu. Vai trò của IP tương tự vai trò của giao thức tầng mạng trong mô hình OSI. IP là một giao thức kiểu ”không liên kết” (connectionless) có nghĩa là không cần có giai đoạn thiết lập liên kết trước khi truyền dữ liệu. Đơn vị dữ liệu dùng trong IP được gọi là datagram, có khuôn dạng chỉ ra trong hình bên dưới. ý nghĩa của các tham số như sau:  VER (4 bits): chỉ version hiện hành của IP được cài đặt TCP/IP Protocol SuiteOSI 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 IPARP IGMP ICMP Ethernet Token Ring Frame Relay ATM So sánh các kiến trúc ISO và TCP/IP
  • 13. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 13 0 1 2 3 4 5 6 7  IHL (4 bits): chỉ độ dài phần đầu (Internet Header Length) của datagram, tính theo đơn vị từ (word = 32 bits). Độ dài tối thiểu là 5 từ (20 bytes). VE R IH L Type of Service Total Length Indentification Fla gs Fragment offset Time to live Protocol Header Checksum Source Address Destination Address Options + Padding Data (max: 65.535 bytes)  Type of service (8 bits): đặc tả các tham số về dịch vụ, có dạng cụ thể như sau: Precedenc e D T R Reser ved trong đó: Precedence (3 bits): chỉ thị về quyền ưu tiên gửi datagram, cụ thể là: 111 - Network Control (cao nhất) 011 - Flash 110 - Internetwork Control 010 - Immediate 101 - CRITIC/ECP 001 - Priority 100 - Flas Override 000 - Routine (thấp nhất) D (Delay) (1 bit): chỉ độ trễ yêu cầu D = 0 độ trễ bình thường Header 0 3 4 7 8 15 16 31 Khuôn dạng của IP datagram
  • 14. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 14 D = 1 độ trễ thấp T (Throughput) (1 bit): chỉ thông lượng yêu cầu T = 0 thông lượng bình thường T = 1 thông lượng cao R (Reliability) (1 bit): chỉ độ tin cậy yêu cầu R = 0 độ tin cậy bình thường R = 1 độ tin cậy cao  Total Length (16 bits): chỉ độ dài toàn bộ datagram, kể cả phần header (tính theo đơn vị bytes).  Indentification (16 bits): cùng với các tham số khác (như Source Address và Destination Address) tham số này dùng để định danh duy nhất cho một datagram trong khoảng thời gian nó vẫn còn trên liên mạng.  Flags (3 bits): liên quan đến sự phân đoạn (fragment) các datagram, cụ thể là: 0 D F M F Bit 0: reserved - chưa sử dụng , luôn lấy giá trị 0 Bit 1 (DF) = 0 (May Fragment) = 1 (Don’t Fragment) Bit 2 (MF) = 0 (Last Fragment) = 1 (More Fragment)  Fragment Offset (13 bits): chỉ vị trí của đoạn (fragment) ở trong datagram, tính theo đơn vị 64 bits, có nghĩa là mỗi đoạn (trừ đoạn cuối cùng) phải chứa một vùng dữ liệu có độ dài là bội số của 64 bits.  Time to live (8 bits): qui định thời gian tồn tại (tính bằng giây) của datagram trong liên mạng để tránh tình trạng một datagram bị quẩn trên liên mạng. Thời 0 1 2
  • 15. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 15 gian này được cho bởi trạm gửi và được giảm đi (thường qui ước là 1 đơn vị) khi datagram đi qua mỗi router của liên mạng.  Protocol (8 bits): chỉ giao thức tầng trên kế tiếp sẽ nhận vùng dữ liệu ở trạm đích (hiện tại thường là TCP hoặc UDP được cài đặt trên IP).  Header Checksum (16 bits): mã kiểm soát lỗi 16 bits theo phương pháp CRC, chỉ cho vùng header.  Source Address (32 bits): địa chỉ của trạm nguồn.  Destination Address (32 bits): địa chỉ của trạm đích.  Options (độ dài thay đổi): khai báo các options do người gửi yêu cầu.  Padding (độ dài thay đổi): vùng đệm, được dùng để đảm bảo cho phần header luôn kết thúc ở một mốc 32 bits.  Data (độ dài thay đổi): vùng dữ liệu, có độ dài là bội số của 8 bits, và tối đa là 65535 bytes. Sơ đồ địa chỉ hoá để định danh các trạm (host) trong liên mạng được gọi là địa chỉ IP 32 bits (32- bit- IP address). Mỗi địa chỉ IP có độ dài 32 bits được tách thành 4 vùng (mỗi vùng 1 byte), có thể được biểu thị dưới dạng thập phân, bát phân, thập lục phân hoặc nhị phân. Cách viết phổ biến nhất là dùng ký pháp thập phân có dấu chấm (dotted decimal notation) để tách các vùng. Mục đích của địa chỉ IP là để định danh duy nhất cho một host bất kỳ trên liên mạng. Do tổ chức và độ lớn của các mạng con (subnet) của liên mạng có thể khác nhau, người ta chia các địa chỉ IP thành 5 lớp, ký hiệu là A, B, C, D và E, với cấu trúc được chỉ ra trong hình bên dưới. 0 1 7 8 15 16 23 24 31 netid netid Hostid netid hostid hostidLớp A Lớp B Lớp C Lớp D Lớp E
  • 16. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 16 Multicast address Reserved for future use Cấu trúc của các lớp địa chỉ IP  Lớp A cho phép định danh tới 126 mạng, với tối đa 16 triệu host trên mỗi mạng. Lớp này được dùng cho các mạng có số trạm cực lớn.  Lớp B cho phép định danh tới 16384 mạng, với tối đa 65534 host trên mỗi mạng.  Lớp C cho phép định danh tới 2 triệu mạng, với tối đa 254 host trên mỗi mạng. Lớp này được dùng cho các mạng có ít trạm.  Lớp D dùng để gửi IP datagram tới một nhóm các host trên một mạng.  Lớp E dự phòng để dùng trong tương lai. Ví dụ: 00001 010 00000 000 00000 000 00000 000 10000 000 00000 011 00000 010 00000 011 11000 000 00000 000 00000 001 11111 111 Một địa chỉ có hostid (host identifier) bằng 0 được dùng để hướng tới mạng định danh bởi vùng netid (network identifier). Ngược lại, một địa chỉ có vùng hostid = 10.0.0.0 (Líp A) netid = 10 = 128.3.2.3 (Líp B) netid = 128.3 hostid = 2.3 = 192.0.1.255 (Lớp C) netid = 192.0.1 hostid = 255 hướng đến tất cả các host
  • 17. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 17 0 0 31 31 (Lớp A) (Lớp B) (Lớp C) gồm toàn số 1 được dùng để hướng tới tất cả các host nối vào mạng netid, và nếu vùng netid cũng gồm toàn số 1 thì nó hướng tới tất cả các host trong liên mạng. Trong nhiều trường hợp, một mạng có thể được chia thành nhiều mạng con (subnet), lúc đó có thể đưa thêm các vùng subnetid để định danh các mạng con. Vùng subnet được lấy từ hostid, cụ thể đối với 3 lớp A, B, C như sau (hình bên dưới). Netid Subnetid Hostid 7 8 15 16 23 24 Netid Subnetid Hostid 7 8 15 16 23 24 Netid Subn etid Host id Bổ sung vùng subnetid Cần lưu ý rằng các địa chỉ IP được dùng để định danh các host và mạng ở tầng mạng của Mô hình OSI, và chúng không phải là các địa chỉ vật lý (hay địa chỉ MAC - Media Access Control) của các trạm đó trên một mạng cục bộ (Ethernet,Token Ring...). Trên một mạng cục bộ như vậy, hai trạm chỉ có thể liên lạc với nhau nếu chúng biết địa chỉ vật lý của nhau. Như vậy, vấn đề đặt ra là phải thực hiện ánh xạ giữa địa chỉ IP (32 bits) và địa chỉ vật lý (48 bits) của một trạm. Giao thức ARP (Address Resolution Protocol) đã được xây dựng để chuyển đổi từ địa chỉ IP sang địa chỉ vật lý khi cần thiết. Ngược lại, giao thức RARP (Reverse Address Resolution Protocol) được dùng để chuyển đổi từ địa chỉ vật lý sang địa chỉ IP. Chú ý rằng cả ARP và RARP đều không phải là bộ phận của IP. IP sẽ dùng đến chúng khi cần. Một giao thức khác cũng liên quan trực tiếp đến IP, đó là ICMP (Internet Control Message Protocol). Giao thức này thực hiện truyền các thông báo điều khiển (báo cáo
  • 18. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 18 về các tình trạng lỗi trên mạng,...) giữa các gateway hoặc trạm của liên mạng. Tình trạng lỗi có thể là: một datagram không thể tới được đích của nó, hoặc một router không đủ bộ nhớ đệm để lưu và chuyển một datagram,... Một thông báo ICMP được tạo và chuyển cho IP. IP sẽ ”bọc” (encapsulate) thông báo đó với một IP header và truyền đến cho router hoặc trạm đích. Chúng ta có thể tóm tắt các bước thực hiện bởi một thực thể IP như sau:  Đối với thực thể IP ở trạm nguồn, khi nhận được một primitive SEND từ tầng trên , nó thực hiện các bước sau đây: 1. Tạo một IP datagram dựa trên các tham số của primitive SEND 2. Tính checksum và ghép vào header của datagram. 3. Ra quyết định chọn đường: hoặc là trạm đích nằm trên cùng mạng hoặc một gateway sẽ được chọn cho chặng tiếp theo. 4. Chuyển datagram xuống tầng dưới để truyền qua mạng.  Đối với gateway, khi nhận được một datagram quá cảnh, nó thực hiện các động tác sau: 1. Tính checksum, nếu bất cập thì loại bỏ datagram. 2. Giảm giá trị của tham số Time-to-Live. Nếu thời gian đã hết thì loại bỏ datagram. 3. Ra quyết định chọn đường. 4. Phân đoạn datagram, nếu cần. 5. Kiến tạo lại IP header, bao gồm giá trị mới của các vùng Time-to-Live, Fragmentation và Checksum. 6. Chuyển datagram xuống tầng dưới để truyền qua mạng.  Cuối cùng, khi một datagram được nhận bởi thực thể IP ở trạm đích, nó sẽ thực hiện các công việc sau: 1. Tính checksum. Nếu bất cập thì loại bỏ datagram. 2. Tập hợp các đoạn của datagram (nếu có phân đoạn).
  • 19. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 19 3. Chuyển dữ liệu và các tham số điều khiển lên tầng trên bằng cách dùng primitive DELIVER. 1.4. GIAO THỨC ĐIỀU KHIỂN TRUYỀN TCP Source Port Destination Port Sequence Number Acknowledgment Number D a t a o f f s e t Reser ved Window Checksum Urgent Pointer Options Padding TCP data Khuôn dạng của TCP segment. TCP là một giao thức kiểu ”có liên kết” (connection - oriented), nghĩa là cần phải thiết lập liên kết (logic) giữa một cặp thực thể TCP trước khi chúng trao đổi dữ liệu với nhau. Đơn vị dữ liệu sử dụng trong TCP được gọi là segment (đoạn dữ liệu), có khuôn dạng mô tả trong hình bên dưới. Các tham số trong khuôn dạng trên có ý nghĩa như sau: bit 0 15 16 31
  • 20. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 20  Source Port (16 bits): số hiệu cổng của trạm nguồn.  Destination Port (16 bits): số hiệu cổng của trạm đích.  Sequence Number (32 bits): số hiệu của byte đầu tiên của segment trừ khi bit SYN được thiết lập. Nếu bit SYN được thiết lập thì Sequence Number là số hiệu tuần tự khởi đầu (ISN) và byte dữ liệu đầu tiên là ISN+1. Tham số này có vai trò như tham số N(S) trong HDLC.  Acknowledgment Number (32 bits): số hiệu của segment tiếp theo mà trạm nguồn đang chờ để nhận. Ngầm ý báo nhận tốt (các) segment mà trạm đích đã gửi cho trạm nguồn - Tham số này có vai trò như tham số N(R) trong HDLC.  Data offset (4 bits): số lượng từ - 32 bit (32 bit words) trong TCP header (tham số này chỉ ra vị trí bắt đầu của vùng dữ liệu).  Reserved (6 bits): dành để dùng trong tương lai.  Control bits (các bit điều khiển): Tư trái sang phải: URG: vùng con trỏ khẩn (Urgent Pointer) có hiệu lực ACK: vùng báo nhận (ACK number) có hiệu lực PSH: chức năng PUSH RST: khởi động lại (reset) liên kết SYN: đồng bộ hoá các số hiệu tuần tự (sequence number) FIN: không còn dữ liệu từ trạm nguồn Window (16 bits): cấp phát credit để kiểm soát luồng dữ liệu (cơ chế cửa sổ). Đây chính là số lượng các byte dữ liệu, bắt đầu từ byte được chỉ ra trong vùng ACK number, mà trạm nguồn đã sẵn sàng để nhận. Checksum (16 bits): mã kiểm soát lỗi (theo phương pháp CRC) cho toàn bộ segment (header + data).
  • 21. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 21  Urgent Pointer (16 bits): con trỏ này trỏ tới số hiệu tuần tự của byte đi theo sau dữ liệu khẩn, cho phép bên nhận biết được độ dài của dữ liệu khẩn. Vùng này chỉ có hiệu lực khi bit URG được thiết lập. Options (độ dài thay đổi): khai báo các Options của TCP, trong đó có độ dài tối đa của vùng TCP data trong một segment. Padding (độ dài thay đổi): Phần chèn thêm vào header để bảo đảm phần header luôn kết thúc ở một mốc 32 bits. Phần thêm này gồm toàn số 0.  TCP data (độ dài thay đổi): chứa dữ liệu của tầng trên, có độ dài tối đa ngầm định là 536 bytes. Giá trị này có thể điều chỉnh bằng cách khai báo trong vùng options. Một tiến trình ứng dụng trong một host truy nhập vào các dịch vụ của TCP cung cấp thông qua một cổng (port). Một cổng kết hợp với một địa chỉ IP tạo thành một socket duy nhất trong liên mạng. Dịch vụ TCP được cung cấp nhờ một liên kết logic giữa một cặp socket. Một socket có thể tham gia nhiều liên kết với các socket ở xa khác nhau. Trước khi truyền dữ liệu giữa hai trạm cần phải thiết lập một liên kết TCP giữa chúng và khi không còn nhu cầu truyền dữ liệu thì liên kết đó sẽ được giải phóng. Cũng giống như ở các giao thức khác, các thực thể ở tầng trên sử dụng TCP thông qua các hàm dịch vụ nguyên thuỷ (service primitives), hay còn gọi là các lời gọi hàm (function calls). CHƯƠNG 2 : CƠ SỞ VỀ LẬP TRÌNH MẠNG TRÊN MÔ HÌNH CLIENT/SERVER 2.1. LẬP TRÌNH GIAO TIẾP MẠNG VỚI WINDOWS SOCKETS Windows NT là một hệ điều hành mạnh, cho phép tận dụng tối đa khả năng của máy tính loại 32 bit, cung ứng hàng loạt các dịch vụ mạng trên môi trường Intranet và
  • 22. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 22 Internet. Hiện nay Windows NT được sử dụng tương đối phổ biến ở các cơ quan; doanh nghiệp Việt Nam. Giao thức truyền thông TCP/IP đã được dùng bởi hệ điều hành UNIX và mạng Internet, để các máy trên mạng NT có thể giao tiếp với các máy trên mạng khác, Windows NT cũng cung cấp giao thức này. Ngoài một số lệnh dùng giao thức TCP/IP đã được viết sẵn như: ftp, telnet, finger..., Windows NT cho phép người lập trình phát triển các ứng dụng khai thác kỹ thuật TCP/IP thông qua một thư viện tên là Windows Sockets. Có ba lý do chính để người lập trình sử dụng kỹ thuật TCP/IP:  Có thể viết các ứng dụng trên Windows NT để nối vào mạng UNIX và khai thác các dịch vụ có sẵn trên đó.  Tạo ra các dịch vụ trên máy Windows NT để các máy UNIX có thể khai thác những dịch vụ này.  Viết các chương trình cho phép các máy Windows NT giao tiếp trên hệ thống mạng Internet. 2.2. MỘT SỐ KHÁI NIỆM CƠ BẢN 2.2.1.Địa chỉ Internet Trong hệ thống mạng Internet, mỗi máy đều có một tên và một địa chỉ IP (cũng gọi là địa chỉ Internet). Ví dụ như, một máy NT có tên là ntsvr.csc.hcmu.vn và địa chỉ là 192.48.94.200. Tên hay địa chỉ IP đều xác định duy nhất một máy trong hệ thống mạng Internet. Khi lập trình, chúng ta có các hàm để chuyển đổi từ tên sang địa chỉ IP và ngược lại. 2.2.2. Khái niệm socket và port
  • 23. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 23 Một socket là một thiết bị truyền thông hai chiều tương tự như tập tin, chúng ta có thể đọc hay ghi lên nó, tuy nhiên mỗi socket là một thành phần trong một mối nối nào đó giữa các máy trên mạng máy tính và các thao tác đọc/ghi chính là sự trao đổi dữ liệu giữa các ứng dụng trên nhiều máy khác nhau. Trong giao thức truyền thông TCP, mỗi mối nối giữa hai máy tính được xác định bởi một port, khái niệm port ở đây không phải là một cổng giao tiếp trên thiết bị vật lý mà chỉ là một khái niệm logic trong cách nhìn của người lập trình, mỗi port được tương ứng với một số nguyên dương. Hình bên dưới minh họa cách giao tiếp giữa hai máy tính trong giao thức truyền thông TCP. Máy A tạo ra một socket và kết buộc (bind) socket này với port X (tức là một số nguyên dương có ý nghĩa cục bộ trong máy A), trong khi đó máy B tạo một socket khác và móc vào (connect) port X trong máy A. 2.3. CÁCH CÀI ĐẶT ỨNG DỤNG CLIENT/SERVER TCP socketsocketMÁY A MÁY B Port Hệ thống mạng Các socket và port trong mối nối TCP Mối nối
  • 24. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 24 2.3.1. Cách cài đặt server TCP ứng dụng server làm việc theo qui trình sau đây: 1. Gọi hàm socket để tạo một socket. 2. Gọi hàm bind để kết buộc socket với một port, đối với mỗi giao thức ứng chuẩn thì sẽ có một hằng số được định nghĩa sẵn trong Winsock cho port của giao thức đó. 3. Gọi hàm listen để chờ đến khi có một client nối vào port. 4. Khi có một client nối vào thì hàm listen trả điều khiển về, ứng dụng server gọi hàm accept để xác nhận mối nối của client. 5. Gọi các hàm gửi hay nhận dữ liệu để trao đổi thông tin với client, ví dụ như hàm send, recv. Sau khi đã hoàn tất quá trình trao đổi dữ liệu, ứng dụng server gọi hàm closesocket để đóng socket đã tạo. 2.3.2. Cách cài đặt client TCP ứng dụng client thực hiện các bước sau: 1. Gọi hàm socket để tạo một socket. 2. Gọi hàm connect để nối vào server. 3. Gọi các hàm gửi hay nhận dữ liệu để trao đổi thông tin với server, ví dụ như các hàm send, recv. 4. Sau khi đã hoàn tất quá trình trao đổi dữ liệu, ứng dụng client gọi hàm closesocket để đóng socket đã tạo. Hình minh họa các bước cần thiết để các ứng dụng client và server giao tiếp với nhau như sau:
  • 25. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 25 ứng dụng Server ứng dụng Client Nối vào port của server Tạo một socket Kết buộc socket với một port (bind) Đặt socket ở trạng thái chờ client nối vào Chấp nhận kết nối của client Chuyển đổi dữ liệu giữa client và server Tạo một socket Các bước giao tiếp giữa client và server trong giao thức TCP
  • 26. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 26 CHƯƠNG 3 : MỘT SỐ KHÁI NIỆM LIÊN QUAN ĐẾN THƯ ĐIỆN TỬ 1.1. MAILSERVER Theo mô hình hoạt động khách chủ, trình chủ là một dịch vụ đóng vai trò người chủ phục vụ trình khách. Mail Server thật ra là một trình mở socket lắng nghe các yêu cầu (hay lệnh gửi mail) từ trình khách đưa đến. Như đã nói, mail server sẽ tiếp nhận nội dung mail, phân phối mail đến các trình chủ khác, cho phép trình khách truy cập vào máy chủ để nhận mail về, bảo vệ mail…Chính vì vậy, trước khi nhận hay gửi mail cần phải biết được địa chỉ IP của máy chủ mail server. Địa chỉ này thường được gọi là mail host. Về khái niệm socket và địa chỉ IP sẽ được trình bày ở phần sau. 1.2. GIAO THỨC GỬI MAIL (MAIL TRANSPORT PROTOCOL)
  • 27. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 27 Để gửi mail đến máy chủ, trình khách phải sử dụng một giao thức trò chuyện với mail server. Tương tự trình duyệt dùng giao thức HTTP để trò chuyện với trình chủ Web server. Các trình khách muốn bắt tay với trình chủ mail server và gửi mail lên máy chủ sẽ sử dụng giao thức SMTP (Simple Mail Transport Protocol). SMTP được hầu hết các mail server trên thế gới sử dụng. Địa chỉ IP của máy chủ nhận mail gửi đi thường được gọi là outgoing mail address. Trình chủ thực hiện chức năng tiếp nhận mail theo giao thức SMTP gọi là SMTP Server, trình khách dùng giao thức SMTP để gửi mail đến trình chủ mail server gọi là SMTP Client. 1.3.GIỚI THIỆU KIẾN TRÚC DỊCH VỤ THƯ ĐIỆN TỬ 1.3.1. Kiến trúc và các dịch vụ Các hệ thống thư điện tử thường bao gồm hai hệ thống con: các tác nhân người sử dụng (the user agents - gọi tắt là UA), nó cho phép chúng ta đọc và gửi thư, và các tác nhân truyền thông điệp (the message transfer agents - gọi tắt là MTA), nó làm nhiệm vụ chuyển các thông điệp từ nguồn đến đích. Các UAs là các chương trình cục bộ hỗ trợ dựa trên điều khiển bằng lệnh, trình đơn menu hay dùng phương pháp đồ hoạ để tương tác với hệ thống thư điện tử. Các MTAs là các trình tiện ích hoạt động ở chế độ nền (background) thực hiện các nhiệm vụ cần thiết như tiếp nhận thư điện tử và chuyĨn thư qua các hệ thống. Đặc biệt, các hệ thống thư điện tử hỗ trợ năm chức năng cơ bản, được mô tả dưới đây: 1. Composition: Xử lý việc tạo các thông điệp và trả lời. Cho phép bất cứ trình soạn thảo nào có thể được sử dụng cho phần thân của thông điệp, các hệ thống có thể tự nó đảm trách việc đánh địa chỉ và chỉ số các trường tiêu đề (header fields) được kèm theo cùng với mỗi thông điệp. Ví dụ như, khi trả lời một thông điệp , hệ thống thư điện tử có thể tách địa chỉ của người gửi từ các thư được gửi đến và tự động chèn nó vào các trường thích hợp trong phần hồi âm (reply).
  • 28. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 28 2. Transfer: Làm nhiệm vụ chuyển các thông điệp từ người gửi đến nơi người nhận. Trong phần này, việc chuyển các thông điệp yêu cầu phải thiết lập một kết nối đến đích (người nhận) hay một số thao tác của thiết bị như xuất thông điệp và kết thúc việc kết nối. Hệ thống thư điện tử làm việc này một cách tự động mà không cần có một sự can thiệp nào của người sử dụng. 3. Reporting: Buộc phải thực hiện để báo cho người gửi những gì xảy ra đối với thông điệp vừa gửi là ở tình huấn đã gửi đến đích chưa? hoặc việc gửi đã bị huỷ bỏ? hoặc thư đã bị lạc?. 4. Displaying: Những thông điệp gửi đến được yêu cầu làm sao để mọi người có thể đọc được thư của họ. Đôi khi người ta yêu cầu quá trình chuyển đổi hay một trình hiển thị đặc biệt để hỗ trợ, ví dụ như, nếu thông điệp có dạng một tệp PostScript hay tiếng nói được số hóa kèm theo trong thông điệp gửi đến. 5. Disposition: Là bước cuối cùng liên quan đến những gì người nhận thực hiện đối với thông điệp sau khi đã nhận nó. Những khả năng có thể là ném nó đi trước khi đọc, ném nó đi sau khi đọc, lưu nó, v ..v. Nó cũng sẽ có thể thu nhận để đọc lại với các thông điệp đã được lưu lại, chuyển tiếp chúng hoặc xử lý chúng bằng những phương pháp khác nhau khi được yêu cầu của người sử dụng. Thêm vào đó các dịch vụ này, hầu hết các hệ thống thư điện tử cung cấp nhiều đặc tính nâng cao khác nhau. Một số đặc tính tiêu biểu như, khi người ta muốn chuyển thư hay khi họ nghĩ xa hơn về các chi tiết về thời gian , có lẽ họ muốn thư của họ được chuyển tiếp, chính vì thế mà hệ thống thực hiện điều này một cách tự động. Hầu hết các hệ thống cho phép người sử dụng tạo các hộp thư (mailboxes) để lưu trữ các thư chuyển đến (incoming email). Các lệnh được người ta yêu cầu tạo và hủy bỏ các hộp thư, kiểm tra các nội dung hộp thư, chèn và xóa các thông điệp khỏi hộp thư, v..v. Những người giám đốc công ty thường cần gửi một thông điệp đến mỗi người trong số những người cấp dưới, những khách hàng, hay đến các nhà cung cấp. Thì điều này đưa ra một ý tưởng về danh sách thư (mailing list), nó là một danh sách các địa
  • 29. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 29 chỉ thư điện tử. Khi một thông điệp được gửi đến mailing list, các bản sao giống hệt được phát đến mọi người có địa chỉ trên danh sách. Một ý tưởng quan trọng khác là thư điện tử được đăng ký, để cho phép người gửi (sender or originator) biết thư của họ đã đến. Việc thông báo tự động của các thư không được phát đi một cách luân phiên để người ta có thể biết. Trong bất kỳ trường hợp nào, người gửi nên có một số điều khiển thông qua thông báo những gì xảy ra. Các đặc tính nâng cao khác là đồng gửi (carbon copies), thư có mức ưu tiên cao (high-priority email), bảo mật thư (secret email) có nghĩa là thông điệp được mã hóa trước khi gửi đi, thay đổi người nhận thư (alternative recipients) nếu người đầu tiên không có khả năng nhận được, và các khả năng cho các cô thư ký vận dụng thư của các ông chủ của mình. Hiện nay thư điện tử được sử dụng rộng rãi trong việc kinh doanh cho việc truyền thông tin trong công ty. Nó cho phép các công nhân ở xa hợp tác về các dự án phức (a) (b) Envelope Message Body Mr. Daniel Dumkopf 18 Willow Lane White Plains, NY 10604 United Gizmo 180 Main St Boston, MA 02120 April, 5, 2001 Subject: Invoice 1081 Dear Mr. Dumkopf, Our computer records show that you still have not paid the above invoice of $0.00. Please send us a check for $0.00 promptly. Yous truly United Gizmo  Name: Mr. Daniel Dumkopf Street: 18 Willow Lane State: NY Zip code: 10604 Priority: Urgent Encryption: None From: United Gizmo Address: 180 Main St Location: Boston, MA 02120 Date: April, 5, 2001 Subject: Invoice 1081 Dear Mr. Dumkopf, Our computer records show that you still have not paid the above invoice of $0.00. Please send us a check for $0.00 promptly. Yous truly United Gizmo EnvelopeHeader Phong thư và thông điệp (a) Thư bưu điện. (b) Thư điện tử
  • 30. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 30 tạp, ngay cả những nơi phải mất nhiều thời gian mới đến được. Một số công ty đã đánh giá rằng thư điện tử đã làm tăng năng suất sản xuất của họ lên 30 phần trăm (Perry and Adam 1992). Một khái niệm quan trọng trong tất cả các hệ thống thư điện tử hiện đại là sự phân biệt giữa phong bì (envelope) và các nội dung bên trong của nó. Phong bì bao bọc (encapsulate) cả thông điệp. Nó chứa tất cả các thông tin cần thiết cho việc truyền tải thông điệp, như là địa chỉ đích, độ ưu tiên, và mức độ bảo mật , tất cả những cái đó đều khác biệt với thông điệp bên trong nó. Các MTAs sử dụng phong bì cho việc định tuyến đường truyền, điều này cũng giống như công việc của bưu điện làm. Thông điệp ở bên trong phong bì chứa hai phần: phần đầu thư (header) và phần thân thư (body). Phần header chứa các thông tin điều khiển cho các UAs. Phần thân là phần hoàn toàn dành cho người nhận thư. Các phong bì và các thông điệp được mô tả trong hình bên dưới. 1.3.2. Tác nhân người sử dụng (The User Agent) Các hệ thống thư điện tử có hai phần cơ bản, như chúng ta đã thấy gồm: phần UA và phần MTA. Trong phần này chúng ta sẽ xét đến phần UA. Một UA thường là một chương trình (đôi khi được gọi là bộ phận đọc thư) nó nhận một trong những lệnh khác nhau như là cho mục đích soạn thư, nhận thư, và hồi đáp các thông điệp, cũng như việc thao tác trên các hộp thư (mailboxes). Một số UA (User Agent) có giao diện trình đơn (menu) hay biểu tượng (icon) khá hấp dẫn mà nó yêu cầu sử dụng chuột hoặc chấp nhận các lệnh 1 ký tự từ bàn phím có cùng chức năng với menu và các icon. 1.3.2.1.Gửi thư (Sending Email) Để gửi đi một thông điệp, người sử dụng phải cung cấp thông điệp, địa chỉ đích và một số tham số khác nếu có (ví dụ như là mức ưu tiên hay bảo mật). Người sử dụng
  • 31. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 31 có thể tạo thông điệp với một trình soạn thảo văn bản khác nhau, một chương trình sử lý từ hay với bộ soạn thảo được xây dựng trên UA. Địa chỉ đích phải có một định dạng mà làm sao cho UA có thể hiểu được. Nhiều UA tiếp nhận các địa chỉ DNS (Domain Name System) có dạng mailbox@location. 1.3.2.2. Đọc thư (Reading Email) Khi UA được khởi động nó kiểm tra xem trong hộp thư của người sử dụng có thư gửi đến không trước khi hiển thị các thứ khác lên màn hình. Khi đó có lẽ nó sẽ thông báo một số các thông điệp trong hộp thư hay hiển thị một dòng vắn tắt của mỗi thông điệp và chờ nhận lệnh để xử lý. Một ví dụ ở hình bên dưới cho thấy một viễn cảnh sau khi UA khởi động hiển thị những yêu cầu vắn tắt của các thông điệp. Trong ví dụ này hộp thư (mailbox) gồm có tám thông điệp. Mỗi dòng hiển thị chứa một số trường được trích ra từ phong thư hay phần đầu (header) của từng thông điệp được định vị trong hộp thư. Trong một hệ thống thư điện tử đơn giản, sự lựa chọn của các trường hiển thị được người ta xây dựng thành một chương trình. Trong các hệ thống phức tạp hơn, người sử dụng có thể xác định cho các trường nào được hiển thị bằng cách cung cấp một hiện trạng người sử dụng (User Profile), hay một tệp mô tả định dạng hiển thị. Trong ví dụ này, trường đầu tiên là số thông điệp có trong hộp thư. Trường thứ hai, là các cờ có thể chứa một kí tự K, có nghĩa là thông điệp cũ đã được đọc kỳ trước rồi và được lưu lại trong hộp thư; kí tự A có nghĩa là thư này đã được hồi âm rồi; ký tự F (có thể có), có nghĩa là thư này được chuyển tiếp đến người khác. Các cờ khác nữa cũng có thể được đưa vào ngoài những cờ này. # Flags Bytes Sender Subject 1 K 1030 Asw Changes to MINIX 2 KA 6348 Radia Comments on material you sent me
  • 32. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 32 3 KF 4519 Amy N. Wong Request for information 4 1236 Bal Deadline for grant proposal 5 103610 Kaashoek Text of DCS paper 6 1223 Emily E. Pointer to WWW page 7 3110 Saniya Referee reports for the page 8 1204 Dmr Re: My student’s visit Hiển thị các nội dung của hộp thư. Trường thứ ba cho biết chiều dài của thông điệp và trường thứ tư cho biết ai là người gửi thông điệp. Vì trường này được trích ra từ các thông điệp rất đơn giản nên trường này có thể chứa các tên, họ tên đầy đủ, các tên viết tắt, các tên đăng nhập, hay bất cứ thứ gì mà người gửi có thể đặt vào trong trường này. Cuối cùng là trường chủ đề thư (Subject) cho biết một câu vắn tắt về những gì trong nội dung thông điệp. Những người nào quên điền vào trường này thì thường được cho là những câu trả lời cho thư của họ là không chú ý đến mức ưu tiên cao nhất. Sau khi các phần đầu đã được hiển thị, người sử dụng có thể thực hiện bất cứ lệnh nào có thể. Một chọn lựa tiêu biểu được liệt kê ở bảng bên dưới (hình bên dưới) là một ví dụ khi một người sử dụng bằng hệ thống Mmdf của hệ điều hành UNIX. Có một số lệnh yêu cầu có tham số. Ký hiệu # có nghĩa là chỉ số của một thông điệp (hay có thể có nhiều thông điệp) được chấp nhận. Tương tự, mẫu tự a có thể được sử dụng có nghĩa cho tất cả các thông điệp. 1.3.2.3.Định dạng thông điệp (Message Formats)
  • 33. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 33 Chúng ta bây giờ hãy quay đến từ giao diện người sử dụng đến định dạng của các thông điệp thư điện tử. Trước tiên chúng ta xét thư điện tử dựa trên bản mã ASCII sử dụng chuẩn RFC 822 (Request for Comments). Sau đó xét đến các mở rộng đa phương tiện cho chuẩn RFC 822. 1.3.2.4.Chuẩn RFC 822 Các thông điệp bao gồm một phong bì gốc (được mô tả trong chuẩn RFC 821), một số các trường cho phần đầu (header), một dòng để trống và sau đó là phần thân (body). Mỗi trường header bao gồm các dòng văn bản ASCII chứa tên trường, dấu hai chấm, và cho hầu hết các trường đều có một giá trị. RFC 822 là một chuẩn cũ và giữa các trường header của phong bì (envelope) không phân biệt rõ ràng như một chuẩn mới khác. Khi sử dụng, thông thường UA xây dựng một thông điệp và đưa nó qua bộ phận tác nhân truyền thông điệp (message transfer agents - MTA), ở đây nó dùng một số các trường header để xây dựng một envelope thực sự, thông điệp được thay đổi bởi cái cũ đi một chút cùng với envelope. Command Parameter Description H # Display header(s) on the screen C Display current header only T # Type message(s) on the screen S Address Send a message F # Forward message(s) A # Answer message(s) D # Delete message(s) U # Undelete previously deleted message(s)
  • 34. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 34 M # Move message(s) to another mailbox K # Keep message(s) after exiting R Mailbox Read a new mailbox N Go to the next message and display it B Backup to the previous message and display it G # Go to a specific message but do not display it E Exit the mail system and update the mailbox Các lệnh điều khiển thư đặc biệt Các trường header chủ yếu liên quan đến việc chuyển giao thông điệp được liệt kê dưới bảng sau. Trường To: trường này cho biết địa chỉ DNS của người nhận đầu tiên. Trường hợp nhiều người nhận cũng có thể cho phép. Trường Cc: cho biết địa chỉ của những người nhận kế tiếp (còn gọi là địa chỉ đồng gửi). Trong các thuật ngữ của việc phát thư, không có sự phân biệt giữa những người nhận thứ nhất và người nhận thứ hai. Thuật ngữ Cc (Carbon copy) là một mẫu đã được xác định, vì máy tính không sử dụng các trang giấy bản sao. Trường Bcc: (Blind carbon copy) giống như trường Cc: chỉ trừ là dòng này được xóa khỏi tất cả các bản sao được gửi đến những người nhận đầu tiên và người nhận thứ hai. Đặc tính này cho phép người ta gửi các bản sao đến những người trong nhóm thứ ba mà trong đó không có người thứ nhất và người thứ hai biết. Header Meaning To: Email address(es) of primary recipient(s) Cc: Email address(es) of secondary recipient(s)
  • 35. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 35 Bcc: Email address(es) for blind carbon copies From: Person or people who created the message Sender: Email address of the actual sender Received: Line added by each transfer agent along the route Return-Path: Can be used to identify a path back to the sender Các trường header RFC 822 liên quan trong việc truyền thông điệp Hai trường kế tiếp, From: và Sender: cho biết để phân biệt người viết và người gửi thông điệp. Hai trường này hoàn toàn không giống nhau. Ví dụ một nhà quản trị doanh nghiệp có thể viết một thông điệp nhưng cô thư ký là người thật sự truyền nó đi. Trong trường hợp này, người quản trị phải được liệt kê vào trong trường From: và cô thư ký trong trường Sender:. Header Meaning Date: The date and time the message was sent Reply-To: Email address to which replies should be sent Message-Id: Unique number for referencing this message latter In-Reply-To: Message-Id of the message to which this is a reply References: Other relevant Message-Ids Keywords: User chosen keywords Subject: Short summary of the message for the one-line display
  • 36. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 36 Một số trường được sử dụng trong header thông điệp RFC 822. Trường From: yêu cầu phải có còn trường Sender: có thể được bỏ qua nếu việc viết và gửi cùng một người. Các trường này cần thiết khi trong trường hợp thông điệp không được phát đi và phải được trả lại cho người gửi. Dòng chứa trường Received: được đưa vào bởi các MTAs dọc theo đường truyền. Dòng này chứa định danh của agent, ngày tháng và thời gian thông điệp được nhận, và các thông tin khác có thể được sử dụng cho việc tìm kiếm các lỗi trong hệ thống định tuyến. Trường Return-Path: được đưa vào bởi MTAs cuối cùng và được dùng cho việc gửi trở lại người gửi. Theo lý thuyết, thông tin này có thể được tập hợp lại từ các header Received: (loại trừ tên của hộp thư người gửi), nhưng nó ít khi được điền đầy đủ như thế và chỉ đặc biệt chứa địa chỉ của người gửi. Thêm vào các trường của hình bên dưới các thông điệp RFC 822 cũng có thể chứa một trong số các trường khác được sử dụng bởi các UA hay những người nhận thư. Những trường thông thường nhất được liệt kê trong hình bên dưới. Hầu hết những trường này có tính cách giải thích, vì thế chúng ta không đi sâu vào từng chi tiết. 1.4.PHÂN TÍCH CẤU TRÚC THƯ ĐIỆN TỬ, CÁC GIAO THỨC SMTP VÀ POP3 1.4.1.Phân tích cấu trúc thư điện tử (RFC 822) 1.4.1.1. Giới thiệu
  • 37. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 37 Để có thể chuyển giao thư giữa các máy tính trên mạng, thư cần phải được cấu trúc theo một chuẩn nào đó. Thông thường, một bức thư được cấu tạo bởi hai phần là phong bì (envelope) và nội dung (body). Khái niệm này hoàn toàn giống như trong hệ thống bưu chính thông thường. Trong khi phần phong bì chứa đựng những thông tin cần thiết để có thể thiết lập các liên kết truyền thông và phân phát thư đi, thì phần nội dung lại chứa đựng những thông tin về người gửi, ngày gửi,... Thư thường bao gồm nhiều dòng văn bản. Nó không cung cấp những tính năng riêng biệt như: mã hoá các hình vẽ, các bản sao, tiếng nói hoặc những văn bản có cấu trúc. Hơn nữa, nó cũng không có sự quan tâm đặc biệt đối với việc nén dữ liệu, việc truyền thông hoặc việc lưu trữ có hiệu quả. Cấu trúc thư bao gồm một số trường thông tin tuân theo các cú pháp nghiêm ngặt. Ví dụ như giữa phần tiêu đề thư (header) và phần nội dung thư (content) phải có một dòng trống ngăn cách,... 1.4.1.2. Mô tả về cấu trúc thư Một bức thư bao gồm các trường header và phần body. Phần body là các dòng văn bản kí tự theo bảng mã ASCII. Nó được phân cách với phần header bởi một dòng trống. 1.4.1.2.1. Các trường header dài Mỗi trường header có thể được xem như một dòng văn bản các kí tự theo bảng mã ASCII, cấu thành bởi tên trường (field-name) và nội dung của trường (field-body). Để thuận tiện cho việc so sánh, phần field-body có thể được chia ra làm nhiều dòng. Quá trình chia này được gọi là ”folding”. Ví dụ: To: "Joe & J. Harvey" <ddd @Org>, JJV @ BBN
  • 38. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 38 có thể được thay thế bằng: To: "Joe & J. Harvey" <ddd @ Org>, JJV@BBN và: To: "Joe & J. Harvey" <ddd@ Org>, JJV @BBN hay: To: "Joe & J. Harvey" <ddd @ Org>, JJV @ BBN Quá trình thực hiện ngược lại để kết hợp nhiều dòng header đã được folding như trên được gọi là: ”unfolding”. Unfolding được thực hiện bằng cách bỏ cặp kí tự CRLF và thay bằng một dấu cách trống. 1.4.1.2.2. Các trường header có cấu trúc Mỗi trường có cấu trúc bao gồm một field-name, tiếp theo là dấu hai chấm (”:”), sau đó field-body và cuối cùng là cặp kí tự CRLF. <field-name> : <field-body> <CRLF> Phần field-name là các kí tự in được trong bảng mã ASCII (có mã từ 33 đến 126, các kí tự số, ngoại trừ dấu hai chấm). Phần field-body có thể chứa bất kì kí tự ASCII nào, ngoại trừ cặp kí tự CRLF. Các trường thông tin header thực tế có thể được so sánh bởi các một vài hệ thống thư tín. Các trường này được gọi là trường có cấu trúc. Ví dụ như các trường chứa đựng thông tin về Date, Address,.v.v. Một số trường khác như ”Subject” và “Comments” chỉ được coi như một dòng văn bản bình thường.
  • 39. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 39 Chú ý, bất kỳ trường nào mà phần field-body được định nghĩa khác đi không phải là một dòng văn bản đơn thuần thì được gọi là trường có cấu trúc. 1.4.1.2.3. Các trường header không có cấu trúc Một số trường như “Subject” và “Comments” không được coi là các trường có cấu trúc và chúng được xem như một dòng văn bản đơn thuần cũng như nội dung thư trong phần body. 1.4.2. Định nghĩa về các trường Header Các luật ngữ nghĩa ở đây được trình bày theo sự so sánh mức cao. Nó không dành riêng cho trường nào. Mục đích của nó là để trợ giúp việc so sánh và phân tích thông tin ở các trường. Cấu trúc chung có dạng: field = <field-name> ”:” [field-body] CRLF field-name = 1*<any CHAR, excluding CTLs,SPACE,and ”:”> field-body = *text<CRLF LWSP-char field-body> 1.4.3. Các trường header điển hình a. Trường RETURN-PATH <Return> = “Return-Path” “:” route-addr
  • 40. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 40 Trường thông tin này được hệ thống truyền tải thư tín cuối cùng (là hệ thống cuối cùng phát thư cho người nhận của nó) thêm vào phần header của thư. Nó được dùng để chứa đựng những thông tin về địa chỉ trả về (return-address) của người gửi ban đầu. b. Trường RECEIVED <Received> = “Received-From” “:” domain Một bản sao của trường thông tin này sẽ được thêm vào bởi mỗi một hệ thống truyền tải thông điệp mà thư được chuyển qua. Thông tin ở trường này rất hữu ích trong trường hợp xảy ra lỗi trong truyền thông. Trường thông tin này dùng để xác định tên của máy chủ gửi (sending host), máy chủ nhận và thời gian nhận được. c. Trường FORWARD <Forward> = “Forward-Path” “:” route-addr Trường thông tin này được hệ thống truyền tải thư tín cuối cùng (là hệ thống cuối cùng phát thư cho người nhận của nó) thêm vào phần header của thư. Nó được dùng để chứa đựng những thông tin về địa chỉ của người nhận thư. d. Trường FROM <From> = “From” “:” mailbox Trường thông tin này chứa đựng thông tin về người gửi thư (sender). Quá trình gửi thư cần ngầm định trường này là đơn. Nó xác minh địa chỉ máy tính, xác nhận bên gửi là một người, hệ thống hay một tiến trình. Nếu công việc này không được thực hiện thì phải thay thế bằng trường Sender e. Trường DATE <Dates> = “Date” “:” date-time Trường này chứa đựng thông tin về ngày, giờ gửi thư.
  • 41. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 41 f. Trường TO <To> = “To” “:” mailbox Trường này chứa đựng thông tin về người nhận thư (recipient) chính thức. g. Trường CC <cc> = “cc” “:” address Trường này chứa đựng thông tin về người nhận thư thứ hai, có nghĩa đồng gửi (carbon copy-cc). h. Trường BCC <bcc> = “bcc” “:” address Trường này chứa đựng thông tin thêm về người nhận thư (blind carbon copy- bcc). Nội dung của trường này không chứa đựng trong bản sao thư gửi cho người nhận thứ đầu tiên và người nhận thư hai. i. Trường MESSAGE-ID <Message-ID> = “Message-ID” “:” msg-id Trường này chứa đựng thông tin định danh duy nhất về bức thư được gửi đi. Tính duy nhất của trường này được bảo đảm bởi hệ thống sinh ra nó. Trường này được dùng để dành riêng cho máy tính và không cần thiết đối với người sử dụng. j. Trường SUBJECT <Subject> = “Subject” “:” text Trường này chứa đựng thông tin về tiêu đề thư cần gửi. 1.4.4. Ví dụ về cấu trúc thư
  • 42. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 42 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 ... 1.5. PHÂN TÍCH GIAO THỨC SMTP (RFC 821) 1.5.1. Giới thiệu chung Mục đích của giao thức SMTP (Simple Mail Transfer Protocol) là để truyền thư đáng tin cậy và có hiệu quả. SMTP đọc lập về hệ thống con truyền thông đặc biệt và các yêu cầu chỉ tin cậy theo kênh luồng dữ liệu tuần tự. Đặc tính quan trọng của SMTP là khả năng chuyển tiếp thư tín qua các môi trường dịch vụ truyền thông (transport service). Dịch vụ truyền thông cung cấp một môi trường truyền thông liên quá trình (interprocess communication environment - IPCE). IPCE có thể là một mạng, nhiều mạng hay một tập hợp con của một mạng. Điều quan trọng để nhận thấy rằng các hệ thống truyền thông (IPCEs) không phải là việc truyền thông tương ứng một tới một (one-to-one) với các mạng. Một tiến trình có thể truyền thông qua lại trực tiếp với một tiến trình khác thông qua bất kỳ một IPCE đã được biết. Thư tín là một ứng dụng hay là việc sử dụng truyền thông liên tiến trình. Thư tín có thể được truyền qua giữa các tiến trình theo các IPCEs khác nhau bắng cách
  • 43. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 43 chuyển tiếp qua một tiến tiến trình được kết nối tới hai hay nhiều IPCEs. Đặc biệt hơn nữa, thư tín có thể được chuyển tiếp giữa các máy chủ (hosts) trên các hệ thống truyền thông khác nhau bởi một máy chủ trên cả hai hệ thống truyền thông. Giao thức SMTP định nghĩa cách để chuyển giao thư tín trực tiếp giữa các máy tính trên mạng. Nó có hai vai trò là gửi (sender-SMTP) và nhận (receiver-SMTP) thư. Thông thường, bên gửi thiết lập một liên kết TCP với bên nhận, và bên nhận sử dụng cổng truyền thông số 25 để cung cấp dịch vụ thư tín điện tử. Trong một phiên giao dịch thư tín, bên gửi và bên nhận trao đổi tuần tự các lệnh và các thông tin phản hồi. 1.5.2. Mô hình hoạt động phiên giao dịch SMTP được thiết kế dựa trên mô hình truyền thông sau: khi người sử dụng (user) gửi một yêu cầu dịch vụ thư tín, trước tiên Sender-SMTP thành lập một kênh truyền thông hai chiều tới Receiver-SMTP. Receiver-SMTP có thể là đích cuối cùng hoặc là một trạm trung gian. Sau đó, các lệnh của SMTP được sinh ra từ phía Sender- SMTP và gửi tới Receiver-SMTP. Receiver-SMTP sẽ thao tác trên các lệnh đó và gửi trả kết quả về phía Sender-SMTP. SMTP cung cấp cơ chế chuyển thư trực tiếp từ máy chủ của người gửi đến máy chủ của người nhận khi hai máy chủ được kết nối trên cùng một dịch vụ truyền thông hoặc qua một hoặc nhiều Server-SMTP chuyển tiếp khi các máy chủ nguồn và máy chủ đích không cùng được kết nối tới cùng một dịch vụ truyền thông. File System SMTP Commands / RepliesSender SMTP Sender - SMTP Mô hình tổng quát sử dụng giao thức SMTP Receiver SMTP Receiver - SMTP and Mail File System User
  • 44. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 44 Để thực hiện được khả năng chuyển tiếp thư tín trên mạng, cần phải cung cấp tên của máy chủ cũng như tên của hộp thư (mailbox) cuối cùng cần gửi tới cho SMTP Server. SMTP cung cấp một tập các lệnh cho phép các máy tính trên mạng có thể trao đổi thực tiếp các thông tin theo một chuẩn qui định. Nhờ vào tập lệnh này, các hệ thống thư tín khác nhau có thể trao đổi dữ liệu thư được với nhau. Mỗi lệnh đều có cùng chiều dài bốn kí tự, hầu hết đều có tham số kèm theo. Các lệnh sử dụng trong việc gửi/nhận thư tín tuân theo một cú pháp khắt khe. Đó là các thông tin phản hồi luôn ở dạng mã số kèm theo là các mô tả về kết quả thực hiện lệnh. Các lệnh và mã phản hồi không phân biệt chữ hoa và chữ thường. Điều này có nghĩa là một lệnh hoặc một thông báo phản hồi có thể ở dạng in hoa, in thường hoặc trong bất kì một kiểu kết hợp nào giữa in hoa và in thường. Lưu ý rằng điều này là không đúng với tên của ”user mailbox”. Với một số máy chủ, user name là phân biệt chữ hoa, thường và việc thực hiện các lệnh SMTP cần phải quan tâm để đảm bảo sự thực hiện đúng đắn trong trường hợp này. Tên của máy chủ cũng không phân biệt chữ hoa, thường. Các lệnh và thông tin phản hồi được xây dựng bởi các kí tự từ bộ mã ASCII. Khi dịch vụ giao vận cung cấp kênh truyền thông 8 bit, mỗi kí tự truyền đi sẽ chỉ sử dụng 7, bit cao nhất sẽ được xoá về 0.
  • 45. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 45 Mỗi phiên giao dịch SMTP phải trải qua một số giai đoạn. Các giai đoạn đó được thực hiện thông qua các thủ tục SMTP, kèm theo đó là các thông tin phản hồi:  Thủ tục MAIL.  Thủ tục FORWARDING.  Các thủ tục MAILING và SENDING.  Các thủ tục OPENING và CLOSING.  Các mã trả lời của lệnh SMTP. 1.5.3. Thủ tục Mail Để bắt đầu một phiên giao dịch thư tín thì cần phải thực hiện thủ tục MAIL. Nó bao gồm 3 bước:  Lệnh MAIL được gửi đi kèm theo là tham số về địa chỉ người gửi thư.  Lệnh RCPT được gửi đi kèm theo là tham số về địa chỉ người nhận thư. Có thể thực hiện nhiều lần lệnh này trong trường hợp muốn gửi thư cho nhiều người.  Lệnh DATA được gửi đi để xác nhận bắt đầu gửi dữ liệu của thư. Dưới đây là phần chi tiết về 3 lệnh trên. a. Lệnh MAIL FROM <reverse-path>  Tham số: là một xâu ký tự định danh mailbox của người gửi thư.  Hạn chế: Chỉ có thể thực hiện khi chưa thực hiện chính lệnh này.  Chi tiết: Lệnh này dùng để xác nhận người gửi thư đồng thời thiết lập một phiên giao dịch SMTP với Receiver-SMTP (Server). Nó đưa ra đường dẫn <reverse-path> để sử dụng trong trường hợp phiên giao dịch không thực hiện thành công. Ngược lại, thông tin về người gửi sẽ được lưu lại.  Thông tin phản hồi:
  • 46. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 46 250 OK Trường hợp còn lại bị lỗi. Ví dụ: S: MAIL FROM: <Smith@Alpha.edu> R: 250 OK b. Lệnh RCPT TO <forward-path>  Tham số: là một xâu ký tự định danh mailbox của người nhận thư.  Hạn chế: Chỉ có thể thực hiện khi đã định danh người gửi thư bằng lệnh MAIL.  Chi tiết: Lệnh này dùng để xác nhận người nhận thư được chỉ định trong tham số <forward-path>. Nếu Receiver-SMTP chấp nhận thì thông tin về người gửi sẽ được lưu lại. Lệnh này có thể thực hiện nhiều lần để xác nhận nhiều người nhận thư.  Thông tin phản hồi: 250 OK Trường hợp còn lại bị lỗi. Ví dụ S: RCPT TO: <Jones@Beta.gov> R: 250 OK S: rcpt to: <Green@Beta.gov> R: 550 No such user here c. Lệnh DATA  Tham số: không.  Hạn chế: Chỉ có thể thực hiện khi đã thực hiện thành công việc xác nhận người gửi và người nhận thư.
  • 47. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 47  Chi tiết: Lệnh này dùng để xác nhận bắt đầu việc gửi nội dung thư. Nếu SMTP Receiver chấp nhận, nó sẽ tiến hành nhận và lưu trữ tất cả các dòng văn bản được gửi đến. Để kết thúc việc gửi dữ liệu, SMTP Sender cần gửi một dòng chỉ chứa một dấu chấm ”.”. Lưu ý rằng phần dữ liệu sau lệnh DATA bao gồm toàn bộ phần header của thư (như các trường Date, Subject, CC, From, ...) cũng như nội dung thư.  Thông tin phản hồi: 250 OK Ví dụ: S: DATA R: 354 Start mail input; end with <CRLF>.<CRLF> S:. . . Sends body of mail message . . . S: <CR><LF>.<CR><LF> R: 250 OK S: QUIT S: 221 Beta.gov Service Closing Transmission Channel Sau đây là một ví dụ minh hoạ cho một phiên giao dịch thư tín SMTP. Phần thông tin phía Server được bắt đầu bằng R: và mã số, tiếp sau là thông tin. Phần phía Client là các lệnh thực thi của SMTP bắt đầu bằng S:. Ta sẽ sử dụng dịch vụ Telnet để kích hoạt dịch vụ thư tín trên cổng 25 (SMTP). d. Ví dụ về một phiên giao dịch SMTP R: 220 BERKELEY.ARPA Simple Mail Transfer Service Ready S: HELO USC-ISIF.ARPA R: 250 BERKELEY.ARPA S: MAIL FROM: <Postel@USC-ISIF.ARPA> R: 250 OK
  • 48. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 48 S: RCPT TO: <fabry@BERKELEY.ARPA> R: 250 OK S: RCPT TO: <eric@BERKELEY.ARPA> R: 552 Recipient storage full, try again in another transaction S: DATA R: 354 Start mail input; end with <CRLF>.<CRLF> S: Blah blah blah... S: ...etc. etc. etc. S: . R: 250 OK S: MAIL FROM: <Postel@USC-ISIF.ARPA> R: 250 OK S: RCPT TO: <eric@BERKELEY.ARPA> R: 250 OK S: DATA R: 354 Start mail input; end with <CRLF>.<CRLF> S: Blah blah blah... S: ...etc. etc. etc. S: . R: 250 OK S: QUIT R: 221 BERKELEY.ARPA Service closing transmission channel 1.5.4. Thủ tục Forwarding
  • 49. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 49 Trong một số trường hợp địa chỉ trong tham số <forward-path> bị sai, nhưng SMTP Receiver lại biết chính xác địa chỉ đích thì các thông tin phản hồi có thể được sử dụng để cho phép người gửi xác nhận lại địa chỉ đúng. 251 User not local; will forward to <forward-path> Thông tin phản hồi này chỉ ra rằng mailbox của người nhận thuộc một máy chủ (host) khác. Như vậy, SMTP Receiver sẽ chỉ ra <forward-path> chính xác để sử dụng và nó sẽ chịu trách nhiệm gửi thư này. 551 User not local; please try <forward-path> Thông tin phản hồi này chỉ ra rằng, SMTP Receiver biết được mailbox của người nhận thuộc một máy chủ khác. Nó sẽ đưa ra địa chỉ chính xác để sử dụng nhưng trong trường hợp này nó không thực hiện việc gửi thư đi. Chính vì vậy, người gửi cần phải xác nhận lại các thông tin cho chính xác theo thông tin phản hồi của SMTP Receiver hoặc trả lại thông báo lỗi cho người gửi ban đầu. Sau đây là ví dụ về cách sử dụng thủ tục này: S: RCPT TO:<Postel@USC-ISI.ARPA> R: 251 User not local; will forward to <Postel@USC-ISIF.ARPA> or S: RCPT TO:<Paul@USC-ISIB.ARPA> R: 551 User not local; please try <Mockapetris@USC-ISIF.ARPA> 1.5.5. Các thủ tục Mailing và Sending
  • 50. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 50 SMTP chủ yếu cung cấp các chức năng phát thư đến mailbox của người sử dụng. Tuy nhiên, nó cũng có một số các chức năng thực hiện việc chuyển thư đến terminal của người sử dụng. Việc phát thư đến mailbox của người sử dụng được gọi là ”mailing”, còn việc phát thư đến terminal được gọi là ”sending”. Dịch vụ sending là phần mở rộng của một hệ thống thư tín điện tử. Có ba dạng câu lệnh được định nghĩa để hỗ trợ cho các tùy chọn sending. Các câu lệnh này được dùng trong các phiên giao dịch SMTP thay thế cho câu lệnh MAIL và báo cho Receiver-SMTP biết ý nghĩa đặc biệt của phiên giao dịch này. a. Lệnh SEND FROM <reverse-path>  Tham số: địa chỉ terminal của người nhận.  Chi tiết: Lệnh này yêu cầu dữ liệu của thư được phân phát tới terminal của người sử dụng. Nếu người sử dụng chưa kích hoạt (hoặc không chấp nhận kiểu giao dịch này) thì Receiver-SMTP sẽ gửi trả mã 450. Phiên giao dịch là thành công nếu thư được chuyển đến terminal của người sử dụng.  Thông tin phản hồi: 450 OK b. Lệnh SOML FROM <reverse-path>  Tham số: địa chỉ terminal của người nhận.  Chi tiết: Lệnh này (viết tắt của chữ Send Or MaiL) yêu cầu dữ liệu của thư được phân phát tới terminal của người sử dụng trong trường hợp người sử dụng kích hoạt (và chấp nhận kiểu giao dịch này). Trong trường hợp ngược lại, nghĩa là người sử dụng chưa kích hoạt thì dữ liệu của thư sẽ được chuyển đến mailbox của người nhận. Phiên giao dịch thành công nếu thư được chuyển đến terminal của người sử dụng. c. Lệnh SAML FROM <reverse-path>  Tham số: địa chỉ terminal của người nhận.
  • 51. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 51  Chi tiết: Lệnh này (viết tắt của chữ Send And MaiL) yêu cầu dữ liệu của thư được phân phát tới terminal của người sử dụng trong trường hợp người sử dụng kích hoạt (và chấp nhận kiểu giao dịch này). Trong bất cứ trường hợp nào thì dữ liệu của thư cũng sẽ được chuyển đến mailbox của người nhận. Phiên giao dịch thành công nếu thư được chuyển đến mailbox của người sử dụng. 1.5.6. Các thủ tục Opening và Closing Khi một phiên giao dịch thư tín được mở, cần phải có sự trao đổi thông tin giữa các máy chủ (host) để đảm bảo sự chính xác trong giao dịch. Có hai lệnh để thực hiện việc đóng/mở một phiên giao dịch. a. HELO <domain>  Tham số: tên domain của máy chủ thực hiện việc gửi thư (có thể không có).  Chi tiết: Lệnh này dùng để xác nhận domain máy chủ SMTP Sender.  Thông tin phản hồi: 250 <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ố: không.  Chi tiết: Lệnh này dùng để kết thúc phiên giao dịch SMTP.  Thông tin phản hồi:
  • 52. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 52 250 CRLF Ví dụ: S: QUIT R: 221 BBN-UNIX.ARPA Service closing transmission channel 1.5.7. Mã trả lời của các câu lệnh SMTP Trong một phiên giao dịch SMTP, phía SMTP Sender gửi các lệnh yêu cầu còn phía SMTP Receiver sẽ gửi trả các thông tin phản hồi và các mã phản hồi. Để đảm bảo tính thống nhất truyền thông trong quá trình truyền thư, đồng thời để đảm bảo phía SMTP Sender luôn biết được chính xác trạng thái của SMTP Receiver, mọi câu lệnh yêu cầu đều phải được trả lời bằng các mã thông tin phản hồi chính xác. Bảng Mã thông tin phản hồi của SMTP Mã thông tin phản hồi Thông tin kèm theo 500 Syntax error or Command unregconized 501 Syntax error in parameters or arguments 503 Bad sequence of command 504 Command parameter not implement 211 System status or System help reply 214 Help message 220 Simple Mail Transfer Service ready
  • 53. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 53 221 Service closing transmission channel 421 Service not available, closing transmission channel 250 OK 251 User not local; will forward to <forward-path> 450 Mailbox unavailable (not found or no access) 551 User not local; please try <forward-path> 452 Insufficent system storage 552 Request mail action aborted 553 Mailbox name not allow (mailbox syntax incorrect) 354 Start mail input, end with <CRLF>.<CRLF> 554 Transaction failed Một mã thông tin phản hồi là một số có 3 chữ số và tiếp theo là một chuỗi văn bản mô tả về mã đó. Bảng trên đây sẽ trình bày chi tiết các thông tin phản hồi: Truyền thông giữa Sender-SMTP và Receiver-SMTP được coi như một cuộc hội thoại, được điều khiển bởi Sender-SMTP. Như vậy, Sender-SMTP đưa ra một lệnh yêu cầu và Receiver- SMTP sẽ trả lại một mã thông tin phản hồi. Sau khi Sender- SMTP đưa ra lệnh yêu cầu, nó phải đợi thông tin phản hồi từ Receiver-SMTP rồi mới đưa ra lệnh tiếp theo. Trong các mã thông tin phản hồi, mã phản hồi quan trọng nhất là 220. Nó đặc trưng cho việc thực hiện thành công yêu cầu. 1.6. PHÂN TÍCH GIAO THỨC POP3 (RFC 1081,1082)
  • 54. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 54 1.6.1. Giới thiệu Giao thức POP3 cho phép một máy trạm có thể truy nhập để lấy thư trên máy chủ. Nó định nghĩa cách thức giao tiếp với POP3 Server bởi các lệnh chuẩn được quy định trong RFC 1081 để lấy thư về. 1.6.2. Mô hình hoạt động phiên giao dịch Vào thời điểm bắt đầu, tiến trình phía Server bắt đầu dịch vụ POP3 bằng cách ”lắng nghe” trên cổng TCP 110. Thuật ngữ ”lắng nghe” ở đây được hiểu theo nghĩa là tiến trình phía Server luôn luôn tiếp nhận các thông tin đến ở cổng dịch vụ mà nó cung cấp - trong trường hợp này là cổng dịch vụ 110 - xử lý và gửi kết quả về cho tiến trình yêu cầu dịch vụ phía Client. Khi một tiến trình phía Client muốn sử dụng dịch vụ, nó thiết lập một kết nối TCP tới máy chủ phía Server. Khi kết nối được thiết lập, POP3 Server gửi một thông báo chấp nhận và sau đó tiến trình phía Client và POP3 Server có thể trao đổi các lệnh cũng như các thông tin phản hồi cho đến khi kết nối bị hủy bỏ hoặc phiên giao dịch kết thúc. Các lệnh trong POP3 bao gồm từ khóa, có thể theo sau là một hoặc nhiều tham số. Tất cả các lệnh đều được kết thúc bởi cặp ký tự CRLF. Từ khóa và các tham số là các kí tự in được trong bảng mã kí tự ASCII, giữa chúng được phân cách bởi một kí tự dấu cách trống. Từ khóa có thể dài ba hoặc bốn kí tự, còn các tham số có thể dài tới bốn mươi kí tự. Thông tin phản hồi của POP3 bao gồm một thông báo trạng thái và một từ khóa có thể theo sau một số thông tin thêm. Tất cả các thông tin phản hồi đều được kết thúc bởi cặp ký tự CRLF. Có hai thông báo trạng thái là: Xác định (”+OK”) để xác nhận thành công và phủ định (”-ERR”) để xác nhận trong trường hợp có lỗi.
  • 55. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 55 Các thông tin phản hồi cho các lệnh thực tế là nhiều dòng. Trong những trường hợp này, sau khi gửi dòng đầu tiên của thông tin phản hồi và một cặp CRLF, bất cứ một dòng thêm vào nào được gửi thì đều phải kết thúc bằng cặp CRLF. Khi tất cả các thông tin phản hồi đều đã được gửi, một dòng cuối cùng được gửi, bao gồm mã kết thúc (mã thập phân 046, ”.”) và một cặp CRLF. Nếu có một dòng nào trong thông tin phản hồi đa dòng bắt đầu với một mã ký tự kết thúc (dấu chấm ”.”), thì dòng đó coi như chưa được xử lí xong đối với thông tin phản hồi . Vì vậy, một thông tin phản hồi đa dòng được kết thúc bởi bộ năm octets là ”CRLF. CRLF”. Một phiên giao dịch POP3 phải trải qua một số các trạng thái trong suốt thời gian tồn tại của phiên làm việc. Mỗi lần kết nối TCP được mở và POP3 Server gửi thông báo chấp nhận, phiên làm việc chuyển sang trang thái AUTHORIZATION. ở trạng thái này, Client phải tự định danh của mình cho POP3 Server. Mỗi khi Client thực hiện xong việc định danh, Server nhận được tài nguyên tương ứng với hộp thư của Client, nó sẽ chuyển sang trạng thái TRANSACTION. Trong trạng thái này, các yêu cầu của Client được chuyển sang và được thực hiện bên phía POP3 Server. Khi Client đưa ra lệnh QUIT, phiên làm việc chuyển sang trạng thái UPDATE. Trong trạng thái này, POP3 Server giải phóng mọi tài nguyên thu được trong suốt trạng thái TRANSACTION và kết thúc. Đồng thời, kết nối TCP kết thúc. Một POP3 Server có thể có một bộ xác định thời gian. Nếu sau một khoảng thời gian xác định trước mà phía Client không có tác động gì thì POP3 Server có thể tự động kết thúc phiên làm việc. Khoảng thời gian này ít nhất là khoảng 10 phút. Nếu trong khoảng thời gian này có bất kì một lệnh nào từ phía Client, bộ xác định thời gian sẽ được khởi tạo lại. Khi hết thời gian hiệu lực, phiên làm việc không chuyển sang trạng thái UPDATE. Server sẽ đóng kết nối TCP mà không chuyển bất kì một thư nào cũng như các thông tin phản hồi nào về phía Client. Như vậy, ta thấy một phiên làm việc của POP3 phải trải qua ba trạng thái: trạng thái AUTHORIZATION, trạng thái TRANSACTION và trạng thái UPDATE.
  • 56. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 56 Phần tiếp theo sẽ trình bày chi tiết về sự hoạt động của POP3 Server trong từng trạng thái của phiên giao dịch và các lệnh có thể thực hiện trong mỗi trạng thái đó. 1.6.3. Trạng thái AUTHORIZATION Khi một phiên giao dịch POP3 được kích hoạt bởi một POP3 Client, POP3 Server sẽ gửi một thông báo cho phía Client. Tương tự như phần trình bày về giao thức SMTP, ta cũng sử dụng Telnet để kích hoạt dịch vụ này. Một ví dụ có thể là: S: +OK dewey POP3 server ready Chú ý rằng, đây là thông tin phản hồi từ phía POP3 Server. Dấu ”+” có nghĩa là thành công, ngược lại, dấu ”-” là không thành công bị lỗi. Phiên làm việc POP3 hiện tại đang ở trạng thái AUTHORIZATION. Phía Client bây giờ cần phải đưa vào các lệnh để xác định người nhận thư cho POP3 Server. Để thực hiện việc này, phía Client sử dụng hai lệnh là USER và PASS. Đầu tiên, Client sử dụng lệnh USER với tham số là account của người nhận. Nếu thông tin phản hồi từ phía POP3 Server bắt đầu bằng dấu ”+” (+OK) thì phía Client có thể gửi tiếp lệnh PASS với tham số là mật khẩu của người nhận để kết thúc việc định danh hoặc cũng có thể gửi lệnh QUIT để kết thúc phiên giao dịch. Trong trường hợp ngược lại, nếu thông tin phản hồi bắt đầu bằng dấu ”-” (-ERR) cho lệnh USER thì phía Client có thể thực hiện lại việc định danh hoặc kết thúc phiên giao dịch bằng lệnh QUIT. Khi phía Client đưa vào lệnh PASS, POP3 Server sẽ sử dụng kết hợp hai đối số đưa vào bởi hai lệnh USER và PASS để xác định xem người sử dụng này có tồn tại hay không, có được quyền truy nhập vào mailbox hay không,.v.v Sau khi đã xác định phía Client được quyền truy nhập, POP3 Server sẽ thực hiện việc khoá mailbox để chống lại việc sửa đổi hoặc xoá thư trong mailbox từ các phiên POP3 khác, trước khi chuyển sang trạng thái UPDATE.
  • 57. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 57 Nếu như việc khoá mailbox thành công, phiên giao dịch POP3 sẽ chuyển sang trạng thái TRANSACTION. Vào thời điểm này, chưa có một thư nào bị đánh dấu xoá. Trong trường hợp ngược lại, nếu như vì một lý do nào đó không thể khoá được mailbox (ví dụ như không được quyền truy nhập hoặc mailbox đã bị khoá,.v.v) thì POP3 Server sẽ gửi một thông tin phản hồi ”-ERR” và kết thúc luôn phiên giao dịch. Sau khi POP3 Server đã mở được mailbox, nó sẽ gắn chỉ số cho mỗi một bức thư và tính luôn kích thước từng bức thư. Chỉ số được bắt đầu từ 1. Trong các lệnh của POP3 và các thông tin phản hồi, tất cả các chỉ số và kích thước thư đều ở dạng cơ số 10. Sau đây là một số lệnh có thể thực hiện trong trạng thái AUTHORIZATION: a. Lệnh USER [name]  Tham số: là một xâu ký tự định danh của mailbox, duy nhất đối với Server.  Hạn chế: Chỉ có thể thực hiện trong trạng thái AUTHORIZATION vào thời điểm ban đầu hoặc sau khi việc định danh USER và PASS không thành công.  Chi tiết: Lệnh này dùng để định danh người sử dụng.  Thông tin phản hồi: +OK name is welcome here -ERR Never heard of name Ví dụ: C: USER mrose S: +OK mrose is a real hoopy frood ... C: USER frated S: -ERR sorry, frated doesn't get his mail here
  • 58. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 58 b. Lệnh PASS [string]  Tham số: là một xâu ký tự định danh của mật khẩu tương ứng với mailbox.  Hạn chế: Chỉ có thể thực hiện trong trạng thái AUTHORIZATION vào thời điểm ban đầu hoặc sau khi việc định danh USER thành công.  Chi tiết: Lệnh này dùng để xác định mật khẩu tương ứng với người sử dụng đã định danh bằng lệnh USER.  Thông tin phản hồi: +OK maildrop locked and ready -ERR invalid password -ERR unable to lock maildrop Ví dụ: C: USER mrose S: +OK mrose is a real hoopy frood C: PASS secret S: +OK mrose’s maildrop has 2 messages (320 octets) ... C: USER mrose S: +OK mrose is a real hoopy frood C: PASS secret S: -ERR unable to lock mrose’s maildrop, file already locked c. Lệnh QUIT  Tham số: không.
  • 59. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 59  Hạn chế: không  Chi tiết: Lệnh này dùng để kết thúc phiên giao dịch.  Thông tin phản hồi: +OK Ví dụ: C: QUIT S: +OK dewey POP3 server signing off 1.6.4. Trạng thái TRANSACTION Mỗi lần phía Client thực hiện thành công việc định danh với POP3 Server, mailbox tương ứng sẽ được khoá và phiên làm việc bây giờ sẽ ở trạng thái TRANSACTION. Phía Client có thể sử dụng bất cứ một lệnh POP3 nào để thực hiện giao dịch với POP3 Server. Các lệnh này có thể lặp lại mà không bị hạn chế gì cả. Sau mỗi lệnh, phía POP3 Server sẽ gửi trả một thông tin phản hồi và kết quả thực hiện. Cuối cùng, phía Client thực hiện lệnh QUIT để chuyển phiên giao dịch sang trạng thái UPDATE. Sau đây là một số lệnh có thể thực hiện trong trạng thái TRANSACTION: a. Lệnh STAT  Tham số: không.  Hạn chế: Chỉ có thể thực hiện trong trạng thái TRANSACTION.  Chi tiết: Lệnh này dùng để lấy thông tin về số thư trong mailbox và kích thước của mailbox tương ứng với người sử dụng. Cấu trúc của dòng thông tin phản hồi này là: “+OK”, tiếp theo là một dấu cách trống, số lượng thư trong mailbox và kích thước của mailbox tương ứng với người dùng đã xác định.
  • 60. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 60  Thông tin phản hồi: +OK nn mm Ví dụ: C: STAT S: +OK 2 320 b. Lệnh LIST [msg]  Tham số: (có thể có hoặc không) là một số hiệu của thư trong số những thư hiện có trong mailbox của người dùng. Lưu ý, những thư bị đánh dấu xoá sẽ bị bỏ qua.  Hạn chế: Chỉ có thể thực hiện trong trạng thái TRANSACTION.  Chi tiết: Lệnh này dùng để liệt kê danh sách các thư có trong mailbox và kích thước tương ứng hoặc lấy thông tin về một thư cụ thể nào đó. Trong trường hợp không đưa vào tham số thì POP3 Server sẽ trả lại “+OK” và một danh sách các thư và số hiệu tương ứng trong mailbox của người dùng. Trong trường hợp ngược lại, có tham số, nếu tham số nằm trong khoảng cho phép từ 1 đến số thư thì POP3 Server sẽ trả lại “+OK” và số hiệu của thư và kích thước tương ứng. Ngược lại, POP3 Server sẽ trả lại “-ERR”.  Thông tin phản hồi: +OK scan listing follows -ERR no such message Ví dụ: C: LIST S: +OK 2 messages (320 octets) S: 1 120 S: 2 200
  • 61. Đồ án tốt nghiệp Sinh viên thực hiện Nguyễn Xuân Thanh Trang 61 S: . ... C: LIST 2 S: +OK 2 200 ... C: LIST 3 S: -ERR no such message, only 2 messages in maildrop c. Lệnh RETR [msg]  Tham số: Số hiệu của thư cần lấy.  Hạn chế: Chỉ có thể thực hiện trong trạng thái TRANSACTION.  Chi tiết: Lệnh này dùng để hiện thị nội dung thư tương ứng với số hiệu đưa vào. Nếu thực hiện được POP3 Server sẽ gửi trả một thông tin phản hồi đa dòng, bắt đầu bằng ”+OK”, tiếp theo là các dòng chứa đựng thông tin về nội dung thư cũng như tiêu đề của thư được chọn. Trong trường hợp có lỗi, POP3 Server sẽ gửi trả ”-ERR”  Thông tin phản hồi: +OK message follows -ERR no such message Ví dụ: C: RETR 1 S: +OK 120 octets S: <the POP3 server sends the entire message here> S: . d. Lệnh DELE [msg]  Tham số: số hiệu của thư cần xoá.