ỦY BAN NHÂN DÂN TỈNH HÀ NAM TRƯỜNG CAO ĐẲNG NGHỀ HÀ NAM GIÁO TRÌNH MÔ ĐUN LẬP TRÌNH MẠNG NGHỀ QUẢN TRỊ MẠNG MÁY TÍNH TRÌNH ĐỘ CAO ĐẲNG (Ban hành kèm theo Quyết định số 285QĐ CĐNHN Ngày 21 tháng 07 nă.giáo trình học tập, tài liệu cao đẳng đại học, luận văn tiến sỹ, thạc sỹ
ỦY BAN NHÂN DÂN TỈNH HÀ NAM TRƯỜNG CAO ĐẲNG NGHỀ HÀ NAM GIÁO TRÌNH MƠ ĐUN: LẬP TRÌNH MẠNG NGHỀ: QUẢN TRỊ MẠNG MÁY TÍNH TRÌNH ĐỘ: CAO ĐẲNG (Ban hành kèm theo Quyết định số: 285/QĐ-CĐNHN Ngày 21 tháng 07 năm 2017 Hiệu trưởng trường Cao đẳng nghề Hà Nam) Hà Nam, năm 2017 TUYÊN BỐ BẢN QUYỀN Tài liệu thuộc loại sách giáo trình nên nguồn thơng tin phép dùng ngun trích dùng cho mục đích đào tạo tham khảo Mọi mục đích khác mang tính lệch lạc sử dụng với mục đích kinh doanh thiếu lành mạnh bị nghiêm cấm Dựa theo giáo trình này, sử dụng để giảng dạy cho trình độ ngành/ nghề khác nhà trường LỜI GIỚI THIỆU Giáo trình Lập trình mạng biên soạn từ đến nâng cao nhằm đáp ứng yêu cầu học tập học sinh, sinh viên có kiến thức lập trình, đồng thời giúp cho học sinh, sinh viên có tài liệu học tập, rèn luyện tốt khả lập trình, tạo tảng vững để giải tốn thực tiễn Giáo trình khơng phù hợp cho người có kiến thức lập trình mà phù hợp cho người cần tham khảo để xây dựng sản phẩm hoàn thiện thực tiễn Nội dung giáo trình chia thành bài: Bài 1: Tổng quan lập trình mạng (Bài mở đầu) Bài 2: Làm việc với Sockets Bài 3: Kết nối với Web Servers Bài 4: Làm việc với SMTP POP3 - kết nối với email Servers Khi biên soạn, tơi tham khảo giáo trình tài liệu giảng dạy mô đun số trường Cao đẳng, Đại học Đồng thời kết hợp với vấn đề thực tế thường gặp sản xuất, đời sống để giáo trình có tính thực tế cao, giúp cho người học dễ hiểu, dễ dàng lĩnh hội kiến thức Tơi hy vọng giáo trình bước đầu đạt yêu cầu nội dung vừa thích hợp với đối tượng học sinh, sinh viên thuộc hệ thống Cơ sở giáo dục nghề nghiệp Đồng thời mong sớm nhận ý kiến đóng góp, phê bình bạn đọc nội dung, chất lượng hình thức trình bày để giáo trình ngày hồn thiện Hà Nam, ngày … tháng … năm 2017 Tác giả biên soạn: Phạm Tất Thành MỤC LỤC TUYÊN BỐ BẢN QUYỀN Error! Bookmark not defined LỜI GIỚI THIỆU Error! Bookmark not defined BÀI : TỔNG QUAN VỀ LẬP TRÌNH MẠNG Lịch sử phát triển Lập trình mạng Lý lập trình mạng tảng NET Phạm vi Địa IP Network stack 11 Port 12 Internet standards 12 NET framework 13 8.1 Thành phần NET Framework 13 8.2 Những đặc điểm NET Framework 14 Visual Studio NET 16 9.1 Phiên Visual Studio NET 2008 16 9.2 Làm việc với Visual Studio NET 2008 18 9.3 Các loại ứng dụng dùng C# 19 9.4 Cấu trúc chương trình C# 21 9.5 Cấu trúc thư mục ứng dụng 22 BÀI : LÀM VIỆC VỚI SOCKETS 24 Giới thiệu socket lập trình mạng 24 1.1 Định nghĩa 24 1.2 Số hiệu cổng (Port Number) socket 24 1.3 Các chế độ giao tiếp 26 Tạo ứng dụng đơn giản “hello world” 27 2.1 Viết dạng đơn giản UDP client 27 2.2 Viết dạng đơn giản UDP server 27 Dùng giao thức TCP/IP để chuyển files 29 Gỡ rối lập trình mạng 31 Mức Socket NET 32 BÀI : KẾT NỐI VỚI WEB SERVER 43 Giới thiệu HTTP 43 HTTP 44 2.1 Yêu cầu HTTP 44 2.2 Đáp ứng HTTP 46 2.3 Kiểu MIME 47 2.4 Không gian tên System.Web 47 2.5 Chuyển liệu (Posting data) 50 2.6 Chú ý làm việc với cookies 50 2.7 A WYSIWYG editor 51 Máy chủ Web (Web servers) 53 3.1 Thực thi máy chủ Web 53 Làm việc với lớp System.Net.HttpWebListener 55 Trình duyệt Web di động (Mobile Web browsers) 56 BÀI : LÀM VIỆC VỚI SMTP VÀ POP3 – KẾT NỐI VỚI EMAIL SERVER 57 Phương thức gởi nhận Email 57 SMTP 59 POP3 63 Làm việc với lớp System.Web.Mail 64 Xây dựng ứng dụng Mail 65 GIÁO TRÌNH MƠ ĐUN Tên mơ đun: Lâp trình mạng Mã số mơ đun: 35 I Vị trí, tính chất, ý nghĩa vai trị mơ đun - Vị trí: Mơ đun bố trí vào năm thứ học kì II khóa học - Tính chất: Mơ đun chun ngành - Ý nghĩa vai trị:: Đây mơ đun tự chọn chuyên môn nghề, cung cấp cho sinh viên kỹ lập trình mạng, xây dựng sản phẩm phần mềm để phục vụ công việc quản trị mạng II Mục tiêu mô đun - Về kiến thức: + Trình bày nguyên lý lập trình mạng, chế hoạt động chương trình thơng qua Giao thức, hàm truy xuất + Mô tả mô hình mạng, Giao thức truy cập thơng qua chương trình cài đặt + Nắm bắt số khái niệm câu lệnh, từ khoá, cú pháp, đối tượng, kiện để xây dựng số ứng dụng lập trình mạng - Về kỹ năng: + Sử dụng thành thạo cơng cụ lập trình Microsoft (C#, VB.NET) Java để lập trình mạng + Thiết kế, lập trình ứng dụng dạng Service, Web, System Network để bảo mật, giám sát mạng + Có khả phân tích xây dựng ứng dụng cho hệ thống mạng dựa ngôn ngữ có khả lập trình NET Java + Xây dựng ứng dụng mạng: dịch vụ, hệ thống, liệu để bảo vệ hệ thống, giám sát hệ thống, truy vấn liệu… - Về lực tự chủ trách nhiệm: + Có khả làm tập thực hành tập lớn lập trình giao thức mạng, Socket…một cách độc lập làm việc theo nhóm, giải cơng việc, vấn đề phức tạp điều kiện làm việc thay đổi + Hướng dẫn tối thiểu, giám sát người khác thực nhiệm vụ xác định; chịu trách nhiệm cá nhân trách nhiệm nhóm tham gia dự án lập trình mạng III Nội dung mơ đun BÀI : TỔNG QUAN VỀ LẬP TRÌNH MẠNG Giới thiệu: Trong giúp bạn hiểu tổng quan việc phát triển ứng dụng mạng với NET, cách sử dụng C (phát âm C-sharp) ngơn ngữ lập trình VB.NET Mục tiêu : - Trình bày vấn đề điều hành mạng lập trình mạng: Vấn đề truyền thông tin, địa IP, Giao thức, tầng liên lạc tính phân cấp giao thức, thơng điệp - Trình bày thành phần mơi trường NET Framwork - Thực câu lệnh Visual Studio NET - Thực thao tác an tồn với máy tính Nội dung chính: Lịch sử phát triển Lập trình mạng Cuốn sách giúp bạn phát triển ứng dụng mạng với NET, cách sử dụng C (phát âm C-sharp) ngơn ngữ lập trình VB.NET Nó chia thành ba phần riêng biệt: vấn đề kết nối mạng, thiết kế ứng dụng phân tán, chủ đề mạng chuyên ngành Sáu chương sách bao gồm công nghệ Internet thành lập, chẳng hạn email World Wide Web Tận dụng công nghệ thành lập cho phép truy cập cơng cộng nói chung lớn cho dịch vụ phần mềm bạn hầu hết người dùng có trình duyệt web ứng dụng email máy tính họ Năm chương thảo luận thiết kế ứng dụng mạng Điều bao gồm bảo mật ứng dụng, hiệu suất, khả mở rộng Chứa chương thực tế, thực hành lời khuyên để giúp nâng cao chất lượng tổng thể phần mềm bạn Với bảo mật khó khăn hơn, ứng dụng bạn nhạy cảm với hành vi trộm cắp sở hữu trí tuệ thông tin đặc quyền Cải tiến hiệu suất khả mở rộng mô tả phần đảm bảo ứng dụng bạn đáp ứng tải cực đoan Các mạng phần chuyên đề cung cấp vô số thông tin hai thích hợp cơng nghệ Internet tiên tiến Chúng bao gồm chương điện thoại, chụp gói, hàng đợi tin nhắn, IPv6, dịch vụ Microsoft lĩnh vực phát triển ứng dụng phân tán: dịch vụ Web truy cập từ xa Lý lập trình mạng tảng Microsoft NET Một định kỹ thuật thực dự án thực ngôn ngữ để sử dụng NET tảng có khả để phát triển giải pháp, cung cấp hỗ trợ đáng kể cho lập trình mạng Trong thực tế, Microsoft NET có hỗ trợ nội cho mạng so với tảng khác phát triển Microsoft Cuốn sách giả định bạn định để phát triển với Microsoft NET, ngơn ngữ bên ngồi tảng NET không thảo luận chi tiết tuyệt vời, ngoại trừ cho mục đích so sánh Điều khơng phải để nói Microsoft NET được-tất cuối tất ứng dụng lập trình mạng Nếu ứng dụng bạn chạy sở hạ tầng UNIX giao tiếp thông qua Java gọi phương thức từ xa (RMI), sau Microsoft NET đường để Trong hầu hết trường hợp, nhiên, bạn tìm thấy điều Microsoft.NET nhiều khả xử lý điều bạn ném vào Phạm vi Một chương trình mạng ứng dụng mà sử dụng mạng máy tính để chuyển thông tin đến từ ứng dụng khác Ví dụ từ trình duyệt web phổ biến Internet Explorer, chương trình mà bạn sử dụng để nhận email bạn, phần mềm điều khiển tàu vũ trụ NASA Tất thành phần chia sẻ phần mềm khả giao tiếp với máy tính khác, làm vậy, trở nên hữu ích cho người sử dụng cuối Trong trường hợp trình duyệt, tất trang web bạn truy cập tập tin lưu trữ máy tính nơi khác Internet Với chương trình email bạn, bạn giao tiếp với máy tính nhà cung cấp dịch vụ Internet (ISP) bạn trao đổi email công ty tổ chức email bạn cho bạn Cuốn sách chủ yếu quan tâm đến việc tạo chương trình mạng Mặc dù khả trang web chương trình mạng cách nhanh chóng hội tụ, quan trọng để hiểu đối số hệ thống Một dịch vụ truy cập thơng qua trang web truy cập để người sử dụng nhiều tảng khác nhau, toàn kiến trúc mạng sẵn sàng xây dựng cho bạn, nhiên, có điểm mà tính đơn giản không khả thi để thực cách sử dụng trang web mà bạn có chuyển sang mạng ứng dụng Người dùng thường tin tưởng ứng dụng mạng, đó, chương trình có quyền kiểm sốt lớn máy tính mà họ chạy trang web máy tính xem Điều làm cho cho ứng dụng mạng để quản lý tập tin máy tính địa phương, trang web, cho tất mục đích thực tế, làm điều Quan trọng hơn, từ góc độ kết nối mạng, ứng dụng có quyền kiểm soát lớn làm giao tiếp với máy tính khác Internet Có ngoại lệ cho quy tắc này, thực thi nội dung (chẳng hạn điều khiển ActiveX) bao gồm trang Trong trường hợp này, trang khả tất thứ làm chương trình mạng, hầu hết trình duyệt phần mềm chống virus cảnh báo chống lại phủ nhận nội dung thực thi Vì vậy, kịch thường chấp nhận khơng khả thi lịng tin cơng cộng Để đưa ví dụ đơn giản, trang web khơng làm cho máy tính xem mở kết nối mạng liên tục cho máy tính khác (ngoại trừ máy tính mà từ trang web phục vụ) Điều áp dụng trang web có chứa nội dung nhúng applet Java phim Flash Có ngoại lệ cho quy tắc này, thực thi nội dung (chẳng hạn điều khiển ActiveX) bao gồm trang Trong trường hợp này, trang khả tất thứ làm chương trình mạng, hầu hết trình duyệt phần mềm chống virus cảnh báo chống lại phủ nhận nội dung thực thi Vì vậy, kịch thường chấp nhận khơng khả thi lịng tin cơng cộng Địa IP Mỗi máy tính kết nối trực tiếp với Internet phải có địa tồn cầu Một địa IP số có bốn byte, mà thường viết bốn thập phân, số thời gian cách nhau, chẳng hạn 192.168.0.1 Máy tính kết nối gián tiếp với Internet, chẳng hạn thông qua mạng cơng ty họ, có địa IP, chúng khơng cần phải tồn cầu nhất, có mạng Để tìm địa IP máy tính bạn, mở cửa sổ giao diện điều khiển hệ điều hành DOS loại ipconfig (Windows NT, 2000, and XP) winipcfg (Windows 95, 98, ME) Trong hình, 1.1 máy tính có hai địa IP: 192.618.0.1 81.98.59.133 Điều khơng bình thường máy tính đặc biệt có chứa hai card mạng kết nối với hai mạng khác Chỉ có địa IP truy cập công khai Nếu bạn nhận địa IP 127.0.0.1, máy tính bạn không kết nối với mạng Địa IP ln ln đề cập đến máy tính địa phương sử dụng ví dụ sau Trong cách mà bạn nói cho dù số điện thoại địa phương quốc tế cách nhìn vào tiền tố, bạn cho biết liệu máy tính với địa IP mạng khu vực địa phương nơi khác Internet cách nhìn chặt chẽ địa IP Trong trường hợp địa IP, họ luôn độ dài, tiền tố định (192,168 phổ biến nhất) máy tính mạng lưới khu vực địa phương, mạng nội bộ, truy cập vào giới bên Nếu bạn chia sẻ kết nối Internet bạn với máy tính khác mạng bạn, bạn có địa IP riêng Đây cơng nhận phạm vi địa IP liệt kê Bảng 1.1 Dãy địa Số lượng địa 10.0.0.0 đến 10.255.255.255 Tên 16 tỉ máy tính (lớp A) 172.16.0.0 đến 172.31.255.255 900.000 máy tính (lớp B) 192.168.0.0 đến 192.168.255.255 65.000 máy tính (lớp C) Bảng 1.1 : Bảng liệt kê địa máy tính Cùng địa IP riêng tồn hai máy tính mạng khu vực khác cục (LAN) Điều khơng gây vấn đề khơng phải máy tính trực tiếp liên lạc với Trong đó, máy tính giải tư nhân bắt đầu u cầu thơng tin từ máy tính nước ngồi, khơng có máy tính nước ngồi bắt đầu u cầu thơng tin từ máy tính cá nhân giải Các trường hợp ngoại lệ cho quy tắc nơi network address translation (NAT) cổng chuyển tiếp thiết lập router nằm thượng nguồn máy tính tư nhân giải Đây nơi mà u cầu từ máy móc nước ngồi dành cho địa IP router chuyển tiếp đến computer định phía sau router Câu trả lời từ máy tính chuyển tiếp từ phía sau router máy nước ngồi bắt đầu u cầu Những lợi ích kiến trúc an ninh khả cân tải, mô tả chi tiết chương sau Tất máy tính có địa IP riêng phải kết nối với máy tính router mạng với địa IP công cộng truy cập Internet Để đảm bảo khơng có hai máy tính Internet có địa IP, có quan quản lý trung ương gọi Internet Assigned Numbers Authority (IANA), gần Tổng công ty Internet cho tên miền số (ICANN ) Cơ thể hoạt động thông qua nhà cung cấp dịch vụ Internet để gán địa IP công cộng cho tổ chức cá nhân Mặc dù phân bổ địa IP thời điểm, nhiều phổ biến phân bổ địa IP khối tiếp giáp Tiếp giáp khối có ba lớp học: A, B, C Class A địa khối địa IP với byte Class A 16 triệu địa IP kích thước Địa lớp B khối địa IP với byte thứ hai Lớp B giữ 65.024 địa IP công cộng 216 phạm vi byte đầy đủ khơng có byte cuối địa IP khơng thể 255 chúng dành riêng để sử dụng tương lai Địa lớp C khối địa IP với byte đầu tiên, thứ hai, thứ ba Class C nắm giữ 254 địa công cộng, địa lớp C thường xuyên giao cho công ty Một máy tính khơng phải lúc có địa IP Nó có địa IP từ máy chủ ISP động điều khiển máy chủ bạn (DHCP) giao thức Điều có nghĩa địa IP bạn thay đổi bạn trực tuyến Một địa IP gọi địa IP động Nếu bạn mạng nội bộ, bạn kiểm tra xem địa IP bạn chịu trách nhiệm thay đổi cách kiểm tra "có địa IP tự động" nút radio thuộc tính TCP / IP, theo mạng bảng điều khiển Mục đích DHCP có số lượng hạn chế IP địa có sẵn cho ISP, phân bổ thuê bao với IP địa từ hồ bơi sở đến trước phục vụ trước Địa IP số 32-bit, với giá trị tối đa khoảng tỷ đồng, số lượng máy tính giới nhanh chóng tiếp cận số IPv6 giải pháp cho vấn đề thảo luận chương sau Có định danh xây dựng vào tất card mạng mà thực thay đổi Điều gọi phần cứng, truy cập địa kiểm soát phương tiện truyền thông (MAC) Một địa mẫu MAC 0002-E3-15-59-6C sử dụng mạng nội để xác định máy tính private void Form1_Load(object sender, EventArgs e) { //object any = null; string url = "about:blank"; WebBrowser.Navigate(url, null); Application.DoEvents(); ((HTMLDocument)WebBrowser.Document).designMode = "On"; HtmlDocument oDoc = WebBrowser.Document; HTMLDocument oDocH = GetODocH(oDoc); } private void btnViewHTML_Click(object sender, EventArgs e) { tbHTML.Text = ((HTMLDocument)WebBrowser.Document).body.innerHTML; } private void btnPreview_Click(object sender, EventArgs e) { ((HTMLDocument)WebBrowser.Document).body.innerHTML = tbHTML.Text; } private void btnFont_Click(object sender, EventArgs e) { fontDialog.ShowDialog(); HTMLDocument doc = (HTMLDocument)WebBrowser.Document; object selection = doc.selection.createRange(); doc.execCommand("FontName", false, fontDialog.Font.FontFamily.Name); doc.execCommand("FontSize", false, fontDialog.Font.Size); ((IHTMLTxtRange)selection).select(); } private void btnColor_Click(object sender, EventArgs e) { colorDialog.ShowDialog(); string colorCode = "#" + toHex(colorDialog.Color.R) + toHex(colorDialog.Color.G) + toHex(colorDialog.Color.B); HTMLDocument doc = (HTMLDocument)WebBrowser.Document; object selection = doc.selection.createRange(); doc.execCommand("ForeColor", false, colorCode); ((IHTMLTxtRange)selection).select(); } private string toHex(int digit) { string hexDigit = digit.ToString("X"); if (hexDigit.Length == 1) { hexDigit = "0" + hexDigit; } return hexDigit; } Máy chủ Web (Web servers) Ta hỏi lý bạn nên phát triển máy chủ NET IIS tự có sẵn Một máy chủ nhà phát triển có số lợi thế, chẳng hạn sau đây: + Máy chủ Web cài đặt phần ứng dụng, mà khơng địi hỏi người sử dụng phải cài đặt IIS tay từ đĩa CD cài đặt Windows + IIS không cài đặt Windows XP Home Edition, chiếm phần đáng kể người dùng Windows 3.1 Thực thi máy chủ Web Bắt đầu Visual Studio Dự án NET bình thường Vẽ hai textbox, tbPath tbPort, vào biểu mẫu, theo sau nút, btnStart, hộp danh sách tên lbConnections, có xem vào danh sách Tại trung tâm máy chủ HTTP máy chủ TCP, bạn nhận thấy trùng mã ví dụ máy chủ TCP chương trước Các máy chủ đa luồng, bước khai báo danh sách mảng để chứa: public partial class Form1 : Form { private ArrayList alSockets; …… } Thực thi-Path, mà trả khơng đường mà cịn tên tập tin, chúng tơi cắt bỏ tất ký tự sau người cuối dấu gạch chéo ngược Mỗi máy chủ HTTP có gốc rễ HTTP, mà đường dẫn đến thư mục đĩa cứng bạn mà từ máy chủ lấy trang Web IIS có gốc HTTP mặc định C: \inetpub\wwwroot, trường hợp này, sử dụng đường dẫn ứng dụng lưu Để có đường dẫn ứng dụng, sử dụng ứng dụng Thực thi-Path, mà trả khơng đường mà cịn tên tập tin, chúng tơi cắt bỏ tất ký tự sau người cuối dấu gạch chéo ngược private void Form1_Load(object sender, EventArgs e) { tbPath.Text = Application.ExecutablePath; // trim off filename, to get the path tbPath.Text = tbPath.Text.Substring(0, tbPath.Text.LastIndexOf("\\")); } private void btnStart_Click(object sender, EventArgs e) { alSockets = new ArrayList(); Thread thdListener = new Thread(new ThreadStart(listenerThread)); thdListener.Start(); } public void listenerThread() { int port = 0; port = Convert.ToInt16(tbPort.Text); TcpListener tcpListener = new TcpListener(port); tcpListener.Start(); while (true) { Socket handlerSocket = tcpListener.AcceptSocket(); if (handlerSocket.Connected) { lbConnections.Items.Add(handlerSocket.RemoteEndPoint.ToString() + " connected."); lock (this) { alSockets.Add(handlerSocket); ThreadStart thdstHandler = new ThreadStart(handlerThread); Thread thdHandler = new Thread(thdstHandler); thdHandler.Start(); } } } } public void handlerThread() { Socket handlerSocket = (Socket)alSockets[alSockets.Count - 1]; String streamData = ""; String filename = ""; String[] verbs; StreamReader quickRead; NetworkStream networkStream = new NetworkStream(handlerSocket); quickRead = new StreamReader(networkStream); streamData = quickRead.ReadLine(); verbs = streamData.Split(" ".ToCharArray()); // Assume verbs[0]=GET filename = verbs[1].Replace("/", "\\"); if (filename.IndexOf("?") != -1) { // Trim of anything after a question mark (Querystring) filename = filename.Substring(0, filename.IndexOf("?")); } if (filename.EndsWith("\\")) { // Add a default page if not specified filename += "index.htm"; } filename = tbPath.Text + filename; FileStream fs = new FileStream(filename, FileMode.OpenOrCreate); fs.Seek(0, SeekOrigin.Begin); byte[] fileContents = new byte[fs.Length]; fs.Read(fileContents, 0, (int)fs.Length); fs.Close(); // optional: modify fileContents to include HTTP header handlerSocket.Send(fileContents); lbConnections.Items.Add(filename); handlerSocket.Close(); } Làm việc với lớp System.Net.HttpWebListener Trong NET Whidbey, giải pháp nhẹ nhàng cho việc thực máy chủ Web tồn tại, cụ thể lớp HttpWebListener Lớp thúc đẩy Http.sys điều khiển (nếu có) để cung cấp hiệu suất chưa có, tích hợp nhiều tính năng, chẳng hạn mã hóa SSL xác thực, khó khăn để phát triển từ mặt đất lên Lớp HttpWebListener bao gồm phương thức quan trọng thuộc tính thể Bảng 4.7 Phương thức thuộc tính Abort / Close AddPrefix BeginGetRequest EndGetRequest Ý nghĩa Hủy hàng đợi yêu cầu Thêm tiền tố để lắng nghe Web Đang chờ đợi yêu cầu khách hàng không đồng Trả IAsyncResult Xử lý yêu cầu khách hàng Trả ListenerWebRequest Lấy tất tiền tố xử lý Trả String [] Đang chờ đợi yêu cầu khách hàng đồng Trả ListenerWebRequest RemoveAll Loại bỏ tất tiền tố RemovePrefix Loại bỏ tiền tố quy định Start Bắt đầu thực thi Web Server Stop Dừng Web Server AuthenticationScheme Thiết lập phương tiện mà máy chủ xác thực khách hàng Trả AuthenticationScheme (tức là, Basic, Digest, NTLM) IsListening Xác định máy chủ chạy Trả Boolean Realm string Nếu hệ thống xác thực Basic Digest lựa chọn, thị lĩnh vực Trả String GetPrefixes GetRequest Trình duyệt Web di động (Mobile Web browsers) Khơng phải tất Client HTTP máy tính Nhiều người sử dụng điện thoại di động họ truy cập Internet Một số ứng dụng vơ hữu ích có sẵn khơng dây Mặc dù phà liệu điện thoại di động cách hoàn toàn khác từ mạng có dây, ứng dụng giao thức không dây (WAP) điện thoại giao tiếp thông qua cổng WAP, chuyển đổi tín hiệu điện thoại di động vào giao thức TCP/IP truy cập máy chủ cách tương tự trình duyệt WAP chạy HTTP giao thức truyền không dây (WTP), với vài thêm tiêu đề ném vào yêu cầu HTTP Sau mẫu yêu cầu HTTP tạo WAP điện thoại: GET / HTTP/1.1 Accept-Charset: ISO-8859-1 Accept-Language: en Content-Type: application/x-www-form-urlencoded x-up-subno: Fiach_hop x-upfax-accepts: none x-up-uplink: none x-up-devcap-smartdialing: x-up-devcap-screendepth: x-up-devcap-iscolor: x-up-devcap-immed-alert: x-up-devcap-numsoftkeys: x-up-devcap-screenchars: 15,4 Accept: application/x-hdmlc, application/x-up-alert, application/x-up-cacheop, application/x-up-device, application/x-up-digestentry, text/x-hdml;version=3.1, text/ x-hdml;version=3.0, text/x-hdml;version=2.0, text/x-wap.wml, text/vnd.wap.wml, */*, image/bmp, text/html User-Agent: UP.Browser/3.1-ALAV UP.Link/3.2 Host: 127.0.0.1:50 BÀI : LÀM VIỆC VỚI SMTP VÀ POP3 – KẾT NỐI VỚI EMAIL SERVER Mục tiêu bài: - Trình bày cách sử dụng lớp lập trình với Mail Server - Xây dựng ứng dụng Mail - Thực thao tác an tồn với máy tính Phương thức gởi nhận Email Để nhận thư điện tử bạn cần phải có tài khoản (account) thư điện tử Nghĩa bạn phải có địa để nhận thư Một thuận lợi với thư thơng thường bạn nhận thư điện tử từ đâu Bạn cần kết nối vào Server thư điện tử để lấy thư máy tính Để gửi thư bạn cần phải có kết nối vào internet truy nhập vào máy chủ thư điện tử để chuyển thư Thủ tục tiêu chuẩn sử dụng để gửi thư SMTP (Simple Mail Transfer Protocol) Nó kết hợp với thủ tục POP (Post Office Protocol) IMAP (Internet Message Access Protocol) để lấy thư Trên thực tế có nhiều hệ thống vi tính khác hệ thống lại có cấu trúc chuyển nhận thư điện tử khác Vì có khác biệt nên việc chuyển nhận thư điện tử hai hệ thống khác khó khăn bất tiện Do vậy, người ta đặt nghi thức chung cho thư điện tử Có nghĩa hệ thống máy vi tính đồng ý với nghi thức chung gọi Simple Mail Transfer Protocol viết tắt SMTP Nhờ vào SMTP mà chuyển vận thư từ điện tử Internet trở thành dễ dàng nhanh chóng cho tất người sử dụng máy vi tính cho dù họ có sử dụng hệ thống máy vi tính khác Khi gửi thư điện tử máy tính bạn cần phải định hướng đến máy chủ SMTP Máy chủ tìm kiếm địa thư điện tử (tương tự địa điền phong bì) sau chuyển tới máy chủ người nhận chứa lấy Bạn gửi thư điện tử đến giới mà có địa thư điện tử Hầu hết nhà cung cấp dịch vụ Internet cung cấp thư điện tử cho người dùng internet Chuyển thư (Send Mail) Sau người sử dụng máy vi tính dùng chương trình thư để viết thư ghi rõ địa người nhận máy tính chuyển thư điện đến hộp thư người nhận SMTP sử dụng nghi thức TCP (TCP protocol) để chuyển vận thư Vì nghi thức TCP hữu hiệu có phần kiểm sốt thất lạc mát việc gửi thư điện có hiệu suất cao Khi nhận mệnh lệnh gửi người sử dụng, máy vi tính dùng nghi thức TCP liên lạc với máy vi tính người nhận để chuyển thư Đơi máy vi tính người nhận bị tắt điện đường dây kết nối từ máy gửi tới máy nhận bị hư hỏng tạm thời nơi (tranmission wire failure), là Máy Chuyển Tiếp (routers) tuyến đường liên lạc hai máy tạm thời bị hư (out of order) máy gửi không cách liên lạc với máy nhận Gặp trường hợp máy gửi tạm thời giữ thư khu vực dự trữ tạm thời Máy gửi sau tìm cách liên lạc với máy nhận để chuyển thư Những việc xảy máy vi tính người sử dụng khơng hay biết Nếu khoảng thời gian mà máy vi tính nơi gửi khơng liên lạc với máy nhận máy gửi gửi thơng báo cho người gửi nói việc vận chuyển thư điện không thành công Nhận Thư (Receive Mail) Nếu máy gửi liên lạc với máy nhận việc chuyển thư tiến hành Trước nhận thư máy nhận kiểm sốt tên người nhận có hộp thư máy nhận hay khơng Nếu tên người nhận thư có hộp thư máy nhận thư nhận lấy thư bỏ vào hộp thư người nhận Trường hợp máy nhận kiểm soát thấy tên người nhận khơng có hộp thư máy nhận khước từ việc nhận thư Trong trường hợp khước từ máy gửi thơng báo cho người gửi biết người nhận khơng có hộp thư (user unknown) Sau máy nhận nhận thư bỏ vào hộp thư cho người nhận máy nhận thơng báo cho người nhận biết có thư Người nhận dùng chương trình thư để xem thư Sau xem thư xong người nhận lưu trữ (save), xóa (delete), trả lời (reply) v.v Trường hợp người nhận muốn trả lời lại thư cho người gửi người nhận khơng cần phải ghi lại địa địa người gửi có sẵn thư chương trình thư bỏ địa vào thư trả lời Trạm Phục Vụ Thư (Mail Server) Trên thực tế, quan hãng xưởng lớn, máy vi tính người gửi thư không gửi trực tiếp tới máy vi tính người nhận mà thường qua máy chủ thư điện tử (mail servers) Ví dụ: q trình gửi thư Hình : Gửi thư từ A đến B Như hình cho thấy, người máy A gửi tới người máy B thư trước máy A gửi đến máy chủ thư điện tử X Khi trạm phục vụ thư X nhận thư từ máy A X chuyển tiếp cho máy chủ thư điện tử Y Khi trạm phục vụ thư Y nhận thư từ X Y chuyển thư tới máy B nơi người nhận Trường hợp máy B bị trục trặc máy chủ thư Y giữ thư Thơng thường máy chủ thư điện tử thường chuyển nhiều thư lúc cho máy nhận Như ví dụ trạm phục vụ thư Y chuyển nhiều thư lúc cho máy B từ nhiều nơi gửi đến Một vài công dụng khác máy chủ thư người sử dụng có chuyện phải nghỉ thời gian người sử dụng u cầu máy chủ thư giữ giùm tất thư từ thời gian người sử dụng vắng mặt yêu cầu máy chủ thư chuyển tất thư từ tới hộp thư khác Với thơng tin có nhìn khái quát chức hoạt động hệ thống thư điện tử SMTP Công việc phát triển hệ thống thư điện tử (Mail System) đòi hỏi phải hình thành chuẩn chung thư điện tử Điều giúp cho việc gửi, nhận thông điệp đảm bảo, làm cho người nơi khác trao đổi thơng tin cho Có chuẩn thư điện tử quan trọng sử dụng nhiều từ trước đến X.400 SMTP (Simple Mail Transfer Protocol) SMTP thường kèm với chuẩn POP3 Chuẩn SMTP miêu tả cách điều khiển thông điệp mạng Internet Điều quan trọng chuẩn SMTP giả định máy nhận phải dùng giao thức SMTP gửi thư điện tử cho máy chủ ln ln hoạt động Sau đó, người nhận đến lấy thư từ máy chủ họ muốn dùng giao thức POP (Post Office Protocol), ngày POP cải tiến thành POP3 (Post Officce Protocol version 3) Hình : Hoạt động POP SMTP Thủ tục chuẩn Internet để nhận gửi thư điện tử SMTP (Simple Mail Transport Protocol) SMTP thủ tục phát triển mức ứng dụng mơ hình lớp OSI cho phép gửi điện mạng TCP/IP SMTP phát triển vào năm 1982 tổ chức IETF (Internet Engineering Task Force) chuẩn hoá theo tiêu chuẩn RFCs 821 822 SMTP sử dụng cổng 25 TCP Mặc dù SMTP thủ tục gửi nhận thư điện tử phổ biến cịn thiếu số đặc điểm quan trọng có thủ tục X400 Phần yếu SMTP thiếu khả hỗ trợ cho điện khơng phải dạng Text Ngồi SMTP có kết hợp thêm hai thủ tục khác hỗ trợ cho việc lấy thư POP3 IMAP4 MIME SMTP MIME (Multipurpose Internet Mail Extensions) cung cấp thêm khả cho SMTP cho phép file có dạng mã hoá đa phương tiện (multimedia) kèm với điện SMTP chuẩn MIME sử dụng bảng mã Base64 để chuyển file dạng phức tạp sang mã ASCII để chuyển MIME tiêu chuẩn hỗ trợ hầu hết ứng dụng, bạn phải thay đổi chương trình thư điện tử bạn khơng có hỗ trợ MIME MIME quy chuẩn tiêu chuẩn RFC 2045-2049 Lệnh SMTP SMTP sử dụng cách đơn giản câu lệnh ngắn để điều khiển điện Bảng danh sách lệnh SMTP Các lệnh SMTP xác định tiêu chuẩn RFC 821 Lệnh HELO Mô tả Hello Sử dụng để xác định người gửi điện Lệnh này kèm với tên host gửi điện Trong ESTMP (extended protocol), lệnh EHLO MAIL Khởi tạo giao dịch gửi thư Nó kết hợp "from" để xác định người gửi thư RCPT DATA Xác định người nhận thư Thông báo bắt đầu nội dung thực điện (phần thân thư) Dữ liệu mã thành dạng mã 128-bit ASCII kết thúc với dòng đơn chứa dấu chấm (.) Huỷ bỏ giao dịch thư Sử dụng để xác thực người nhận thư Nó lệnh "no operation" xác định khơng thực hành động Thốt khỏi tiến trình để kết thúc QUIT Cho host nhận biết thư phải gửi đến đầu cuối khác SEND Sau lệnh khác khơng u cầu phải có Xác định RFC 821: RSET VRFY NOOP SOML SAML EXPN HELP TURN Send or mail Báo với host nhận thư thư phải gửi đến đầu cuối khác hộp thư Send and mail Nói với host nhận điện phải gửi tới người dùng đầu cuối hộp thư Sử dụng mở rộng cho mailing list Yêu cầu thông tin giúp đỡ từ đầu nhận thư Yêu cầu để host nhận giữ vai trò host gửi thư Các lệnh SMTP đơn giản Bạn nhìn thấy điều ví dụ sau: 220 receivingdomain.com Server ESMTP Sendmail 8.8.8+Sun/8.8.8; Fri, 30 Jul 1999 09:23:01 HELO host.sendingdomain.com 250 receivingdomain.com Hello host, pleased to meet you MAIL FROM: 250 Sender ok RCPT TO: 250 Recipient ok DATA 354 Enter mail, end with a ì.ỵ on a line by itself Here goes the message 250 Message accepted for delivery QUIT 221 Goodbye host.sendingdomain.com Và thư trông sau: From username@sendingdomain.com Fri Jul 30 09:23:39 1999 Date: Fri, 30 Jul 1999 09:23:15 -0400 (EDT) From: username@sendingdomain.com Message-Id: Content-Length: 23 Here goes the message Mã trạng thái SMTP Khi MTA gửi lệnh SMTP tới MTA nhận MTA nhận trả lời với mã trạng thái người gửi biết có việc xảy đầu nhận Và bảng mã trạng thái SMTP theo tiêu chuẩn RFC 821 Mức độ trạng thái xác định số mã (5xx lỗi nặng, 4xx lỗi tạm thời, 1xx–3xx hoạt động bình thường) SMTP mở rộng (Extended SMTP) SMTP cải tiến để ngày đáp ứng nhu cầu cao người dùng thủ tục ngày có ích Nhưng dù cần có mở rộng tiêu chuẩn SMTP, chuẩn RFC 1869 đời để bổ sung cho SMTP Nó khơng mở rộng mà cịn cung cấp thêm tính cần thiết cho lệnh có sẵn Ví dụ: lệnh SIZE lệnh mở rộng cho phép nhận giới hạn độ lớn điện đến Khơng có ESMTP khơng giới hạn độ lớn thư Khi hệ thống kết nối với MTA, sử dụng khởi tạo ESMTP thay HELO EHLO Nếu MTA có hỗ trợ SMTP mở rộng (ESMTP) trả lời với danh sách lệnh mà hỗ trợ Nếu khơng trả lời với mã lệnh sai (500 Command not recognized) host gửi quay trở sử dụng SMTP Sau tiến trình ESMTP: 220 esmtpdomain.com Server ESMTP Sendmail 8.8.8+Sun/8.8.8; Thu, 22 Jul 1999 09:43:01 EHLO host.sendingdomain.com 250-mail.esmtpdomain.com Hello host, pleased to meet you 250-EXPN 250-VERB 250-8BITMIME 250-SIZE 250-DSN 250-ONEX 250-ETRN 250-XUSR 250 HELP QUIT 221 Goodbye host.sendingdomain.com Các lệnh ESMTP Lệnh EHLO 8BITMIME SIZE Miêu tả Sử dụng ESMTP thay cho HELO SMTP Sử dụng 8-bit MIME cho mã liệu Sử dụng giới hạn độ lớn điện SMTP Headers Có thể lấy nhiều thơng tin có ích cách kiểm tra phần header thư Không xem điện từ đâu đến, chủ đề thư, ngày gửi người nhận Bạn cịn xem điểm mà điện qua trước đến hộp thư bạn Tiêu chuẩn RFC 822 quy định header chứa Tối thiểu có người gửi (from), ngày gửi người nhận (TO, CC, BCC) Header thư nhận cho phép bạn xem điện qua đâu trước đến hộp thư bạn Nó dụng cụ tốt để kiểm tra giải lỗi Sau ví dụ: From someone@mydomain.COM Sat Jul 31 11:33:00 1999 Received: from host1.mydomain.com host2.mydomain.com by (8.8.8+Sun/8.8.8) with ESMTP id LAA21968 for ; Sat, 31 Jul 1999 11:33:00 -0400 (EDT) Received: by host1.mydomain.com with Internet Mail Service(5.0.1460.8) id ; Sat, 31 Jul 1999 11:34:39 -0400 Message-ID: From: "Your Friend" To: "'jamisonn@host2.mydomain.com'" Subject: Hello There Date: Sat, 31 Jul 1999 11:34:36 -0400 Trên ví dụ thấy điện gửi từ someone@mydomain.com Từ mydomain.com, chuyển đến host1 Bức điện gửi từ host2 tới host1 chuyển tới người dùng Mỗi chỗ điện dừng lại host nhận yêu cầu điền thêm thông tin vào header bao gồm ngày tạm dừng Host2 thơng báo nhận điện lúc 11:33:00 Host1 thơng báo nhận điện vào lúc 11:34:36, Sự chênh lệch phút có khả không đồng đồng hồ hai nơi Thuận lợi bất lợi SMTP Như thủ tục X.400, SMTP có số thuận lợi bất lợi Thuận lợi bao gồm: - SMTP phổ biến - Nó hỗ trợ nhiều tổ chức - SMTP có giá thành quản trị trì thấp - SMTP có cấu trúc địa đơn giản Bất lợi bao gồm: - SMTP thiếu số chức - SMTP thiếu khả bảo mật X.400 - Nó giới hạn vào tính đơn giản POP3 Trong ngày tháng thư điện tử, người dùng yêu cầu truy nhập vào máy chủ thư điện tử đọc điện họ Các chương trình thư thường sử dụng dạng text thiếu khả thân thiện với người dùng Để giải vấn đề số thủ tục phát triển phép người dùng lấy thư máy họ có giao diện sử dụng thân thiện với người dùng Và điều đem đến phổ biến thư điện tử Có hai thủ tục sử dụng phổ biến để lấy thư POP (Post Office Protocol) IMAP (Internet Mail Access Protocol) Post Office Protocol (POP) POP cho phép người dùng có account máy chủ thư điện tử kết nối vào MTA lấy thư máy tính mình, đọc trả lời lại POP phát triển vào năm 1984 nâng cấp từ POP2 lên POP3 vào năm 1988 Và hầu hết người dùng sử dụng tiêu chuẩn POP3 POP3 kết nối TCP/IP để đến máy chủ thư điện tử (sử dụng cổng 110) Người dùng điền username password Sau xác thực đầu máy khách sử dụng lệnh POP3 để lấy xoá thư POP3 thủ tục để lấy thư máy chủ thư điện tử POP3 quy định tiêu chuẩn RFC 1939 Lệnh POP3 Lệnh USER PASS STAT LIST RETR DELE NOOP RSET QUIT Miêu tả Xác định username Xác định password Yêu cầu trạng thái hộp thư số lượngdanh thư độ lớn thư thư Hiện sách Nhận thư Xoá thư xác định Khơng làm Khơi phục lại thư xoá (rollback) Thực việc thay đổi thoát Làm việc với lớp System.Web.Mail Thực tham chiếu đến System.Web.dll trước bạn nhập không gian tên System.Web.Mail DLL thành phần NET, COM Để làm vậy, Project→Add Reference, sau click vào DLL Xây dựng ứng dụng Mail Viết chương trình cho phép gởi email đơn giản từ địa source@here.com đến destination@there.com thong qua SMTP server smtp.ntlworld.com (có thể thay đổi SMTP server tuỳ ý) HƯỚNG DẪN THỰC HIỆN BÀI TẬP ỨNG DỤNG Viết ứng dụng gởi file máy client: TCP Simple Client Thiết kế giao diện sau Viết code cho kiện gởi Send private void btnSend_Click(object sender, System.EventArgs e) { MailMessage email = new MailMessage(); email.From = tbFrom.Text; email.To = tbTo.Text; email.Subject = "email from NET"; email.Body = tbMessage.Text; SmtpMail.SmtpServer = tbServer.Text; SmtpMail.Send(email); } Mở rộng: Viết thêm chức đính kèm file cho chương trình - Thời gian thực tập vượt 5% thời gian cho phép không đánh giá - Thí sinh phải tuyệt đối tuân thủ qui định an toàn lao động, qui định xưởng thực tập, vi phạm bị đình thi BÀI TẬP: Thiết kế chương trình POP3, SMTP theo dạng sau