http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Đồ án tốt nghiệp MỤC LỤC PHẦN : CƠ SỞ LÝ THUYẾT OBO OK S CO M CHƯƠNG : GIỚI THIỆU CHUNG VỀ INTERNET VÀ MỘT SỐ GIAO THỨC TRUYỀN THÔNG TRÊN INTERNET 1.1 GIỚI THIỆU CHUNG VỀ INTERNET 1.2 HỌ GIAO THỨC TCP/IP 1.3 GIAO THỨC LIÊN MẠNG IP 1.4 GIAO THỨC ĐIỀU KHIỂN TRUYỀN TCP 12 CHƯƠNG : CƠ SỞ VỀ LẬP TRÌNH MẠNG TRÊN MÔ HÌNH CLIENT/SERVER 14 2.1 LẬP TRÌNH GIAO TIẾP MẠNG VỚI WINDOWS SOCKETS 14 2.2 MỘT SỐ KHÁI NIỆM CƠ BẢN 14 2.2.1.Đòa Internet 14 2.2.2 Khái niệm socket port 14 2.3 CÁCH CÀI ĐẶT ỨNG DỤNG CLIENT/SERVER TCP 15 2.3.1 Cách cài đặt server TCP 15 2.3.2 Cách cài đặt client TCP 15 CHƯƠNG : MỘT SỐ KHÁI NIỆM LIÊN QUAN ĐẾN THƯ ĐIỆN TỬ 18 KIL 1.1 MAILSERVER 18 1.2 GIAO THỨC GỬI MAIL (MAIL TRANSPORT PROTOCOL) 18 1.3.GIỚI THIỆU KIẾN TRÚC DỊCH VỤ THƯ ĐIỆN TỬ 18 1.3.1 KiÕn tróc vµ c¸c dÞch vơ 18 1.3.2 T¸c nh©n ng−êi sư dơng (The User Agent) 21 1.3.2.1.Gửi thư (Sending Email) 21 1.3.2.2 Đọc thư (Reading Email) 21 1.3.2.3.Đònh dạng thông điệp (Message Formats) 22 1.3.2.4.Chuẩn RFC 822 22 1.4.PHÂN TÍCH CẤU TRÚC THƯ ĐIỆN TỬ, CÁC GIAO THỨC SMTP VÀ POP3 24 1.4.1.Phân tích cấu trúc thư điện tử (RFC 822) 24 1.4.1.1 Giíi thiƯu 24 1.4.1.2 Mô tả cấu trúc thư 25 1.4.2 §Þnh nghÜa vỊ c¸c tr−êng Header 26 1.4.3 C¸c tr−êng header ®iĨn h×nh 26 Sinh viên thực Nguyễn Xuân Thanh Trang http://kilobooks.com Đồ án tốt nghiệp THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN KIL OBO OKS CO M 1.4.4 VÝ dơ vỊ cÊu tróc th− 27 1.5 PHÂN TÍCH GIAO THỨC SMTP (RFC 821) 27 1.5.1 Giíi thiƯu chung 27 1.5.2 M« h×nh ho¹t ®éng phiªn giao dÞch 28 1.5.3 Thđ tơc Mail 29 1.5.4 Thđ tơc Forwarding 31 1.5.5 C¸c thđ tơc Mailing vµ Sending 32 1.5.6 C¸c thđ tơc Opening vµ Closing 32 1.5.7 M· tr¶ lêi cđa c¸c c©u lƯnh SMTP 33 1.6 PHÂN TÍCH GIAO THỨC POP3 (RFC 1081,1082) 34 1.6.1 Giíi thiƯu 34 1.6.2 M« h×nh ho¹t ®éng phiªn giao dÞch 34 1.6.3 Tr¹ng th¸i AUTHORIZATION 35 1.6.4 Tr¹ng th¸i TRANSACTION 37 1.6.5 Tr¹ng th¸i UPDATE 40 1.6.6 VÝ dơ vỊ mét phiªn giao dÞch POP3 41 1.7 MIME (MULTIPURPOSE INTERNET MAIL EXTENSIONS) 41 1.8.POP BEFORE SMTP(CHỨNG THỰC QUYỀN TRUY CẬP THEO GIAO THỨC POP TRƯỚC KHI SỬ DỤNG SMTP) 43 1.9.MAIL CLIENT, WEB MAIL 43 CHƯƠNG : GIỚI THIỆU VỀ CÁC CÔNG NGHỆ LIÊN QUAN 43 2.1.GIỚI THIỆU VỀ JRUN WEBSERVER 3.1 43 2.2.GIỚI THIỆU VỀ SQL SERVER 7.0 44 2.2.1 Lý thuyết hệ quản trò sở liệu sql server 7.0 Cấu trúc sở liệu sql server 7.0 44 2.2.2 Cấu trúc sở liệu vật lý: 45 2.2.2.1 Trang (page): 45 2.2.2.2 Extent: 46 2.2.2.3 Những loại file CSDL:SQL Server có loại file: 46 2.3 LÝ THUYẾT MÔ HÌNH QUAN HỆ 46 3.1 Các khái niệm 46 2.3.2 Khái Niệm phụ thuộc liệu dạng chuẩn 47 2.3.3 Khái niệm dẫn khóa dẫn 47 2.4.GIỚI THIỆU VỀ JAVA SERVLET 47 2.4.1.Khái niệm JAVA SERVLET 47 2.4.2.Những ứng dụng thực tế JAVA SERVLET kiến trúc JAVA SERVLET 48 2.5.GIỚI THIỆU VỀ JAVA SERVER PAGES(JSP) 48 2.5.1.Khái niệm JSP 48 Sinh viên thực Nguyễn Xuân Thanh Trang http://kilobooks.com Đồ án tốt nghiệp THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN KIL OBO OKS CO M 2.5.2.Quan hệ Servlet JSP 48 2.5.2.1.Cách trình chủ biên dòch trang JSP thành servlet 48 2.5.2.2 So sánh Servlet JSP 49 2.6 GIỚI THIỆU VỀ JAVABEANS 50 2.6.1.Khái niệm JAVABEANS 50 2.6.2.Các thẻ chuẩn JAVABEANS trang JSP 50 2.6.2.1. 50 2.6.2.2. 51 2.6.2.3 51 2.6.3.Thêm JAVABEANS vào JSP 51 PHẦN : XÂY DỰNG ỨNG DỤNG 52 CHƯƠNG PHÂN TÍCH BÀI TOÁN 52 1.1.TÊN ĐỀ TÀI 52 1.2.DỀ CƯƠNG CHI TIẾT 53 1.2.1.Khảo sát 53 1.2.2.Yêu cầu toán 53 1.2.3.Dữ liệu vào, liệu chức xử lý hệ thống 53 1.2.4 Chức hệ thống thông tin quản lý 54 1.3 LÝ DO CHỌN ĐỀ TÀI 54 CHƯƠNG : THIẾT KẾ VÀ CÀI ĐẶT ỨNG DỤNG 54 2.1.PHÂN TÍCH VÀ THẾT KẾ CƠ SỞ DỮ LIỆU 54 2.1.1.Phân tích 55 2.1.2 Giải thích chức hệ thống 56 2.1.3.biểu đồ luồng liệu( DFD – Data flow Diagram) 56 2.1.4 THIẾT KẾ HỆ THỐNG 57 2.1.4.1 Các bảng liệu 57 2.2 CÀI ĐẶT MAILSERVER 58 2.2.1.Phương án tổ chức lưu trữ mail Server 58 2.2.2.Các đơn thể mailserver 59 2.2.2.1 Xây dựng SMTP Server 59 2.2.2.2 Xây dựng POP3 Server 72 2.3.CÀI ĐẶT MAILCLIENT 86 Một số giao diện 90 Sinh viên thực Nguyễn Xuân Thanh Trang http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Đồ án tốt nghiệp LỜI CẢM ƠN KIL OBO OKS CO M Trước hết xin chân thành cảm ơn thầy cô giáo khoa Đại học Đại Cương trường Đại học Thuỷ Sản Nha Trang khoa Công Nghệ Thông Tin trường Đại học Bách Khoa Hà Nội trang bò cho kiến thức cần thiết năm học vừa qua để thực tốt đồ án Em xin chân thành cảm ơn thầy Văn Thế Minh tận tình giúp đỡ hướng dẫn em hoàn tất đồ án Ngoài xin cảm ơn tất bạn bè giúp đỡ suốt trình thực đồ án Mặc dù cố gắng, khoảng thời gian cho phép hạn chế kiến thức nên đồ án tránh khỏi thiếu sót Chính vậy, mong nhận góp ý thầy cô giáo bạn bè gần xa cá nhân hay tổ chức có quan tâm đến lónh vực trình bày đồ án Hà Nội, tháng năm 2003 Nguyễn Xuân Thanh Sinh viên thực Nguyễn Xuân Thanh Trang http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Đồ án tốt nghiệp LỜI NÓI ĐẦU KIL OBO OKS CO M Ngày với phát triển mạnh mẽ tin học công nghệ Internet, người thấy rõ lợi ích mà dòch vụ mạng Internet mang lại Dòch vụ thư điện tử gọi tắt Email dòch vụ sử dụng nhiều Internet Dòch vụ cho phép cá nhân hay tổ chức trao đổi thư với thông qua mạng Internet Nhiều người sử dụng Internet để dùng dòch vụ Thông thường, sử dụng dòch vụ thư tín điện tử, người sử dụng thường quan tâm xem hệ thống bên thực Vì vậy, họ ( người sử dụng) thấy nửa ứng dụng dòch vụ Email phần ứng dụng gọi Mail Client, sử dụng dòch vụ thư tín máy trạm Nhằm mục đích hiểu rõ hoạt động bên ứng dụng Email phần cung cấp dòch vụ mà thường gọi Mail Server, đồ án xin trình bày cách hệ thống phục vụ việc truyền thư tín điện tử sở tìm hiểu mô hình truyền thông thư tín, giao thức truyền thông chuẩn, hoạt động hệ Mail Server Vì thời gian có hạn có nhiều vấn đề có liên quan, đồ án trình bày vấn đề dòch vụ thư tín điện tử cài đặt chương trình mang tính thử nghiệm dòch vụ thư tín điện tử mà Sinh viên thực Nguyễn Xuân Thanh Trang http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Đồ án tốt nghiệp PHẦN : CƠ SỞ LÝ THUYẾT KIL OBO OKS CO M CHƯƠNG : GIỚI THIỆU CHUNG VỀ INTERNET VÀ MỘT SỐ GIAO THỨC TRUYỀN THÔNG TRÊN INTERNET 1.1 GIỚI THIỆU CHUNG VỀ INTERNET M¹ng Internet lµ mét tËp hỵp gåm hµng v¹n hƯ m¹ng trªn kh¾p thÕ giíi, ®−ỵc ph¸t triĨn vµo thËp kû b¶y m−¬i Sè l−ỵng m¸y tÝnh nèi m¹ng vµ sè l−ỵng ng−êi truy cËp vµo m¹ng Internet trªn toµn thÕ giíi ®ang ngµy cµng t¨ng lªn nhanh chãng, ®Ỉc biƯt tõ n¨m 1993 trë ®i M¹ng Internet kh«ng chØ cho phÐp chun t¶i th«ng tin nhanh chãng mµ cßn gióp cung cÊp th«ng tin, nã còng lµ diƠn ®µn vµ lµ th− viƯn toµn cÇu ®Çu tiªn M¹ng Internet cã xt xø n¨m 1969 tõ m¹ng m¸y tÝnh toµn cơc ARPANET c¬ quan qu¶n lý c¸c dù ¸n nghiªn cøu c¸c c«ng tr×nh nghiªn cøu khoa häc tiªn tiÕn thc Bé Qc phßng Mü (US Defense’s Advance Research Projects Agency - gäi t¾t lµ DARPA) tµi trỵ Tõ gi÷a n¨m 1970, trung t©m DARPA h−íng tíi m¹ng Internet víi kü tht chun m¹ch gãi qua m¹ng v« tun vµ th«ng tin vƯ tinh N¨m 1980, DARPA thư nghiƯm dïng giao thøc TCP/IP vµ ®· ®−ỵc c¸c tr−êng ®¹i häc ë Mü ghÐp nèi víi hƯ ®iỊu hµnh UNIX BSD (Berkely Software Distribution) HƯ ®iỊu hµnh UNIX lµ hƯ ph¸t triĨn m¹nh víi rÊt nhiỊu c«ng hç trỵ vµ ®¶m b¶o c¸c phÇn mỊm øng dơng cã thĨ chun qua l¹i trªn c¸c hä m¸y kh¸c (m¸y mini, m¸y tÝnh lín vµ hiƯn lµ m¸y vi tÝnh) Bªn c¹nh ®ã hƯ ®iỊu hµnh UNIX BSD cßn cung cÊp nhiỊu thđ tơc Internet c¬ b¶n, ®−a kh¸i niƯm Socket vµ cho phÐp ch−¬ng tr×nh øng dơng th©m nhËp vµo Internet mét c¸ch dƠ dµng CÊu tróc m¹ng Internet gåm cã: ♦ TÇng øng dơng: TELNET, FTP, SMTP; ♦ TÇng giao vËn: TCP, UDP; ♦ TÇng Internet: Internet Protocol; ♦ TÇng m¹ng: X.25, Ethernet, FDDI .; ♦ TÇng vËt lý: lµ c¸c m«i tr−êng trun tin kh¸c 1.2 HỌ GIAO THỨC TCP/IP TCP/IP lµ hä cđa c¸c giao thøc ®−ỵc sư dơng cho viƯc trun th«ng m¸y tÝnh C¸c ch÷ c¸i ®−ỵc viÕt t¾t bëi c¸c tõ (Transmission Control Protocol/Internet Protocol), hai giao thøc nµy cã c¸ch biĨu diƠn kh¸c nhau, ng−êi ta Ýt sư dơng víi c¸i tªn ®Çy ®đ cđa hai giao thøc nµy Th−êng c¸c giao thøc ®−ỵc nhãm l¹i thµnh c¸c hä (®«i Sinh viên thực Nguyễn Xuân Thanh Trang http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Đồ án tốt nghiệp cßn ®−ỵc gäi lµ c¸c suites hay c¸c stacks) C¸c giao thøc nµo ®−ỵc nhãm l¹i víi th−êng ®−ỵc x¸c ®Þnh bëi c¸c bé cµi ®Ỉt cđa giao thøc KIL OBO OKS CO M Hä giao thøc TCP/IP bao gåm c¸c giao thøc nh− lµ IP (Internet Protocol) , ARP (Address Resolution Protocol), ICMP (Internet Control Message Protocol), UDP (User Datagram Protocol), TCP (Transport Control Protocol), RIP (Routing Information Protocol), Telnet, SMTP (Simple Mail Transfer Protocol), DNS (Domain Name System) vµ mét sè c¸c giao thøc kh¸c H×nh bªn d−íi m« t¶ kiÕn tróc cđa m¹ng TCP/IP cã so s¸nh víi m« h×nh tham chiÕu OSI ®Ĩ chóng ta h×nh dung ®−ỵc sù t−¬ng øng vỊ chøc n¨ng cđa c¸c tÇng OSI Model Layers Application Layer Presentation Layer Session Layer Transport Layer TCP/IP Protocol Architecture Layers Application Layer Host-to-Host Transport Layer Network Layer Internet Layer Data Link Layer Network Interface Layer Physical Layer Telnet FTP SMTP TCP IP ARP Ethernet Token Ring TCP/IP Protocol Suite DNS RIP SNMP UDP IGMP ICMP Frame Relay ATM So s¸nh c¸c kiÕn tróc ISO vµ TCP/IP TCP/IP thùc chÊt lµ mét hä giao thøc cïng lµm viƯc víi ®Ĩ cung cÊp ph−¬ng tiƯn trun th«ng liªn m¹ng Trong phÇn nµy chóng ta sÏ xem xÐt giao thøc IP, giao thøc TCP vµ mét sè øng dơng ë tÇng trªn nh− Telnet, FTP, DNS, SMTP 1.3 GIAO THỨC LIÊN MẠNG IP Mơc ®Ých chÝnh cđa IP lµ cung cÊp kh¶ n¨ng kÕt nèi c¸c m¹ng thµnh liªn m¹ng ®Ĩ trun d÷ liƯu Vai trß cđa IP t−¬ng tù vai trß cđa giao thøc tÇng m¹ng m« h×nh OSI IP lµ mét giao thøc kiĨu ”kh«ng liªn kÕt” (connectionless) cã nghÜa lµ kh«ng cÇn cã giai ®o¹n thiÕt lËp liªn kÕt tr−íc trun d÷ liƯu §¬n vÞ d÷ liƯu dïng IP ®−ỵc gäi lµ datagram, cã khu«n d¹ng chØ h×nh bªn d−íi ý nghÜa cđa c¸c tham sè nh− sau: Sinh viên thực Nguyễn Xuân Thanh Trang http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Đồ án tốt nghiệp • VER (4 bits): chØ version hiƯn hµnh cđa IP ®−ỵc cµi ®Ỉt • IHL (4 bits): chØ ®é dµi phÇn ®Çu (Internet Header Length) cđa datagram, tÝnh theo ®¬n vÞ tõ (word = 32 bits) §é dµi tèi thiĨu lµ tõ (20 bytes) 34 78 IH L 31 Type of Service Total Length KIL OBO OKS CO M VE R 15 16 Indentification Time to live Header Fla gs Protocol Fragment offset Header Checksum Source Address Destination Address Options + Padding Data (max: 65.535 bytes) Khu«n d¹ng cđa IP datagram • Type of service (8 bits): ®Ỉc t¶ c¸c tham sè vỊ dÞch vơ, cã d¹ng thĨ nh− sau: ®ã: Preceden ce D T R Reser ved Precedence (3 bits): chØ thÞ vỊ qun −u tiªn gưi datagram, thĨ lµ: 111 - Network Control (cao nhÊt) 011 - Flash 110 - Internetwork Control 010 - Immediate 101 - CRITIC/ECP 001 - Priority 100 - Flas Override 000 - Routine (thÊp nhÊt) D (Delay) (1 bit): chØ ®é trƠ yªu cÇu D = ®é trƠ b×nh th−êng D = ®é trƠ thÊp T (Throughput) (1 bit): chØ th«ng l−ỵng yªu cÇu T = th«ng l−ỵng b×nh th−êng T = th«ng l−ỵng cao R (Reliability) (1 bit): chØ ®é tin cËy yªu cÇu R = ®é tin cËy b×nh th−êng R = ®é tin cËy cao Sinh viên thực Nguyễn Xuân Thanh Trang http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Đồ án tốt nghiệp • Total Length (16 bits): chØ ®é dµi toµn bé datagram, kĨ c¶ phÇn header (tÝnh theo ®¬n vÞ bytes) • Indentification (16 bits): cïng víi c¸c tham sè kh¸c (nh− Source Address vµ KIL OBO OKS CO M Destination Address) tham sè nµy dïng ®Ĩ ®Þnh danh nhÊt cho mét datagram kho¶ng thêi gian nã vÉn cßn trªn liªn m¹ng • Flags (3 bits): liªn quan ®Õn sù ph©n ®o¹n (fragment) c¸c datagram, thĨ lµ: D F M F Bit 0: reserved - ch−a sư dơng , lu«n lÊy gi¸ trÞ Bit (DF) = (May Fragment) = (Don’t Fragment) Bit (MF) = (Last Fragment) = (More Fragment) • Fragment Offset (13 bits): chØ vÞ trÝ cđa ®o¹n (fragment) ë datagram, tÝnh theo ®¬n vÞ 64 bits, cã nghÜa lµ mçi ®o¹n (trõ ®o¹n ci cïng) ph¶i chøa mét vïng d÷ liƯu cã ®é dµi lµ béi sè cđa 64 bits • Time to live (8 bits): qui ®Þnh thêi gian tån t¹i (tÝnh b»ng gi©y) cđa datagram liªn m¹ng ®Ĩ tr¸nh t×nh tr¹ng mét datagram bÞ qn trªn liªn m¹ng Thêi gian nµy ®−ỵc cho bëi tr¹m gưi vµ ®−ỵc gi¶m ®i (th−êng qui −íc lµ ®¬n vÞ) datagram ®i qua mçi router cđa liªn m¹ng • Protocol (8 bits): chØ giao thøc tÇng trªn kÕ tiÕp sÏ nhËn vïng d÷ liƯu ë tr¹m ®Ých (hiƯn t¹i th−êng lµ TCP hc UDP ®−ỵc cµi ®Ỉt trªn IP) • Header Checksum (16 bits): m· kiĨm so¸t lçi 16 bits theo ph−¬ng ph¸p CRC, chØ cho vïng header • Source Address (32 bits): ®Þa chØ cđa tr¹m ngn • Destination Address (32 bits): ®Þa chØ cđa tr¹m ®Ých • Options (®é dµi thay ®ỉi): khai b¸o c¸c options ng−êi gưi yªu cÇu • Padding (®é dµi thay ®ỉi): vïng ®Ưm, ®−ỵc dïng ®Ĩ ®¶m b¶o cho phÇn header lu«n kÕt thóc ë mét mèc 32 bits • Data (®é dµi thay ®ỉi): vïng d÷ liƯu, cã ®é dµi lµ béi sè cđa bits, vµ tèi ®a lµ 65535 bytes S¬ ®å ®Þa chØ ho¸ ®Ĩ ®Þnh danh c¸c tr¹m (host) liªn m¹ng ®−ỵc gäi lµ ®Þa chØ IP 32 bits (32- bit- IP address) Mçi ®Þa chØ IP cã ®é dµi 32 bits ®−ỵc t¸ch thµnh vïng (mçi vïng byte), cã thĨ ®−ỵc biĨu thÞ d−íi d¹ng thËp ph©n, b¸t ph©n, thËp lơc ph©n hc nhÞ ph©n C¸ch viÕt phỉ biÕn nhÊt lµ dïng ký ph¸p thËp ph©n cã dÊu chÊm (dotted decimal notation) ®Ĩ t¸ch c¸c vïng Mơc ®Ých cđa ®Þa chØ IP lµ ®Ĩ ®Þnh danh nhÊt cho mét host bÊt kú trªn liªn m¹ng Do tỉ chøc vµ ®é lín cđa c¸c m¹ng (subnet) cđa liªn m¹ng cã thĨ kh¸c nhau, ng−êi ta chia c¸c ®Þa chØ IP thµnh líp, ký hiƯu lµ A, B, C, D vµ E, víi cÊu tróc ®−ỵc chØ h×nh bªn d−íi Sinh viên thực Nguyễn Xuân Thanh Trang http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Đồ án tốt nghiệp 15 16 netid Líp A 23 24 hostid netid Hostid KIL OBO OKS CO M Líp B 31 netid Líp C hostid Multicast address Líp D Reserved for future use Líp E CÊu tróc cđa c¸c líp ®Þa chØ IP • Líp A cho phÐp ®Þnh danh tíi 126 m¹ng, víi tèi ®a 16 triƯu host trªn mçi m¹ng Líp nµy ®−ỵc dïng cho c¸c m¹ng cã sè tr¹m cùc lín • Líp B cho phÐp ®Þnh danh tíi 16384 m¹ng, víi tèi ®a 65534 host trªn mçi m¹ng • Líp C cho phÐp ®Þnh danh tíi triƯu m¹ng, víi tèi ®a 254 host trªn mçi m¹ng Líp nµy ®−ỵc dïng cho c¸c m¹ng cã Ýt tr¹m • Líp D dïng ®Ĩ gưi IP datagram tíi mét nhãm c¸c host trªn mét m¹ng • Líp E dù phßng ®Ĩ dïng t−¬ng lai VÝ dơ: 00001 010 10000 000 11000 000 00000 000 00000 000 00000 000 = 10.0.0.0 (Líp A) netid = 10 00000 011 00000 010 00000 011 = 128.3.2.3 (Líp B) netid = 128.3 hostid = 2.3 00000 000 00000 001 11111 111 = 192.0.1.255 (Líp C) netid = 192.0.1 hostid = 255 h−íng ®Õn tÊt c¶ c¸c host Mét ®Þa chØ cã hostid (host identifier) b»ng ®−ỵc dïng ®Ĩ h−íng tíi m¹ng ®Þnh danh bëi vïng netid (network identifier) Ng−ỵc l¹i, mét ®Þa chØ cã vïng hostid gåm toµn sè ®−ỵc dïng ®Ĩ h−íng tíi tÊt c¶ c¸c host nèi vµo m¹ng netid, vµ nÕu vïng netid còng gåm toµn sè th× nã h−íng tíi tÊt c¶ c¸c host liªn m¹ng Trong nhiỊu tr−êng hỵp, mét m¹ng cã thĨ ®−ỵc chia thµnh nhiỊu m¹ng (subnet), lóc ®ã cã thĨ ®−a thªm c¸c vïng subnetid ®Ĩ ®Þnh danh c¸c m¹ng Vïng subnet ®−ỵc lÊy tõ hostid, thĨ ®èi víi líp A, B, C nh− sau (h×nh bªn d−íi) Sinh viên thực Nguyễn Xuân Thanh 10 Trang http://kilobooks.com Đồ án tốt nghiệp THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN message.setDeleted(true); out.println("+OK"); } } KIL OBO OKS CO M /** * Xử lý lệnh PASS kiểm tra password */ protected void processEnterPassword(String command, StringTokenizer arguments) { if (command.equalsIgnoreCase("QUIT")) { stopRequested = true; out.println("+OK Signing off"); } else if (command.equalsIgnoreCase("PASS")) { if (!arguments.hasMoreTokens()) { out.println("-ERR must supply password"); return; } String password = arguments.nextToken(); if (arguments.hasMoreTokens()) { out.println("-ERR only one argument to PASS, your password"); return; } // Kiểm tra quyền đăng nhập user = Server.storage.login(userName, password); if (user == null) { out.println("-ERR invalid user or password"); state = ENTER_USER; } else { // user đăng nhập – trả danh sách mail có hộp thư messages = Server.storage.getMessages(user); out.println("+OK mailbox open, " + countMessages() + " messages"); state = TRANSACTION; } } else { out.println("-ERR Only use PASS or QUIT commands"); } } /** Sinh viên thực Nguyễn Xuân Thanh 77 Trang http://kilobooks.com Đồ án tốt nghiệp THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN * Xử lý lệnh USER */ protected void processEnterUser(String arguments) { command, StringTokenizer KIL OBO OKS CO M if (command.equalsIgnoreCase("QUIT")) { stopRequested = true; out.println("+OK Signing off"); return; } if (command.equalsIgnoreCase("USER")) { if (!arguments.hasMoreTokens()) { out.println("-ERR must supply user name"); return; } userName = arguments.nextToken(); if (arguments.hasMoreTokens()) { out.println("-ERR only one argument to USER, the user name"); return; } state = ENTER_PASSWORD; out.println("+OK use PASS command to send password"); return; } out.println("-ERR Only use USER or QUIT commands"); } /** * Xử lý lệnh LIST */ protected void processLIST(StringTokenizer arguments) { if (!arguments.hasMoreTokens()) { out.println("+OK " + countMessages() + " " + getMessagesSize()); for (int i = 1; i = 1) { if (line.substring(0, 1).equals(".")) line = "." + line; } // Gửi liệu trình khách out.println(line); } } catch (IOException e) { System.err.println("POPConnection.processRETR()"); e.printStackTrace(System.err); } try { reader.close(); Sinh viên thực Nguyễn Xuân Thanh 80 Trang http://kilobooks.com Đồ án tốt nghiệp THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN KIL OBO OKS CO M } catch (IOException e) { System.err.println("POPConnection.processRETR() - reader.close()"); e.printStackTrace(System.err); } out.println("."); } } /** * Xử lý lệnh RSET */ protected void processRSET(StringTokenizer arguments) { Enumeration enum = messages.elements(); while (enum.hasMoreElements()) { Message message = (Message)enum.nextElement(); if (message.isDeleted()) message.setDeleted(false); } out.println("+OK"); } /** * Xử lý lệnh STAT */ protected void processSTAT(StringTokenizer arguments) { out.println("+OK " + countMessages() + " " + getMessagesSize()); } /** * Xử lý lệnh TOP – trả trình khách mail header */ protected void processTOP(StringTokenizer arguments) { if (!arguments.hasMoreTokens()) { out.println("-ERR syntax: TOP "); return; } String messageNumber = arguments.nextToken(); if (!arguments.hasMoreTokens()) { out.println("-ERR syntax: TOP "); return; } Sinh viên thực Nguyễn Xuân Thanh 81 Trang http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Đồ án tốt nghiệp KIL OBO OKS CO M int lines = 0; try { lines = Integer.parseInt(arguments.nextToken()); } catch (NumberFormatException e) { out.println("-ERR bad number of lines"); return; } Message message = getMessage(messageNumber); if (message == null) { out.println("-ERR no such message"); return; } out.println("+OK " + message.getSize() + " octets"); StringBuffer buffer = Server.storage.getMessageData(message); BufferedReader reader StringReader(buffer.toString())); = new BufferedReader(new boolean done = false; boolean inBody = false; int count = 0; try { while (reader.ready() && (!done) && (count = 1) { if (line.substring(0, 1).equals(".")) line = "." + line; } else { inBody = true; } if (inBody) { Sinh viên thực Nguyễn Xuân Thanh 82 Trang http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Đồ án tốt nghiệp count++; } out.println(line); KIL OBO OKS CO M } } catch (IOException e) { System.err.println("POPConnection.processTOP()"); e.printStackTrace(System.err); } try { reader.close(); } catch (IOException e) { System.err.println("POPConnection.processTOP() reader.close()"); e.printStackTrace(System.err); } out.println("."); } /** * Xử lý lệnh giao thức POP3 */ protected void processTransaction(String command, StringTokenizer arguments) { if (command.equalsIgnoreCase("STAT")) { processSTAT(arguments); } else if (command.equalsIgnoreCase("LIST")) { processLIST(arguments); } else if (command.equalsIgnoreCase("RETR")) { processRETR(arguments); } else if (command.equalsIgnoreCase("DELE")) { processDELE(arguments); } else if (command.equalsIgnoreCase("NOOP")) { processTOP(arguments); } else if (command.equalsIgnoreCase("TOP")) { processTOP(arguments); } else if (command.equalsIgnoreCase("UIDL")) { processUIDL(arguments); } else if (command.equalsIgnoreCase("RSET")) { processRSET(arguments); } else if (command.equalsIgnoreCase("QUIT")) { Sinh viên thực Nguyễn Xuân Thanh 83 Trang http://kilobooks.com Đồ án tốt nghiệp THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN processQUIT(arguments); } else { out.println("-ERR Unknown command " + command); } KIL OBO OKS CO M } protected void processUIDL(StringTokenizer arguments) { if (!arguments.hasMoreTokens()) { out.println("+OK " + countMessages() + " " + getMessagesSize()); for (int i = 1; i [...]... Để gửi mail đến máy chủ, trình khách phải sử dụng một giao thức trò chuyện với mail server Tương tự trình duyệt dùng giao thức HTTP để trò chuyện với trình chủ Web server Các trình khách muốn bắt tay với trình chủ mail server và gửi mail lên máy chủ sẽ sử dụng giao thức SMTP (Simple Mail Transport Protocol) SMTP được hầu hết các mail server trên thế gới sử dụng Đòa chỉ IP của máy chủ nhận mail gửi đi... trong m¸y A), trong khi ®ã m¸y B t¹o mét socket kh¸c vµ mãc vµo (connect) port X trong m¸y A M¸y A socket Port socket Mèi nèi M¸y B HƯ thèng m¹ng C¸c socket vµ port trong mèi nèi TCP 2.3 CÁCH CÀI ĐẶT ỨNG DỤNG CLIENT/SERVER TCP 2.3.1 Cách cài đặt server TCP øng dơng server lµm viƯc theo qui tr×nh sau ®©y: 1 Gäi hµm socket ®Ĩ t¹o mét socket 2 Gäi hµm bind ®Ĩ kÕt bc socket víi mét port, ®èi víi mçi giao ... gưi datagram, thĨ lµ: 111 - Network Control (cao nhÊt) 011 - Flash 110 - Internetwork Control 010 - Immediate 101 - CRITIC/ECP 001 - Priority 100 - Flas Override 000 - Routine (thÊp nhÊt) D (Delay)... ”:” [field-body] CRLF field-name = 1* field-body = *text 1.4.3 C¸c tr−êng header ®iĨn h×nh a Tr−êng RETURN-PATH... header MIME-Version: ®−ỵc gi¶ ®Þnh lµ mét th«ng ®iƯp h×nh thøc ®−ỵc m· hãa b»ng tiÕng Anh vµ nã ®−ỵc xư lý nh− thÕ Header MIME-Version: Content-Description: Content-Id: Content-Transfer-Encoding: