Tải bản đầy đủ (.pdf) (145 trang)

đồ án xây dựng webmail

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (889.48 KB, 145 trang )

Đồ án tốt nghiệp

Sinh viên thực hiện Nguyễn Xuân Thanh Trang 1




Đề tài:
“Xây dựng ứng dụng Webmail”
Đồ án tốt nghiệp

Sinh viên thực hiện Nguyễn Xuân Thanh Trang 2

MỤC LỤC

PHẦN 1 : CƠ SỞ LÝ THUYẾT 9
CHƯƠNG 1 : GIỚI THIỆU CHUNG VỀ INTERNET VÀ
MỘT SỐ GIAO THỨC TRUYỀN THÔNG TRÊN INTERNET
10
1.1. GIỚI THIỆU CHUNG VỀ INTERNET 10
1.2. HỌ GIAO THỨC TCP/IP 11
1.3. GIAO THỨC LIÊN MẠNG IP 12
1.4. GIAO THỨC ĐIỀU KHIỂN TRUYỀN TCP 19
CHƯƠNG 2 : CƠ SỞ VỀ LẬP TRÌNH MẠNG TRÊN MÔ
HÌNH CLIENT/SERVER 21
2.1. LẬP TRÌNH GIAO TIẾP MẠNG VỚI WINDOWS SOCKETS 21
2.2. MỘT SỐ KHÁI NIỆM CƠ BẢN 22
2.2.1.Địa chỉ Internet 22
2.2.2. Khái niệm socket và port 22
2.3. CÁCH CÀI ĐẶT ỨNG DỤNG CLIENT/SERVER TCP 23
2.3.1. Cách cài đặt server TCP 24


2.3.2. Cách cài đặt client TCP 24
CHƯƠNG 3 : MỘT SỐ KHÁI NIỆM LIÊN QUAN ĐẾN THƯ
ĐIỆN TỬ 26
1.1. MAILSERVER 26
1.2. GIAO THỨC GỬI MAIL (MAIL TRANSPORT PROTOCOL) 26
Đồ án tốt nghiệp

Sinh viên thực hiện Nguyễn Xuân Thanh Trang 3
1.3.GIỚI THIỆU KIẾN TRÚC DỊCH VỤ THƯ ĐIỆN TỬ 27
1.3.1. Kiến trúc và các dịch vụ 27
1.3.2. Tác nhân người sử dụng (The User Agent) 30
1.3.2.1.Gửi thư (Sending Email) 30
1.3.2.2. Đọc thư (Reading Email) 31
1.3.2.3.Định dạng thông điệp (Message Formats) 32
1.3.2.4.Chuẩn RFC 822 33
1.4.PHÂN TÍCH CẤU TRÚC THƯ ĐIỆN TỬ, CÁC GIAO THỨC SMTP VÀ
POP3 36
1.4.1.Phân tích cấu trúc thư điện tử (RFC 822) 36
1.4.1.1. Giới thiệu 36
1.4.1.2. Mô tả về cấu trúc thư 37
1.4.2. Định nghĩa về các trường Header 39
1.4.3. Các trường header điển hình 39
1.4.4. Ví dụ về cấu trúc thư 41
1.5. PHÂN TÍCH GIAO THỨC SMTP (RFC 821) 42
1.5.1. Giới thiệu chung 42
1.5.2. Mô hình hoạt động phiên giao dịch 43
1.5.3. Thủ tục Mail 45
1.5.4. Thủ tục Forwarding 48
1.5.5. Các thủ tục Mailing và Sending 49
1.5.6. Các thủ tục Opening và Closing 51

1.5.7. Mã trả lời của các câu lệnh SMTP 52
1.6. PHÂN TÍCH GIAO THỨC POP3 (RFC 1081,1082) 53
1.6.1. Giới thiệu 54
1.6.2. Mô hình hoạt động phiên giao dịch 54
Đồ án tốt nghiệp

Sinh viên thực hiện Nguyễn Xuân Thanh Trang 4
1.6.3. Trạng thái AUTHORIZATION 56
1.6.4. Trạng thái TRANSACTION 59
1.6.5. Trạng thái UPDATE 64
1.6.6. Ví dụ về một phiên giao dịch POP3 65
1.7. MIME (MULTIPURPOSE INTERNET MAIL EXTENSIONS) 67
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) 69
1.9.MAIL CLIENT, WEB MAIL 70
CHƯƠNG 4 : GIỚI THIỆU VỀ CÁC CÔNG NGHỆ LIÊN
QUAN 70
2.1.GIỚI THIỆU VỀ JRUN WEBSERVER 3.1 70
2.2.GIỚI THIỆU VỀ SQL SERVER 7.0 71
2.2.1. Lý thuyết hệ quản trị cơ sở dữ liệu sql server 7.0 và Cấu trúc cơ sở
dữ liệu của sql server 7.0 71
2.2.2. Cấu trúc cơ sở dữ liệu vật lý: 72
2.2.2.1. Trang (page): 72
2.2.2.2 .Extent: 73
2.2.2.3 Những loại file trong CSDL:SQL Server có 3 loại file: 73
2.3. LÝ THUYẾT MÔ HÌNH QUAN HỆ 74
2. 3.1. Các khái niệm cơ bản 74
2.3.2. Khái Niệm phụ thuộc dữ liệu và các dạng chuẩn 74
2.3.3 Khái niệm chỉ dẫn và khóa chỉ dẫn 75
2.4.GIỚI THIỆU VỀ JAVA SERVLET 75

2.4.1.Khái niệm về JAVA SERVLET 75
2.4.2.Những ứng dụng thực tế của JAVA SERVLET và kiến trúc của
JAVA SERVLET 76
Đồ án tốt nghiệp

Sinh viên thực hiện Nguyễn Xuân Thanh Trang 5
2.5.GIỚI THIỆU VỀ JAVA SERVER PAGES(JSP) 76
2.5.1.Khái niệm về JSP 76
2.5.2.Quan hệ giữa Servlet và JSP 77
2.5.2.1.Cách trình chủ biên dịch trang JSP thành servlet 77
2.5.2.2. So sánh giữa Servlet và JSP 77
2.6. GIỚI THIỆU VỀ JAVABEANS 78
2.6.1.Khái niệm về JAVABEANS 78
2.6.2.Các thẻ chuẩn của JAVABEANS trong trang JSP 79
2.6.2.1.<jsp:useBean> 79
2.6.2.2.<jsp:setProperty> 80
2.6.2.3. <jsp:getProperty> 81
2.6.3.Thêm JAVABEANS vào JSP 81
PHẦN 2 : XÂY DỰNG ỨNG DỤNG 83
CHƯƠNG 1 PHÂN TÍCH BÀI TOÁN 83
1.1.TÊN ĐỀ TÀI 83
1.2.DỀ CƯƠNG CHI TIẾT 83
1.2.1.Khảo sát 83
1.2.2.Yêu cầu của bài toán 83
1.2.3.Dữ liệu vào, dữ liệu ra và các chức năng xử lý của hệ thống 84
1.2.4. Chức năng của hệ thống thông tin quản lý 85
1.3. LÝ DO CHỌN ĐỀ TÀI 85
CHƯƠNG 2 : THIẾT KẾ VÀ CÀI ĐẶT ỨNG DỤNG 86
2.1.PHÂN TÍCH VÀ THẾT KẾ CƠ SỞ DỮ LIỆU 86
2.1.1.Phân tích 86

2.1.2. Giải thích các chức năng của hệ thống 88
Đồ án tốt nghiệp

Sinh viên thực hiện Nguyễn Xuân Thanh Trang 6
2.1.3.biểu đồ luồng dữ liệu( DFD – Data flow Diagram) 89
2.1.4. THIẾT KẾ HỆ THỐNG 89
2.1.4.1. Các bảng dữ liệu chính 89
2.2. CÀI ĐẶT MAILSERVER 91
2.2.1.Phương án tổ chức lưu trữ mail trên Server 91
2.2.2.Các đơn thể của mailserver 92
2.2.2.1. Xây dựng SMTP Server 93
2.2.2.2. Xây dựng POP3 Server 114
2.3.CÀI ĐẶT MAILCLIENT 136
Một số giao diện chính 142







LỜI CẢM ƠN

Trước hết tôi xin chân thành cảm ơn các thầy cô giáo khoa Đại học
Đại Cương của trường Đại học Thuỷ Sản Nha Trang và khoa Công Nghệ
Thông Tin trường Đại học Bách Khoa Hà Nội đã trang bị cho tôi những
kiến thức cơ bản cần thiết trong những năm học vừa qua để tôi có thể thực
hiện tốt cuốn đồ án này.
Đồ án tốt nghiệp


Sinh viên thực hiện Nguyễn Xuân Thanh Trang 7
Em xin chân thành cảm ơn thầy Văn Thế Minh đã tận tình giúp đỡ và
hướng dẫn em hoàn tất cuốn đồ án này. Ngoài ra tôi cũng xin cảm ơn tất cả
bạn bè đã giúp đỡ tôi trong suốt quá trình thực hiện đồ án.
Mặc dù đã rất cố gắng, nhưng trong khoảng thời gian cho phép cũng
như những hạn chế về kiến thức nên cuốn đồ án này của tôi không thể
tránh khỏi những thiếu sót. Chính vì vậy, tôi rất mong nhận được sự góp ý
của các thầy cô giáo cũng như bạn bè gần xa và những cá nhân hay tổ chức
có quan tâm đến lĩnh vực được trình bày trong cuốn đồ án này.


Hà Nội, tháng 5 năm
2003
Nguyễn Xuân Thanh













Đồ án tốt nghiệp

Sinh viên thực hiện Nguyễn Xuân Thanh Trang 8








LỜI NÓI ĐẦU

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.

Đồ án tốt nghiệp

Sinh viên thực hiện Nguyễn Xuân Thanh Trang 9
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.

Vì thời gian có hạn và có rất nhiều các vấn đề có liên quan, do đó đồ
án này chỉ trình bày những vấn đề cơ bản nhất về dịch vụ thư tín điện tử và
cài đặt một chương trình mang tính thử nghiệm do dịch vụ thư tín điện tử
mà thôi.










PHẦN 1 : CƠ SỞ LÝ THUYẾT

Đồ án tốt nghiệp

Sinh viên thực hiện Nguyễn Xuân Thanh Trang 10
CHƯƠNG 1 : 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 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ó:
Đồ án tốt nghiệp

Sinh viên thực hiện Nguyễn Xuân Thanh Trang 11
 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. HỌ 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.
Đồ án tốt nghiệp

Sinh viên thực hiện Nguyễn Xuân Thanh Trang 12

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 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 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

TCP/IP Protocol Suite

OSI Model
Layers
Application
Layer

Presentation
Layer
Session
Layer
Transport
Layer
Network
Layer
Data Link
Layer
Physical
Layer
TCP/IP Protocol
Architecture
Layers
Application
Layer

Host

-
to
-
Host
Transport
Layer
Internet
Layer
Network
Interface
Layer

Telnet

FTP

SMTP

DNS

RIP

SNMP


TCP

UDP
IP
ARP


IGMP

ICMP

Ethernet
Token
Ring

Frame
Relay

ATM

So sánh các kiến trúc ISO và TCP/IP
Đồ án tốt nghiệp

Sinh viên thực hiện Nguyễn Xuân Thanh Trang 13
0 1 2 3 4 5 6 7

 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).

VE
R
IH
L
Type of Service Total Length
Indentification Fla
gs

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:

Precedenc
e
D
T
R
Reser
ved
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

Header


0 3 4 7 8 15 16 31
Khuôn d
ạng của IP datagram

Đồ án tốt nghiệp

Sinh viên thực hiện Nguyễn Xuân Thanh Trang 14
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

D
F

M
F



Bit 0: reserved - chưa 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

0 1 2

Đồ án tốt nghiệp

Sinh viên thực hiện Nguyễn Xuân Thanh Trang 15
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
netid

netid Hostid

netid hostid
hostid


Lớp A

Lớp B

Lớp C

Lớp D

Lớp E

Đồ án tốt nghiệp

Sinh viên thực hiện Nguyễn Xuân Thanh Trang 16


Multicast address

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ụ:
00001
010
00000
000
00000
000
00000
000

10000
000
00000
011
00000
010
00000

011

11000
000
00000
000
00000
001
11111
111


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
= 10.0.0.0 (Líp A)
netid = 10
= 128.3.2.3 (Líp B)
netid = 128.3
hostid = 2.3
= 192.0.1.255 (Lớp C)
netid = 192.0.1
hostid = 255 hướng đến tất cả các host
Đồ án tốt nghiệp

Sinh viên thực hiện Nguyễn Xuân Thanh Trang 17
0

0

31


31

(Lớp A)

(Lớp B)

(Lớp C)

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 Subn
etid
Host
id

Bổ sung vùng subnetid
Cần lưu ý 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
Đồ án tốt nghiệp

Sinh viên thực hiện Nguyễn Xuân Thanh Trang 18
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 để lưu 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:
1. Tạo một IP datagram dựa trên các tham số của primitive SEND
2. Tính checksum và ghép vào header của datagram.
3. 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.
4. 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:
1. Tính checksum, nếu bất cập thì loại bỏ datagram.
2. Giảm giá trị của tham số Time-to-Live. Nếu thời gian đã hết thì loại bỏ

datagram.
3. Ra quyết định chọn đường.
4. Phân đoạn datagram, nếu cần.
5. 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.
6. 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:
1. Tính checksum. Nếu bất cập thì loại bỏ datagram.
2. Tập hợp các đoạn của datagram (nếu có phân đoạn).
Đồ án tốt nghiệp

Sinh viên thực hiện Nguyễn Xuân Thanh Trang 19
3. 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 ĐIỀU KHIỂN TRUYỀN TCP


Source Port Destination Port
Sequence Number
Acknowledgment Number
D
a
t
a
o
f
f
s
e

t
Reser
ved
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:
bit 0 15 16 31

Đồ án tốt nghiệp

Sinh viên thực hiện Nguyễn Xuân Thanh Trang 20
 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).
Đồ án tốt nghiệp

Sinh viên thực hiện Nguyễn Xuân Thanh Trang 21
 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Ở VỀ LẬP TRÌNH MẠNG TRÊN MÔ
HÌNH CLIENT/SERVER

2.1. LẬP TRÌNH GIAO TIẾP MẠ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à
Đồ án tốt nghiệp

Sinh viên thực hiện Nguyễn Xuân Thanh Trang 22
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. MỘT SỐ KHÁI NIỆM CƠ BẢ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. Khái niệm socket và port

Đồ án tốt nghiệp

Sinh viên thực hiện Nguyễn Xuân Thanh Trang 23
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. CÁCH CÀI ĐẶT ỨNG DỤNG CLIENT/SERVER TCP

socket

socket


MÁY A

MÁY B


Port

Hệ thống mạng


Các socket và port trong mối nối TCP
M
ối nối

Đồ án tốt nghiệp

Sinh viên thực hiện Nguyễn Xuân Thanh Trang 24
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 buộc socket với một port, đối với mỗi giao thức ứng chuẩn thì
sẽ có một hằng số được định nghĩa sẵn trong Winsock cho port của giao thức đó.
3. Gọi hàm listen để chờ đến khi có một client nối vào port.
4. Khi có một client nối vào thì hàm listen trả điều khiển về, ứng dụng server gọi
hàm accept để xác nhận mối nối của client.
5. Gọi các hàm gửi hay nhận dữ liệu để trao đổi thông tin với client, ví dụ như hàm
send, recv.
Sau khi đã hoàn tất quá trình trao đổi dữ liệu, ứng dụng server gọi hàm closesocket để
đóng socket đã tạo.

2.3.2. Cách cài đặt client TCP

ứng dụng client thực hiện các bước sau:
1. Gọi hàm socket để tạo một socket.
2. Gọi hàm connect để nối vào server.
3. Gọi các hàm gửi hay nhận dữ liệu để trao đổi thông tin với server, ví dụ như
các hàm send, recv.
4. Sau khi đã hoàn tất quá trình trao đổi dữ liệu, ứng dụng client gọi hàm
closesocket để đóng socket đã tạo.

Hình minh họa các bước cần thiết để các ứng dụng client và server giao tiếp
với nhau như sau:

Đồ án tốt nghiệp

Sinh viên thực hiện Nguyễn Xuân Thanh Trang 25
ứng dụng Server

ứng dụng Client


Nối vào port của
server
Tạo một socket

Kết buộc socket
với một port (bind)
Đ
ặt socket ở trạng
thái ch
ờ client nối
vào

Ch
ấp nhận kết nối
c
ủa client

Chuy
ển

đ
ổi dữ liệu giữa client v
à server

Tạo một socket
Các b
ư
ớc giao tiếp giữa client v
à

server trong giao th
ức TCP






















Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×