Việc thi hành một Script là quá trình gửi chuỗi các lệnh tới ScriptingEngine, tại đây ASP sẽ thông dịch các lệnh này và chuyển tiếp cho máy tính.Script được viết bằng một ngôn ngữ với cá
Trang 1Phần I: Tìm hiểu về Công nghệ xây dựng Website
Hiện nay có rất nhiều công nghệ để xây dựng nên những Website như làJSP (Java Server Page), ASP (Active Server Page) … Ở đây, chúng ta chỉ tìmhiểu về ASP là công cụ được sử dụng để xây dựng Website này
Chương I: Giới thiệu về ASP (ACTIVE SERVER PAGES) 1)
Tìm hiểu công nghệ ASP
a ASP là gì :
- Microsoft Active Server Pages là một môi trường hỗ trợ cho các Scriptchạy trên Server (Server-Side Scripting) cho phép tạo hoặc xây dựng cácứng dụng Web mạnh chứa các thẻ HTML, text và các lệnh Script hay cácứng dụng Web động, giao tiếp giữa Client và Server một cách hiệu qủa
- ASP hoạt động dựa vào các Script do người lập trình tạo ra Các trangASP có thể gọi các thành phần ActiveX để thực hiện các công việc như kếtnối với với một Database hoặc thực hiện một tính toán kinh doanh VớiASP, bạn có thể đưa nội dung tương tác với các trang Web của bạn hoặcxây dựng toàn bộ các ứng dụng Web sử dụng các trang HTML như giao tiếpvới khách hàng của bạn
b Trang ASP:
Mỗi trang asp có thể bao gồm một trong các thành phần sau: HTML,Script của ngôn ngữ VBScript hoặc JScript, Text trong đó các tag HTML vàText sẽ được xử lý bình thường như đối với các văn bản HTML (.html)thông thường, các Script sẽ được một bộ phận (engine) của ASP thông dịchvà thi hành trên Server Có thể xem trang ASP như một trang HTML có bổsung các ASP Script Command
c Quá trình biên dịch một trang asp :
Các Script của ASP được chứa trong các text file có phần mở rộnglà .asp Script thường được viết bằng một ngôn ngữ VBScript hayJavaScript
Khi một Web browser gửi yêu tới một trang asp Khi đó Web serversẽ đọc và tiến hành biên dịch các lệnh script trong đó và trả kết quả về choWeb browser dưới dạng của một trang HTML
d Tính chất của asp :
Trang 2- ASP có tính chất động: ta có thể chèn một đoạn Script vào bất kỳ nơinào trong trang HTML, đây là đăc tính quan trọng nhất và là cốt lõi củacông nghệ ASP, chính điều này đã mang lại rất nhiều điều thú vị mà trongHTML không có.
- ASP có tính hướng đối tượng: với các build-in Object rất tiện dụng :Request, Response, Server, Apllication, Session, …
- Có khả năng mở rộng các thành phần ActiveX Server (ActiveXServer Components)
- Các ứng dụng ASP dễ tạo vì dùng các ASP Script để viết các ứngdụng Khi tạo các Script của ASP ta có thể dùng bất kỳ một ngôn ngữ Scriptnào, chỉ cần có scripting engine tương ứng của ngôn ngữ đó
- Việc chèn các Script vào file HTML làm cho quá trình xử lý tạo ra vănbản HTML (Dynamic Pages) đồng thời với việc xử lý các Script, điều bàysẽ làm cho hoạt động của trang Web sẽ trở nên linh động hơn, uyển chuyểnhơn
- Các file asp cũng tương thích với file HTML, và việc viết các Scriptđơn giản, không phải biên dịch hay liên kết như việc lập trình thông thường,ASP cung cấp các đối tượng tiện lợi cho nhiều thao tác như: Request,Response, Server, Apllication, Session Các đối tượng có sẵn này của môitrường ASP sẽ giúp cho việc giao tiếp dữ liệu giữa Client và Server thực sựtiện lợi, cũng như việc quản lý ứng dụng một cách linh hoạt nhờ vào cácbiến Session, Application
e Ưu điểm và khuyết điểm của ASP
Ưu điểm :
ASP bổ sung cho các công nghệ đã có từ trước như CGI (CommonGateway Interface), Giúp người dùng xây dựng các ứng dụng web với nhữngtính năng sinh động Tuy nhiên, khác với CGI, các trang ASP không cần phảihợp dịch
Dễ dàng tương thích với các công nghệ của Microsoft ASP sử dụngActiveX Data Object (ADO) để thao tác với cơ sở dữ liệu hết sức tiện lợi Với những gì ASP cung cấp, các nhà phát triển ứng dụng Web dễ dàngtiếp cận công nghệ này và nhanh chóng tạo ra các sản phẩm có giá trị Điềunày hết sức có ý nghĩa trong điều kiện phát triển như vũ bão của tin học ngàynay Nó góp phần tạo nên một đội ngũ lập trình Web lớn mạnh
Trang 3ASP có tính năng mở Nó cho phép các nhà lập trình xây dựng cácComponent và đăng ký sử dụng dễ dàng Hay nói cách khác ASP có tínhnăng COM (Component Object Model).
ASP không được sự hổ trợ nhiều từ các hãng thứ ba
Các ứng dụng ASP chạy chậm hơn công nghệ Java Servlet
Tính bảo mật thấp Không giống như CGI hay Java servlet, các mã ASPđều có thể đọc được nếu người dùng có quyền truy cập vào web server Có lẽđây là lý do quan trọng nhất để người dùng không chọn công nghệ ASP
2) Các thành phần và cú pháp ASP :
ASP bao gồm các thành phần sau :
1 Các bộ dịch ngôn ngữ VBScript và JScript
2 Thư viện các đối tượng, chuyên dùng để truy xuất Database thông quaODBC Driver (Active Server Data Object – ADO) Thư viện các đốitượng hỗ trợ cho việc viết các trang ASP
Một file ASP thực chất là một văn bản, nó có thể bao gồm các thànhphần sau:
+Văn Bản (Text)
+ Các HTML tag
+ Các Script Mỗi Script này sẽ thực hiện một công việc nào đó, giống nhưcác phát biểu của một ngôn ngữ lập trình Một Script là một chuỗi cáclệnh script, nó có thể là:
1 Một phép gán giá trị cho một biến
2 Một yêu cầu Web Server gửi thông tin đến Brower
3 Tổ hợp các lệnh riêng rẽ thành một thủ tục hay một hàmgiống như trong các ngôn ngữ lập trình
Việc thi hành một Script là quá trình gửi chuỗi các lệnh tới ScriptingEngine, tại đây ASP sẽ thông dịch các lệnh này và chuyển tiếp cho máy tính.Script được viết bằng một ngôn ngữ với các luật được đặt tả nào đó, nếu tamuốn sử dụng một Script Language nào thì trên Server phải chạy Script Engine
Trang 4cho ngôn ngữ đó Trong ASP cung cấp hai Script Engine là VBScript và JScript(với VBScript là mặc nhiên) Tuy nhiên ASP không phải là ngôn ngữ Script,mà nó chỉ cung cấp một môi trường để xử lý các Script mà ta chèn vào trongcác file asp, việc chèn này phải tuân theo một cú pháp nhất định của ASP.
a Dấu ngăn cách (Delimiter):
Trong văn bản ASP ta sử dụng các dấu <% và%> để ngăn cách phầnvăn bản HTML với phần Script, hay cụ thể là bất cứ một phát biểu Script nàocũng đều phải nằm giữa hai ngăn cách <% và %>
b Câu lệnh (Statement):
Một câu lệnh trong VBScript hay trong ngôn ngữ Script khác là một cấutrúc dùng để thực hiện một thao tác, câu lệnh phải được khai báo hoặc địnhnghĩa trong ngôn ngữ Scripting Các ngôn ngữ Script trong ASP cung cấp cho tahầu hết các cấu trúc điều khiển : IF…ELSE, For, While, DO WHILE… cùng vớinhững kiểu dữ liệu cơ bản như Integer , char, string, Array … để sử dụng
c SCRIPT tag:
Các phát biểu, biểu thức, lệnh, hay thủ tục mà bạn sử dụng bên trong haidấu ngăn cách <% và %> phải được nhìn nhận bởi ngôn ngữ Script mặc địnhhoặc ngôn ngữ Script được khai báo ở đầu trang ASP Ngôn ngữ Scripting mặcđịnh của ASP là VBScript, tuy nhiên với ASP ta vẫn có thể sử dụng các ngônngữ lập trình khác bên trong bằng cách sử dụng thẻ <SCRIPT> và </SCRIPT>
d Include file:
Khi tạo một ứng dụng Web, bao gồm nhiều trang ASP, nếu như toàn bộcác trang đều cần sử dụng những thông tin chung nào đó chẳng hạn như cáchằng, giá trị … Để tránh lại việc định nghĩa lại các giá trị này, ta có thể sử dụng
cơ chế include file của ASP (giống như trong ngôn ngữ lập trình cổ điển) Đểinclude một file trong trang ASP ta sử dụng cú pháp sau:
<! #include Virtual/File="filename" >
3) Các đối tượng cơ bản của asp:
ASP cung cấp cho người lập trình các đối tượng có sẵn, mỗi đối tượng nàysẽ thực hiện một chức năng riêng nào đó, các đối tượng có sẵn (built-in oject)bao gồm:
Tên đối tượng Chức năng
Request Lấy thông tin từ một user
Trang 5Respone Gửi thông tin tới một user.
Server Điều khiển môi trường hoạt động của ASP
Session Lưu giữ thông tin về một session của user
Application Chia sẻ thông tin giữa các user trong cùng một ứng dụng
a Đối tượng Request
Với đối tượng Request, các ứng dụng ASP có thể dễ dàng lấy được thôngtin gửi tới từ user
Đối tượng Request cho phép truy xuất chi tới bất kỳ thông tin nào user gửitới bằng giao thức HTTP như:
1 Các thông tin chuẩn nằm trong các biến Server (Variable Server)
2 Các tham số được gửi tới bằng phương thức POST
3 Các thông tin được gửi tới bằng phương thức GET
4 Các Cookies (là thông tin của User được gửi kèm theo) tới từ Browser
5 Các Client Certificates
Đối tượng Request tìm kiếm các giá trị mà Client Browser đưa vào Servertrong khi có một yêu cầu HTTP
Cú pháp:
Request.collection|property|method
Collections:
− Cookies: Giá trị của các Cookie gởi trong yêu cầu HTTP
− Form: Giá trị các phần tử Form trong thân của yêu cầu HTTP
− QueryString: Giá trị của các biến trong trong chuỗi truy vấn HTTP.
− ServerVariables: Giá trị của các biến môi trường đã được xác địnhtrước
Properties:
− TotalBytes: Tổng số byte Client đang gởi trong thân của yêu cầu
Các tham số biến là chuỗi ký tự chỉ rõ mục (item) được tìm kiếm từ mộtcollection hoặc được sử dụng như là mục vào đối với một phương thức(method) hoặc một property
Ngoài ra, tất cả các biến có thể được truy cập một cách trực tiếp bằngcách gọi cú pháp Request(variable) mà không cần tên collection Trong trườnghợp này, Web Server tìm kiếm các collection theo thứ tự sau:
1 QueryString
Trang 62 Cookies
3 ClientCertificate
4 ServerVariables
b Đối tượng Response
Bạn có thể sử dụng đối tượng Response để gởi kết xuất tới Client
Cú pháp
Response.collection |property| method
Collections : Cookies : Chỉ định giá trị cookie và thiết lập các giá trị cookie
Properties :
− Buffer: Chỉ ra liệu trang kết xuất được đệm hay không
− ContentType : Chỉ định kiểu nội dung HTTP (vd:”Text/HTML”) khiđáp ứng
− Expires : Chỉ định thời gian trước khi một trang lưu trữ trên Browser kếtthúc
− CacheControl: Xác định các Proxy Server có thể kết quả đầu ra phátsinh bởi ASP
− Charset: Thêm vào bộ ký tự Header Content-Type
− ExpiresAbsolute: Ngày giờ 1 trang được dấu trên Browser hết hạn
− IsClientConnected: Kiểm tra kết nối Client có bị gián đoạn từ Server
− PICS: Thêm giá trị vào nhãn PICS field pics-label của Header
− Status: Giá trị dòng trạng thái HTTP được trả ra bởi Server
Methods :
− AddHeader : Thiết lập tên (name) tiêu đề HTML bằng giá trị (value).
− AddHeader: Thêm hoặc thay đổi trị số trong HTTP header
− AppendToLog: Thêm text vào cổng vào nhật ký Web Server
− BinaryWrite: Gửi text lên Browser mà không cần chuyển đổi bộCharset
− Clear: Hủy bỏ vùng đệm kết xuất HTML
− End: Ngưng xử lý trang và trả ra kết quả hiện hành
− Flush: Gửi kết quả đầu ra được đệm ngay lập tức
− Redirect: Hướng dẫn cho Browser kết nối với 1 địa chỉ URL khác
− Write: Xuất một biến tới trang hiện hành như là một chuỗi
c Đối tượng Server
Đối tượng Server cung cấp truy cập tới các phương thức và đặc tính(property) trên Server Hầu hết các phương thức và đặc tính (property) Servernhư là các chức năng tiện ích
Trang 7Cú pháp : Server.property|method
Properties : ScriptTimeout : Khoảng thời gian mà một Script có thể chạy trướckhi hết thời gian (time out)
Methods :
− CreateObject : Tạo một thực thể (instance) của một đối tượng hoặcthành phần server
− HTMLEncode : Mã hóa chuỗi thành dạng HTML
− MapPath : Aùnh xạ đường dẫn ảo, đường dẫn tuyệt đối hay tương đốitrên Server hiện hành vào một đường dẫn vật lý
− URLEncode : Mã hóa chuỗi kí tự thành dạng URL
d Đối tượng Session
Đối tượng Session được sử dụng để lưu trữ và tìm lại thông tin về mộtUser Session Các giá trị lưu trữ trong đối tượng Session không bị loại bỏ đi khiuser di chuyển từ trang này sang trang khác trong ứng dụng, Web Server tựđộng tạo ra một đối tượng Session khi một trang Web trong ứng dụng được yêucầu bởi một User chưa có Session Server hủy bỏ đối tượng Session khi nó hếtthời gian hay được hủy bỏ Thực tế, một Session chỉ thuộc về một User
Dữ liệu Session thường gắn liền với một User, nó quản lý các thông tin vềUser đang sử dụng một ứng dụng
Cú pháp : Session.collection |property| method
Collections :
Contents Chứa các mục (item) mà bạn thêm vào Session với các lệnh Script
Properties :
− SessionID : Trả về định danh Session đối với User
− Timeout : Khoảng thời gian đối với các Sessio
− Se_OnEnd : Xảy ra khi Session kết thúc
e Đối tượng Application
Trang 8Với đối tượng Session chúng ta đã có thể thực hiện việc lưu trữ dữ liệuchung giữa các trang trong một phiên làm việc của người sử dụng Đối tượngApplication cung cấp phương tiện cho phép chia sẻ dữ liệu giữa các người sửdụng khác nhau (mỗi người sử dụng này có riêng một Session) của cùng mộtứng dụng.
Như ta đã biết, ứng dụng ASP là tập hợp các trang asp (và các thư mục con),được cái đặt trong một Virtual Directory Mỗi ứng dụng ASP được cung cấpmột không gian để lưu trữ các dữ liệu toàn cục của nó gọi là tầm vựcApplication Việc truy xuất vào tầm vực này do đối tượng Application quản lývà thực hiện Thời gian sống của tầm vực Application được tính từ khi ứng dụngbắt đầu chạy (Web Server khởi động) cho đến khi ứng dụng bị huỷ bỏ (WebServer stop)
Để lưu trữ một dữ liệu trong tầm vực Application, sử dụng cú pháp:
Application(“tênbiến”)=giá trị;
Việc lưu trữ và thao tác với các đối tượng dữ liệu (như mảng) trongApplication được thực hiện tương tự như đối với các biến Session
Vì các biến trong tầm vực Application có thể được truy xuất bởi nhiều
User khác nhau, nên đối tượng Application cung cấp hai phương thức lock() và unlock() để loại trừ tương hỗ khi truy xuất vào vùng dữ liệu dùng chung này.
Phương thức Application.Lock(): Thực hiện khóa dữ liệu Trong
khi một User khóa tầm vực Application, các User khác sẽ khôngcó khả năng cập nhật hay thay đổi trong vùng này
Phương thức Application.Unlock(): Được gọi để mở khóa Khi
khóa đã mở, các User khác có thểthực hiện thao tác cập nhật dữliệu trong tầm vực Application
Nhìn chung, khi một User cần thực hiện thao tác cập nhật cùngApplication, nó thực hiện các bước sau trong kịch bản:
Trang 9 Staticobjects: Chứa tất cả các đối tượng được thêm vào ứng dụng bằngtag <OBJECT>
Method
Lock: Ngăn cản các Client khác sửa đổi thuộc tính của ứng dụng
Unclock: Cho pháp các Client khác được sửa đổi thuộc tính của ứngdụng
Events
OnStart: Xảy ra khi 1 trang trong ứng dụng được xem đầu tiên
OnEnd: Xảy ra khi thoát ra khỏi ứng dụng, sau biến cố Session_onEnd
4) Các thành phần (component) của asp.
Ngoài các đối tượng cơ bản có sẵn trong môi trường ASP, việc tạo cáctrang Web động bằng ASP còn được trợ giúp nhờ một số thư viện các đối tượng(ActiveX Component) của ActiveX Server Các thành phần được thiết kế đểchạy trên Web Server như một ứng dụng Web cơ sở hợp thành các gói nhỏ đặctrưng chung là động Mỗi thành phần được sử dụng cho một công việc chuyênbiệt nhiệm cho là một thư viện các lớp (hay đối tượng), được thiết kế ở dạngAutomation Server, thực hiện một nhóm công việc chung nhất cho một thao tácnào đó, chẳng hạn như truy xuất database, truy xuất file… vì thế người pháttriển ứng dụng Web bằng ASP khộng cần phải tạo lại các đặc tính này
Chúng ta có thể tạo động, tương tác với các trang Web bằng cách sử dụngcác thành phần Server đã được included với Active Server Pages (ASP) trongcác đoạn Script của ta
5) Truy xuất cơ sở dữ liệu trong ASP.
Ở phần trên chúng ta đã biết về các khái niệm tổng quát về ASP và cácthành phần cần có khi xây dựng một ứng dụng Trong phần này sẽ trình bày kỹhơn về Active Data Object, đây chính là ưu điểm mạnh nhất cho việc phát triểnứng dụng cơ sở dữ liệu trên web (Web database)
DataBase Access Component :
Một ứng dụng Web database viết bằng ASP có thể truy xuất dữ liệutrong môi trường database bằng cách sử dụng Component Database Access củaActiveX hay còn gọi là thư viện ADO (Active Data Object) Đây cũng chính làđiểm mạnh nhất của ASP trong việc phát triển ứng dụng Web database
Các Object của ADO cung cấp có thể tạo ra các kết nối (Connection) vớihầu hết các kiểu Database, cũng như việc truy xuất, cập nhất các database này
Trang 10Hiện nay thư viện ADO là công cụ mạnh nhất trong việc phát triển các ứngdụng database trên Internet.
Trong phần này ta sẽ xem xét các thành phần trong thư viện công cụ này
ADO interface :
ADO được thiết kế một cách đơn giản nhất, nó giao tiếp với database thôngqua phương thức ODBC (Open DataBase Connectivity), chúng ta có thể sửdụng chúng với bất kỳ loại database nào nếu như ODBC có driver hỗ trợ Hiệnnay tồn tại driver cho hầu hết các loại database như Foxpro, Access, Oracle,SQl Server,
Sự giao tiếp giữa ADO và các thành phần khác trong hệ thống có thể đượcmô tả theo hình vẽ sau:
Quá trình truy xuất cơ sở dữ liệu thông qua ODBC
Các Object trong ADO :
Các Object chính trong đó là: Connection, RecordSet và Command Ngoài
ba Object chính này còn có các Object, tham số, thuộc tính, phương thức Sửdụng Connection ta có thể thiết lập sự liên kết với cơ sở dữ liệu, thông qua đó
ta có thể thực hiện các Query để lấy ra các record hoặc cập nhật một recordbằng cách sử dụng Command Object Kết quả thực hiện các Query trênDatabase sẽ được lưu vào đối tượng Recordset, trên đối tượng này ta có duyệtvà lấy ra một hay nhiều Record Sau đây ta xem xét cụ thể cấu tạo cũng nhưcách sử dụng của từng Object
Đối tượng Connection :
Để sử dụng tốt đối tượng Connection, trước tiên ta phải tạo ra một Instancecho nó, đây thực sự là một thể hiện của Object này trong ASP Phát biểu tạoInstance cho Connection có cú pháp như sau:
Trang 11Connection pooling :
Các ứng dụng cơ sở dữ liệu truyền thống đều tạo một mối liên kết tớidatabase mà nó sử dụng, còn các ứng dụng Database trên web lại mở và đóngcác liên kết này ở mỗi trang web Một phương pháp cho các ứng dụngDatabase trên web là tạo một sự liên kết liên tục với cơ sở dữ liệu của từngUser và lưu trữ trong đối tượng Session Tuy nhiên, phương pháp này làm giatăng số lượng các User kết nối tới cơ sở dữ liệu mà không làm việc và nó chỉđạt được độ tin cậy đối với các Website có sự liên thông dữ liệu thấp (low-traffic)
Phương pháp tiện lợi hơn trong việc quản lý các kết nối với cơ sở dữ liệucủa ứng dụng web là quản lý bằng Connection Pool của ODBC nhằm giảm bớtsố lượng liên kết rảnh rỗi ODBC sẽ mở các kết nối và quản lý các kết nối nàymỗi khi có một yêu cầu kết nối mới thì thực hiện việc kiểm tra xem có liên kếtnào rảnh không, nếu không thì sẽ tạo kết nối mới, ngược lại sẽ lấy liên kết
Trang 12rảnh này mà không tạo liên kết mới Nếu có một liên kết rảnh nào trongConnection Pool tồn tại quá 60 giây thì nó sẽ tự động hủy bỏ.
Connection Pooling được kích hoạt mặc nhiên trong ASP, ta có thể loạibỏ bằng cách thiết lập giá trị Register Entry Star Connection Pool về giá trị 0
Các phương thức của đối tượng connection :
• Open method : Sử dụng để mở một kết nối với Database Sau khi tạomột instance cho Connection Object Ta có thể mở một kết nối vớidata source để có thể truy xuất dữ liệu, cú pháp như sau:
Connection.open ConnectionString User password
Trong đó ConnectionString là chuỗi định nghĩa tên của datasource(DNS), tên này được khai báo trong ODBC User và password sẽ thựchiện việc mở Database
• Execute method : Phương pháp này cho phép thực thi một câu lệnh,tác động lên data source Ta có cú pháp như sau :
Connection.Execute Commandtext.RecordAffected.options
Trong đó thông số option có các giá trị khác nhau tương ứng với mỗiloại CommanText Các giá trị của Option theo bảng sau:
Giá trị Danh hiệu hằng tương ứng Mô tả CommanText
0 AdCmdUnknown Giá trị này mặc định khi định nghĩa
1 AdCmdText CommandText là một câu lệnh (vd: SQL)
2 AdCmdTable Tên của Table mà ta sẽ tạo một RecordSet từ đó
3 AdCmdStoreử dụngPro Một Seaticored procedure trong data source
• Close method : Trong các trang ASP, sau khi đã xử lý xong dữ liệutrên data source, trước khi kết thúc một trang sử dụng phải đóng lạicác kết nối đã mở Việc đóng kết kết nối thực hiện nhờ phương thứcClose
Cú pháp như sau: Connection.Close
Nếu chương trình không thực hiện việc này thì ASP sẽ tự động đóngConnection mở trong trang Mỗi khi người sử dụng tham khảo sangtrang khác (đi khỏi tầm vực của biến Instance) Nếu ta tạo Instance vàmở kết nối trong các thủ tục Application hoặc Session_onStar việc đóng
các Connection này sẽ được thể hiện trong thủ tục onEnd
Trang 13 Đối tượng Command :
Thay vì phải sử dụng phương thức Execute của đối tượng Connection đểQuery hay Update data resource, ta có thể sử dụng đối tượng Command dễ thihành các thao tác với cơ sở dữ liệu
Việc tạo một Instance cho đối tượng Command cũng như đối tượngConnection Nghĩa là cũng sử dụng phương thức Server.CreateObject
Command-name=Server.CreateObhec (“ADODB.Command”)
Tuy nhiên để sử dụng đối tượng này ta cần xem xét các phương thức vàthuộc tính kèm theo
Các phương thức (Methods) :
• Create Paramater: Dùng để tạo một đối tượng (thông số) trong tậpthông số
• Execute: Dùng để thực thi câu lệnh được đặc tả trong thuộc tínhCommandText
Các thuộc tính (Properties):
• ActiveConnection :Chỉ định đối tượng Connection nào được sử dụngtrong đối tượng Command
• CommandText: Chỉ định câu lệnh cần thực thi trên cơ sở dữ liệu
• CommandTimeOut: Xác định thời gian thực thi lệnh, giá trị thời gianthực thi được tính theo giây
• CommandType: Cho biết kiểu của Query đặc tả trong CommandText
• Prepared : Tạo ra lệnh chuẩn bị trước khi thực thi
Tạo ActiveConnection :
Sau khi đã có các Instance của các Connection Object đã được kết nối với
cơ sở dữ liệu và Command Object Lúc này nếu muốn sử dụng CommandObject ta phải gán tên của Connection thích hợp (Connection nào kết nối tới cơsở dữ liệu cần làm việc) vào cho thuộc tính ActiveConnection của CommandObject
Trang 14o Delete : Xóa một thông số trong Collections.
o Refresh : Làm tươi lại sự thay đổi thông số đó
Các Properties :
o Count : trả về các thông số có trong Collections
o Item : được sử dụng để lấy giá trị của một thông số trong Collections
o Atribute: Thể hiện kiểu dữ liệu mà thông số đó chấp nhận
o Direction : Thể hiện hướng của thông số là Input, Output hay cả hai,
o Name : Tên thông số
o NumberScale : Số chữ số thập phân trong thông số kiểu số
o Size : Kích thước lớn nhất tính theo byte
o
Đối tượng RecordSet :
Bằng cách sử dụng các đối tượng Connection và Command ta có thểthực thi các query để Add, Update, or Delete, một Record trong Datasource
Các Method:
AddNew : Là phương thức để tạo ra một Reccord
Close : Đóng lại đối tượng
Delete : Xóa đi Record hiện hành trong RecordSet
Move : Dịch chuyển vị trí Record hiện tại
Các phương thức dịch chuyển con trỏ :
MoveFirst, MoveNext, MovePrevious, MoveLast
Các Properties :
AbsolutePosition: Số thứ tự hay Record hiện tại
BOF : Có giá trị True nếu con trỏ nằm ở Record đầu tiên
CursorType: Kiểu con trỏ được sử dụng trong RecordSet
RecordCount : Trả vể số Record trong RecordSet
Trang 15Phần II: Tìm hiểu về Chat và Mail Chương I: Tìm hiểu về Chat theo chuẩn IRC
Hiện nay trên Internet có nhiều loại dịch vụ, mỗi dịch vụ cung cấp chochúng ta một tiện ích khác nhau, trong đó có dịch vụ Chat Đây là loại dịch vụcho phép mọi người trên khắp hành tinh có thể gặp gỡ, trao đổi thông tin vớinhau mà không cần phải gặp nhau trực tiếp Dịch vụ này rất phát triển, có đếnhàng triệu người trên thế giới đang sử dụng dịch vụ này Vì vậy vấn đề đặt ralà phải có một quy định chung cho hệ thống mạng IRC (Internet Relay Chat).Ủy Ban IAB về các giao thức chuẩn (IAB Official Protocol Standards) đã đưa
ra một giao thức chuẩn (Standard protocol) dùng cho tất cả các chương trìnhchat đang tồn tại Đó là IRC (Internet Relay Chat) protocol được định nghĩatrong RFC (Request For Comment) 1459, 2810, 1324, 2811, 2813
IRC Protocol được đưa ra vào năm 1980, tiền thân của nó, dùng cho cácthành viên trong mạng BBS trao đổi thông tin với nhau, dần dần được cải tiếnvà trở thành giao thức chuẩn cho các chương trình IRC Quy mô của IRCprotocol là trên toàn cầu, gồm có 2 thành phần Client và Server
Hiện nay IRC Protocol được xây dựng trên họ giao thức mạng phổ biếnnhất là TCP/IP (TCP/IP Net Work Protocol) lý do việc sử dụng họ giao thứcnày là tính chính xác, tin cậy, phổ biến, rất thích hợp cho các cuộc thảo luận từxa
IRC Protocol dùng mô hình Client–Server, vì thế chúng ta có thể chạynhiều máy trên môi trường phân tán (distributed enviroment) Trong đó máyđóng vai trò là Server cung cấp một điểm tập trung (central point) cho cácClient kết nối đến, và đồng thời thực hiện quá trình truyền nhận message từcác Client này đến các Client khác
I) Một số khái niệm cơ bản.
1 Servers:
Server được xem là xương sống của mạng IRC, mỗi Server là một tâmđiểm trong hệ thống các Server, chúng cho phép Client và Server khác kết nốivào Những Server này được kết nối theo biểu đồ hình cây (Spanning Tree)
2 Clients
Client là một máy tính mà nó được kết nối đến Server và máy tính đókhông phải là Server
Trang 16Client là thiết bị đầu cuối nó không chuyển tiếp message cho bất cứ máytính nào khác
Mỗi Client được phân biệt với nhau thông qua Nickname (Nickname làchuỗi có giá trị tối đa 9 ký tự ) Server dùng Nickname để quản lý các Client
Khi có sự tham gia của một Client vào hệ thống, tất cả các Server phảicó thông tin về Client đó như là tên Client (Hostname), tên Server mà nó kếtnối đến v.v
Operators:
Để có thể quản lý số lượng User tham gia trên mạng (IRC network)người ta xây dựng một nhóm User gọi là “Client Operator” nhóm này có đầyđủ mọi quyền hạn trên mạng (IRC network) Mặc dù quyền hạn (cấp choClient Operation) có thể được xem là “nguy hiểm”, nhóm “Client Operator” cóthể thực hiện các tác vụ như hủy bỏ kết nối (disconnecting) của một Client nàođó hoặc tái kết nối (reconnecting) đến Server nào đó Những tác vụ này có thểthực hiện khi có một Server bị hỏng hay khi có sự cố về đường truyền và nhiềunguyên nhân khác Chính vì khả năng đó nên người ta cho rằng nhóm “ClientOperator” có thể nguy hiểm vì có thể nhóm Client này hủy bỏ kết nối của mộtClient khác mà không có lý do hợp lý, hay mục đích chính đáng
3 Channels
Channel là tên nhóm một hay nhiều client, mà những client này sẽ cùngđược nhận các message gởi đến channel đó, nói cách khác là các client thuộcvề một channel sẽ nhận được message gởi đến channel đó Những client trongcùng một channel mới có thể nhận thấy nhau
Một channel được ngầm tạo ra khi có client đầu tiên tham gia và kếtthúc khi client cuối cùng ngưng kết nối Trong khi channel đang tồn tại thìclient có thể tham gia vào channel đó bằng cách dùng tên channel
Tên của channel có thể lên đến 200 ký tự và bắt đầu bằng ký tự ‘&’hoặc ký tự ‘#’, Tên channel không có ký tự khoảng trắng (‘ ‘), Ctr+G(^G orASCII 7), dấu phẩy (‘,’ )
Để có thể tạo ra một channel hay là tham gia vào một channel có sẵnclient phải gởi JOIN message để tham gia vào channel đó
Channels operation :
Channel oprerator còn được gọi là “chop” hoặc “chanop” Khi có mộtuser tạo ra channel thì mặc nhiên user đó trở thành channel operator, là ngườisở hữu channel user (channel operator) có đầy đủ mọi quyền hạn trên channel
Trang 17đó Để quản lý các client channel operator có thể thực hiện quyền của mìnhnhư :
KICH - đẩy một client ra khỏi channel
MODE - thay đổi mode của channel
INVITE - gọi một client tham gia vào channel mà nó đang ở
trạng thái invite-only (mode i+)
TOPIC - thay đổi topic channel, channel này đang ở trạng
thái +t(mode +t)
Ngoài ra channel operator có thể cấp quyền cho client khác hay nhườngquyền channel operator lại Tuy nhiên quyền hạn này không được chính xác vìnhững nguyên nhân đã được trình bài phần trên
Một channel operation thì được nhận dạng bởi ký tự bắt đầu “@” tiếp
theo là nickname (nick name của user tạo ra channel đó) Ví dụ @HappyMan II) Những quy định trong IRC.
Dạng chung của thông điệp.
Thông điệp thường có 2 dạng:
Các thông điệp xuất phát từ lệnh (thông điệp được phát sinh từ mộtlệnh): là thông điệp được client gửi lên server để yêu cầu một mục đích nào đó(ví dụ như hỏi thông tin một nick nào đó, hay hỏi thông tin các channel, hoặcchỉ đơn giản là muốn gửi thông điệp cần nói trên channel…) Các thông điệpnày có thể không còn nguyên thủy như khi user gõ vào, mà chúng được gắnthêm prefix (địa chỉ host, nickname của user gửi)
Thông điệp trả về: là thông điệp được server gửi về client để trả lời lạicác yêu cầu của client
Các thông điệp có hai dạng: thông điệp bằng chữ và thông điệp bằng số
2 Message
Message là thông điệp từ client gởi cho server hoặc ngược lại, nếu trongmessage chứa lệnh (lệnh này sẽ được mô tả phần sau), thì những lệnh này sẽđược đáp lại bằng thông điệp phản hồi (reply message)
Mỗi message gồm có 3 phần chính: phần đầu còn gọi là tiếp đầu ngữ(prefix), tiếp theo đó là phần lệnh (command) và cuối cùng là danh sách đốisố(parameters list), mỗi phần cách nhau bởi ký tự khoảng trắng (ASCII 0x20).Bắt đầu prefix là ký tự “:” (ASCII 0x3b) chính nhờ vào ký tự này mà server
Trang 18nhận biết chính xác phần lệnh (command), những cú pháp lệnh sẽ được mô tảchi tiết trong phần định dạng message (format message).
Nếu message từ client gởi đến mà không nhận thấy phần đầu (prefix) thìserver xem như message đó được gởi từ client mà nó kết nối trực tiếp, vì thếcác client muốn gởi message đến server mà nó kết nối trực tiếp không nêndùng phần prefix, nếu sử dụng cần phải sử dụng chính xác vì nếu prefix khôngđúng thì server không đáp lại mà nó im lặng
Phần lệnh (command) là những thành phần thuộc về IRC (được mô tảchi tiết trong phần message detail), chiều dài lệnh và danh sách đối số chophép là 510 ký tự, cuối mỗi message có ký tự kết thúc (CR-LF) như thế tổngchiều dài chúng là 512 ký tự
Định dạng một message
Vấn đề đặt ra là làm sao có thể nhận dạng và phân tích ra từ nhữngluồng tuần tự các message gởi đến, để giải quyết vấn đề này người ta lập raquy định cho message
Như đã mô tả ở phần trên, một message luôn cóù ký tự kết thúc nhờ vàoký tự này mà server có thể tách message ra khỏi luồng (stream) Sau khi tách
ra chúng được phân tích thành 3 thành phần chính chúng ta sẽ khảo sát chúngtrong phần sau Bây giờ chúng ta phân tích cấu trúc tổng quát cho mộtmessage:
Giải thích cú pháp:
Đối tượng nằm trong dấu [ ] có thể có hoặc không có
Đối tượng nằm trong dấu < > là bắt buột phải có
Toán tử ‘ | ’ là có khả năng chọn một trong hai ví dụ: “<a> | <b>” cóthể chọn <a> hoặc chọn <b>
Đối tượng nằm trong dấu {} có thể xuất hiện nhiều lần
3 thành phần chính của message:
Phần đầu (prefix)
Phần prefix có thể không có, bắt đầu prefix phải có dấu ‘:’ :
<prefix> ::=<servername > | <nick> [‘!’ <user> ][‘@’ <host> ]
[‘:’<prefix><SPACE>] <command> <SPACE> <params> <cr-lf>
Phần đầu(prefix) Lệnh DS đối số ký tự kết thúc
Trang 19Ở đây chúng ta có thể thấy prefix có thể là servername hoặc nickname ngoài ra còn có thể có thêm username hay hostname hoặc cả hai Nhưng đối
với username phải có ký tự ‘!’ đứng trước, tương tự như thế hostname phải cóký tự ‘@’đứng đầu
Phần Lệnh (command)
Phần lệnh có thể ở dạng chuỗi hoặc số :
<command> ::=<letter> {<letter>} | <number> <number> <number>dễ dàng chúng ta có thể nhận thấy lệnh có thể do một hay nhiều ký tự hoặc giátrị số gồm 3 chữ số
Phần danh sách đối số (parameters list)
<params> ::=<SPACE> [‘:’ <trailing> | <middle> <params>]
Chúng ta thấy đối số có thể không xuất hiện, giải thích thêm về
Ví dụ: “* !* “ đại diện cho tất cả các user
“*@* “ đại diện cho tất cả host name
“*.edu “ đại diện cho nhóm server có phần cuối là edu
3 Giá trị số trả về (numeric replies)
Sau khi khảo sát về cấu trúc của một message, chúng ta được biết mộtmessage được nhận dạng như thế nào Sau khi nhận được message, server sẽphát ra message phản hồi (repply message) Reply Message được hiểu tương tựnhư là message, thật sự nó gồm 3 phần: sender prefix, giá trị số gồm 3 chữ sốvà target
sender prefix là nickname của client gởi
giá trị số được mô tả phần sau
<taget> ::= <channel> | <user> ‘@’ <servername> | <nick> | <mask> [
“,” <taget>] để nhận biết reply message đến client nào chúng dựa vào
Trang 20III Chi tiết cho từng message (Message detail)
Đây là phần mô tả chính cho mỗi loại message, để sever và client có thểnhận biết chúng Server sẽ nhận message và phân tích chúng, sau đó trả lạithông báo thích hợp Nếu phân tích message mà gặp phải lỗi (error) Khi đóserver phải có cơ chế thông báo cho client
Một lỗi (error) sinh ra thường do những nguyên nhân sau:
Sai đối số (incorrect parameter)
Sai Lệnh(incorrect command)
Sai địa chỉ đích Tên server
NickNameChannel name
Sai vì vi phạm quyền hạn v.v…
Cú pháp cho một command message
Chú ý: Đối với “Name”, đó là tên của client gởi Một server (từ xa) được client gởi message đến thì server sẽ căn cứ vào “Name”, để có thể đáp
lại yêu cầu ngược lại nếu client gởi đến server mà nó kết nối trực tiếp khôngcần
1 Nhóm message đăng ký kết nối
Nhóm message đăng ký kết nối chịu trách nhiệm kết nối với IRC server.Trong nhóm message này có 3 loại message:
Message do server sử dụng
Message do client sử dụng
Message dùng chung
1.1 Message do Server sử dụng
Server Message
Cú Pháp: SERVER <servername><hopcount><info>
Server message dùng để thông báo cho các server khác trên toàn hệthống biết, có thêm một server kết nối vào hệ thống mạng (IRC network).Những thông tin về server này được chuyển cho các server khác trên mạngchứa trong đối số <info> Sự kiện này xảy ra khi có một server mới kết nối vàohệ thống mạng Lúc đó server (mới kết nối vào) phát ra SERVER message,message này được phát quảng bá (broadcast) lên mạng
:Name COMMAND parameter list
Trang 21Lưu ý SERVER message khi gởi đến phải được chấp nhận bởi Server cótên là đối số <servername>.
Giải thích: vì chúng ta biết rằng khi có một server tham gia vào hệ thốngthì các server khác phải có thông tin về server đó để chúng cập nhật lại cấuhình mạng, như thế thông tin này phải thông báo cho các server khác Messagenày được gởi cho từng server
Server Quit Message
Cú Pháp: SQUIT <server><comment>
SQUIT message được dùng khi server muốn thoát khỏi hệ thống mạng.Message này cũng là hành động của operator giúp giữ cho hệ thống mạng gọnhơn (orderly fashion), hoặc loại bỏ server ra khỏi hệ thống nếu nó bị treo(deal) Operator có thể dùng SQUIT message cho các server ở xa trong tìnhtrạng này các server còn lại phải phân tích SQUIT message này để cập nhật lạithông tin về hệ thống mạng (IRC Network) <comment> lí do việc tách khỏi hệthống, comment được operator đưa ra
1.2 Message Client sử dụng
Operator message
Cú Pháp: OPRE <user><password>
Người dùng thông thường sử dụng dòng lệnh này để tranh quyền làmoperator Tuy nhiên, nếu server không cấu hình cho phép kết nối từ một clientđược phép tự thiết lập quyền làm operator khi gia nhập channel thì dòng lệnhnày không có tác dụng (khi đó server sẽ trả về lỗi ERR_NOOPERHOST chouser)
Khi lệnh OPER thành công, server sẽ trả về cho user đó một thông điệpnhư khi sử dụng lệnh MODE đặt trạng thái operator cho người dùng
Quit message
Cú Pháp: QUIT [<Quit message>]
Một client muốn thoát ra hệ thống mạng nó phát ra QUIT message đếnserver mà nó kết nối trực tiếp server khi nhận được message này nó sẽ đóngkết nối với client đó Đồng thời thông báo cho server khác để các server nàythông báo cho các client trong cùng channel
1.3 Nhóm message dùng chung
Pass message
Cú pháp : PASS < password>
Đối với Server:
Trang 22Server dùng pass message để thiết lập password cho mình, bằng cáchdùng password server ngăn không cho sự xâm nhập bất hợp pháp của các clientkhác Server dùng pass message (có cung cấp password) trước khi server phát
ra message SERVER (message này gúp cho server định danh trên mạng) Saukhi phát ra pass message server có thể đăng ký kết nối (connection register)
Đối với Client :
Client dùng pass message để thiết lập password cho nickname mà nómuốn đăng ký, nói cách khác Password được dùng để không cho người khác sửdụng nickname của mình Tất nhiên, việc thiết lập password là không cần thiết,nếu như chúng ta không cần bảo vệ nickname của mình Tuy nhiên đối vớinhóm channel operator là cần thiết Cũng giống như server, client phải đưa raPASS message trước khi đăng ký kết nối (bằng cách gởi NICK/USERmessage)
Lưu ý : PASS message có thể được gởi nhiều lần Nhưng chỉ có lần cuốicùng gởi mới được xác nhận password và xem đó là password chính thức
NickMessage
Cú pháp: NICK <nickname>[<hopcount>]
Đối với Server:
Server dùng NICK message để thông báo vị trí của <nickname> cho cácserver khác, khi sever dùng NICK message đối số <hopcount> phải được đưavào, (hopcount là số server phải đi qua để đến được đích) Nếu một packageđược chuyển trên mạng khi đi qua một server nó rừ đi hopcount một đơn vị chođến khi hopcount bằng 0 thì đến đích
Đối với Client:
Client dùng NICK message để xác định nickname cho mình hoặc thayđổi nickname của mình Nếu NICK message dùng cho client không cần đối số
<hopcount> Trong trường hợp có xuất hiện đối số <hopcount> thì nó sẽ bị bỏqua
Nếu NICK message từ client đến server, mà server đó đã có thông tinvề nickname (nickname đã đăng ký) đó, thì hiện tượng cạnh tranh (NicknameCollision) xảy ra Vì chúng ta được biết nickname phải là tên duy nhất khôngcho phép trùng Kết quả là tất cả thông tin về nickname đó sẽ bị hủy bỏ khỏi
cơ sở dữ liệu trong server (client kết nối) và một KILL message được phát rađể hủy bỏ nickname đó ra khỏi cơ sỡ dữ liệu của các server còn lại Nếu servernhận được nickname từ client (kết nối trực tiếp vào server) mà nickname này
bị trùng với một nickname hiện có trong server, thì nó sẽ phát ra thông báo lỗiERR_NICKCOLLISION Sau đó hủy bỏ NICK message và không phát ra
Trang 23KILL message Như thế một client khi đưa ra nickname không thích hợp thìclient đó không thể đăng ký kết nối với server đồng thời không ảnh hưởng đếncác client khác
User Message
Cú pháp: USER <username><hostname><servername><realname>
Đối với Server:
Server dùng USER message để thông báo cho các server khác có usermới tham gia vào mạng (IRC network) Đồng thời nó cũng cung cấp cho cácthông tin như <username>, <hostname>, <servername>, <realname> Khi gởiUSER message cho các server khác thì client sẽ gắn nickname vào trướcmessage đó Căn cứ vào nickname này, server sẽ nhận biết được thông tinthuộc về nickname nào Nhưng có một điều lưu ý là server dùng USERmessage, sau khi nó nhận được NICK message và USER message từ clientmuốn kết nối vào hệ thống mạng Điều này có nghĩa là client gởi NICKmessage thành công, tiếp đó là USER message được gởi đến server Khi đóserver sẽ phát ra USER message
Đối với Client:
Sau khi đăng ký nickname thành công, client phát ra USER message đểcung cấp thông tin cho server, thông tin mà nó cung cấp là <username>,
<hostname>, <servername>, <realname>
Tuy nhiên có một số điều lưu ý là: hai đối số <hostname> và
<servername> bị bỏ đi nếu là client kết nối trực tiếp đến server Vì lý do bảomật trên mạng (security reasons) Và điều lưu ý thứ hai là đối số <realname>phải đứng sau cùng Vì trong <realname> có thể có ký tự khoảng trắng và ký tựđầu tiên là dấu ‘:’
2 Nhóm message dùng cho việc điều khiển Channel
2.1 Join message
Cú Pháp: JOIN <channel>{,<channel>} [<key>][,<key>]
Để có thể tham gia vào channel client phải phát ra JOIN message,server kiểm tra message này nếu cung cấp đúng channel thì cho phép gia nhậpvào channel Ngoài ra server còn kiểm tra client đó có bị trạng thái “activebans”, (đây là trạng thái mà client đó bị cấm quyền kết nối người cấm quyềnchính là channel opertor) nếu gặp trạng thái này server không cho gia nhập
Điều kiện để một client có thể tham gia vào channel:
Trang 24- User phải được mời (invite) nếu channel đó đang ở trạng thái only(mode +i) Nickname, username, hostname của user phải không
invite-ở vào trạng thái “active bans” (trạng thái cấm tham gia)
- Phải cung cấp đúng password và nickname nếu có thiết lập passwordcho nickname
- Kể từ khi client JOIN thành công chúng sẽ nhận được thông báo, vàcó thể dùng các command để liên lạc với server của chúng bao gồm:MODE, KICK, PART, QUIT và quan trọng nhất làPRIVMSG/NOTICE message
- JOIN message cũng cần phải được phát quảng bá (broadcast) lênmạng để các server có được thông tin về client mới tham gia, nhờvào thông tin này các server có thể tìm thấy client đó
2.2 part message
Cú pháp: PART <channel>{,<channel>}
Client dùng part message để thoát khỏi channel
Các giá trị mode:
o - lấy quyền channel operation
i - cờ thông báo channel ở trạng thái invite
b - thiết lập user ban mask
User mode
Cú pháp : MODE <nickname>{[+ | - ]| i | w | s | o |}
MODE trong trường hợp này dùng cho user
Một user MODE chỉ có thể được chấp nhận nếu nickname người gởi vàđối số <nickname> phải giống nhau
Trang 25Lưu ý: một channel operator có thể tự giáng cấp (deopping) của mìnhbằng cách đưa ra mode -o
2.4 Topic message
Cú Pháp: TOPIC <channel>[<topic>]
Topic message dùng thay đổi hoặc xem chủ đề của channel Nếu đối số
<channel> được đưa vào lệnh TOPIC message sẽ thay đổi topic cho channelđó, trong trường hợp nó đang ở chế độ cho phép user thay đổi
2.5 Names message
Cú pháp: NAMES [<channel>]{,<channel>}
Bằng cách sử dụng NAMES message User có thể xem danh sách tất cảnickname có thể thấy được (visible) trên channel, đối số <channel> được dùngđối với trường hợp này không phải là channel private (mode+p) hoặc secret(mode +s), vì hai mode này không cho phép user truy xuất Nếu có cung cấpđối số <channel> thì nó sẽ trả về danh sách nickname của channel đó, khôngcó thông báo lỗi được trả về nếu sai channelname Nếu trường hợp không cóđối số <channel> thì nó sẽ trả về danh sách tất cả các channel và nickname(trong các channel đó)
2.6 List message
Cú Pháp: LIST [<channel>{,<channel>}[<server>]]
LIST message dùng để client liệt kê danh sách các channel và topic củachúng Nếu đối số <channel> không được cung cấp thì nó sẽ liệt kê cácchannel mà client đang tham gia Đối với Private và secret channel chúng vẫnđược liệt kê nhưng không hiển thị chủ đề
2.7 Invite message
Cú Pháp: INVITE <nickname><channel>
INVITE message được dùng để mời/gọi user tham gia vào channel, đốisố <nickname> là nickname của user được mời/gọi Tuy nhiên không có sự đòihỏi user phải tham gia vào channel User được mời phải nằm trong channel ởchế độ +i (invite-only)
2.8 Kick message
Cú pháp: KICK <channel><user>[<comment>]
KICK command dùng để loại bỏ user ra khỏi channel Chỉ có channeloperator mới có quyền dùng lệnh KICK, mỗi server nhận được KICK message
Trang 26nó kiểm tra thật chính xác trước khi nó hủy/loại bỏ user đó ra khỏi channel.Sau khi bị KICK user đó có thể tái kết nối, điều này khác với BANs nếu user bịBANs nó sẽ không được kết nối trở lại cho đến khi người quản trị channel chophép
3 Nhóm message truy vấn đến server (server query and command)
Server Queries and command là nhóm message được thiết kế để trả vềthông tin của tất cả những server mà chúng đang tham gia trong mạng (IRCnetwork), server (được truy vấn) phải trả lời chính xác các truy vấn Nếu trườnghợp server có những thông tin trả về không chính xác lập tức server đó sẽ bịloại ra khỏi mạng cho đến khi nó được phục hồi
3.1 Version message
Cú pháp: VERSION [<server>]
Message này dùng để xem version chương trình của server, đối số
<server> là server name của server từ xa(remote server) mà client không trựctiếp kết nối đến, nếu không có đối số <server> mặt định là server hiện hành
3.2 Stats Message
Cú pháp: STATS [<query>[<server>]]
client dùng STATS message để truy vấn (query) thông tin từ server, thông tinnhận được có thể là con số thống kê nào đó
Hoạt động của lệnh này mang tính độc lập cao mặc dù server phải trả vềthông tin truy vấn (query) Khi có STATS message đến server, nó sẽ kiểm traxem server đích (destination server), sau đó nó chuyển message cho server kếtiếp cho đến khi đến đích
3.3 Link Message
Cú Pháp: LINKS [[<remote server>]<server mask>]
Với message LINKS, user có thể liệt kê tất cả những server mà
<remoteserver> biết
Danh sách trả về là các server Tuy nhiên danh sách này có một số phần
bị che dấu đi (mask)ù nếu không có sự che dấu này thì tất cả được hiển thị
3.4 Time Message
Cú pháp: TIME [<server>]
Trang 27TIME message dùng cho client truy vấn (query) về thời gian từ mộtserver nào đó, server được truy vấn sẽ nằm trong đối số <server>, trường hợpđối số <server> không được đưa vào, thì server hiện hành phải trả lời truy vấnđó.
3.5 Connect message
Cú pháp: CONNECT <target server>[<port>[<remote server>]]CONNECT command có thể được dùng để buộc server thiết lập một kếtnối đến server khác ngay lập tức CONNECT là lệnh hạn chế nó chỉ được dùngcho người quản trị ngoài ra không có client nào khác sử dụng được
3.6 Trace Message
Cú pháp: TRACE [<server>]
Đây là lệnh được dùng để tìm đường đi đến server nào đó (destinationserver) Mỗi server khi xử lý TRACE, message nó phải báo cho người gởi(sender) bằng cách là đưa ra những message chỉ đường, đồng thời nó gởi tiếpcho server kế tiếp Tiến trình này được lặp đi lặp lại cho đến đích
Nếu đối số <server> không đưa vào thì mặc định message sẽ đến serverkết nối trực tiếp
Lưu ý: trong khoảng giữa server gởi và server nhận, các server trunggian phải gởi trả về message trả lời RPL_TRACELINK
3.7 Admin Message
Cú pháp: ADMIN [<server>]
Server dùng ADMIN message để tìm tên người quản lý (administrator)của <server> dùng làm đối số
Nếu không có đối số <server> thì xem server mà nó kết nối trực tiếpđến là đối số Mỗi server có khả năng chuyển ADMIN message đến serverkhác, sao cho message đến được server cần đến
Như thế chúng ta thấy rằng một client có thể yêu cầu một server khácgởi thông tin về người quản lý cho mình
3.8 Info Message
Cú pháp: INFO [<server>]
INFO message do client yêu cầu <server> khác trả về thông tin chomình, nếu đối số <server> không đưa ra xem như server hiện tại (server kết nốitrực tiếp)
Trang 284 Nhóm message gởi text (sending message)
Mục đích chính IRC protocol là cung cấp cho các client có thể giao tiếpvới nhau, để thực hiện việc trao đổi text, ta cần có Private Message và NoticeMessage để chuyển text message từ client này đến client khác Sau khi thựchiện quá trình kết nối với server và gia nhập channel thành công sendingmessage sẽ hoạt động để thực hiện mục đích chính cho chat protocol
4.1 Private Message
Cú pháp: PRIVMSG <receiver>{,<receiver>}<text to be sent>
Message này dùng cho client, user có thể gởi private message từ usergởi đến user nhận, và chỉ có user nhận mới được nhận PRIVMSG message Đốisố <receiver> là nickname của client nhận, <receiver> có thể là danh sáchnickname, channel chúng được phân biệt với nhau bằng dấu phẩy (‘ , ’)
4.2 Notice Message
Cú pháp: NOTICE <nickname><text>
NOTICE message sử dụng tương tự như PRIVSMSG message chỉ cóđiều khác nhau giữa hai message này là NOTICE message không cần phải cósự đáp lại từ client <nickname> nhận Qui định này cũng được áp dụng choserver, như thế server không cần thông báo lỗi cho client Lý do có việc quyđịnh này là để tránh sự tự động trả lời lặp đi lặp lại giữa server và client
5 Nhóm message do client truy vấn đến server (user-based query)
Đây là nhóm command mà user có thể dùng để tạo truy vấn Khi dùngnhóm lệnh này user có thể xem được thông tin chi tiết về các user khác vớiđiều kiện các user có thể nhận biết nhau trên mạng Việc có thể nhận biếtnhau tùy thuộc vào mode user đó và trạng thái channel đang dùng
5.1 Who Query
Cú pháp: WHO [<name>[<o>]]
WHO message dùng cho client để tạo ra truy vấn, kết quả truy vấn đó làdanh sách các user phù hợp với đối số <name> Nếu không có đối số <name>thì tất cả user (có thể thấy được) được trả về, có thể nhận được danh sách cácoperator nếu chúng ta sử dụng đối số [<o>]hoặc ký tự đại diện (wildcard)
Đối số <name> có thể là hostname, server, realname, nickname
5.2 Who is Query
Cú pháp: WHOIS [<server>]<nickmask>[,<nickmask>[,…]]
Trang 29Message này dùng để yêu cầu thông tin cụ thể về một user nào đó, nhưthế có sự khác nhau giữa WHO message và WHOIS message cụ thể là:
WHO message: yêu cầu danh sách các user
WHOIS message: yêu cầu thông tin về một user nào đó
Server sẽ trả lời cho message này, trong trường hợp server là server ở xa(remote server) thì nó phải được đưa vào đối số <server>
Lưu ý: Danh sách các nickmask phải cách nhau bởi dấu phẩy
5.3 Whowas Message
Cú pháp: WHOWAS <nickname>[<count>[<server>]]
Khác với WHOIS messge, WHOWAS messge yêu cầu thông tin nhữnguser trong quá khứ mà hiện giờ không còn có mặt trong danh sách user active.Để trả lời cho message này server phải tìm kiếm trong danh sách các nicknameđã thoát ra khỏi hệ thống mạng (IRC network) Chúng ta thấy trong danh sáchđối số có <count>, đối số này là một số nguyên dương, cho biết lấy bao nhiêulần thông tin về nickname đó, có nghĩa là trong danh sách các nickname đã rờikhỏi hệ thống mạng có thể có nhiều mẩu tin nickname giống nhau nhưng khácnhau về thời gian đăng nhập Khi đó <count> quy định lấy bao nhiêu mẩu tin,nếu trường hợp không có giá trị <count> server sẽ trả về toàn bộ thông tin cácnickname mà server có được
6 Nhóm message khác (miscellaneous message)
6.1 Kill Message
Cú pháp: KILL<nickname> <comment>
KILL message được dùng khi cần kết thúc kết nối giữa client và server,khi gặp phải hiện tượng Nick Collision (khi có sự trùng lắp của 2 mẩu tin trongdanh sách Nickname.) xảy ra, khi đó server sẽ phát ra KILL message, KILLmessage cũng được channel operator sử dụng <comment> là lý do cho KILLmessage do server đưa ra để giải thích cho hành động của mình
Ghi chú: chỉ có operator mới có thể dùng KILL message để ngưng kết nối của users.
6.2 Ping Message
Cú Pháp: PING <server1>[ <server2>]
PING message dùng để kiểm tra một client còn hoạt động trong hệthống mạng hay không? PING message được server gởi đến client, khi nhận
Trang 30được message này, client phải đáp lại <server> bằng PONG message, nếu saumột khoảng thời gian nào đó (time out) mà không thấy client trả lời thì xemnhư kết nối đó bị ngắt, vì thế khi nhận được PING message client phải trả lờibằng PONG message càng sớm càng tốt.
Xem trong danh sách đối số ta nhận thấy rằng có đến 2 đối số <server1>và <server2> điều đó có nghĩa là PING message gởi đến cả hai <server1> và
<server2>, tuy nhiên server nhận được message nó không đáp lại mà dựa vàoclient kết nối với nó để thông báo kết nối vẫn còn liên thông Từ đây chúng tarút ra được kết luận là: Server không đáp lại PING message mà nó nhờ clientđáp lại
6.3 Pong Message
Cú Pháp: PONG <daemon>[<daemon2>]
PONG là message được client dùng để đáp lại PING message<daemon>là đối số cho biết client nào đáp lại PING message
6.4 Error Message
Cú pháp: ERROR<errormessage>
ERROR message dùng cho server thông báo lỗi cho operator Nó có thểđược gởi từ server này đến server khác Message này chỉ dùng để thông báo lỗiliên kết giữa server với nhau, nếu server nhận được ERROR message từ serverkhác thì nó không cần thông báo cho server khác biết, đều này có thể hiểurằng server gởi ERROR message đến server nhận, khi đó message chỉ chuyểncho operator của nó
Một khi cần thông báo lỗi đến client operator nó phải được đóng góithông qua lệnh NOTICE message để chuyển, tất nhiên client operator khôngcần phải trả lời cho message này
7 Nhóm message tùy chọn(option message)
7.1 Away Message
Cú pháp: AWAY[message]
Với AWAY message user có thể thiết lập cơ chế trả lời tự động cho mỗiPRIVMSG message, nội dung trả lời được lưu trữ trong chuỗi [message] Saukhi thiết lập xong chế độ này việc trả lời tự động sẽ được gởi từ server đếnclient phát ra PRIVMSG message, server gởi chính là server kết nối trực tiếpvới client phát ra PRIVMSG message
Trang 31Nếu AWAY message không có [message] thì xem như chuỗi trả lời bịxóa bỏ.
7.2 Rehast Message
Cú pháp:
REHASH Server có một tập tin cấu hình để thiết lập các tham số Lệnh này dooperator thi hành bắt buộc server phải đọc lại và xử lý lại tập tin cấu hình củaserver đó
7.3 Restart Message
Cú pháp: RESTART
Đây là message dùng cho channel operator buộc server phải khởi động(restart) lại hệ thống
7.4 Summon Message
Cú pháp: SUMMON <user>[<server>]
Mời một client có chương trình server hiện đã có cài đặt trên host gianhập hệ thống IRC Nếu không có đối số <server> thì nó xem server hiện hànhlà server đích, khi đó các client kết nối trực tiếp đến server đó sẽ được mời
7.5 Users Message
Cú Pháp: USER[<server>]
USER message dùng để trả về danh sách của các user đã login vào
<server> tương tự như WHO message Tuy nhiên có một số client không thểdùng message này được trên server của họ, có thể vì lý do bảo mật (securityreasion) Nếu user không thể dùng message này một reply được phát ra
7.6 Operwall Message
Cú pháp: WALLOPS<text to be sent to all operators currently online>Khi WALLOPS hoạt động nó sẽ gởi <text ……> đến tất cả các operatorhiện có trên mạng
7.7 Userhost Message
Cú pháp: USERHOST<nickname>{<space><nickname>}
USERHOST yêu cầu trả về thông tin của client có <nickname> làm đốisố, danh sách <nickname> có thể lên đến 5 đối số khi đó thông tin về mỗinickname sẽ được trả về cho client
Trang 32Lưu ý : mỗi thông tin trả về được phân cách bằng ký tự khoảng cách.
7.8 Ison Message
Cú pháp: ISON<nickname>{<space><nickname>}
ISON message được thiết lập để trả về thông tin về <nickname> hiệnthời trên IRC một cách hiệu quả nhất Có thể có nhiều đối số <nickname>được đưa vào nhưng chúng phải cách nhau bằng ký tự khoản trắng
Chương II: Tìm hiểu về Mail
Email là một phương tiện truyền thông tiện lợi nhanh chóng, rẻ tiền,được sử dụng rộng rãi trên Internet Khi nhắc đến Internet thì người ta khôngthể không nói đến Email Sau đây, chúng ta hãy xét đến một số khái niệm vềmạng Email
I/ Tìm hiểu chung về Mail.
1) Các thành phần của một hệ thống Email:
Một hệ thống Email bao gồm các phần như sau:
- Người gởi và người nhận
- Phần giao tiếp với hệ thống Email, đó chính là chương trình Emailmà chúng ta sử dụng
Hệ thống mạng Email gồm có:
- Một vùng đệm dùng để chứa các message trước khi được gởi đi
- Một chương trình client
- Một chương trình Server
- Các MailBox dùng để chứa các thư nhận được
Trong đa số hệ thống mạng Email hiện nay, công cụ giao tiếp của uservới hệ thống Email thường gắn với các chương trình Client MailBox chính làđịa chỉ hộp thư của user, nơi chứa đựng dữ liệu của Email
2) Các thành phần của một hệ thống Internet Mail:
User Agent (UA) thay thế cho chương trình Email và các bộ phận MTAthay thế cho các quá trình Server, Client
Người sử dụng tương tác với chương trình User Agent, mà nó thay thếcho bạn trong việc tương tác với kho chứa dữ liệu Email (hay chính là MTA).User Agent sẽ che chắn cho bạn khỏi phải tương tác với một mớ các hệ thốngEmail khác nhau Cũng tương tự MTA sẽ che chắn hệ thống Email không phảitương tác với các cơ quan đại diện của người sử dụng (UA) hay các MTA khác
Trang 33Điều này giúp cho hệ thống Email của chúng ta trở nên thân thiện, gần gũi hơnvới người sử dụng - và đó cũng chính là mục đích chính của các chương trìnhMail khác nhau
3) Cấu trúc của một bức mail:
Về cơ bản, một bức Mail bao gồm 3 phần chính:
Phần phong bì: Mô tả thông tin về người gởi và người nhận Do hệ thốngtạo ra
Phần tiêu đề (header): chứa đựng các thông tin về người gởi, ngườinhận, chủ đề bức Mail, địa chỉ hồi âm v.v Các thông tin này, một số đượcngười sử dụng cung cấp khi gởi Mail, một số khác được chương trình Mail thêmvào, và số còn lại do Hệ thống điền thêm
Phần nội dung (body): chứa đựng 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ếtcủa từng phần:
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áchkhác, giao thức SMTP sẽ quy định thông tin của phong bì, các hệ thống Emailcầ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áytính khác
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ănbả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ỉ người những nhận bản copy của mail
- Bcc: chỉ ra những người nhận bản copy của bức mail, nhưng từng ngườikhông biết những người nào sẽ nhận bức thư này
- Return-path: chứa các thông tin để người nhận có thể trả lời lại (thườngnó chính là địa chỉ người gởi)
Trang 34- Subject: chủ đề của nội dung Email.
Các trường trên là các trường chuẩn do giao thức SMTP quy định, ngoài
ra trong phần header cũng có thể có thêm một số trường khác do chương trìnhEmail tạo ra nhằm quản lý các email mà chúng tạo Các trường này được bắtđầu bằng ký tự X- và thông tin theo sau là cũng giống như ta thấy trên mộttrường chuẩn
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ộidung là chuỗi ký tự kết thúc Mail: "\r\n.\r\n" Như vậy nội dung bức Mail nằmtrong khoảng giữa dòng trắng đầu tiên và ký tự kết thúc Mail, và trong phầnnộ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ặtkhác do môi trường truyền thông là mạng Internet nên các ký tự cấu thànhphần body của bức Mail cũng phải là các ký tự ASCII chuẩn
II/ Các chuẩn được sử dụng trong hệ thống Mail
Có 2 chuẩn về Mail quan trọng nhất và được sử dụng nhiều nhất từ trướcđến nay là X.400 và SMTP (Simple Mail Transfer Protocol) SMTP thường đikèm với chuẩn POP3 và do hạn chế của SMTP mà ngày nay người ta dùngchuẩn mở rộng của nó là ESMTP (Extended SMTP) Mục đích chính của X.400là cho phép các mail có thể được truyền nhận thông qua các loại mạng khácnhau bất chấp cấu hình phần cứng, hệ điều hành mạng, giao thức truyền dẫnđược dùng Còn mục đích của chuẩn SMTP miêu tả cách điều khiển các thôngđiệp trên mạng Internet Điều quan trọng của chuẩn SMTP là giả định máynhận phải dùng giao thức SMTP gởi Mail cho 1 Server luôn luôn hoạt động.Sau đó, người nhận sẽ đến lấy Mail của họ từ Server khi nào họ muốn dùnggiao thức POP (Post Office Protocol), ngày nay POP được cải tiến thành POP3(Post Officce Protocol vertion 3) Các giao thức Mail thông dụng : chuẩn X.400,chuẩn MAIP, SMTP (ESMTP), POP3 Ở đây chỉ trình bày chi tiết về POP3 vàSMTP
1 Giao thức SMTP(Simple Mail Transfer Protocol )
Mục đích của giao thức SMTP là truyền mail một cách tin cậy và hiệuquả 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
1.1 Mô hình SMTP
SMTP được thiết kế dựa trên mô hình giao tiếp sau:
Trang 35+ Sender- SMTP thiết lập một kênh hai đường vận chuyển đến mộtreceiver- SMTP
+ Receiver- SMTP có thể là đích đến cuối cùng hay một trung gian.Những lệnh SMTP được sinh ra bởi Sender-SMTP gửi đến Receiver- SMTP.Những reply SMTP được gửi từ Receiver- SMTP đến Sender- SMTP trong sựđáp ứng cho những lệnh đó
Khi một kênh chuyển giao được thiết lập sender-SMTP gửi đi một lệnhMail biểu thị cho Sender của mail đó Nếu Receiver-SMTP có thể chấp nhậnmail, nó trả lời với một OK reply Sau đó Sender-SMTP gửi một lệnh RCPTnhận diện Receiver mail nếu Receiver-SMTP có thể chấp nhận mail nó trả lờivới một OK reply nếu không nó sẽ lời với một reply bác bỏ receiver đó (nhưngkhông phải toàn bộ sự giao dịch đó) Sender- SMTP và Receiver- SMTP có thể
điều đình với vài recipient, khi những recipient đã được dàn xếp Sender-SMTP
gửi mail data kết thúc với một chuỗi đặc biệt nếu receiver xử lý Mail Datathành công nó trả lời với một OK reply Cuộc hội thoại một cách chủ ý lock –step (one-at-a-time)
Sơ đồ: mô hình cho cách dùng SMTP.
SMTP cung cấp những cơ chế giao chuyển Mail một cách trực tiếp từhost của user gửi đến host của user nhận khi cả hai host được kết nối đến cùngdịch vụ giao chuyển hay qua nhiều SMTP-Sever tiếp vận khi host xuất pháthay đích đến không được kết nối đến cùng dịch vụ chuyển giao Để có thể cungcấp khả năng tiếp vận SMTP-Sever phải được cung cấp tên của host đến cùngchẳng hạn như hạn của Mailhost đến
Khi cùng một message được gửi cho nhiều recipient SMTP khuyến khích
chuyển giao chỉ một bản sao của data cho tất cả các Receiver ở cùng một hostđích Những command và reply mail có những cú pháp khắc khe Những replycũng có một mã số
Các command và reply không phân biệt kiểu chữ hoa hay thường Lưu ý,điều này không đúng với tên của User mailbox Cho một số host tên của user
SenderSMTP
ReceiverSMTP
User
File
System
FILE System
SMTP Commands/Replies and Mail
Sender-SMTP Receiver -SMTP
Trang 36có phân biệt kiểu chữ, SMTP phải thi hành đầy đủ việc nhận kiểu chữ và giữgìn kiểu chữ của những user name như chúng đã xuất hiện trong những đối sốcủa mailbox Host names không phân biệt kiểu chữ.
1.2 SMTP Mail:
Có 3 bước cho sự giao dịch SMTP mail Giao dịch được bắt đầu với yêu
cầu Mail mang sự nhận diện sender, tiếp theo sau là một chuỗi của một hay
nhiều lệnh RCPT trao những thông tin của receiver, sau đó một lệnh DATA
cho mail data.Và cuối cùng là phần chỉ định kết thúc mail data xác nhận giaodịch đó
Bước đầu tiên trong thủ tục là lệnh MAIL <reverse-path> chứa mailboxnguồn
MAIL <SP> FROM : <reverse-path> <CRLF>
Lệnh này báo cho receiver biết một giao dịch mail mới sẽ bắt đầu và đểreset tất cả các bảng trạng thái và các buffer của nó bao gồm tất cả recipienthay mail data Nó phát ra reverse-path có thể được dùng để báo lỗi Nếu đượcchấp nhận receiver-SMTP trả về một reply 250 OK
<Reverse-path> có thể chứa nhiều hơn một mailbox.<Reverse-path> làmột lộ trình nguồn trở về liệt kê các host và mailbox nguồn Host đầu tiêntrong reverse-path sẽ là host giữ lệnh này
Bước thứ hai trong thủ tục này là lệnh RCPT
RCPT <SP> To : <forward-path> <CRLF>
Lệnh này phát đi một forward-path nhận diện recipient Nếu được chấpnhận receiver-SMTP trả về một reply 250 OK Và lưu lại forward-path Nếurecipient không nhận biết thì receiver trả về reply 550 Failure
Bước thứ hai của thủ tục này có thể lặp lại nhiều lần
Forward-path có thể chứa nhiều hơn một mailbox Forward-path là lộtrình nguồn liệt kê các host và mailbox đích Host đầu tiên trong <forword-path> sẽ là host nhận lệnh này
Bước thứ ba trong thủ tục là lệnh DATA
DATA <CRLF>
Nếu chấp nhận Receiver-SMTP trả về một reply 354 và coi tất cả các dòng nốitiếp đó là message text Khi văn bản cuối cùng được nhận và lưu trữ Receiver-SMTP gửi một reply 250 OK
Kể từ mail data được gửi trên kênh chuyển giao, điểm kết thúc của maildata phải được chỉ định để hội thoại command và reply có thể bắt đầu trở lại
Trang 37SMTP chỉ định kết thúc của mail data bằng cách gửi một dòng chứa chỉ mộtdấu chấm.
Chú ý rằng mail data bao gồm những mục (item) memo header chẳng
hạn như Subject, To, Cc, From
Phần chỉ định kết thúc của mail data cũng xác nhận sự giao dịch mail vàbáo cho Receiver-SMTP biết để xử lý việc lưu trữ recipient và mail data ngaylúc đó Nếu được chấp nhận Receiver-SMTP trả về một reply 250 OK LệnhDATA sẽ chỉ fail nếu giao dịch mail không hoàn thành (ví dụ không córeceiver) hoặc nếu tài nguyên không có hiệu lực
1.3 Đặc tả cho smtp:
a) Các lệnh của SMTP:
Ýnghĩa các lệnh:
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ếtthúc bằng <CRLF> Bản thân mã lệnh là những ký tự chữ (alphabetic) kết thúcbởi <SP> nếu có những tham số theo sau và nếu không có thì <CRLF> Cúpháp của những mailbox phải tuân theo những qui ước của receiver
Một phiên giao dịch mail chứa đựng một vài đối tượng dữ liệu, đượctruyền như là những đối số cho các lệnh khác nhau Reverse-path là đối số củalệnh MAIL Forward-path là đối số của lệnh RCPT Và mail data là đối số củalệnh DATA Những đối số hay những đối tượng dữ liệu này được truyền đi vàduy trì cho đến khi xác nhận truyền xong bởi sự chỉ định kết thúc của mail data.Mô hình hiện thực cho cách làm này là những buffer riêng biệt được cung cấpđể lưu trữ kiểu của đối tượng dữ liệu, đó là các buffer : reverse-path, forward-path, và mail data buffer Những lệnh xác định tạo ra thông tin được gắn vàomột buffer xác dịnh, hoặc xóa đi một hay một số buffer nào đó
Trang 38Lệnh này được dùng để khởi tạo quá trình trao đổi mail mà ở đó maildata được phân phát tới một hay nhiều mailbox Vùng đối số của lệnh cóchứa reverse-path
Reverse-pat bao gồm một danh sách tùy ý các host và mailbx củasender Khi danh sách của host được chỉ ra, nó là lộ trình nguồn trở về(reverse source route) và chỉ ra các host mà mail sẽ được truyền tiếp vậnqua các host trong danh sách đó Danh sách này được sử dụng như là một lộtrình nguồn để trả lời thông báo không phân phát được cho sender Mỗi khitruyền tiếp vận host sẽ thêm vào phần định danh của nó vào đầu danh sách,nó phải sử dụng tên của nó khi đã được biết trong IPCE nơi mà nó đangtruyền tiếp vận mail hơn là IPCE mà mail đã tới (nếu chúng khác nhau)
• RECIPIENT (RCPT)
Lệnh này được sử dụng để định ra một người nhận mail; nhiều nguờ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ệnhnày
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 và được kết thúc bởi một dòng
mà nó chỉ chứa một dấu chấm “ ”.
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 terminal Vùng đối số chứa phần reverse-path lệnh thực thi thành công khi message được phân phát tới terminal
• SEND OR MAIL (SOML)
Lệnh này được sử dụng để khởi tạo sự truyền mail mà ở đó mail datamột hay nhiều terminal hoặc các mailbox Đối với người nhận, mail datađược phân phát tới terminal của người nhận nếu người nhận có tích cực, tráilại, là mailbox của người nhận Lệnh này thành công khi message đượcphân phát tới terminal hoặc là mailbox
• SEND AND MAIL (SAML)
Lệnh này được sử dụng để khởi tạo sự truyền mail mà ở đó mail datamột hay nhiều terminal hoặc các mailbox Đối với người nhận, mail data
Trang 39được phân phát tới terminal của người nhận nếu người nhận có tích cực, vàđối với mọi người nhận mail sẽ tới mailbox của những người nhận đó.
Vùng đối số chứa đựng một reverse-path Lệnh này thành công khimessage được phân phát tới mailbox
• RESET (RSET)
Lệnh này xác định sự truyền mail hiện tại đã bị hủy 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ácbuffer 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
• EXPAND (EXPN)
Lệnh này yêu cầu receiver xác nhận đối số là một mailing list (danhsách địa chỉ) và trả về một thành phần trong danh sách đó Full name củacác user (nếu biết) và những mailbox đã xác định đầy đủ được trả về trongmột reply gồm nhiều dòng Lệnh này không ảnh hưởng đến reverse-pathbuffer, forward-path buffer và data mail buffer
Lệnh này cho receiver những thông tin giúp đỡ cho sender Lệnh nàycó 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
Lệnh này không ảnh hưởng các tham số hay các lệnh được đưa vàotrước nó, nó đặc tả không có một hành dộng nào khác hơn là receiver gửimột reply OK
Lệnh này không ảnh hưởng đến reverse-path buffer, forward-pathbuffer và data mail buffer
Lệnh này định rõ receiver phải gửi một reply OK và sau đó đóngkê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) Sender sẽ không
Trang 40đóng kênh truyền cho đến khi nó gửi một lệnh QUIT và nhận reply đó(ngay cả nếu có một lỗi trả lời cho lệnh trước đó) Nếu mà kết nối bị đóngtrước thời gian mong muốn receiver sẽ làm việc như nếu vừa nhận đượcmột lệnh RSET (bỏ tất cả các giao dịch đang treo mà chưa làm, nhưngkhông “undo” những đã truyền hoàn tất trước đó) sender sẽ hành động ngaykhi lệnh hay quá trình truyền đó trong quy trình nhận được một lỗi tạm thời.
Lệnh này xác định receiver phải gửi một trong hai reply sau: (1) reply
OK và sau đó nhận vai trò của một sender-SMTP, hay (2) gửi một reply từ chốivà giữ lại vai trò một receiver-SMTP
Nếu program-A hiện tại là một sender-SMTP và nó gửi một lệnh TURNvà nhận một reply OK (250) thì program-A trở thành receiver-SMTP sau đóprogram-A sẽ trong trạng thái khởi động ngay khi kênh truyền đã được mở, vàsau đó nó gởi lời chào là hỏi dịch vụ đã sẵn sàng (220) Nếu chương trình Bhiện tại là reciever và nó nhận được lệnh TURN và nó trả lời OK thì B trởthành sender
b) Các reply của SMTP:
Sự trả lời cho những lệnh của SMTP được đặt ra để đảm bảo cho sựđồng bộ cho các yêu cầu và những hoạt động trong qui trình truyền mail, và đểbảo đảm rằng sender-SMTP luôn luôn biết trạng thái của reciever-SMTP Mỗilệnh SMTP phải tạo ra chính xác một reply
Một reply SMTP bao gồm một số ba chữ số (được truyền như ba ký tựchữ số) và theo sau là một số văn bản (text) Số đó được sử dụng một cách tựđộng để xác định trạng thái đưa vào kế tiếp Text ở trên là dành cho người sửdụng Ba chữ số đó được ấn định chứa đầy đủ thông tin được mã hoá màsender-SMTP không cần kiểm tra text đó và có thể huỷ bỏ hay chuyển nó quamột user thích hợp Đặc biệt text này có thể phụ thuộc vào receiver và vào ngữcảnh, vì vậy có sự giống nhau trong sự phân biệt text cho từng mã reply
2) Giao thức pop3
Post Office Protocol Version 3 (Pop3) là một giao thức chuẩn trênInternet cho phép một một workstation có thể truy xuất động đến một maildroptrên một server từ xa Có nghĩa là Pop3 được dùng để cho phép workstation lấymail mà server đang giữ nó