Ứng dụng xem bảng giá chứng khoán

127 814 3
Ứng dụng xem bảng giá chứng khoán

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

MỤC LỤC Chương 1: MỞ ĐẦU 4 1.1 Lý do và Mục đích chọn đề tài 4 1.2 Phạm vi nghiên cứu của đề tài 4 Chương 2: TỔNG QUAN 6 2.1 Một số khái niệm căn bản 6 2.1.1 Email và Internet 6 2.1.2 Email Server 6 2.1.3 Protocol Communication 7 2.2 Một số khái niệm trong quản lý MailServer 8 2.2.1 User và Group 8 2.2.2 Mailling 9 2.2.3 Domain 9 2.2.4 Rule và Routing 11 2.2.5 Replay Forward. 11 2.2.6 Filter và Security 13 Chương 3: GIAO THỨC VÀ CÁC CHUẨN 14 3.1 Giao thức gửi Email SMTP (RFC2821) 14 3.1.1 Ý nghĩa các lệnh SMTP 14 3.1.2 Cú pháp của các lệnh 17 3.1.3 Tiến trình của giao thức SMTP 17 3.1.4 Ví dụ về một giao dịch của SMTP 20 3.2 Giao thức nhận Email 21 3.2.1 Giao thức POP3(RFC1081, RFC1082) 21 3.2.1.1 Các lệnh của POP3: 22 3.2.1.2 Tiến trình của giao dịch POP3 25 3.2.1.3 Ví dụ về một session của POP3: 27 3.2.2 Giao thức IMAP4 (RFC2060, RFC2193…) 28 3.2.2.1 Các lệnh của IMAP4 28 3.2.2.2 Tiến trình giao dịch IMAP 4 39 3.2.2.3 Sự khác biệt giữa hai giao thức POP3 và IMAP4 43 3.2.2.4 Những tính năng xuất sắc nhất của IMAP 44 3.3 Định dạng MIME 45 3.3.1 RFC 2045: Định dạng Internet Message Bodies 47 3.3.2 RFC 2046 – Media Type 56 3.3.3 RFC 2047 Message Header Extensions cho văn bản NonASCII 61 3.3.4 RFC 2048 Thủ tục đăng ký 64 3.3 Giao thức truyền tin NNTP 68 3.3.1 Tổng quan và các đặc điểm 68 3.3.2 Phân phối tin đối với NNTP 69 3.3.3 NNTP cho UNIX 70 3.3.4 Ðặc điểm kỹ thuật của NNTP 72 3.4 Giao thức bảo mật SSL TLS 76 3.4.1 Khái niệm Lịch sử 76 3.4.2 Cấu trúc giao thức SSL 77 3.4.3 SSL Record Protocol 83 3.4.4 SSL Handshake Protocol 85 3.5 Giao thức truyền tin FTP 92 Chương 4: ANTIVIRUS VÀ SPAM MAIL 94 4.1 Khái niệm 94 4.2 Phương thức lây nhiễm của Virus thông qua Email 94 4.3 Phòng chống Virus lây lan qua Email 96 4.4 Spam Mail 97 4.4.1 Khái niệm Spam mail và tác hại của nó 97 4.4.2 Cách thức gửi Spam Mail của các Spamer 97 4.4.3 Chống Spam 99 Chương 5: CHƯƠNG TRÌNH EMAIL SERVER 105 5.1 Lập trình mạng trong Visual Studio C 105 5.1.1 Lớp IP Address 105 5.1.2 Lớp IPEndpoint 105 5.1.3 Lớp IPHostEntry 106 5.1.4 Lớp DNS 106 5.1.5 Lớp UDP 106 5.1.6 Lớp TCP (TCP Client) 107 5.1.7 Lớp TCP Listener 107 5.2 Cơ sở dữ liệu 107 5.2.1 Lý do lựa chọn XML làm cơ sở dữ liệu 107 5.2.2 Mô tả cơ sở dữ liệu: 107 5.2.3 Ràng buộc dữ liệu 112 5.2.4 Mô hình UseCase 113 5.3 Giao diện và chức năng chương trình 114 5.3.1 Yêu cầu hệ thống 114 5.3.2 Giao diện và Chức năng chương trình 115 Chương 6: KẾT LUẬN 129 6.1 Kết quả đạt được của đề tài 129 6.2 Hạn chế và hướng phát triển của đề tài 129 6.2.1 Hạn chế 129 6.2.2 Hướng phát triển 130 DANH MỤC TÀI LIỆU THAM KHẢO 131

1 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin MỤC LỤC Chương 1: MỞ ĐẦU 1.1 Lý do và Mục đích chọn đề tài Ngày nay, sự phát triển công nghệ thông tin gắn liền với sự phát triển nền kinh tế toàn cầu. Trong nền kinh tế thị trường chứng khoán, nó là công cụ hỗ trợ đắc lực cho các nhà đầu tư và doanh nghiệp. Các nhà đầu tư cần biết thông tin hiện tại của mã chứng khoán mà họ quan tâm. Các doanh nghiệp có mã chứng khoán được niêm yết trên thị trường chứng khoán phải cập nhật liên tục tình hình doanh nghiệp cho các nhà đầu tư. Các nhà đầu tư sẽ theo dõi thông tin chứng khoán mọi lúc mọi nơi thông qua phương tiện truyền thông. Càng ngày càng có nhiều người theo dõi thông tin chứng khoán trên các thiết bị di động. Smartphone ngày càng rẻ và trở nên phổ biến giúp người dùng đọc thông tin trên điện thoại tiện lợi và nhanh chóng hơn. Khi ở chỗ làm họ vào các trang web chứng khoán bằng desktop hay laptop, chỉ khi đang di chuyển trên 1 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 2 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin đường hay lúc không làm việc mới dùng điện thoại để truy cập. Đa số người dùng chỉ vào đọc nhanh các thông tin chứng khoán rồi thoát ra ngay. Một ứng dụng xem nhanh thông tin chứng khoán ngay trên điện thoại là điều cần thiết. 1.2 Phạm vi nghiên cứu của đề tài Đề tài được tập trung vào ba nội dung chính: 1. Tìm hiểu lập trình Android. 2. Tìm hiểu về đôi nét về thị trường chứng khoán. 3. Xây dựng ứng dụng xem bảng giá chứng khoán trực tuyến trên điện thoại sử dụng hệ điều hành Android. Trong nội dung thứ 1, em tìm hiểu về các khái niệm, nền tảng( hay còn gọi là các APIs) để xây dựng các ứng dụng trên hệ điều hành android dành cho điện thoại. Thiết lập môi trường để có thể lập trình ngay trên hệ điều hành windows. Nội dung thứ 2 là tìm hiểu về khái niệm thị trường chứng khoán, sự ra đời cũng như ý nghĩa của nó trong nền kinh tế hiện đại. Nội dung thứ 3, xây dựng một ứng dụng xem nhanh thông tin chứng khoán trên điện thoại chạy hệ điều hành Android. 2 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 3 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin Chương 2: TỔNG QUAN 2.1 Một số khái niệm căn bản 2.1.1 Email và Internet 2.2 Một số khái niệm trong quản lý MailServer 2.2.1 User và Group User: Tên tài khoản Email của người sử dụng (Và cũng là địa chỉ email của người đó). Trong một hệ thống Email, thì tên này không được phép trùng nhau. Trong một hệ thống email nội bộ, thì chỉ cần khái niệm “User” là đủ để phân biệt các tài khỏan Email. Tuy nhiên, với nhiều hệ thống Email khác nhau, đặc biệt là trên môi trường Internet, thì phải thay khái niệm “User” bằng khái niệm “Email Address”- Địa chỉ Email. Một địa chỉ Email thường có 2 phần: user1@domain1.com User1: Tên tài khỏan của người dùng tại hệ thống email có tên miền là domain1.com Group: Khi một hệ thống Email có nhiều tài khoản Email, và một nhóm người dùng trong số đó cần áp chung một cơ chế, hoặc một thiết lập nào đó, thì người ta sử dụng khái niệm Group, để nhóm những tài khỏan có các đặc điểm chung lại với nhau. Tiện cho việc quản trị (Ví dụ các nhân viên trong một phòng thì chung group với nhau ….) 2.2.2 Mailling Trong khi sử dụng Email, thì phát sinh nhu cầu cần gửi 1 Email tới cùng lúc nhiều địa chỉ Email khác nhau. Điều đó có thể thực hiện bằng nhiều cách khác nhau. Tuy nhiên, cách thường được áp dụng là người quản trị tạo ra các địa chỉ MailLing, và nhóm những tài khoản chung đặc điểm vào một mailling đó 3 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 4 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin VD: Khi giám đốc muốn gửi một Email tới toàn bộ nhân viên phòng Tài vụ, với điều kiện, người quản trị hệ thống đã tạo một mailling Taivu@abc.com, và nhóm toàn bộ địa chỉ Email của nhân viên phòng tài vụ vào mailling đó. Thì Giám đốc chỉ cần gửi một email, tới duy nhất một địa chỉ Taivu@abc.com, toàn bộ nhân viên trong phòng tài vụ sẽ nhận được email đó tại hòm thư riêng của mình. 2.2.3 Domain Domain: Tên miền Xét về khái niệm tên miền nói chung, thì tên miền là một hình thức đại diện thay thế các địa chỉ IP bằng một chuỗi ký tự khác ngắn gọn và dễ nhớ hơn, thuận tiện hơn trong việc tìm kiếm thông tin trên Internet. Xét riêng khái niệm tên miền trong Email, trước hết ta xét về cấu trúc của 1 địa chỉ Email: Một địa chỉ email sẽ bao gồm ba phần chính có dạng Tên_định_dạng_thêm tên_email@tên_miền 1. Phần tên_định_dạng_thêm: Đây là một dạng tên để cho người đọc có thể dễ dàng nhận ra người gửi hay nơi gửi. Tuy nhiên, trong các thư điện tử người ta có thể không cần cho tên định dạng và lá thư điện tử vẫn được gửi đi đúng nơi. 2. Phần tên_email: Đây là phần xác định hộp thư. Thông thường, cho dễ nhớ, phần này hay mang tên của người chủ ghép với một vài kí tự đặc biệt. Phần tên này thường do người đăng kí hộp thư điện tử đặt ra. Phần này còn được gọi là phần tên địa phương. 3. Phần tên_miền: Đây là tên miền của nơi cung cấp dịch vụ thư điện tử. Ngay sau phần tên_email bắt đầu bằng chữ "@" nối liền sau đó là tên miền. Điều này đồng nghĩa với việc, các ký tự trước ký tự ‘@’ là định danh của người dùng trong hệ thống email đó, các ký tự sau ký tự ‘@’ là định danh của dịch vụ, công ty có tên miền đã đăng ký. Điều này, giúp cho email được gửi tới đúng đích. 4 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 5 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin Lấy ví dụ: Khoa có địa chỉ email Khoa@dangkhoa.com gửi một Email cho Luân tới địa chỉ Luan@songluan.org (thông qua chương trình quản lý Email Outlock Express). Sau khi nhấn nút Send, chương trình quản lý Email sẽ gửi Email này tới Mailserver của Khoa (Thông qua giao thức SMTP).- Giả sử có địa chỉ smtp.dangkhoa.com. Mailserver của Khoa sẽ đọc địa chỉ người nhận, và xác định, domain cần gửi đi là songluan.org, thông qua DNS, Mail server của Khoa sẽ tìm được địa chỉ IP của mailserver songluan.org và gửi Email đó đi (Thông qua định tuyến và các giao thức truyền dẫn - SMTP). Khi Email tới Mailserver songluan.org, Mailserver sẽ xác nhận tài khoản Luan@songluan.org, và chuyển email vào mailbox của tài khoản Luan. Khi kiểm tra Email, Luân dùng trình quản lý mail, thông qua giao thức POP3 hoặc IMAP để tải email từ mailbox của mình trên Mailserver về máy Lưu ý: nếu sử dụng Webmail thì bước 1 và bước cuối cùng không xảy ra, mà thay bằng việc truy cập vào webmail của Mailserver để gửi/nhận email 2.2.4 Rule và Routing Khái niệm và quá trình định tuyến một Email hoàn toàn giống với khái niệm và quá trình định tuyến thông thường (Sử dụng mô hình Hop-by-hop). mỗi PC hay Router sẽ tiến hành kiểm tra trường địa chỉ đích trong phần tiêu đề của gói IP, tính toán chặng tiếp theo (Next hop) để từng bước chuyển gói IP dần đến đích của nó và các Router cứ tiếp tục phát các gói tới chặng tiếp theo như vậy cho tới khi các gói IP đến được đích. Để làm được việc này thì các Router cần phải được cấu hình một bảng định tuyến (routing table) và giao thức định tuyến (routing protocol). Có nhiều cách và nhiều giao thức định tuyến khác nhau như: Định tuyến tập trung, Định tuyến phân tán, Định tuyến trong (RIP, OSPF, IGRP, EIGRP), Định tuyến ngoài. Các mạng nhỏ có thể có các bảng định tuyến được cấu hình thủ công, còn những mạng lớn hơn có topo mạng phức tạp và thay đổi liên tục thì xây dựng thủ công các 5 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 6 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin bảng định tuyến là vô cùng khó khăn. Tuy nhiên, hầu hết mạng điện thoại chuyển mạch chung (public switched telephone network - PSTN) sử dụng bảng định tuyến được tính toán trước, với những tuyến dự trữ nếu các lộ trình trực tiếp đều bị nghẽn. Định tuyến động (dynamic routing) cố gắng giải quyết vấn đề này bằng việc xây dựng bảng định tuyến một cách tự động, dựa vào những thông tin được giao thức định tuyến cung cấp, và cho phép mạng hành động gần như tự trị trong việc ngăn chặn mạng bị lỗi và nghẽn. 2.2.5 Replay - Forward. Có một vấn đề cần nói đến là khi trình mail Server nhận được một lá thư mà người nhận thư không thuộc quyền quản lý của trình mail server đang chạy, làm cách nào để đảm bảo thư đến được người dùng?.Cụ thể là với một địa chỉ mail như name@yahoo.com hay name@hotmail.com làm cách nào biết được địa chỉ mail server thực sự?. Chúng ta dựa vào tên domain mail. Mỗi mail Server sẽ đăng ký với DNS server nhưng tên miền mà nó quản lý theo dạng MX record(Mail Exchange Record). Ngoài ra ta có thể dùng một mail server trung gian để chuyển mail đến đích. + ServerReply: là trình server mail đang chạy sẽ chuyển nội dung lá thư mà địa chỉ mail đến mà không thuộc quyền quản lý thông qua một mail Server khác có hỗ trợ dịch vụ này, thông thường thì rất ít trình Mail Server hỗ trợ dịch vụ này. Vì việc này sẽ làm cho trình chủ bị quá tải và tính bảo mật sẽ không được an toàn. Trên mạng internet các mail server của vnn.vn có hổ trợ dịch vụ server mail trung gian này. + ServerForward: đây là một phương pháp tối ưu và hiệu quả nhất. Cụ thể là khi nhận được một lá thư mà địa chỉ đến không thuộc quyền quản lý, trình mail server đang chạy sẽ phân tích xem Domain mail này thuộc quyền quản lý của Server mail nào và địa chỉ máy đang chạy tên gì thông qua máy server DNS cổng kết nối là 53 (DNS Server lưu trữ các địa chỉ máy server đang chạy trên mạng Internet, ở việt nam có 2 Server DNS tên là hcm-server1.vnd.net và dng- 6 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 7 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin server2.vnd.net). Sau đó tiến hành gởi mail đến người nhận thông qua server mà nó đang quản lý. Ví dụ: ServerForward có tính năng tương tự nhu Nslookup.exe của dòng họ windows server. Sau đây là một ví dụ phân giải tên domain yahoo.com thành địa chỉ mail server thực thụ bằng chương trình nslookup.exe trong windows Server hay MXLookup.class trong chương trình là như nhau. C:\winnt> nslookup Default Server: hcm-server1.vnd.net Address: 203.162.4.1 >set type=MX >yahoo.com yahoo.com MX preference=1, mail exchanger = mx1.mail.yahoo.com yahoo.com MX preference=1, mail exchanger = mx2.mail.yahoo.com yahoo.com MX preference=5, mail exchanger = mx4.mail.yahoo.com Từ ví dụ trên ta thấy domain mail yahoo.com có tới 3 server mail quản lý đó là mx1.mail.yahoo.com, mx2.mail.yahoo.com và mx4.mail.yahoo.com. Ta sẽ chon ra một mail Server trong 3 mail server trên và gởi thư đến mail server này khi người nhận mail có domain mail là yahoo.com. 2.2.6 Filter và Security Thiết lập các bộ lọc để bảo vệ tránh việc hacker lợi dụng email làm phương tiện để lây lan virus, cũng như việc đánh cặp thông tin của người sử dụng. Dữ liệu dùng để thiết lập có thể sử dụng từ các tổ chức cung cấp miễn phí cho người sử dụng, hoặc được người quản trị tự thiết lập. 7 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 8 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin Chương 3: GIAO THỨC VÀ CÁC CHUẨN 3.1 Giao thức gửi Email SMTP (RFC2821) SMTP (tiếng Anh: Simple Mail Transfer Protocol - giao thức truyền tải thư tín đơn giản) là một chuẩn truyền tải thư điện tử qua mạng Internet. SMTP được định nghĩa trong bản RFC 821 (STD 10) và được chỉnh lý bằng bản RFC 1123 (STD 3), chương 5. Giao thức hiện dùng được là ESMTP ( extended SMTP - SMTP mở rộng), được định nghĩa trong bản RFC 2821. Mục đích của giao thức SMTP là truyền mail một cách tin cậy và hiệu quả. Giao thức SMTP không phụ thuộc vào bất kỳ hệ thống đặc biệt nào và nó chỉ yêu cầu trật tự của dữ liệu truyền trên kênh truyền đảm bảo tính tin cậy. File System SMTP Commands / Replies Sender SMTP 8 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 9 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin Sender - SMTP Hình 3.1 Mô hình tổng quát sử dụng giao thức SMTP Receiver SMTP Receiver - SMTP and Mail File System User 3.1.1 Ý nghĩa các lệnh SMTP Những lệnh SMTP định nghĩa sự truyền mail hay chức năng của hệ thống mail được yêu cầu bởi user. Những lệnh SMTP là những chuỗi ký tự kết thúc bằng . Bản thân mã lệnh là những ký tự chữ (alphabetic) kết thúc bởi nếu có những tham số theo sau và nếu không có thì . Cú pháp của những mailbox phải tuân theo những qui ước của receiver. ♦ HELLO (HELO) Lệnh này được dùng để xác định ra ai là người gởi mail. Vùng đối số chứa host name của bên gởi. Bên nhận định danh cho nó đối với sender thông qua việc bắt tay trả lời kết nối. Với lệnh này và sự trả lời OK để xác định rằng cả sender và reciever đang ở trạng thái khởi đầu, tất cả các bảng trạng thái và buffer đã được xoá sạch. 9 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 10 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin ♦ MAIL Lệnh này được dùng để khởi tạo quá trình trao đổi mail mà ở đó mail data được phân phát tới một hay nhiều mailbox. ♦ RECIPIENT (RCPT) Lệnh này được sử dụng để định ra một người nhận mail, nhiều người nhận (cùng một nội dung mail) sẽ được xác định bằng cách gởi nhiều lệnh này. ♦ DATA Reciever sẽ xử lý những dòng theo sau lệnh khi mail data đến từ sender. Lệnh này tạo ra mail data để đặt vào mail data buffer. Mail data có thể chứa bất kỳ ký tự nào trong bộ mã ASCII. Mail data được kết thúc bởi một dòng mà nó chỉ chứa một dấu chấm “ .” ♦ SEND Lệnh này được dùng để khởi tạo sự truyền mail mà ở đó maildata sẽ được truyền đi tới một hay nhiều người nhận. ♦ SEND OR MAIL (SOML) Lệnh này được sử dụng để khởi tạo sự truyền mail mà ở đó mail data một hay nhiều người nhận hoặc các mailbox. ♦ RESET (RSET) Lệnh này xác định sự truyền mail hiện tại đã bị huỷ bỏ. Các sender, recipient, mail data đã lưu sẽ bị huỷ bỏ và tất cả các bảng trạng thái, các buffer bị xoá. Receiver phải gửi một reply OK. ♦ VERIFY (VRFY) Lệnh này yêu cầu receiver xác nhận đối số là định danh một user. Nếu nó là một user name, full name của user đó (nếu receiver biết) và mailbox đặc tả đầy đủ được trả về.Lệnh này không ảnh hưởng đến reverse-path buffer, forward-path buffer và data mail buffer. 10 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 11 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin ♦ EXPAND (EXPN) Lệnh này yêu cầu receiver xác nhận đối số là một mailing list(danh sách địa chỉ) và trả về một thành phần trong danh sách đó. Full name của các user (nếu biết) và những mailbox đã xác định đầy đủ được trả về trong một reply gồm nhiều dòng. ♦ HELP Lệnh này cho receiver những thông tin giúp đỡ cho sender. Lệnh này có thể nhận một đối số (có thể là tên lệnh) và trả về thông tin chi tiết. Lệnh này không ảnh hưởng đến reverse-path buffer, forward-path buffer và data mail buffer. ♦ NOOP Lệnh này không ảnh hưởng các tham số hay các lệnh được đưa vào trước nó, nó đặc tả không có một hành động nào khác hơn là receiver gửi một reply OK. Lệnh này không ảnh hưởng đến reverse-path buffer, forward-path buffer và data mail buffer. ♦ QUIT Lệnh này định rõ receiver phải gửi một reply OK và sau đó đóng kênh truyền. Receiver sẽ không đóng kênh truyền cho đến khi nó nhận và trả lời cho lệnh QUIT (ngay cả nếu có một lỗi xảy ra). 3.1.2 Cú pháp của các lệnh Các lệnh bao gồm một mã lệnh theo sau là đối số của lệnh. Mã lệnh là 4 ký tự alphabetic. Không phân biệt chữ thường hoặc chữ hoa. Giữa mã lệnh và đối số là một hoặc nhiều khoảng trắng. Tuy nhiên trong reversepath và forward-path, kiểu chữ rất quan trọng. Đặc biệt, trên một số host, tên user cũng phân biệt kiểu chữ hoa và thường. Đối số bao gồm một chuỗi ký tự có chiều dài biến đổi kết thúc bằng chuỗi ký tự “ “. 11 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 12 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin - Dấu ngoặc vuông biểu diễn cho một vùng đối số tuỳ chọn. - Sau đây là những lệnh SMTP: HELO MAIL FROM: RCPT TO: DATA RSET SEND FROM: SOML FROM: SAML FROM: VRFY EXPN HELP [ ] NOOP QUIT 3.1.3 Tiến trình của giao thức SMTP Tiến trình của giao thức SMTP được thể hiện qua sơ đồ sau: 12 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 13 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin Hình 3.2 Tiến trình SMTP Tiến trình giao dịch SMTP là khá phức tạp. Nó phải thực hiện chức năng như một bộ dịch và xử lý lệnh theo chuẩn giao thức SMTP. Tất cả các lệnh gửi tới đều phải trải qua quá trình phân tích để xác định chính xác yêu cầu của người sử dụng. Hệ thống sử dụng một từ điển các lệnh của SMTP để làm công việc này. 13 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 14 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin Sau khi lệnh đã được xác định là hợp lệ, nó sẽ được thực hiện tuỳ theo yêu cầu của người sử dụng. Trong toàn bộ phiên giao dịch SMTP, hệ thống sử dụng chủ yếu năm lệnh là: HELO, MAIL FROM, RCPT TO, DATA và QUIT. Các lệnh này luôn phải thực hiện theo một trình tự quy định như sau: • HELO • MAIL FROM • RCPT TO (lệnh này có thể được lập lại nhiều lần - sử dụng trong trường hợp cho nhiều người nhận). • .. . • DATA • .. . (phần dữ liệu thư) • . • QUIT Bên trên chỉ là mô phỏng một phiên làm việc cơ bản của giao thức SMTP, ngoài ra nó còn một số lệnh khác tuỳ vào người sử dụng ở client gởi đến nhìn chung qui tắc hoạt động của tiến trình vẫn đảm bảo theo lược đồ trên cho dù lệnh SMTP có thêm vào hay bớt đi. Trong quá trình nhận thư từ phía Client, hệ thống sẽ phân tích địa chỉ người nhận để xác định là người nhận cục bộ hoặc người nhận thuộc một hệ thống Mail Server khác. Đây là phần phức tạp nhất trong phiên giao dịch SMTP: 1. Nếu người nhận là cục bộ, hệ thống chỉ cần ghi nội dung thư vào hộp thư tương ứng của người sử dụng. 2. Nếu người nhận không thuộc mạng cục bộ, hệ thống sẽ chuyển thư cho modul SMTP Sender. Phần chức năng này sẽ chịu trách nhiệm kết nối với hệ thống Mail Server ở xa. Nếu kết nối thành công, thư sẽ được chuyển 14 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 15 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin đến Mail Server ở xa đó. Trong trường hợp ngược lại, hệ thống sẽ gửi trả các thông tin phản hồi cho người sử dụng. Vì hệ thống được thiết kế để cung cấp dịch vụ đồng thời cho nhiều Client nên để đảm bảo an toàn và tính đồng bộ trong các thao tác xử lý, mỗi lần hệ thống ghi nội dung thư vào hộp thư, nó đều thực hiện việc khoá tạm thời hộp thư để tránh tình trạng mất mát và sai xót. Phiên giao dịch sẽ kết thúc khi có yêu cầu ngừng phiên giao dịch từ phía Client. Tất nhiên, nếu hệ thống phía máy chủ kết thúc thì tất cả các phiên giao dịch cũng sẽ kết thúc và mọi thao tác sẽ bị huỷ bỏ. 3.1.4 Ví dụ về một giao dịch của SMTP 1. Server : 220 sample2 Simple Mail Transfer Service Ready khi được kết nối qua nghi thức TCP/IP, máy nhận trả lời với mã 220 đầu báo cho máy gởi biết dịch vụ SMTP đã sẵn sàng. 2. Client : HELLO tmt01vn Bên nhận đã sẵn sàng, bên gởi gởi HELLO và xưng tên người gởi 3. Server : 250 hello. Trả với mã 250 báo cho biết bên nhận đã sẵn sàng 4. Client : MAIL FROM: Bên gởi dùng lệnh MAIL để khởi động phiên giao dịch. Cú pháp như trên cho bên nhận biết địa chỉ bên gởi ( mailbox của bên gởi ) để bên nhận gởi thông báo lỗi nếu có về bên gởi 5. Server : 250 OK Trả lời với mã 250 cho biết sẵn sàng 6. Client : RCPT TO: 7. Server: 250 OK 8. Client : RCPT TO: phungkhn1@yahoo.com Muốn gởi cho bao nhiêu người dùng bấy nhiêu lệnh RCPT kèm theo địa chỉ nhận, bên nhận nếu đúng sẽ trả về mã 250 kèm theo OK 15 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 16 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin 9. Server : 550 No such user here Báo kèm theo mã 550 cho biết không có mailbox trên địa chỉ trên đối với nơi nhận 10. Client : DATA Báo cho bên nhận biết dữ liệu bắt đầu từ sau từ DATA 11. Server : 354 Start mail input; end with . Mã 354 báo cho biết đã sẵn sàng nhận mail, kết thúc mail với ký tự CRLF.CRLF 12. Client : Bắt đầu thân của mail 13. …v..v.. 14. Client : ( đến khi kết thúc nhấn CRLF.CRLF ) 15. Server : 250 OK 16. Client : QUIT Phát lệnh báo kết thúc phiên giao dịch 17. Server : 221 sample2 Service closing transmission channel Mã 221 đóng kết nối đã thiết lập Ví dụ trên sau phiên làm việc mail được gởi tới địa chỉ mail phungkhn@yahoo.com 3.2 Giao thức nhận Email 3.2.1 Giao thức POP3(RFC1081, RFC1082) Post Office Protocol Version 3 (Pop3) là một giao thức chuẩn trên internet cho phép một một workstation có thể truy xuất động đến một maildrop trên một server từ xa. Có nghĩa là Pop3 được dùng để cho phép workstation lấy mail mà server đang giữ nó. Port chuẩn dành cho dịch vụ Pop3 đươc qui ước là TCP port 110. Pop3 server sẽ khởi động và lắng nghe trên port này. Một client muốn sử dụng các dịch vụ của Pop3 thì nó phải thiết lập một kết nối tới Pop3 server. Khi kết nối được thiết lập thì 16 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 17 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin Pop3 server sẽ gởi tới client một lời chào. Sau đó, Pop3 Client và Pop3 Server sau đó trao đổi các request và reply cho đến khi kết nối được đóng hay loại bỏ. Các lệnh trong Pop3 không phân biệt chữ thường và chữ hoa, bao gồm một tập từ khoá (chiều dài từ 3 đến 4 ký tự), có thể có hoặc không có đối số theo sau (chiều dài của đối số có thể lên đến 40 ký tự). Các từ khoá và đối số phân cách nhau bởi một ký tự trắng đơn, và không phải là các ký tự đặc biệt. Các reply trong Pop3 bao gồm phần chỉ định trạng thái và từ khoá có thể có các thông tin hỗ trợ theo sau. Chiều dài của reply có thể lên tới 512 ký tự, kết thúc bằng cặp CRLF. Có hai loại chỉ định trạng thái là: “+OK” và “-ERR”. Server phải gởi các chỉ định trạng thái ở dạng chữ hoa. 3.2.1.1 Các lệnh của POP3: Các lệnh có tác dụng trong quá trình xác nhận (authorization): ♦ USER username: + Đối số username là một chuỗi định danh một mailbox, chỉ có ý nghĩa đối với server. + Trả lời: +OK tên mailbox có hiệu lực. -ERR không chấp nhận tên mailbox. ♦ PASS String: + Đối số là một password cho mailbox hay server. + Trả lời: +OK khoá maildrop và sẵn sàng. -ERR password không hiệu lực. -ERR không được phép khoá maildrop. Các lệnh có tác dụng trong quá trình giao dịch (transaction): ♦ STAT: + Không có đối số. 17 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 18 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin + Trả lời: +OK nn mm. “+OK” theo sau là khoảng trắng đơn, tiếp theo là nn: số message, khoảng trắng đơn, mm: kích thước của maildrop tính theo byte. + Các message được đánh dấu xoá không được đếm trong tổng số. ♦ LIST [msg]: + Đối số: số thứ tự của message, có thể không tham khảo tới các message đã được đánh dấu xoá. + Trả lời: +OK scan listing follow. -ERR nosuch message. Một scan listing bao gồm số thứ tự message (message number) của message đó, theo sau là khoảng trắng đơn, và kích thước chính xác của message đó tính theo byte. ♦ RETR msg: + Đối số: số thứ tự của message, có thể không tham khảo tới các message đã được đánh dấu xoá. + Trả lời: +OK message follows -ERR no such message Trả lời của lệnh RETR là multi-line. ♦ DELE msg: + Đối số: số thứ tự của message, có thể không tham khảo tới các message đã được đánh dấu xoá. + Trả lời: +OK message deleted -ERR no such message Pop3 server sẽ đánh dấu xoá các message này. Tuy nhiên, quá trình xoá thật sự sẽ diễn ra ở trạng thái cập nhật (Update). 18 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 19 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin ♦ NOOP: + Không có đối số. + Trả lời: +OK Pop3 server không làm gì hết, chỉ hồi âm lại cho client với trả lời: “+OK”. ♦ RSET: + Không có đối số. + Trả lời: +OK. Phục hồi lại các message đã bị đánh dấu xoá bởi Pop3 server. ♦ QUIT: + Không có đối số. + Trả lời: +OK. 19 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 20 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin 3.2.1.2 Tiến trình của giao dịch POP3 Hình 3.3 Tiến trình POP 3 Giao dịch POP3 phải thực hiện chức năng như một bộ dịch và xử lý lệnh theo chuẩn giao thức POP3. Tất cả các lệnh gửi tới đều phải trải qua quá trình phân tích để xác 20 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 21 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin định chính xác yêu cầu của người sử dụng. Hệ thống sử dụng một từ điển các lệnh của POP3 để làm công việc này. - Sau khi lệnh đã được xác định là hợp lệ, nó sẽ được thực hiện tuỳ theo yêu cầu của người sử dụng. - Trong toàn bộ phiên giao dịch POP3, hệ thống sử dụng chủ yếu là các lệnh: USER, PASS, STAT, LIST, RETR, DELE và QUIT. Các lệnh còn lại có thể sử dụng hoặc không. Thứ tự của các lệnh là: • USER • PASS • STAT, LIST, RETR, DELE, NOOP,..., (các lệnh này không cần theo thứ tự) • QUIT Mỗi lần bắt đầu phiên giao dịch, hệ thống sẽ kiểm tra các tham số người sử dụng đưa vào trong hai lệnh USER và PASS để xác định người nhận thư. Nếu việc định danh thành công thì hộp thư sẽ được mở cho người sử dụng này. Đồng thời, hệ thống sẽ cấm không cho bất kỳ ai thay đổi thậm chí sử dụng hộp thư đã bị khoá. Trong trường hợp hộp thư đã khoá, nếu có một người sử dụng nào khác cũng định mở hộp thư sẽ bị hệ thống từ chối và kết thúc luôn phiên giao dịch. Trong quá trình khoá hộp thư, hệ thống vẫn cho phép hộp thư của người sử dụng này nhận thư gửi đến từ phía các Client khác. Tuy nhiên, các thư mới sẽ không được sử dụng ngay trong phiên giao dịch hiện thời. Chỉ sau khi phiên giao dịch kết thúc thì toàn bộ thư mới được cập nhật vào hộp của người sử dụng. Trong phiên giao dịch có thao tác xoá thư. Tuy nhiên chức năng này chỉ thực hiện việc đánh dấu xoá tạm thời. Trong trường hợp người sử dụng muốn khôi phục lại thì hệ thống vẫn cho phép bằng cách sử dụng lệnh RSET và đồng thời hệ tiến trình chuyển về trạng thái ban đầu (trước khi vào trạng thái AUTHO-RIZATION). Trong trường hợp ngược lại, khi hệ thống đã chuyển sang trạng thái UPDATE thì mọi thư đã đánh dấu sẽ bị xoá hẳn. 21 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 22 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin Phiên giao dịch sẽ kết thúc khi có yêu cầu ngừng phiên giao dịch từ phía Client. Hoặc trong trường hợp có lỗi như đã nêu trên. Tất nhiên, nếu hệ thống phía máy chủ kết thúc thì tất cả các phiên giao dịch cũng sẽ kết thúc và mọi thao tác sẽ bị huỷ bỏ. 3.2.1.3 Ví dụ về một session của POP3: Giai đoạn 1 : Nhận dạng user CLIENT : USER Tuyentm // cho biết tên user là Tuyentm SERVER : +OK // báo thành công CLIENT : PASS kimphung // cho biết password SERVER : +OK complet: maildrop has 2 messages ( 520 octets…) Giai đoạn 2 : Trao đổi CLIENT : STAT // số mail có trong mailbox SERVER : +OK 2 520 // có 2 mail với tổng kích thước là 520 CLIENT : LIST // Liệt kê các ID và kích thước các mail SERVER : +OK 2 message ( 520 octets ) SERVER : 1 110 // mail thứ 1 kích thước 110 SERVER : 2 410 // mail thứ 2 kích thước 410 CLIENT : LIST 1 // Cho thông tin về mail có ID là 1 SERVER : +OK 1 110 CLIENT : LIST 4 SERVER : -ERR nosuch message, only 2 message in maildrop ….v…v… Giai đoạn 3 : CLIENT : QUIT ; đóng kết nối TCP hiện hành SERVER : +OK dhbk POP3 server signing off… Chú ý rằng các message bị đánh dấu để xoá bằng lệnh DELE thực sự chưa bị xoá ngay để nếu sau đó ta có thể dùng lệnh phục hồi không xoá bằng lệnh RSET, 22 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 23 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin chúng chỉ thực sự bị xoá bỏ khỏi maildrop khi bước vào giai đoạn Update ( khi gởi lệnh QUIT). 3.2.2 Giao thức IMAP4 (RFC2060, RFC2193…) Internet Message Access Protocol (IMAP) cung cấp lệnh để phần mềm thư điện tử trên máy khách và máy chủ dùng trong trao đổi thông tin phiên bản 4( IMAP4rev1). Đó là phương pháp để người dùng cuối truy cập thông điệp thư điện tử hay bản tin điện tử từ máy chủ về thư trong môi trường cộng tác. Nó cho phép chương trình thư điện tử dùng cho máy khách - như Netscape Mail, Eudora của Qualcomm, Lotus Notes hay Microsoft Outlook - lấy thông điệp từ xa trên máy chủ một cách dễ dàng như trên đĩa cứng cục bộ. IMAP khác với giao thức truy cập thư điện tử Post Office Protocol (POP). POP lưu trữ toàn bộ thông điệp trên máy chủ. Người dùng kết nối bằng đường điện thoại vào máy chủ và POP sẽ đưa các thông điệp vào in-box của người dùng, sau đó xoá thư trên máy chủ. Hai giao thức này đã được dùng từ hơn 10 năm nay. Theo một nhà phân tích thì khác biệt chính giữa POP (phiên bản hiện hành 3.0) và IMAP (phiên bản hiện hành 4.0) là POP3 cho người dùng ít quyền điều khiển hơn trên thông điệp. 3.2.2.1 Các lệnh của IMAP4 Những tập lệnh của IMAP4rev1 được định nghĩa trong rfc2060 cũng nhưng quá trình bắt đầu và kết thúc của một phiên làm việc. Vì trong chương trình em chỉ sử dụng một số lệnh cơ bản trong bộ giao thức này, dưới đây là ý nghĩ cũng như cách sử dụng chúng. ♦ CAPABILITY - Arguments: none - Kết quả trả về : OK - capability completed BAD - command unknown or arguments invalid 23 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 24 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin - Đây là lệnh thực hiện trước tiên của bất kỳ một trình mail Client nào muốn lấy mail từ trình chủ bằng giao thức IMAP, mục đích là kiểm tra version giao thức có đáp ứng được yêu cầu không. Version hiện nay đang dùng là IMAP4(IMAP4rev1). Ví dụ C: abcd CAPABILITY S: * CAPABILITY IMAP4rev1 S: abcd OK CAPABILITY completed ♦ LOGIN - Arguments: [user name] [password ] - Kết quả trả về là: OK - login completed, now in authenticated state NO - login failure: user name or password rejected BAD - command unknown or arguments invalid - Lệnh này để xác nhận người sử dụng có hợp pháp không? Nếu thành công thì người dùng sẽ thực hiện các thao tác lệnh tiếp theo. Ví dụ C: a001 LOGIN tuyentm01 kimphung S: a001 OK LOGIN completed ♦ CHECK - Arguments: none - Kết quả trả về: OK - check completed BAD - command unknown or arguments invalid - Lệnh này dùng để kiểm tra tại thời điểm này lệnh SELECT đã thực hiện hay chưa, nếu thực hiện rồi trả về OK. ♦ SELECT - Arguments: mailbox name (tên hòm thư) 24 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 25 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin - Kết quả trả về : OK - select completed, now in selected state NO - select failure, now in authenticated state: no such mailbox, can't access mailbox BAD - command unknown or arguments invalid - Lệnh Select dùng để nhận biết được hòm thư có bao nhiêu thư bao gồm thư mới, thư đọc rồi và thư đã xoá. Lệnh này cho phép ta thay đổi thuộc tính của hòm thư cũng như nhưng lá thư mà chúng lưu trữ bởi các lệnh khác trong IMAP. Ví dụ C: A142 SELECT INBOX S: * 172 EXISTS S: * 1 RECENT S: * OK [UNSEEN 12] Message 12 is first unseen S: * OK [UIDVALIDITY 3857529045] UIDs valid S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) S: * OK [PERMANENTFLAGS (\Deleted \Seen \*)] Limited S: A142 OK [READ-WRITE] SELECT completed. - Trong ví dụ trên chúng ta quan tâm các thông số sau:  EXISTS : tổng số lá thư mà hòm thư này lưu trữ ví dụ trên là 172 lá thư.  RECENT : là số lá thư mới trong thời gian gần đây mà người sử dụng chưa đọc ví dụ trên là 1.  UNSEEN : là tổng số lá thư củ mà người dùng chỉ nhìn thấy nhưng nội dung chưa xem qua.  UIDVALIDITY : dùng để chỉ định trạng thái của hòm thư đây là một thông số không quan trong.Mổi mail Server sẽ có cách đặc tả thông số này 25 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 26 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin khác nhau tuỳ từng mục đích sử dụng nó của các nhà quản trị mail thông số này liên quan đến lệnh UID. ♦CLOSE - Arguments: none - Kết quả trả về : OK - close completed, now in authenticated state NO - close failure: no mailbox selected BAD - command unknown or arguments invalid - Lệnh này dùng để đóng lệnh SELECT lại hay có thể hiểu loại bỏ lệnh này và không lưu lại các thuộc tính đã thay đổi với hòm thư này. ♦ FETCH - Arguments: message set message data item names - Kết quả: OK - fetch completed NO - fetch error: can't fetch that data BAD - command unknown or arguments invalid - Lệnh dùng để hiển thị nội dung của một lá thư. Thông số theo sau gồm có hai thông số: đầu tiên là số thứ tự của lá thư và thông số thư hai là message data item names nhưng thông số này phải tuân theo RFC822 được trình bày ở trên. Ví dụ: C: A654 FETCH 2:4 (FLAGS BODY[HEADER.FIELDS (DATE FROM)]) S: * 2 FETCH .... S: * 3 FETCH .... S: * 4 FETCH .... S: A654 OK FETCH completed ♦ UID 26 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 27 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin - Arguments: là các lệnh trong IMAP - Kết quả trả về: OK - UID command completed NO - UID command error BAD - command unknown or arguments invalid ♦ EXAMINE - Arguments: mailbox name - Kết quản trả về: OK - examine completed, now in selected state NO - examine failure, now in authenticated state: no such mailbox, can't access mailbox BAD - command unknown or arguments invalid - Lệnh này tương tự như lệnh SELECT cùng một kế quả trả về nhưng khi dùng lệnh này chúng ta chỉ xem thông tin không thay đổi được trạng thái của hòm thư cũng như các thuộc tính của nó. Ví dụ: C: A932 EXAMINE Inbox S: * 17 EXISTS S: * 2 RECENT S: * OK [UNSEEN 8] Message 8 is first unseen S: * OK [UIDVALIDITY 3857529045] UIDs valid S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) S: * OK [PERMANENTFLAGS ()] No permanent flags permitted S: A932 OK [READ-ONLY] EXAMINE completed ♦ CREATE - Arguments: tên hòm thư cần tạo. - Kết quả trả về: OK - create completed 27 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 28 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin NO - create failure: can't create mailbox with that name BAD - command unknown or arguments invalid - Lênh tạo ra một hòm thư mới với tên đã chọn và trả lại là OK nếu quá trình tạo ra hòm thư trên Server không gặp lỗi. Ví dụ: C: A003 CREATE Tuyen S: A003 OK CREATE completed C: A004 CREATE Inbox S: A004 No mailbox name Exist ♦ DELETE - Arguments: tên hòm thư cần xoá. - Kết quả trả về: OK - delete completed NO - delete failure: can't delete mailbox with that name BAD - command unknown or arguments invalid - Lệnh xoá hòm thư, nếu xoá thành công thì kết quả nhận được là OK. Ví dụ: C: A682 LIST "" * S: * LIST () "/" Inbox S: * LIST () "/" Tuyen S: A682 OK LIST completed C: A683 DELETE Tuyen S: A683 OK DELETE completed C: A684 DELETE Tuyen S: A684 NO Name "Tuyen" has inferior hierarchical names C: A686 LIST "" * 28 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 29 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin S: * LIST () "/" Inbox S: A686 OK LIST completed ♦ RENAME - Arguments: (tên hòm thư tồn tại) (tên hòm thư mới). - Kết quả: OK - rename completed NO - rename failure: can't rename mailbox with that name, can't rename to mailbox with that name BAD - command unknown or arguments invalid - Lệnh chuyển đổi tên hòm thư, kết quả là OK nếu thành công. ♦ COPY - Arguments: tên lá thư đến tên hòm thư - Kết quả trả về: OK - copy completed NO - copy error: can't copy those messages or to that name BAD - command unknown or arguments invalid - Đây là lệnh copy một lá thư từ hòm thư này sang hòm thư khác. Ví dụ: C: A003 COPY 2:4 MEETING S: A003 OK COPY completed ♦ SUBSCRIBE - Arguments: tên hòm thư - Kết quả trả về: OK - subscribe completed NO - subscribe failure: can't subscribe to that name BAD - command unknown or arguments invalid 29 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 30 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin - Lệnh dùng để thiết lập thuộc tính active của hòm thư,tuy nhiên nó không thể thay đổi được đặc tính hòm thư hay nói cách khác nó dùng để kiểm tra xem hòm thư này có tồn tại hay không ♦ UNSUBSCRIBE - Arguments: tên hòm thư - Kết quả trả về:OK - unsubscribe completed NO - unsubscribe failure: can't unsubscribe that name BAD - command unknown or arguments invalid - Lệnh này ngược lại với SUBSCRIBE nghĩa là nó loại bỏ thuộc tính active của hòm thư. ♦ LIST - Arguments: tên hay những ký tự đặc trưng. - Kết quả trả về:OK - list completed NO - list failure: can't list that reference or name BAD - command unknown or arguments invalid - Nếu tên hay những ký tự theo sau hợp lệ thì lệnh này trả về tập tên các hòm thư, thường tên hay ký tự theo sau là “% ,*, “”, /, String*,”. Chúng ta tạm hiểu nó như một lệnh Dir trong MS-DOS. Ví dụ: C: A101 LIST "" "" S: * LIST (\Noselect) "/" "" S: A101 OK LIST Completed C: A102 LIST Tuy* "" S: * LIST (\Noselect) "/" "" 30 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 31 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin S: A102 OK LIST Completed C: A102 LIST * * S: * LIST () "/*" "Inbox" S: * LIST () "/*" "Tuyen" S: * LIST () "/*" "Phung" S: A102 OK LIST Completed C: A102 LIST Tuy* * S: * LIST () "tuy*" "tuyen" S: A102 OK LIST Complete ♦ LUSB - Arguments: tên hay những ký tự đặc trưng. - Kết quả trả về: OK - list completed NO - list failure: can't list that reference or name BAD - command unknown or arguments invalid Lệnh này tương tự như list nhưng chỉ khác một điều là nhưng hòm thư nhận được phải ở trạng thái active. ♦ STATUS - Arguments: tên hòm thư (trạng thái) - Kết quả trả về:OK - status completed NO - status failure: no status for that name BAD - command unknown or arguments invalid 31 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 32 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin - Lệnh này trả về trạng thái hiện tại của hòm thư, nó không làm ảnh hưởng đến sự chuyển đổi của hòm thư cũng như các trạng thái của các lá thư. Trạng thái theo sao hiện nay trong IMAP4rev1 như sau.chức năng của lệnh này dùng để check mail.  MESSAGES : số thư mới trong hòm thư  RECENT : số lá thơ củ.  UIDNEXT : giá trị UID tiếp theo sẽ được gán cho một lá thư mới trong hòm thư  UIDVALIDITY : giá trị UID của hòm thư.  UNSEEN : nhưng lá thư của mà người dùng chưa xem nội dung. Ví dụ C: A042 STATUS tuyen (MESSAGES RECENT) S: * STATUS tuyen (MESSAGES 23 RECENT 40) S: A042 OK STATUS completed ♦ NOOP - Arguments: none - Kết quả trả về: OK - noop completed BAD - command unknown or arguments invalid - Lệnh này thực chất không làm gì cả mà mục đích để kiểm tra xem giữa mail Client và mail Server còn liên lạc với nhau không. Ví dụ C: a002 NOOP S: a002 OK NOOP completed ... C: a047 NOOP S: * 22 EXPUNGE 32 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 33 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin S: * 23 EXISTS S: * 3 RECENT S: * 14 FETCH (FLAGS (\Seen \Deleted)) S: a047 OK NOOP completed ♦ STORE Arguments: message set message data item name value for message data item Responses: untagged responses: FETCH Result: OK - store completed NO - store error: can't store that data BAD - command unknown or arguments invalid - Thiết lập lại trạng thái của thư, mỗi lá thư có nhưng trạng thái như thư mới nhận là Recent tiếp theo là trạng thái chưa đọc Unsen, đọc rồi Seen và trạng thái xoá Deleted và một số cờ đặt trưng khác. - Nếu thêm trạng thái thì dùng lệnh trong Arguments tương ứng là +FLAGS hay +FLAGS.SILENT - Nếu loại bỏ trạng thái thì dùng lệnh trong Arguments tương ứng là -FLAGS hay -FLAGS.SILENT - FLAGS.SILENT là thiết lập lại trạng thái server hồi đáp lại là hiên tại lá thư đó đang ở những trạng thái nào lệnh này ngược lại với lệnh –FLAGS Ví dụ: C: A003 STORE 2:4 +FLAGS (\Deleted) S: * 2 FETCH FLAGS (\Deleted \Seen) S: * 3 FETCH FLAGS (\Deleted) S: * 4 FETCH FLAGS (\Deleted \Flagged \Seen) 33 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 34 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin S: A003 OK STORE completed C: A003 STORE 2:4 +FLAGS.SILENT (\Deleted) S: A003 OK STORE completed ♦ EXPUNGE Command Arguments: none Responses: untagged responses: EXPUNGE Result :OK - expunge completed NO - expunge failure: can't expunge (e.g. permission denied) BAD - command unknown or arguments invalid Lệnh dùng để kiểm tra những lá thư có trạng thái deleted và loại nó ra khỏi hòm thư, đưa vào thùng rác(hòm thư trash). Nếu những như hòm thư Trash được chọn thì những lá thư này sẽ được xoá ra khỏi mail của bạn. ♦ LOGOUT - Arguments: none - Kết quả tả về: OK - logout completed BAD - command unknown or arguments invalid - Lệnh dùng để đóng kết nối lại sao một phiên làm việc. Ngoài các lệnh trên trong IMAP4 còn một số lệnh khá hay khác như SEARCH, AUTHENTICATE,... vì thời gian và năng lực có hạn nên đồ án của em có lẽ chỉ dừng lại ở các lệnh trên. 3.2.2.2 Tiến trình giao dịch IMAP 4 Tiến trình của một giao dịch IMAP 4 thể hiện qua sơ đồ sau: 34 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 35 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin Hình 3.4 Xác định phiên bản IMAP Tiến trình của IMAP4 phức tạp hơn nhiều so với POP3 vì thư viện lệnh nhiều hơn và tất cả điều được xử lý trên Server Trước tiên, kiểm tra xem phiên bản imap đang dùng trên Server có phải là phiên bản 4.0 không, nếu đúng thì tiếp tục tiến trình kiểm tra lệnh login khi login thành công thì tuỳ theo những lệnh tiếp theo mà client yêu cầu còn không kể như tiến trình đã kết thúc mà sự chủ động kết thúc tiến trình này là từ Client Sau khi kiểm tra phiên bản Imap và login thành công tiếp theo tuỳ từng người sử dụng mà có những phiên làm việc tiếp theo như là kiểm tra mail và thiết lập lại trạng thái mail hay kiểm tra thư mục(hòm thư) bao gồm tạo hòm thư mới, đổi tên hay xoá một hòm thư. Nhìn chung nó có 2 hướng cụ thể là kiểm tra mail từng hòm thư hay kiểm tra hòm thư và xử lý. Sau khi login thành công thì tiến trình tiếp tục như sau: * kiểm tra mail(Các lệnh thực hiện tuần tự) 35 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 36 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin Hình 3.5 Kiểm tra Email trong IMAP 4 * Tiến trình xử lý hộp thư (Các lệnh không nhất thiết tuần tự) 36 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 37 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin Hình3.6 Xử lý hộp thư trong IMAP 4 Những mô hình trên chỉ là mô hình miêu tả một dạng xử lý tiến trình cơ bản của IMAP, tuỳ vào từng chương trình mail client mà những mô hình trên có thể thêm lệnh hay loại bỏ bớt lệnh. Các lệnh trong giao thức Imap có phụ thuộc lẫn nhau như 37 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 38 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin để truy xuất mail từ thư mục mail thì trước tiên là phải gọi lệnh select hay examine trước rồi mới tới các lệnh tiếp theo mới có hiệu lực,…. 3.2.2.3 Sự khác biệt giữa hai giao thức POP3 và IMAP4 Nói một cách đơn giản nhất, IMAP đặt sự kiểm soát e-mail lên server trong khi nhiệm vụ duy nhất của POP là "ném" toàn bộ thông điệp e-mail về chỗ trình client yêu cầu, và xong là "phủi tay". Theo nhận định của Terry Gray Giám đốc Networks & Distributed Computing ở University of Washington, và là người dùng IMAP 5 năm nay phát biểu: "Nhu cầu truy cập đến một nơi lưu trữ thư duy nhất từ nhiều máy khác nhau vào những thời điểm khác nhau là lý do chủ yếu cho sự bùng nổ mối quan tâm đến IMAP, và là nguyên nhân tại sao mọi nhà cung cấp hệ thống thư điện tử có tầm cỡ hiện nay đều đang hoặc sẽ hỗ trợ nó". Qua đó, cho ta thấy được giao thức IMAP vẫn là giao thức đọc mail tốt và an toàn nhất. Hơn nữa, với các thông điệp e-mail được lưu giữ ở server, tất cả các các thao tác trên thông điệp đều có thể thực hiện được, chẳng hạn như có thể chỉ đọc phần header của thông điệp (xem thêm ở danh sách tính năng dưới đây). Ngoài khả năng thao tác trên thông điệp, dùng IMAP còn có những lợi ích khác nữa. Ví dụ, khi người dùng làm việc trên hai hay nhiều máy PC, chẳng hạn một máy để bàn, một máy di động, họ không cần phải lo lắng về việc thư từ nằm vương vãi trên các máy client khác nhau. Cũng vậy, đối với những cơ quan có người dùng di động và cả những máy PC để cố định, chẳng hạn như các trường học hay cơ quan y tế, IMAP là một giải pháp lý tưởng ố theo ý kiến của một chuyên gia phụ trách công nghệ. Một lợi điểm khác của IMAP là e-mail có thể được tự động sao dự phòng trong server của xí nghiệp và tại máy cá nhân. Những thông điệp quan trọng sẽ được người dùng chép về máy client, và bản sao vẫn để lưu tại máy server. Tuy nhiên, phần lớn người dùng có khuynh hướng để lại các thông điệp ở server. Làm như vậy sẽ giúp cơ quan có thể có kế hoạch tổ chức việc sao dự phòng (backup) cho toàn bộ e-mail của cơ quan một cách dễ dàng. Tất nhiên việc quyết định tổ chức sao dự 38 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 39 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin phòng tập trung phụ thuộc chủ yếu vào mức độ quan trọng của nội dung e-mail, nhưng nếu e-mail nằm rải rác trên các máy client thì khi cần thực hiện sao dự phòng bạn sẽ gặp rất nhiều khó khăn. IMAP cũng làm giảm nhu cầu mà e-mail đòi hỏi trên mạng. Người dùng trước đây phải tải xuống toàn bộ e-mail họ có với POP, dù e-mail đó có chứa file gắn kèm lớn nhiều megabyte, thì giờ đây họ có thể tải xuống một cách có chọn lọc toàn bộ hay một phần nào đó của bức thư. Kết quả, theo ý kiến các nhà cung cấp, thì phần lớn người dùng ít tải thư về hơn. Kỹ thuật e-mail trên server còn có nghĩa là chi phí thiết lập server sẽ tăng lên khá nhiều so với POP. 3.2.2.4 Những tính năng xuất sắc nhất của IMAP Thật ra thì nhiều tính năng trong danh sách sau đây có thể có trong các trình client e-mail riêng. Nhưng hãy nhớ rằng Internet Messaging Access Protocol (IMAP) cung cấp một thứ mà các chương trình kia không có: độc lập với nhà cung cấp, và đang được chuẩn hoá. + Người dùng có thể chỉ cần xem phần header của thông điệp để xác định thông điệp nào cần đọc. + IMAP có thể chèn các thông điệp vào folder ở xa. + Nó cho phép tạo ra các nhãn hiệu chuẩn hay được định nghĩa bởi người dùng cho thông điệp. Ví dụ, nhãn hiệu có thể dùng để định danh các nhóm làm việc, các dự án, v.v... + Do các thông điệp IMAP có khuynh hướng được giữ lại tại server chứ không phải ở các máy client riêng lẻ, có thể cập nhật được chúng. IMAP hỗ trợ cập nhật đồng thời trong các folder dùng chung và thông báo cho người dùng về việc cập nhật. + Người dùng có thể có nhiều folder trong một hộp thư đến (inbox), và có thể thiết lập chúng theo nhiều cách, như tạo cây thư mục. 39 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 40 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin + Người dùng có thể lựa chọn để đọc các phần của thông điệp MIME, như truy cập phần thân của thông điệp và bỏ qua phần gắn kèm. + Người dùng có thể tìm kiếm các thông điệp trên server. 3.3 Định dạng MIME Định nghĩa : Multipurpose Internet Mail Extensions (MIME) là chuẩn Internet cơ bản để gửi thư điện tử đa phương tiện (multimedia e-mail), chẳng hạn thư có đính kèm tập tin âm thanh, phim ảnh và đồ họa, và thư không dùng các ký tự thuộc chuẩn ASCII. Được sử dụng trên nền web, MIME có khả năng xác định loại phương tiện truyền thông mà thư sử dụng và kiểu mã hóa của nó. MIME có những tính năng sau đây. Hỗ trợ những ký tự không có trong ASCII Đối với truyền thông điện tử, các chữ trong bảng mẫu tự La-tinh (không có dấu) được số hóa thành bộ ký tự ASCII. Tuy nhiên, với hàng tỷ người không nói tiếng Anh và không sử dụng chữ La-tinh (hoặc sử dụng chữ La-tinh có dấu như vd: tiếng Việt) thì bộ ký tự ASCII trở nên vô dụng. MIME cho phép sử dụng các bảng chữ cái khác thông qua các bộ ký tự được xác định trước. Ghi nhãn loại nội dung Để xác định loại nội dung trong một tập tin, đa số các hệ điều hành sử dụng phần mở rộng trong tên tập tin, trong khi đó MIME cung cấp các chỉ dẫn cụ thể hơn. Loại nội dung ghi theo kiểu MIME bao gồm một loại chính và một loại phụ. Loại chính thường chung chung, chẳng hạn văn bản, âm thanh, phim, hình ảnh và trình ứng dụng. Loại phụ cung cấp thông tin mà chương trình máy tính cần để xử lý đúng nội dung, chẳng hạn loại nội dung hình ảnh phụ bao gồm các định dạng JPEG, GIF, PNG và TIFF. Nhờ có các loại nội dung ghi theo dạng MIME mà Internet vận hành trôi chảy. Khi máy chủ web gửi nội dung (có thể là văn bản HTML, hình ảnh JPEG hoặc GIF, hoặc tập tin PDF …) đến một trình duyệt web thì nó cũng bao gồm một ký hiệu 40 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 41 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin nhận diện loại MIME. Đây là cách trình duyệt web nhận biết khi nào hiển thị văn bản HTML và hình ảnh, hoặc khi nào thì khởi động chương trình Acrobat Reader để đọc tập tin PDF. Hỗ trợ cho nội dung không thuộc loại văn bản Di sản của các hệ thống e-mail cũ vẫn còn làm hạn chế hoạt động của hệ thống ngày nay. Hệ thống hiện tại chỉ có thể chuyển thư chứa văn bản ASCII. Những nội dung không thuộc loại văn bản, như hình ảnh hoặc âm thanh, trước khi được gửi đi thông qua hệ thống e-mail thì thường được mã hóa thành các ký tự văn bản bằng cách sử dụng một hệ thống có tên gọi là Base64. MIME cũng cung cấp một cách lựa chọn khác được gọi là quoted-printable phù hợp với các bộ ký tự mà phần lớn đều tương thích với ASCII. Nếu bạn từng gặp ký tự “=20” hoặc dấu “=” nằm rải rác trong văn bản thư điện tử, đặc biệt ở những bức thư được chuyển tiếp nhiều lần, thì chúng có thể là những thuộc tính của văn bản bị giải mã sai trong quá trình mã hóa quotedprintable. Hỗ trợ cho các văn bản ghép, bao gồm nhiều thành phần Khi gửi e-mail có tập tin đính kèm thì chương trình e-mail của bạn sẽ tạo ra một thông điệp bao gồm hai phần. Phần đầu bao gồm văn bản thư, và phần hai là tập tin đính kèm (được mã hóa bằng hệ thống Base64). MIME chỉ rõ cách mà hai phần trên kết hợp lại với nhau để hình thành một thư duy nhất. MIME đã được sử dụng như một công nghệ tạo văn bản ghép cho các trang web. Phần lớn các trang web bao gồm một tập tin HTML, một số tập tin hình ảnh, và có thể có các tập tin âm thanh và phim được ghép lại với nhau. Để xem trang web ngoại tuyến (off-line, tức là lúc máy không vào mạng), bạn phải lưu lại tất cả các tập tin này. Nhiều trình duyệt web cho phép bạn chọn : lưu theo dạng văn bản (Text File) ; chỉ lưu tập tin HTML (Web Page, HTML only) ; lưu tập tin HTML cùng với tất cả các tập tin hình ảnh vào một thư mục (Web Page, complete) ; hoặc lưu tất cả vào một tập tin (Web Archive, single file). Nếu chọn cách cuối cùng thì trình duyệt của bạn sẽ lưu các tập tin HTML và hình ảnh như một văn bản ghép dạng MIME 41 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 42 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin với phần tên mở rộng là “.mht”. Nếu xem văn bản ghép này bằng chương trình hiệu đính văn bản thì bạn sẽ thấy nhiều phần được tách biệt với nhau bằng một đường gạch nối và hình ảnh được mã hóa bằng Base64. Để tìm hiểu về định dạng MIME, ta có thể lần lượt tìm hiểu thông qua năm chuẩn RFC: - RFC 2045: Định dạng Internet Message Bodies - RFC 2046: Media Types - RFC 2047: Message Header Extensions cho văn bản ngoài ASCII - RFC 2048: Thủ tục đăng ký - RFC 2049: Tiêu chuẩn phù hợp và ví dụ 3.3.1 RFC 2045: Định dạng Internet Message Bodies Nội dung: xác định các tiêu đề khác nhau được sử dụng để mô tả các cấu trúc của các thư MIME 3.3.1.1 Định nghĩa, Quy ước và cú pháp BNF * CTRL Đề cập đến chuỗi các octet tương ứng với hai ký tự CR (giá trị thập phân 13) và LF (thập phân giá trị 10), theo thứ tự này là ký hiệu xuống dòng trong RFC 822. * Character Set Thuật ngữ "ký tự" được sử dụng trong MIME để chỉ một phương pháp chuyển đổi một chuỗi các octet thành một chuỗi các ký tự. Lưu ý rằng không có điều kiện chuyển đổi và rõ ràng theo một hướng khác là không cần thiết. Tuy nhiên, với một chuỗi các ký tự đặc biệt, thì có thể sẽ phải dùng nhiều hơn một chuỗi octen để đại diện cho chuỗi ký tự đặc biệt đó. Định nghĩa này được dự định để cho phép các loại mã hóa ký tự, từ ánh xạ đơn đơn giản như: US-ASCII để bàn phương pháp chuyển mạch phức tạp như những tiêu 42 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 43 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin chuẩn ISO 2022, là sử dụng các kỹ thuật, để được sử dụng như là một bộ ký tự. Tuy nhiên, định nghĩa được liên kết với một ký tự MIME đặt tên đầy đủ phải chỉ định lập bản đồ được thực hiện. Đặc biệt, sử dụng thông tin profiling bên ngoài để xác định lập bản đồ là không được phép. Chú ý: Thuật ngữ "ký tự" ban đầu được để mô tả các đề án đơn giản như US-ASCII và ISO-8859-1 trong đó có một ánh xạ từ octet duy nhất đến ký tự duy nhất. Chuỗi octen mã hóa các bộ ký tự và chuyển mạch kỹ thuật làm cho tình hình phức tạp hơn. Ví dụ, một số cộng đồng sử dụng thuật ngữ "bảng mã ký tự" MIME cho những gì gọi là "ký tự", trong khi sử dụng cụm từ "mã hóa tập ký tự" để biểu thị một bản đồ trừu tượng từ các số nguyên (không octet) để ký tự. * Message Giới hạn "thông báo", khi không đủ điều kiện hơn nữa. Có nghĩa là tin nhắn theo RFC 822 được chuyển trên mạng, hoặc một tin nhắn đóng gói trong body của kiểu "message/rfc822" hoặc “message/partial”. * Entity Thuật ngữ "thực thể", đề cập cụ thể để xác định các lĩnh vực tiêu đề và nội dung hoặc là một tin nhắn hoặc một trong các bộ phận trong body của một thực thể multipart. Các đặc điểm kỹ thuật của các thực thể đó là tính chất của MIME. Bất kỳ loại lĩnh vực nào cũng có thể có mặt trong các tiêu đề của một thực thể, nhưng chỉ những lĩnh vực có tên bắt đầu với "content-“ thì mới có ý nghĩa theo chuẩn MIME. * Body part Thuật ngữ Bodypart dùng để chỉ một thực thể bên trong của một thực thể multipart. * Body Sử dụng thuật ngữ “Body", khi không phải xa hơn nữa khi phân loại, có nghĩa body của một thực thể (Thân thể của mọi một thông báo hay của một thân thể chia ra). 43 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 44 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin Ghi chú: trước đây Bốn định nghĩa rõ ràng là vòng tròn liên quan đến nhau. Đây là điều không thể tránh được, bởi cấu trúc toàn bộ của một thông báo MIME thực sự là một sự đệ quy. * 7bit dữ liệu "7bit dữ liệu" dùng để chỉ dữ liệu mà là tất cả các đại diện như các dòng tương đối ngắn với 998 octet hoặc ít hơn giữa CRLF trình tự tách dòng [RFC-821]. Không có octet với các giá trị thập phân lớn hơn 127 được phép và không được NULs (octet với giá trị thập phân 0). CR (giá trị thập phân 13) và LF (thập phân giá trị 10) octet chỉ xảy ra như một phần của CRLF trình tự tách dòng. * 8 bit dữ liệu "8bit dữ liệu" dùng để chỉ dữ liệu mà là tất cả các đại diện như các dòng tương đối ngắn với 998 octet hoặc ít hơn giữa CRLF trình tự tách dòng [RFC-821]), nhưng octet với các giá trị thập phân lớn hơn 127 có thể được sử dụng. Cũng như "dữ liệu 7bit" CR và LF octet chỉ xảy ra như một phần của CRLF trình tự tách dòng và không được phép NUL. * Dữ liệu nhị phân Dữ liệu nhị phân (Binary Data) dùng để chỉ dữ liệu mà bất kỳ chuỗi các octet nào được cho phép. * Lines "Lines" được định nghĩa là chuỗi các octet cách nhau bằng một trình tự CRLF. Điều này là phù hợp với cả hai RFC 821 và RFC 822. "Lines" chỉ đề cập đến một đơn vị dữ liệu trong một thông báo, mà có thể hoặc có thể không tương ứng với cái gì đó là thực tế hiển thị bởi một đại diện người sử dụng. 44 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 45 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin 3.3.1.2 MIME Header Fields MIME định nghĩa một số lĩnh vực của Header Fields trong RFC 822 được sử dụng để miêu tả nội dung của một thực thể MIME. Các trường này tiêu đề xảy ra trong ít nhất hai ngữ cảnh: 1. Là một phần của một tiêu đề tin thường xuyên RFC 822. 2. Trong MIME Header Fields một phần body trong vòng một hàm multipart. Định nghĩa chính thức của Header Fields này là như sau: entity-headers := [ content CRLF ] [ encoding CRLF ] [ id CRLF ] [ description CRLF ] *( MIME-extension-field CRLF ) MIME-message-headers := entity-headers fields version CRLF ; Trật tự của các tiêu đề ; Các lĩnh vực này ngụ ý của BNF ; Định nghĩa nên bỏ qua. MIME-part-headers := entity-headers [ fields ] ; Bất kỳ lĩnh vực không phải bắt đầu bằng 45 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 46 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin ; "Nội dung" có thể không có định nghĩa ; Ý nghĩa và có thể được bỏ qua. ; Trật tự của các tiêu đề ; Các lĩnh vực này ngụ ý của BNF ; Định nghĩa nên bỏ qua. Cú pháp của các thành phần khác nhau trong MIME Header Fields cụ thể sẽ được mô tả trong phần sau. 3.3.1.3 Phiên bản của MIME Header Fields Phiên bản của MIME Header Fields phải được mô tả theo đúng cú pháp sau: MIME-Version: 1.0 BNF mô tả phiên bản MIME header Fields version := "MIME-Version" ":" 1*DIGIT "." 1*DIGIT Vì vậy, trong tương lai, dễ dàng có thể thay thế hoặc mở rộng cho phiên bản "1.0. Lưu ý, đối với một số cách ghi phiên bản nhằm vào việc ghi chú của người lập trình, thì phải bỏ ghi chú đó trong quá trình kiểm tra: MIME-Version: 1.0 MIME-Version: 1.0 (produced by ABC Vx.x) MIME-Version: (produced by ABC Vx.x) 1.0 MIME-Version: 1.(produced by ABC Vx.x)0 3.3.1.4 Content-Type Header Fields Mục đích của Content-Type Header Fields là để mô tả dữ liệu chứa trong Body mà người dùng nhận được để có thể chọn một chương trình hoặc cơ chế thích hợp để 46 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 47 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin trình bày các dữ liệu cho người dùng, hoặc xử lý dữ liệu một cách thích hợp. Giá trị trong lĩnh vực này được gọi là một “media type”. Các Content-Type header Fields xác định tính chất của dữ liệu trong Body của một thực thể bằng cách cho Media type và định danh subtype. Cung cấp thông tin phụ trợ có thể sẽ được yêu cầu cho các Media-type nào đó. Sau khi loại phương tiện truyền thông và những subtype, phần còn lại của Header Fields chỉ đơn giản là một tập hợp các thông số, xác định trong một attribute=value. Trật tự của các thông số không ảnh hưởng nhiều tới kết quả. Nói chung, Media-type được sử dụng để tuyên bố chung cho các loại dữ liệu, trong khi subtype chỉ định một định dạng cụ thể cho loại dữ liệu. Vì vậy, một Media-type của "image / xyz" là đủ để xác định dữ liệu đó là một hình ảnh. Các thông tin này có thể được sử dụng, ví dụ: để quyết định có hay không hiển thị một user các dữ liệu thô từ một subtype không được công nhận - như một hành động có thể là hợp lý cho Subtypes không được công nhận của văn bản, nhưng không cho Subtypes không được công nhận của hình ảnh hay âm thanh. Vì lý do này, Subtypes đăng ký của văn bản, hình ảnh, âm thanh, và video nhúng không nên chứa thông tin mà thực sự là một kiểu khác nhau. Các định dạng hợp chất như vậy nên được đại diện bằng cách sử dụng "multipart" hoặc "applications". Các tham số chỉ có tác dụng bổ sung cho media subtype, và như vậy về cơ bản không ảnh hưởng đến bản chất của nội dung. Việc thiết lập các thông số có ý nghĩa tùy thuộc vào loại media type và subtype. Hầu hết các tham số được liên kết với một subtype cụ thể và duy nhất. Tuy nhiên, một đầu được mediatype có thể xác định các thông số được áp dụng cho bất kỳ subtype kiểu đó. Tham số có thể được yêu cầu xác định loại nội dung của chúng hoặc subtype. 3.3.1.4.1 Cú pháp của Conten-type Header Fields Trong ký hiệu BNF bổ sung của 822 RFC, giá trị của một Content-Type Header Fields được định nghĩa như sau: Cpmtent: = "Content-Type" ":" type "/" subtype 47 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 48 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin *(";" Tham số) ; Matching của các loại phương tiện và subtype ; is ALWAYS case-insensitive. type := discrete-type / composite-type discrete-type := "text" / "image" / "audio" / "video" "application" / extension-token composite-type := "message" / "multipart" / extension-token extension-token := ietf-token / x-token extension-token: = IETF-token / x-token ietf-token := x-token := subtype := token mở rộng / iana-token iana-token := parameter := thuộc tính "=" giá trị attribute := thuộc tính của token ; Matching của thuộc tính ; is ALWAYS case-insensitive. value := token / quoted-String token := 1* 48 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 49 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin tspecials := "(" / ")" / "" / "@" / tspecials: = "(" / ")" / "" / "@" / "," / ";" / ":" / "\" / "/" / "[" / "]" / "?" "/" / "[" / "]" / "?" / "=" / "=" ; Must be in quoted-String, ; to use within parameter values Lưu ý rằng định nghĩa của "tspecials" là giống như định nghĩa trong RFC 822 của "đặc biệt" với việc bổ sung trong ba ký tự "/", "?", Và "=", và gỡ bỏ các "".. 3.3.1.4.2 Content-type mặc định Default RFC 822 messages without a MIME Content-Type header are taken by this protocol to be plain text in the US-ASCII character set, which can be explicitly specified as: Mặc định của tin nhắn theo chuẩn RFC 822 mà không có MIME Content-Type header được lấy bằng giao thức này sẽ trở thành một đoạn văn bản thuần (plain text) trong ký tự US-ASCII , mà có thể được quy định như sau: Content-type: text/plain; charset=us-ascii Content-type: text / plain; charset = us-ascii Mặc định này được giả định là nếu không có Content-Type header field được chỉ định. Thì mặc định được được sử dụng khi một cú pháp nội dung không hợp lệ với Content-type header field gặp phải. Trong sự hiện diện của một phiên bản MIMEheader fields và sự vắng mặt của bất kỳ Content-Type header fields, một User Agent nhận cũng có thể giả định rằng đoạn văn bản thuần mã US-ASCII của người gửi. Plain US-ASCII text may still be assumed in the absence of a MIME-Version or the presence of an syntactically invalid Content-Type header field, but the sender's intent might have been otherwise. Văn bản thuần vẫn có thể được giả định trong sự vắng mặt của một phiển bảnMIME hay sự xuất hiện một Content-type header fields không hợp lệ, nhưng mục đích của người gửi có thể đã khác. 49 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 50 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin 3.3.1.5 Content-Transfer-Encoding Header Field Nhiều Media-Type có thể hữu ích trong việc vận chuyển qua email đại diện, trong định dạng chuẩn, như là 8bit ký tự hay dữ liệu nhị phân. Dữ liệu này không thể được truyền qua một số giao thức chuyển khoản. Ví dụ, RFC 821 (SMTP) hạn chế thư 7bit US-ASCII dữ liệu và không được phép nhiều hơn hơn 1000 ký tự tách dòng bao gồm bất kỳ dấu CRLF. 3.3.1.5.1 Cú pháp Content-Transfer-Encoding Giá trị của các Content-Transfer-Encoding fields là một chỉ định token mã hóa duy nhất, như liệt kê dưới đây. encoding := "Content-Transfer-Encoding" ":" mechanism := "7bit" / "8bit" / "binary" / / "quoted-printable" / "base64" / " ietf-token / x-token IETF-token / x-token Những giá trị này không phải là trường hợp nhạy cảm (Tất cả: Base64 và BASE64 và bAsE64 là tương đương). Một loại mã hóa của 7BIT yêu cầu body là đã có trong một thư 7bit-sẵn sàng đại diện. Đây là giá trị mặc định: "Content-TransferEncoding: 7BIT" được giả định là nếu Content-Transfer-Encoding header fields không phải là hiện tại. 3.3.1.5.2 Semantics Content-Transfer-Encodings Semantics Nội dung này single-Transfer-Encoding token thực sự cung cấp hai mẩu thông tin. Nó chỉ định những loại mã hóa biến đổi cơ thể jđã phải chịu sự và do đó hoạt động giải mã những gì phải được sử dụng để khôi phục lại nó để tạo thành bản gốc của nó, và nó chỉ ra tên miền của kết quả là Phần chuyển đổi bất kỳ Nội dung-Transfer-Encodings Semantics, hoặc rõ ràng hoặc ngầm cũng xác định giải mã thuật toán, cho bất kỳ chuỗi các octet mã hóa hoặc biến đổi nó để trình tự ban đầu của octet được mã hóa, hoặc cho thấy rằng nó là không 50 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 51 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin phù hợp như là một chuỗi mã hóa. Content-Transfer-Encodings biến đổi không bao giờ phụ thuộc vào bất kỳ thông tin hồ sơ thêm bên ngoài. Nội dung nhãn phù hợp-Transfer-Encoding luôn luôn phải được sử dụng. Unencoded ghi nhãn 8bit dữ liệu có chứa các ký tự như "7bit" không được phép, và cũng không được ghi nhãn không unencoded (dòng dữ liệu theo định hướng như bất cứ điều gì khác hơn là "nhị phân" được cho phép.) Không giống như Subtypes phương tiện truyền thông, một sự gia tăng của ContentTransfer-Encoding giá trị là cả hai không mong muốn và không cần thiết. Tuy nhiên, việc thiết lập chỉ là một chuyển đổi duy nhất vào "7bit" là có thể. Có một sự cân bằng giữa mong muốn cho một bảng mã nhỏ gọn và hiệu quả chủ yếu-nhị phân dữ liệu và mong muốn cho một phần nào có thể đọc được mã hóa dữ liệu là chủ yếu, nhưng không hoàn toàn là 7bit. Vì lý do này, ít nhất là hai cơ chế mã hóa là cần thiết: một loại mã hóa nhiều hơn hoặc ít hơn có thể đọc được và một "dense" hay "uniform" mã hóa (base64). 3.3.1.5.3 New Content-Transfer-Encodings Thêm các tiêu chuẩn Content-Transfer-Encoding giá trị phải được xác định bởi một tiêu chuẩn-track RFC. Những yêu cầu chi tiết kỹ thuật như vậy phải đáp ứng được đưa ra trong RFC 2048 Như vậy, tất cả nội dung-chuyển giao-mã hóa không gian tên ngoại trừ việc bắt đầu với "X-." Là rõ ràng dành cho IETF để sử dụng trong tương lai. 3.3.2 RFC 2046 – Media Type 3.3.2.1 Định nghĩa một Top-Level Media Type Định nghĩa của một Top-Level Media Type bao gồm: 1. Một tên và mô tả một loại, bao gồm các tiêu chí cho dù một loại cụ thể sẽ hội đủ điều kiện theo kiểu đó, 51 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 52 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin 2. Tên và định nghĩa của tham số (nếu có) mà được định nghĩa cho tất cả các Subtypes của loại đó (bao gồm cả việc tham số như được yêu cầu hoặc tùy chọn), 3. Cách một đại diện người dùng và/hoặc cổng Subtypes chưa biết nên xử lý kiểu này 4. Xem xét chung về các thực thể của kiểu gatewaying cấp đầu, nếu có/ và 5. Bất kỳ hạn chế về nội dung-chuyển giao-mã hóa cho các thực thể của loại Toplevel này 3.3.2.2 Tổng quan về Top-Initial Level Media Types 3.3.2.2.1 Năm rời rạc cao nhất của Top-level Media Types 1. Văn bản - Văn bản thông tin. Các subtype "plain" ở văn bản thuần cụ thể cho thấy không chứa các lệnh định dạng hoặc chỉ thị của bất kỳ loại nào. Văn bản thuần có thể dùng để hiển thị "as-is". Không có phần mềm đặc biệt là cần thiết để có được đầy đủ ý nghĩa của văn bản, ngoài việc hỗ trợ cho các bộ ký tự chỉ ra (character set). Một vài Subtypes khác sẽ được sử dụng cho văn bản làm giàu bằng hình thức tích hợp ứng dụng phần mềm có thể làm tăng sự xuất hiện của văn bản, nhưng phần mềm đó không được yêu cầu để nhận được ý kiến chung của nội dung. Subtypes có thể của "text", bao gồm bất kỳ hình thức xử lý từ đó có thể được đọc mà không cần đến phần mềm mà hiểu được định dạng. 2. Hình ảnh – Dữ liệu hình ảnh "Hình ảnh" đòi hỏi một thiết bị hiển thị (chẳng hạn như một màn hình đồ họa, một máy in đồ họa, hoặc máy FAX) để xem thông tin. Một subtype ban đầu được xác định và được sử dụng rộng rãi-JPEG định dạng hình ảnh. . . subtypes are defined for two widely-used image formats, jpeg and gif. Subtypes được định nghĩa cho hai widely-used định dạng hình ảnh là jpeg và gif. 52 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 53 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin 3. Âm thanh – Dữ liệu âm thanh "Audio" đòi hỏi một thiết bị đầu ra âm thanh (như là một người nói, một hệ thống loa hoặc một số điện thoại) để "hiển thị" nội dung. 4. Đoạn phim – Dữ liệu đoạn phim "Video" đòi hỏi khả năng hiển thị hình ảnh chuyển động, thường bao gồm cả phần cứng và phần mềm chuyên ngành. Một loại subtype phổ biến cho video là mpeg 5. Ứng dụng – Một số loại dữ liệu khác Ứng dụng - một số loại khác của dữ liệu, là các dữ liệu thông thường hoặc dữ liệu nhị phân hoặc thông tin để được xử lý bởi một ứng dụng. Các subtype "octetstream" là sẽ được sử dụng trong trường hợp dữ liệu nhị phân không giải nghĩa, trong đó hành động đơn giản nhất là cung cấp để ghi các thông tin vào một tập tin cho người sử dụng. Các "PostScript” subtype cũng được xác định cho việc vận chuyển vật liệu PostScript. Các ứng dụng khác dự kiến sẽ cho "Applications" bao gồm các bảng tính, dữ liệu cho thư trên cơ sở hệ thống lập lịch trình, và các ngôn ngữ cho tính toán nhắn tin, định dạng và xử lý văn bản mà không trực tiếp có thể đọc được. Chú ý rằng cân nhắc an ninh có thể tồn tại đối với một số loại ứng dụng dữ liệu, đáng chú ý nhất "Applications / PostScript" và bất kỳ hình thức gửi tin nhắn khác. 3.3.2.2.2 Hai loại composite của Top-level media types 1. Multipart Dữ liệu bao gồm nhiều thực thể độc lập về dữ liệu. Bốn Subtypes đang bước đầu được xác định, bao gồm cả "mixed" subtype chỉ định một tập chung loại hỗn hợp của các bộ phận, "alternative" đại diện cho cùng một dữ liệu dưới nhiều dạng, "parallel" cho phần thể dùng để xem cùng một lúc, và "digest" cho thực thể multipart, trong đó mỗi phần có một loại mặc định của "message/rfc822". 2. Message 53 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 54 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin Một body của media-type "message" là chính nó hay một phần của một số loại đối tượng thông báo. Các đối tượng như vậy có thể hoặc có thể không lần lượt chứa các thực thể khác. Các "rfc822 subtype" được sử dụng khi nội dung đóng gói chính nó là một message theo RFC 822. Các subtype "partial" được định nghĩa cho một phần message RFC 822, cho phép truyền phân mảnh của các cơ quan đó được cho là quá lớn được truyền thông qua các transmission của body trong một mảnh. Subtype khác, "external-body", được định nghĩa để chỉ định các body lớn tham chiếu đến một nguồn dữ liệu bên ngoài. 3.3.2.3 Giá trị rời rạc Media Type 3.3.2.3.1 Văn bản Media Type Dữ liệu “text” là loại phương tiện dành cho việc gửi tài liệu chủ yếu dưới hình thức văn bản. Một tham số “charset” có thể được dùng để chỉ các ký tự của văn bản cho cơ thể Subtypes "text", đáng chú ý bao gồm cả văn bản "subtype / plain", một subtype chung cho văn bản thuần. Văn bản thuần không cung cấp hoặc cho phép các lệnh định dạng, font thuộc tính chi tiết kỹ thuật, hàm xử lý, chỉ thị, thông dịch, hoặc đánh dấu nội dung. Văn bản thuần chỉ đơn giản là một chuỗi tuyến tính của các ký tự có thể bị gián đoạn do phá vỡ đường dây hoặc ngắt trang. Văn bản thuần có thể cho phép các xếp của một số ký tự ở vị trí tương tự trong văn bản văn bản Plain. Vào các script như tiếng Ả Rập và tiếng Do Thái cũng có thể bao gồm facilitites cho phép các tùy ý trộn các đoạn văn bản với các văn bản hướng đối diện. Ngoài văn bản đơn giản, có rất nhiều định dạng cho đại diện cho những gì có thể được gọi là "rich text”. Một điều thú vị là những đoạn văn bản “rich text” đó có thể đọc ngay mà không cần đến chương trình diễn giải nó. Nó rất hữu ích, sau đó, để phân biệt chúng ở cấp độ cao nhất, từ các dữ liệu không đọc được như hình ảnh, âm thanh, hoặc văn bản được đại diện trong một hình thức đọc. Nếu không có phần mềm giải thích thích hợp, nó sẽ hiển thị Subtypes của "text" tới người sử dụng, trong khi nó không phải là hợp lý để làm như vậy với hầu hết các dữ liệu không 54 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 55 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin phải dạng văn bản thuần. Như vậy dữ liệu định dạng văn bản cần được thể hiện bằng cách sử dụng Subtypes của "text". 3.3.2.3.2 Hình Media-Type Một loại media-type của "Image" chỉ ra rằng body chứa một hình ảnh. Subtype Các tên định dạng hình ảnh cụ thể. Một subtype ban đầu là "jpeg" cho định dạng JPEG JFIF sử dụng mã hóa [JPEG]. 3.3.2.3.3 Audio Media-Type Một loại Media-Type của "Autido" chỉ ra rằng Body chứa dữ liệu âm thanh Mặc dù chưa có một sự đồng thuận về một định dạng âm thanh lý tưởng để sử dụng với máy tính. Các subtype ban đầu của "Basic" được chỉ định để đáp ứng yêu cầu này bằng cách cung cấp một định dạng âm thanh phổ biến nhất. Với chất lượng âm thanh cao hơn nhưng lại giảm băng thông trên đường truyền. Nội dung của các Subtype “Audion/Basic” là kênh âm thanh đơn mã hóa bằng cách sử dụng 8bit ISDN mu-low [PCM] với tỷ lệ mẫu của 8.000 Hz. 3.3.2.3.4 Video Media-Type Một loại Media-Type của "video" chỉ ra rằng Body chứa một đoạn phim hình ảnh có thể với màu sắc và âm thanh phối hợp. Các thuật ngữ 'video' được sử dụng trong ý nghĩa chung nhất của nó, hơn là với tham chiếu đến bất kỳ công nghệ cụ thể hoặc định dạng nào, và không có nghĩa là để ngăn cản Subtypes như mã hóa compactly động. Các subtype "mpeg" dùng để mã hoá video theo chuẩn MPEG [MPEG]. 3.3.2.4 Giá trị Media-Type phức Trong trường hợp của thực thể multipart, một hoặc nhiều bộ khác nhau của các dữ liệu được kết hợp trong một body duy nhất, một "multipart” Media-type fields phải xuất hiện trong phần đầu của thực thể. Các body sau đó phải có một hoặc nhiều bộ phận body, cách nhau bằng một dòng dấu phân ranh giới, dòng cuối cùng theo sau 55 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 56 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin đóng cửa một dấu phân ranh giới. Sau khi dòng dấu phân ranh giới của nó, mỗi một phần body sẽ bao gồm một khu vực tiêu đề, một dòng trống, và một diện tích body. Vì vậy, một phần body tương tự như một tin nhắn 822 RFC trong cú pháp, nhưng khác nhau về ý nghĩa. Các header fields chỉ có định nghĩa cho các bộ phận body là những tên trong đó bắt đầu với "Content-". Tất cả các header fields khác có thể bị bỏ qua trong các bộ phận body. Mặc dù chúng nên được giữ lại, tuy nhiên vẫn có thể bỏ đi nếu cần thiết. Các lĩnh vực khác như vậy được phép xuất hiện trong các bộ phận body nhưng không phải phụ thuộc vào. "X-" các lĩnh vực có thể được tạo ra cho mục đích thử nghiệm hoặc tư nhân, với việc công nhận rằng các thông tin mà họ có thể bị mất tại một số cổng. Cú pháp chung Các Content-Type fields cho multipart đòi hỏi một tham số, "ranh giới". Đường ranh giới delimiter được định nghĩa là một dòng bao gồm hoàn toàn của hai nhân vật gạch nối ("-", giá trị thập phân 45) tiếp theo là giá trị tham số ranh giới từ nội dung, lĩnh vực tiêu đề Type, khoảng trắng tuyến tính tùy chọn, và CRLF một kết thúc. 3.3.2.5 Giá trị thực nghiệm của Media-Type Giá trị của một Media-Type bắt đầu bằng ký tự "X" là một giá trị private, được sử dụng bởi hệ thống đồng ý thông qua thoả thuận. Bất kỳ định dạng mà không có một định nghĩa khắt khe và public phải được đặt tên với một "X-" lên tiền tố, và công khai quy định các giá trị không bao giờ phải bắt đầu với "X". 3.3.3 RFC 2047 Message Header Extensions cho văn bản Non-ASCII 3.3.3.1 Cú pháp các từ mã hóa Một 'encoded-word' được định nghĩa trong ngữ pháp ABNF sau: Các ký hiệu của RFC 822 được sử dụng, với ngoại lệ là ký tự khoảng trắng KHÔNG PHẢI xuất hiện giữa các thành phần của một 'encoded-word'. 56 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 57 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin encoded-word = "=?" charset "?" encoding "?" encoded-text "?=" charset = token ; see section 3 encoding = token ; see section 4 token = 1* especials = "(" / ")" / "" / "@" / "," / ";" / ":" / " [...]... Doanh 19 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin ♦ NOOP: + Không có đối số + Trả lời: +OK Pop3 server không làm gì hết, chỉ hồi âm lại cho client với trả lời: “+OK” ♦ RSET: + Không có đối số + Trả lời: +OK Phục hồi lại các message đã bị đánh dấu xoá bởi Pop3 server ♦ QUIT: + Không có đối số + Trả lời: +OK 19 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 20 Ứng dụng xem bảng giá chứng khoán. .. Thực tập tốt nghiệp GVHD: Trần Đức Doanh 21 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin định chính xác yêu cầu của người sử dụng Hệ thống sử dụng một từ điển các lệnh của POP3 để làm công việc này - Sau khi lệnh đã được xác định là hợp lệ, nó sẽ được thực hiện tuỳ theo yêu cầu của người sử dụng - Trong toàn bộ phiên giao dịch POP3, hệ thống sử dụng chủ yếu là các lệnh: USER, PASS, STAT,... sử dụng chưa đọc ví dụ trên là 1  UNSEEN : là tổng số lá thư củ mà người dùng chỉ nhìn thấy nhưng nội dung chưa xem qua  UIDVALIDITY : dùng để chỉ định trạng thái của hòm thư đây là một thông số không quan trong.Mổi mail Server sẽ có cách đặc tả thông số này 25 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 26 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin khác nhau tuỳ từng mục đích sử dụng. .. tốt nghiệp GVHD: Trần Đức Doanh 13 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin Hình 3.2 Tiến trình SMTP Tiến trình giao dịch SMTP là khá phức tạp Nó phải thực hiện chức năng như một bộ dịch và xử lý lệnh theo chuẩn giao thức SMTP Tất cả các lệnh gửi tới đều phải trải qua quá trình phân tích để xác định chính xác yêu cầu của người sử dụng Hệ thống sử dụng một từ điển các lệnh của SMTP... một từ điển các lệnh của SMTP để làm công việc này 13 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 14 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin Sau khi lệnh đã được xác định là hợp lệ, nó sẽ được thực hiện tuỳ theo yêu cầu của người sử dụng Trong toàn bộ phiên giao dịch SMTP, hệ thống sử dụng chủ yếu năm lệnh là: HELO, MAIL FROM, RCPT TO, DATA và QUIT Các lệnh này luôn phải thực hiện theo... thúc của một phiên làm việc Vì trong chương trình em chỉ sử dụng một số lệnh cơ bản trong bộ giao thức này, dưới đây là ý nghĩ cũng như cách sử dụng chúng ♦ CAPABILITY - Arguments: none - Kết quả trả về : OK - capability completed BAD - command unknown or arguments invalid 23 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 24 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin - Đây là lệnh thực hiện trước... thống chỉ cần ghi nội dung thư vào hộp thư tương ứng của người sử dụng 2 Nếu người nhận không thuộc mạng cục bộ, hệ thống sẽ chuyển thư cho modul SMTP Sender Phần chức năng này sẽ chịu trách nhiệm kết nối với hệ thống Mail Server ở xa Nếu kết nối thành công, thư sẽ được chuyển 14 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 15 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin đến Mail Server ở... dịch vụ Pop3 đươc qui ước là TCP port 110 Pop3 server sẽ khởi động và lắng nghe trên port này Một client muốn sử dụng các dịch vụ của Pop3 thì nó phải thiết lập một kết nối tới Pop3 server Khi kết nối được thiết lập thì 16 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 17 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin Pop3 server sẽ gởi tới client một lời chào Sau đó, Pop3 Client và Pop3 Server sau... server + Trả lời: +OK khoá maildrop và sẵn sàng -ERR password không hiệu lực -ERR không được phép khoá maildrop Các lệnh có tác dụng trong quá trình giao dịch (transaction): ♦ STAT: + Không có đối số 17 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 18 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin + Trả lời: +OK nn mm “+OK” theo sau là khoảng trắng đơn, tiếp theo là nn: số message, khoảng trắng... that name BAD - command unknown or arguments invalid 29 Thực tập tốt nghiệp GVHD: Trần Đức Doanh 30 Ứng dụng xem bảng giá chứng khoán Khoa Công Nghệ Thông Tin - Lệnh dùng để thiết lập thuộc tính active của hòm thư,tuy nhiên nó không thể thay đổi được đặc tính hòm thư hay nói cách khác nó dùng để kiểm tra xem hòm thư này có tồn tại hay không ♦ UNSUBSCRIBE - Arguments: tên hòm thư - Kết quả trả về:OK -

Ngày đăng: 12/10/2015, 15:44

Mục lục

  • MỤC LỤC

  • Chương 1: MỞ ĐẦU

    • 1.1 Lý do và Mục đích chọn đề tài

    • 1.2 Phạm vi nghiên cứu của đề tài

    • Chương 2: TỔNG QUAN

      • 2.1 Một số khái niệm căn bản

        • 2.1.1 Email và Internet

        • 2.2 Một số khái niệm trong quản lý MailServer

          • 2.2.1 User và Group

          • 2.2.2 Mailling

          • 2.2.3 Domain

          • 2.2.4 Rule và Routing

          • 2.2.5 Replay - Forward.

          • 2.2.6 Filter và Security

          • Chương 3: GIAO THỨC VÀ CÁC CHUẨN

            • 3.1 Giao thức gửi Email SMTP (RFC2821)

              • 3.1.1 Ý nghĩa các lệnh SMTP

              • 3.1.2 Cú pháp của các lệnh

              • 3.1.3 Tiến trình của giao thức SMTP

              • 3.1.4 Ví dụ về một giao dịch của SMTP

              • 3.2 Giao thức nhận Email

                • 3.2.1 Giao thức POP3(RFC1081, RFC1082)

                • 3.2.1.1 Các lệnh của POP3:

                • 3.2.1.2 Tiến trình của giao dịch POP3

                • 3.2.1.3 Ví dụ về một session của POP3:

                • 3.2.2 Giao thức IMAP4 (RFC2060, RFC2193…)

                • 3.2.2.1 Các lệnh của IMAP4

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan