Ngày nay với sự phát triển mạnh mẽ của tin học và công nghệ Internet, hầu như mọi người đều thấy rõ lợi ích mà các dịch vụ do mạng Internet mang lại.
Dịch vụ thư điện tử gọi tắt là Email là một trong nhưng dịch vụ được sử dụng nhiều nhất trên Internet hiện nay. Dịch vụ này cho phép các cá nhân hay tổ chức trao đổi thư với nhau thông qua mạng Internet. Nhiều người sử dụng Internet chỉ để dùng dịch vụ này.
Thông thường, khi sử dụng dịch vụ thư tín điện tử, người sử dụng thường ít khi quan tâm xem hệ thống bên trong đã thực hiện như thế nào. Vì vậy, họ ( người sử dụng) mới chỉ thấy được một nửa của ứng dụng dịch vụ Email và phần ứng dụng đó được gọi là Mail Client, hay là sử dụng dịch vụ thư tín máy trạm.
Nhằm mục đích hiểu rõ hơn về hoạt động bên trong của ứng dụng Email ở phần cung cấp dịch vụ mà thường được gọi là Mail Server, trong cuốn đồ án này tôi xin trình bày một cách cơ bản hệ thống phục vụ việc truyền thư tín điện tử trên cơ sở tìm hiểu về các mô hình truyền thông thư tín, các giao thức truyền thông chuẩn, các hoạt động của một hệ Mail Server.
92 trang |
Chia sẻ: zimbreakhd07 | Lượt xem: 1873 | Lượt tải: 3
Bạn đang xem trước 20 trang nội dung tài liệu Đồ án Xây dựng ứng dụng Webmail, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
MUÏC LUÏC
PHAÀN 1 : CÔ SÔÛ LYÙ THUYEÁT 6
CHÖÔNG 1 : GIÔÙI THIEÄU CHUNG VEÀ INTERNET VAØ MOÄT SOÁ GIAO THÖÙC TRUYEÀN THOÂNG TREÂN INTERNET 6
1.1. GIÔÙI THIEÄU CHUNG VEÀ INTERNET 6
1.2. HOÏ GIAO THÖÙC TCP/IP 6
1.3. GIAO THÖÙC LIEÂN MAÏNG IP 7
1.4. GIAO THÖÙC ÑIEÀU KHIEÅN TRUYEÀN TCP 12
CHÖÔNG 2 : CÔ SÔÛ VEÀ LAÄP TRÌNH MAÏNG TREÂN MOÂ HÌNH CLIENT/SERVER 14
2.1. LAÄP TRÌNH GIAO TIEÁP MAÏNG VÔÙI WINDOWS SOCKETS 14
2.2. MOÄT SOÁ KHAÙI NIEÄM CÔ BAÛN 14
2.2.1.Ñòa chæ Internet 14
2.2.2. Khaùi nieäm socket vaø port 14
2.3. CAÙCH CAØI ÑAËT ÖÙNG DUÏNG CLIENT/SERVER TCP 15
2.3.1. Caùch caøi ñaët server TCP 15
2.3.2. Caùch caøi ñaët client TCP 15
CHÖÔNG 3 : MOÄT SOÁ KHAÙI NIEÄM LIEÂN QUAN ÑEÁN THÖ ÑIEÄN TÖÛ 17
1.1. MAILSERVER 17
1.2. GIAO THÖÙC GÖÛI MAIL (MAIL TRANSPORT PROTOCOL) 17
1.3.GIÔÙI THIEÄU KIEÁN TRUÙC DÒCH VUÏ THÖ ÑIEÄN TÖÛ 17
1.3.1. KiÕn tróc vµ c¸c dÞch vô 17
1.3.2. T¸c nh©n ngêi sö dông (The User Agent) 20
1.3.2.1.Göûi thö (Sending Email) 20
1.3.2.2. Ñoïc thö (Reading Email) 20
1.3.2.3.Ñònh daïng thoâng ñieäp (Message Formats) 21
1.3.2.4.Chuaån RFC 822 21
1.4.PHAÂN TÍCH CAÁU TRUÙC THÖ ÑIEÄN TÖÛ, CAÙC GIAO THÖÙC SMTP VAØ POP3 23
1.4.1.Phaân tích caáu truùc thö ñieän töû (RFC 822) 23
1.4.1.1. Giíi thiÖu 23
1.4.1.2. Moâ taû veà caáu truùc thö 24
1.4.2. §Þnh nghÜa vÒ c¸c trêng Header 25
1.4.3. C¸c trêng header ®iÓn h×nh 25
1.4.4. VÝ dô vÒ cÊu tróc th 26
1.5. PHAÂN TÍCH GIAO THÖÙC SMTP (RFC 821) 26
1.5.1. Giíi thiÖu chung 26
1.5.2. M« h×nh ho¹t ®éng phiªn giao dÞch 27
1.5.3. Thñ tôc Mail 28
1.5.4. Thñ tôc Forwarding 30
1.5.5. C¸c thñ tôc Mailing vµ Sending 30
1.5.6. C¸c thñ tôc Opening vµ Closing 31
1.5.7. M· tr¶ lêi cña c¸c c©u lÖnh SMTP 32
1.6. PHAÂN TÍCH GIAO THÖÙC POP3 (RFC 1081,1082) 33
1.6.1. Giíi thiÖu 33
1.6.2. M« h×nh ho¹t ®éng phiªn giao dÞch 33
1.6.3. Tr¹ng th¸i AUTHORIZATION 34
1.6.4. Tr¹ng th¸i TRANSACTION 36
1.6.5. Tr¹ng th¸i UPDATE 39
1.6.6. VÝ dô vÒ mét phiªn giao dÞch POP3 39
1.7. MIME (MULTIPURPOSE INTERNET MAIL EXTENSIONS) 40
1.8.POP BEFORE SMTP(CHÖÙNG THÖÏC QUYEÀN TRUY CAÄP THEO GIAO THÖÙC POP TRÖÔÙC KHI SÖÛ DUÏNG SMTP) 41
1.9.MAIL CLIENT, WEB MAIL 42
CHÖÔNG 4 : GIÔÙI THIEÄU VEÀ CAÙC COÂNG NGHEÄ LIEÂN QUAN 42
2.1.GIÔÙI THIEÄU VEÀ JRUN WEBSERVER 3.1 42
2.2.GIÔÙI THIEÄU VEÀ SQL SERVER 7.0 42
2.2.1. Lyù thuyeát heä quaûn trò cô sôû döõ lieäu sql server 7.0 vaø Caáu truùc cô sôû döõ lieäu cuûa sql server 7.0 42
2.2.2. Caáu truùc cô sôû döõ lieäu vaät lyù: 44
2.2.2.1. Trang (page): 44
2.2.2.2 .Extent: 44
2.2.2.3 Nhöõng loaïi file trong CSDL:SQL Server coù 3 loaïi file: 44
2.3. LYÙ THUYEÁT MOÂ HÌNH QUAN HEÄ 45
2. 3.1. Caùc khaùi nieäm cô baûn 45
2.3.2. Khaùi Nieäm phuï thuoäc döõ lieäu vaø caùc daïng chuaån 45
2.3.3 Khaùi nieäm chæ daãn vaø khoùa chæ daãn 46
2.4.GIÔÙI THIEÄU VEÀ JAVA SERVLET 46
2.4.1.Khaùi nieäm veà JAVA SERVLET 46
2.4.2.Nhöõng öùng duïng thöïc teá cuûa JAVA SERVLET vaø kieán truùc cuûa JAVA SERVLET 46
2.5.GIÔÙI THIEÄU VEÀ JAVA SERVER PAGES(JSP) 46
2.5.1.Khaùi nieäm veà JSP 46
2.5.2.Quan heä giöõa Servlet vaø JSP 47
2.5.2.1.Caùch trình chuû bieân dòch trang JSP thaønh servlet 47
2.5.2.2. So saùnh giöõa Servlet vaø JSP 47
2.6. GIÔÙI THIEÄU VEÀ JAVABEANS 48
2.6.1.Khaùi nieäm veà JAVABEANS 48
2.6.2.Caùc theû chuaån cuûa JAVABEANS trong trang JSP 48
2.6.2.1. 48
2.6.2.2. 49
2.6.2.3. 49
2.6.3.Theâm JAVABEANS vaøo JSP 50
PHAÀN 2 : XAÂY DÖÏNG ÖÙNG DUÏNG 51
CHÖÔNG 1 PHAÂN TÍCH BAØI TOAÙN 51
1.1.TEÂN ÑEÀ TAØI 51
1.2.DEÀ CÖÔNG CHI TIEÁT 51
1.2.1.Khaûo saùt 51
1.2.2.Yeâu caàu cuûa baøi toaùn 51
1.2.3.Döõ lieäu vaøo, döõ lieäu ra vaø caùc chöùc naêng xöû lyù cuûa heä thoáng 52
1.2.4. Chöùc naêng cuûa heä thoáng thoâng tin quaûn lyù 52
1.3. LYÙ DO CHOÏN ÑEÀ TAØI 52
CHÖÔNG 2 : THIEÁT KEÁ VAØ CAØI ÑAËT ÖÙNG DUÏNG 53
2.1.PHAÂN TÍCH VAØ THEÁT KEÁ CÔ SÔÛ DÖÕ LIEÄU 53
2.1.1.Phaân tích 53
2.1.2. Giaûi thích caùc chöùc naêng cuûa heä thoáng 54
2.1.3.bieåu ñoà luoàng döõ lieäu( DFD – Data flow Diagram) 55
2.1.4. THIEÁT KEÁ HEÄ THOÁNG 55
2.1.4.1. Caùc baûng döõ lieäu chính 55
2.2. CAØI ÑAËT MAILSERVER 56
2.2.1.Phöông aùn toå chöùc löu tröõ mail treân Server 56
2.2.2.Caùc ñôn theå cuûa mailserver 57
2.2.2.1. Xaây döïng SMTP Server 57
2.2.2.2. Xaây döïng POP3 Server 70
2.3.CAØI ÑAËT MAILCLIENT 83
Moät soá giao dieän chính 88
LÔØI CAÛM ÔN
Tröôùc heát toâi xin chaân thaønh caûm ôn caùc thaày coâ giaùo khoa Ñaïi hoïc Ñaïi Cöông cuûa tröôøng Ñaïi hoïc Thuyû Saûn Nha Trang vaø khoa Coâng Ngheä Thoâng Tin tröôøng Ñaïi hoïc Baùch Khoa Haø Noäi ñaõ trang bò cho toâi nhöõng kieán thöùc cô baûn caàn thieát trong nhöõng naêm hoïc vöøa qua ñeå toâi coù theå thöïc hieän toát cuoán ñoà aùn naøy.
Em xin chaân thaønh caûm ôn thaày Vaên Theá Minh ñaõ taän tình giuùp ñôõ vaø höôùng daãn em hoaøn taát cuoán ñoà aùn naøy. Ngoaøi ra toâi cuõng xin caûm ôn taát caû baïn beø ñaõ giuùp ñôõ toâi trong suoát quaù trình thöïc hieän ñoà aùn.
Maëc duø ñaõ raát coá gaéng, nhöng trong khoaûng thôøi gian cho pheùp cuõng nhö nhöõng haïn cheá veà kieán thöùc neân cuoán ñoà aùn naøy cuûa toâi khoâng theå traùnh khoûi nhöõng thieáu soùt. Chính vì vaäy, toâi raát mong nhaän ñöôïc söï goùp yù cuûa caùc thaày coâ giaùo cuõng nhö baïn beø gaàn xa vaø nhöõng caù nhaân hay toå chöùc coù quan taâm ñeán lónh vöïc ñöôïc trình baøy trong cuoán ñoà aùn naøy.
Haø Noäi, thaùng 5 naêm 2003
Nguyeãn Xuaân Thanh
LÔØI NOÙI ÑAÀU
Ngaøy nay vôùi söï phaùt trieån maïnh meõ cuûa tin hoïc vaø coâng ngheä Internet, haàu nhö moïi ngöôøi ñeàu thaáy roõ lôïi ích maø caùc dòch vuï do maïng Internet mang laïi.
Dòch vuï thö ñieän töû goïi taét laø Email laø moät trong nhöng dòch vuï ñöôïc söû duïng nhieàu nhaát treân Internet hieän nay. Dòch vuï naøy cho pheùp caùc caù nhaân hay toå chöùc trao ñoåi thö vôùi nhau thoâng qua maïng Internet. Nhieàu ngöôøi söû duïng Internet chæ ñeå duøng dòch vuï naøy.
Thoâng thöôøng, khi söû duïng dòch vuï thö tín ñieän töû, ngöôøi söû duïng thöôøng ít khi quan taâm xem heä thoáng beân trong ñaõ thöïc hieän nhö theá naøo. Vì vaäy, hoï ( ngöôøi söû duïng) môùi chæ thaáy ñöôïc moät nöûa cuûa öùng duïng dòch vuï Email vaø phaàn öùng duïng ñoù ñöôïc goïi laø Mail Client, hay laø söû duïng dòch vuï thö tín maùy traïm.
Nhaèm muïc ñích hieåu roõ hôn veà hoaït ñoäng beân trong cuûa öùng duïng Email ôû phaàn cung caáp dòch vuï maø thöôøng ñöôïc goïi laø Mail Server, trong cuoán ñoà aùn naøy toâi xin trình baøy moät caùch cô baûn heä thoáng phuïc vuï vieäc truyeàn thö tín ñieän töû treân cô sôû tìm hieåu veà caùc moâ hình truyeàn thoâng thö tín, caùc giao thöùc truyeàn thoâng chuaån, caùc hoaït ñoäng cuûa moät heä Mail Server.
Vì thôøi gian coù haïn vaø coù raát nhieàu caùc vaán ñeà coù lieân quan, do ñoù ñoà aùn naøy chæ trình baøy nhöõng vaán ñeà cô baûn nhaát veà dòch vuï thö tín ñieän töû vaø caøi ñaët moät chöông trình mang tính thöû nghieäm do dòch vuï thö tín ñieän töû maø thoâi.
PHAÀN 1 : CÔ SÔÛ LYÙ THUYEÁT
CHÖÔNG 1 : GIÔÙI THIEÄU CHUNG VEÀ INTERNET VAØ MOÄT SOÁ GIAO THÖÙC TRUYEÀN THOÂNG TREÂN INTERNET
1.1. GIÔÙI THIEÄU CHUNG VEÀ 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 chuyÓn 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ã xuÊt xø n¨m 1969 tõ m¹ng m¸y tÝnh toµn côc ARPANET do 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 thuéc Bé Quèc 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ü thuËt chuyÓn m¹ch gãi qua m¹ng v« tuyÕn 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 cô hç trî vµ ®¶m b¶o c¸c phÇn mÒm øng dông cã thÓ chuyÓn qua l¹i trªn c¸c hä m¸y kh¸c nhau (m¸y mini, m¸y tÝnh lín vµ hiÖn nay 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 ra 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 truyÒn tin kh¸c nhau.
1.2. HOÏ GIAO THÖÙC TCP/IP
TCP/IP lµ hä cña c¸c giao thøc ®îc sö dông cho viÖc truyÒn 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 khi 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 khi 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 nhau thêng ®îc x¸c ®Þnh bëi c¸c bé cµi ®Æt cña giao thøc.
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.
TCP/IP thùc chÊt lµ mét hä giao thøc cïng lµm viÖc víi nhau ®Ó cung cÊp ph¬ng tiÖn truyÒn 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 LIEÂN MAÏ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 con thµnh liªn m¹ng ®Ó truyÒn d÷ liÖu. Vai trß cña IP t¬ng tù vai trß cña giao thøc tÇng m¹ng trong 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 khi truyÒn d÷ liÖu. §¬n vÞ d÷ liÖu dïng trong IP ®îc gäi lµ datagram, cã khu«n d¹ng chØ ra trong h×nh bªn díi.
ý nghÜa cña c¸c tham sè nh sau:
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µ 5 tõ (20 bytes).
VER
IHL
Type of Service
Total Length
Indentification
Flags
Fragment offset
Time to live
Protocol
Header Checksum
Source Address
Destination Address
Options + Padding
Data
(max: 65.535 bytes)
Type of service (8 bits): ®Æc t¶ c¸c tham sè vÒ dÞch vô, cã d¹ng cô thÓ nh sau:
Precedence
D
T
R
Reserved
trong ®ã:
Precedence (3 bits): chØ thÞ vÒ quyÒn u tiªn göi datagram, cô 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 = 0 ®é trÔ b×nh thêng
D = 1 ®é trÔ thÊp
T (Throughput) (1 bit): chØ th«ng lîng yªu cÇu
T = 0 th«ng lîng b×nh thêng
T = 1 th«ng lîng cao
R (Reliability) (1 bit): chØ ®é tin cËy yªu cÇu
R = 0 ®é tin cËy b×nh thêng
R = 1 ®é tin cËy cao
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µ Destination Address) tham sè nµy dïng ®Ó ®Þnh danh duy nhÊt cho mét datagram trong 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, cô thÓ lµ:
0
DF
MF
Bit 0: reserved - cha sö dông , lu«n lÊy gi¸ trÞ 0
Bit 1 (DF) = 0 (May Fragment)
= 1 (Don’t Fragment)
Bit 2 (MF) = 0 (Last Fragment)
= 1 (More Fragment)
Fragment Offset (13 bits): chØ vÞ trÝ cña ®o¹n (fragment) ë trong datagram, tÝnh theo ®¬n vÞ 64 bits, cã nghÜa lµ mçi ®o¹n (trõ ®o¹n cuèi 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 trong liªn m¹ng ®Ó tr¸nh t×nh tr¹ng mét datagram bÞ quÈn 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µ 1 ®¬n vÞ) khi 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 hoÆc 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 nguån.
Destination Address (32 bits): ®Þa chØ cña tr¹m ®Ých.
Options (®é dµi thay ®æi): khai b¸o c¸c options do 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 8 bits, vµ tèi ®a lµ 65535 bytes.
S¬ ®å ®Þa chØ ho¸ ®Ó ®Þnh danh c¸c tr¹m (host) trong 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 4 vïng (mçi vïng 1 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 hoÆc 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 duy 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 con (subnet) cña liªn m¹ng cã thÓ kh¸c nhau, ngêi ta chia c¸c ®Þa chØ IP thµnh 5 líp, ký hiÖu lµ A, B, C, D vµ E, víi cÊu tróc ®îc chØ ra trong h×nh bªn díi.
0 1 7 8 15 16 23 24 31
0
netid
1
0
netid
Hostid
1
1
0
netid
hostid
1
1
1
0
Multicast address
1
1
1
1
0
Reserved for future use
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 2 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 trong t¬ng lai.
VÝ dô:
00001010
00000000
00000000
00000000
10000000
00000011
00000010
00000011
11000000
00000000
00000001
11111111
Mét ®Þa chØ cã hostid (host identifier) b»ng 0 ®î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è 1 ®î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è 1 th× nã híng tíi tÊt c¶ c¸c host trong 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 con (subnet), lóc ®ã cã thÓ ®a thªm c¸c vïng subnetid ®Ó ®Þnh danh c¸c m¹ng con. Vïng subnet ®îc lÊy tõ hostid, cô thÓ ®èi víi 3 líp A, B, C nh sau (h×nh bªn díi).
Netid
Subnetid
Hostid
7 8 15 16 23 24
Netid
Subnetid
Hostid
7 8 15 16 23 24
Netid
Subnetid
Hostid
Bæ sung vïng subnetid
CÇn lu ý r»ng c¸c ®Þa chØ IP ®îc dïng ®Ó ®Þnh danh c¸c host vµ m¹ng ë tÇng m¹ng cña M« h×nh OSI, vµ chóng kh«ng ph¶i lµ c¸c ®Þa chØ vËt lý (hay ®Þa chØ MAC - Media Access Control) cña c¸c tr¹m ®ã trªn mét m¹ng côc bé (Ethernet,Token Ring...). Trªn mét m¹ng côc bé nh vËy, hai tr¹m chØ cã thÓ liªn l¹c víi nhau nÕu chóng biÕt ®Þa chØ vËt lý cña nhau. Nh vËy, vÊn ®Ò ®Æt ra lµ ph¶i thùc hiÖn ¸nh x¹ gi÷a ®Þa chØ IP (32 bits) vµ ®Þa chØ vËt lý (48 bits) cña mét tr¹m. Giao thøc ARP (Address Resolution Protocol) ®· ®îc x©y dùng ®Ó chuyÓn ®æi tõ ®Þa chØ IP sang ®Þa chØ vËt lý khi cÇn thiÕt. Ngîc l¹i, giao thøc RARP (Reverse Address Resolution Protocol) ®îc dïng ®Ó chuyÓn ®æi tõ ®Þa chØ vËt lý sang ®Þa chØ IP. Chó ý r»ng c¶ ARP vµ RARP ®Òu kh«ng ph¶i lµ bé phËn cña IP. IP sÏ dïng ®Õn chóng khi cÇn.
Mét giao thøc kh¸c còng liªn quan trùc tiÕp ®Õn IP, ®ã lµ ICMP (Internet Control Message Protocol). Giao thøc nµy thùc hiÖn truyÒn c¸c th«ng b¸o ®iÒu khiÓn (b¸o c¸o vÒ c¸c t×nh tr¹ng lçi trªn m¹ng,...) gi÷a c¸c gateway hoÆc tr¹m cña liªn m¹ng. T×nh tr¹ng lçi cã thÓ lµ: mét datagram kh«ng thÓ tíi ®îc ®Ých cña nã, hoÆc mét router kh«ng ®ñ bé nhí ®Öm ®Ó lu vµ chuyÓn mét datagram,... Mét th«ng b¸o ICMP ®îc t¹o vµ chuyÓn cho IP. IP sÏ ”bäc” (encapsulate) th«ng b¸o ®ã víi mét IP header vµ truyÒn ®Õn cho router hoÆc tr¹m ®Ých.
Chóng ta cã thÓ tãm t¾t c¸c bíc thùc hiÖn bëi mét thùc thÓ IP nh sau:
§èi víi thùc thÓ IP ë tr¹m nguån, khi nhËn ®îc mét primitive SEND tõ tÇng trªn , nã thùc hiÖn c¸c bíc sau ®©y:
T¹o mét IP datagram dùa trªn c¸c tham sè cña primitive SEND
TÝnh checksum vµ ghÐp vµo header cña datagram.
Ra quyÕt ®Þnh chän ®êng: hoÆc lµ tr¹m ®Ých n»m trªn cïng m¹ng hoÆc mét gateway sÏ ®îc chän cho chÆng tiÕp theo.
ChuyÓn datagram xuèng tÇng díi ®Ó truyÒn qua m¹ng.
§èi víi gateway, khi nhËn ®îc mét datagram qu¸ c¶nh, nã thùc hiÖn c¸c ®éng t¸c sau:
TÝnh checksum, nÕu bÊt cËp th× lo¹i bá datagram.
Gi¶m gi¸ trÞ cña tham sè Time-to-Live. NÕu thêi gian ®· hÕt th× lo¹i bá datagram.
Ra quyÕt ®Þnh chän ®êng.
Ph©n ®o¹n datagram, nÕu cÇn.
KiÕn t¹o l¹i IP header, bao gåm gi¸ trÞ míi cña c¸c vïng Time-to-Live, Fragmentation vµ Checksum.
ChuyÓn datagram xuèng tÇng díi ®Ó truyÒn qua m¹ng.
Cuèi cïng, khi mét datagram ®îc nhËn bëi thùc thÓ IP ë tr¹m ®Ých, nã sÏ thùc hiÖn c¸c c«ng viÖc sau:
TÝnh checksum. NÕu bÊt cËp th× lo¹i bá datagram.
TËp hîp c¸c ®o¹n cña datagram (nÕu cã ph©n ®o¹n).
ChuyÓn d÷ liÖu vµ c¸c tham sè ®iÒu khiÓn lªn tÇng trªn b»ng c¸ch dïng primitive DELIVER.
1.4. GIAO THÖÙC ÑIEÀU KHIEÅN TRUYEÀN TCP
Source Port
Destination Port
Sequence Number
Acknowledgment Number
Data offset
Reserved
URG
ACK
PSH
RST
SYN
FIN
Window
Checksum
Urgent Pointer
Options
Padding
TCP data
Khu«n d¹ng cña TCP segment.
TCP lµ mét giao thøc kiÓu ”cã liªn kÕt” (connection - oriented), nghÜa lµ cÇn ph¶i thiÕt lËp liªn kÕt (logic) gi÷a mét cÆp thùc thÓ TCP tríc khi chóng trao ®æi d÷ liÖu víi nhau.
§¬n vÞ d÷ liÖu sö dông trong TCP ®îc gäi lµ segment (®o¹n d÷ liÖu), cã khu«n d¹ng m« t¶ trong h×nh bªn díi.
C¸c tham sè trong khu«n d¹ng trªn cã ý nghÜa nh sau:
Source Port (16 bits): sè hiÖu cæng cña tr¹m nguån.
Destination Port (16 bits): sè hiÖu cæng cña tr¹m ®Ých.
Sequence Number (32 bits): sè hiÖu cña byte ®Çu tiªn cña segment trõ khi bit SYN ®îc thiÕt lËp. NÕu bit SYN ®îc thiÕt lËp th× Sequence Number lµ sè hiÖu tuÇn tù khëi ®Çu (ISN) vµ byte d÷ liÖu ®Çu tiªn lµ ISN+1. Tham sè nµy cã vai trß nh tham sè N(S) trong HDLC.
Acknowledgment Number (32 bits): sè hiÖu cña segment tiÕp theo mµ tr¹m nguån ®ang chê ®Ó nhËn. NgÇm ý b¸o nhËn tèt (c¸c) segment mµ tr¹m ®Ých ®· göi cho tr¹m nguån - Tham sè nµy cã vai trß nh tham sè N(R) trong HDLC.
Data offset (4 bits): sè lîng tõ - 32 bit (32 bit words) trong TCP header (tham sè nµy chØ ra vÞ trÝ b¾t ®Çu cña vïng d÷ liÖu).
Reserved (6 bits): dµnh ®Ó dïng trong t¬ng lai.
Control bits (c¸c bit ®iÒu khiÓn):
T tr¸i sang ph¶i:
URG: vïng con trá khÈn (Urgent Pointer) cã hiÖu lùc
ACK: vïng b¸o nhËn (ACK number) cã hiÖu lùc
PSH: chøc n¨ng PUSH
RST: khëi ®éng l¹i (reset) liªn kÕt
SYN: ®ång bé ho¸ c¸c sè hiÖu tuÇn tù (sequence number)
FIN: kh«ng cßn d÷ liÖu tõ tr¹m nguån
Window (16 bits): cÊp ph¸t credit ®Ó kiÓm so¸t luång d÷ liÖu (c¬ chÕ cöa sæ). §©y chÝnh lµ sè lîng c¸c byte d÷ liÖu, b¾t ®Çu tõ byte ®îc chØ ra trong vïng ACK number, mµ tr¹m nguån ®· s½n sµng ®Ó nhËn.
Checksum (16 bits): m· kiÓm so¸t lçi (theo ph¬ng ph¸p CRC) cho toµn bé segment (header + data).
Urgent Pointer (16 bits): con trá nµy trá tíi sè hiÖu tuÇn tù cña byte ®i theo sau d÷ liÖu khÈn, cho phÐp bªn nhËn biÕt ®îc ®é dµi cña d÷ liÖu khÈn. Vïng nµy chØ cã hiÖu lùc khi bit URG ®îc thiÕt lËp.
Options (®é dµi thay ®æi): khai b¸o c¸c Options cña TCP, trong ®ã cã ®é dµi tèi ®a cña vïng TCP data trong mét segment.
Padding (®é dµi thay ®æi): PhÇn chÌn thªm vµo header ®Ó b¶o ®¶m phÇn header lu«n kÕt thóc ë mét mèc 32 bits. PhÇn thªm nµy gåm toµn sè 0.
TCP data (®é dµi thay ®æi): chøa d÷ liÖu cña tÇng trªn, cã ®é dµi tèi ®a ngÇm ®Þnh lµ 536 bytes. Gi¸ trÞ nµy cã thÓ ®iÒu chØnh b»ng c¸ch khai b¸o trong vïng options.
Mét tiÕn tr×nh øng dông trong mét host truy nhËp vµo c¸c dÞch vô cña TCP cung cÊp th«ng qua mét cæng (port). Mét cæng kÕt hîp víi mét ®Þa chØ IP t¹o thµnh mét socket duy nhÊt trong liªn m¹ng. DÞch vô TCP ®îc cung cÊp nhê mét liªn kÕt logic gi÷a mét cÆp socket. Mét socket cã thÓ tham gia nhiÒu liªn kÕt víi c¸c socket ë xa kh¸c nhau. Tríc khi truyÒn d÷ liÖu gi÷a hai tr¹m cÇn ph¶i thiÕt lËp mét liªn kÕt TCP gi÷a chóng vµ khi kh«ng cßn nhu cÇu truyÒn d÷ liÖu th× liªn kÕt ®ã sÏ ®îc gi¶i phãng. Còng gièng nh ë c¸c giao thøc kh¸c, c¸c thùc thÓ ë tÇng trªn sö dông TCP th«ng qua c¸c hµm dÞch vô nguyªn thuû (service primitives), hay cßn gäi lµ c¸c lêi gäi hµm (function calls).
CHÖÔNG 2 : CÔ SÔÛ VEÀ LAÄP TRÌNH MAÏNG TREÂN MOÂ HÌNH CLIENT/SERVER
2.1. LAÄP TRÌNH GIAO TIEÁP MAÏNG VÔÙI WINDOWS SOCKETS
Windows NT lµ mét hÖ ®iÒu hµnh m¹nh, cho phÐp tËn dông tèi ®a kh¶ n¨ng cña m¸y tÝnh lo¹i 32 bit, cung øng hµng lo¹t c¸c dÞch vô m¹ng trªn m«i trêng Intranet vµ Internet. HiÖn nay Windows NT ®îc sö dông t¬ng ®èi phæ biÕn ë c¸c c¬ quan; doanh nghiÖp ViÖt Nam.
Giao thøc truyÒn th«ng TCP/IP ®· ®îc dïng bëi hÖ ®iÒu hµnh UNIX vµ m¹ng Internet, ®Ó c¸c m¸y trªn m¹ng NT cã thÓ giao tiÕp víi c¸c m¸y trªn m¹ng kh¸c, Windows NT còng cung cÊp giao thøc nµy. Ngoµi mét sè lÖnh dïng giao thøc TCP/IP ®· ®îc viÕt s½n nh: ftp, telnet, finger..., Windows NT cho phÐp ngêi lËp tr×nh ph¸t triÓn c¸c øng dông khai th¸c kü thuËt TCP/IP th«ng qua mét th viÖn tªn lµ Windows Sockets.
Cã ba lý do chÝnh ®Ó ngêi lËp tr×nh sö dông kü thuËt TCP/IP:
( Cã thÓ viÕt c¸c øng dông trªn Windows NT ®Ó nèi vµo m¹ng UNIX vµ khai th¸c c¸c dÞch vô cã s½n trªn ®ã.
( T¹o ra c¸c dÞch vô trªn m¸y Windows NT ®Ó c¸c m¸y UNIX cã thÓ khai th¸c nh÷ng dÞch vô nµy.
( ViÕt c¸c ch¬ng tr×nh cho phÐp c¸c m¸y Windows NT giao tiÕp trªn hÖ thèng m¹ng Internet.
2.2. MOÄT SOÁ KHAÙI NIEÄM CÔ BAÛN
2.2.1.Ñòa chæ Internet
Trong hÖ thèng m¹ng Internet, mçi m¸y ®Òu cã mét tªn vµ mét ®Þa chØ IP (còng gäi lµ ®Þa chØ Internet). VÝ dô nh, mét m¸y NT cã tªn lµ ntsvr.csc.hcmu.vn vµ ®Þa chØ lµ 192.48.94.200. Tªn hay ®Þa chØ IP ®Òu x¸c ®Þnh duy nhÊt mét m¸y trong hÖ thèng m¹ng Internet. Khi lËp tr×nh, chóng ta cã c¸c hµm ®Ó chuyÓn ®æi tõ tªn sang ®Þa chØ IP vµ ngîc l¹i.
2.2.2. Khaùi nieäm socket vaø port
Mét socket lµ mét thiÕt bÞ truyÒn th«ng hai chiÒu t¬ng tù nh tËp tin, chóng ta cã thÓ ®äc hay ghi lªn nã, tuy nhiªn mçi socket lµ mét thµnh phÇn trong mét mèi nèi nµo ®ã gi÷a c¸c m¸y trªn m¹ng m¸y tÝnh vµ c¸c thao t¸c ®äc/ghi chÝnh lµ sù trao ®æi d÷ liÖu gi÷a c¸c øng dông trªn nhiÒu m¸y kh¸c nhau.
Trong giao thøc truyÒn th«ng TCP, mçi mèi nèi gi÷a hai m¸y tÝnh ®îc x¸c ®Þnh bëi mét port, kh¸i niÖm port ë ®©y kh«ng ph¶i lµ mét cæng giao tiÕp trªn thiÕt bÞ vËt lý mµ chØ lµ mét kh¸i niÖm logic trong c¸ch nh×n cña ngêi lËp tr×nh, mçi port ®îc t¬ng øng víi mét sè nguyªn d¬ng.
H×nh bªn díi minh häa c¸ch giao tiÕp gi÷a hai m¸y tÝnh trong giao thøc truyÒn th«ng TCP. M¸y A t¹o ra mét socket vµ kÕt buéc (bind) socket nµy víi port X (tøc lµ mét sè nguyªn d¬ng cã ý nghÜa côc bé 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.
2.3. CAÙCH CAØI ÑAËT ÖÙNG DUÏNG CLIENT/SERVER TCP
2.3.1. Caùch caøi ñaët server TCP
øng dông server lµm viÖc theo qui tr×nh sau ®©y:
Gäi hµm socket ®Ó t¹o mét socket.