Tải bản đầy đủ (.docx) (25 trang)

Bài tập lớn lập trình mạng đề tài xây ứng dụng chat client – server trong mạng lan

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 (610.8 KB, 25 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN TOÁN ỨNG DỤNG VÀ TIN HỌC
Bài Tập Lớn Lập Trình Mạng
ĐỀ TÀI
Xây ứng dụng Chat
Client – Server trong mạng Lan
Giáo viên hướng dẫn: Ths Nguyễn Tuấn Dũng
Nhóm SV thực hiện:
Nguyễn Huy Anh Toán tin 1K53 Mssv: 2008 6310
Khúc Tuấn Vũ Toán tin 1K53 Msss: 2008 3196
Lê Hồng Nhật Toán tin 1K53 Mssv: 2008 1928
Ứng dụng Chat Client-Server trong mạng Lan
Mục Lục
2
Ứng dụng Chat Client-Server trong mạng Lan
PHẦN I: GIAO THỨC TCP / IP
1.1 Tổng quan
Giao thức TCP/IP được phát triển từ mạng ARPANET và Internet và
được dùng như giao thức mạng và giao vận trên tầng mạng Internet. TCP
(Transmission Control Protocol) là giao thức thuộc tầng giao vận và IP (Internet
Protocol) là giao thức thuộc tầng mạng của mô hình OSI. Họ giao thức TCP/IP
hiện nay là giao thức được sử dụng rộng rãi nhất để liên kết các máy tính và các
mạng.
Hiện nay các máy tính của hầu hết các mạng có thể sử dụng giao thức TCP/IP
để liên kết với nhau thông qua hệ thống mạng với kỹ thuật khác nhau. Giao thức
TCP/IP thực chất là một họ giao thức cho phép các hệ thống mạng cùng làm
việc với nhau thông qua việc cung cấp các phương tiện truyền thông liên mạng.
1.2 Các tầng của mô hình tham chiếu TCP/IP
Bộ quốc phòng Mỹ gọi tắt là DoD (Department of Defense) đã tạo ra mô
hình tham chiếu TCP/IP vì muốn một mạng có thể tồn tại trong bất cứ điều kiện
nào. DoD muốn các gói dữ liệu xuyên suốt mạng vào mọi lúc, dưới bất cứ điều


kiện nào, từ bất cứ một điểm đến một điểm khác. Đây là một bài toán thiết kế
cực kỳ khó khăn mà từ đó đã làm nảy sinh mô hình TCP/IP, vì vậy đã trở thành
chuẩn Internet để phát triển.
3
Ứng dụng Chat Client-Server trong mạng Lan
Tầng ứng dụng
Các nhà thiết kế TCP/IP cảm thấy rằng các giao thức mức cao nên bao
gồm các tầng trình bày và tầng phiên. Để đơn giản, họ tạo ra một tầng ứng dụng
kiểm soát các giao thức mức cao, các vấn đề của tầng Trình diễn, mã hóa và
điều khiển hội thoại. TCP/IP tập hợp tất cả các vấn đề liên quan đến ứng dụng
vào trong một tầng, và đảm bảo dữ liệu được đóng gói một cách thích hợp cho
tầng kế tiếp.
Tầng giao vận
Tầng vận chuyển đề cập đến các vấn đề chất lượng dịch vụ như độ tin
cậy, điều khiển luồng và sửa lỗi. Một trong các giao thức của nó là TCP, TCP
cung cấp các phương thức linh hoạt và hiệu quả để thực hiện các hoạt động
truyền dữ liệu tin cậy, hiệu suất cao và ít lỗi. TCP là giao thức có tạo cầu nối
(connection – oriented). Nó tiến hành hội thoại giữa nguồn và đích trong khi
bọc thông tin tầng ứng dụng thành các đơn vị gọi là segment. Tạo cầu nối không
có nghĩa là tồn tại một mạch thực giữa hai máy tính, thay vì vậy nó có nghĩa là
các segment của tầng 4 di chuyển tới và lui giữa hai host để công nhận kết nối
tồn tại một cách luận lý trong một khoảng thời gian nào đó. Điều này coi như
chuyển mạch gói (packet switching).
Tầng Internet
4
Ứng dụng Chat Client-Server trong mạng Lan
Mục tiêu của tầng Internet là truyển các gói tin bắt nguồn từ bất kỳ mạng
nào trên liên mạng và đến được đích trong điều kiện độc lập với đường dẫn và
các mạng mà chúng đã trải qua. Giao thức đặc trưng khống chế tầng này được
gọi là IP. Công việc xác định đường dẫn tốt nhất và hoạt động chuyển mạch gói

diễn ra tại tầng này.
Tầng truy xuất mạng
Tên của tầng này có nghĩa khá rộng. Nó cũng được gọi là tầng host – to –
network. Nó là tầng liên quan đến tất cả các vấn đề mà một gói tin IP yêu cầu để
tạo một liên kết vật lý thực sự, và sau đó tạo một liên kết vật lý khác. Nó bao
gồm các chi tiết kỹ thuật LAN và WAN, và tất cả các chi tiết trong tầng liên kết
dữ liệu cũng như tầng vật lý của mô hình OSI.
Mô hình OSI hướng đến tối đã độ linh hoạt tại tầng ứng dụng cho người
phát triển phần mềm. Tầng vận chuyển liên quan đến hai giao thức TCP và UDP
(User Datagram Protocol). Tầng cuối cùng, tầng truy xuất mạng liên kết các kỹ
thuật LAN hay WAN đang được sử dụng.
Trong mô hình TCP/IP không cần quan tâm đến ứng dụng nào yêu cầu
các dịch vụ mạng, và không cần quan tâm đến giao thức vận chuyển nào đang
được dùng, chỉ có một giao thức mạng IP. Đây là một quyết định thiết kế được
cân nhắc rất kỹ. IP phục vụ như một giao thức đa năng cho phép bất kỳ máy tính
nào, ở bất cứ đâu, truyền dữ liệu vào bất cứ thời điểm nào.
1.3 Họ giao thức TCP/IP
Bao gồm hai phần chính:
• Các giao thức tạo thành hệ thống truyền dẫn.
• Các giao thức hỗ trợ ứng dụng.
5
Ứng dụng Chat Client-Server trong mạng Lan
Tầng liên mạng (Internet)
• Sử dụng giao thức connectionless – IP, là hạt nhân hoạt động của hệ
thống truyền dẫn Internet.
• Các thuật toán định tuyến RIP, OSFD, BGP
• Cho phép kết nối một cách mềm dẻo và linh hoạt các loại mạng “vật lý”
khác nhau; như: Ethernet, Token Ring, X25 v.v. dựa trên địa chỉ IP.
Tầng giao vận (Transport)
• TCP là giao thức hướng liên kết (connection – oriented)

• UDP là giao thức không hướng liên kết (connectionless)
6
Ứng dụng Chat Client-Server trong mạng Lan
1.4 Định danh trên Internet và quan hệ với các tầng
Địa chỉ dùng trong tầng liên kết dữ liệu:
• Địa chỉ vật lý / địa chị MAC
o Sử dụng trong tầng liên kết dữ liệu
o Cố định trên NIC
o Sử dụng để địa chỉ hóa máy tính trong các mạng quảng bá
Địa chỉ dùng trên Internet
• Địa chỉ IP
• Dùng trong giao thức IP (tầng mạng)
• Giá trị phụ thuộc từng mạng, mỗi card được gán một địa chỉ IP
• Sử dụng để định danh một máy tính trong một mạng IP, ví dụ:
o 133.113.215.10 (IPv4)
o 2001:200:0:8803::53 (IPv6)
Địa chỉ sử dụng trong tầng giao vận
7
Ứng dụng Chat Client-Server trong mạng Lan
• Số hiệu cổng
o Một chỉ số phụ, dùng kèm theo địa chỉ IP
o Các ứng dụng được định danh bởi một địa chỉ IP và một số hiệu
cổng
• Ví dụ: HTTP cổng 80, FTP cổng 20, 21…
1.5 Khuôn dạng gói tin
• Phần đầu gói tin IP
o Phiên bản giao thức (4 bits)
 IPv4
 IPv6
o Độ dài phần đầu (4 bits)

 Tính theo từ (4 bytes)
 Min: 5
 Max: 60
o DS (Differentiated Service: 8 bits)
 Được sử dụng trong quản lý QoS
o Độ dài toàn bộ, tính cả phần đầu (16 bits)
 Tính theo bytes
 Max: 65536
o ID – Số hiệu gói tin
 Dùng để xác định chuỗi các gói tin bị phân mảnh
o Flag – Cờ
o Fragmentation offset – vị trí gói tin phân mảnh trong gói tin ban
đầu
o TTL, 8 bits – Thời gian sống
 Độ dài đường đi gói tin có thể đi qua
 Max: 255
 Router giảm TTL đi 1 đơn vị khi xử lý
 Gói tin bị hủy nếu TTL = 0
o Protocol – Giao thức tầng trên
 Giao thức tầng giao vận (TCP, UDP,…)
 Các giao thức tầng mạng khác (ICMP, IGMP, OSPF)
o Checksum – kiểm tra lỗi
o Địa chỉ IP nguồn
 32 bit, địa chỉ của trạm gửi
o Địa chỉ IP đích
 32 bit, địa chỉ của trạm đích
8
Ứng dụng Chat Client-Server trong mạng Lan
• Khuôn dạng bức tin (với giao thức UDP)
o Source port – 16 bits

o Dest port – 16 bits
o Độ dài toàn bộ bức tin (tính theo bytes) – 16 bits
o Checksum: kiểm soát lỗi – 16 bits
9
Ứng dụng Chat Client-Server trong mạng Lan
• Phần đầu gói tin IP
o Source port – 16 bits
o Dest port – 16 bits
o Sequence number – 4 bytes
 Được sử dụng để truyền dữ liệu tin cậy
o ACK – 4 bytes
 Được sử dụng để truyền dữ liệu tin cậy
10
Ứng dụng Chat Client-Server trong mạng Lan
PHẦN II Giới
thiệu mô hình Client – Server
2.1 Mô hình Client – Server và một số khả năng ứng dụng.
Mô hình chuẩn cho các ứng dụng trên mạng là mô hình client-server. Trong mô
hình này máy tính đóng vai trò là một client là máy tính có nhu cầu cần phục vụ
dịch vụ và máy tính đóng vai trò là một server là máy tính có thể đáp ứng được
các yêu cầu về dịch vụ đó từ các client. Khái niệm client-server chỉ mang tính
tương đối, điều này có nghĩa là một máy có thể lúc này đóng vai trò là client và
lúc khác lại đóng vai trò là server. Nhìn chung, client là một máy tính cá nhân,
còn các Server là các máy tính có cấu hình mạnh có chứa các cơ sở dữ liệu và
các chương tŕnh ứng dụng để phục vụ một dịch vụ nào đấy từ các yêu cầu của
client.
11
Ứng dụng Chat Client-Server trong mạng Lan
Cách thức hoạt động của mô hình client-server như sau: một tiến tŕnh trên
server khởi tạo luôn ở trạng thái chờ yêu cầu từ các tiến trình client tiến trình tại

client được khởi tạo có thể trên cùng hệ thống hoặc trên các hệ thống khác được
kết nối thông qua mạng, tiến trình client thường được khởi tạo bởi các lệnh từ
người dùng. Tiến trình client ra yêu cầu và gửi chúng qua mạng tới server để
yêu cầu được phục vụ các dịch vụ. Tiến tŕnh trên server thực hiện việc xác định
yêu cầu hợp lệ từ client sau đó phục vụ và trả kết quả tới client và tiếp tục chờ
đợi các yêu cầu khác. Một số kiểu dịch vụ mà server có thể cung cấp như: dịch
vụ về thời gian (trả yêu cầu thông tin về thời gian tới client), dịch vụ in ấn (phục
vụ yêu cầu in tại client), dịch vụ file (gửi, nhận và các thao tác về file cho
client), thi hành các lệnh từ client trên server Dịch vụ web là một dịch vụ cơ
bản trên mạng Internet hoạt động theo mô hình client-server. Tŕnh duyệt Web
(Internet Explorer, Netscape ) trên các máy client sử dụng giao thức TCP/IP để
đưa ra các yêu cầu HTTP tới máy server. Tŕnh duyệt có thể đưa ra các yêu cầu
một trang web cụ thể hay yêu cầu thông tin trong các cơ sở dữ liệu. Máy server
sử dụng phần mềm của nó phân tích các yêu cầu từ các gói tin nhận được kiểm
tra tính hợp lệ của client và thực hiện phục vụ các yêu cầu đó cụ thể là gửi trả
lại client một trang web cụ thể hay các thông tin trên cơ sở dữ liệu dưới dạng
một trang web. Server là nơi lưu trữ nội dung thông tin các website, phần mềm
trên server cho phép server xác định được trang cần yêu cầu và gửi tới client.
Cơ sở dữ liệu và các ứng dụng tương tự khác trên máy chủ được khai thác và
kết nối qua các chương tŕnh như CGI (Common Gateway Interface), khi các máy
server nhận được yêu cầu về tra cứu trong cơ sở dữ liệu , nó chuyển yêu cầu tới
server có chứa cơ sở dữ liệu hoặc ứng dụng để xử lư qua CGI.
2.2 Socket
Một kết nối được định nghĩa như là một liên kết truyền thông giữa các tiến
trình, như vậy để xác định một kết nối cần phải xác định các thành phần sau:
{Protocol, local addr, local-process, remote-addr, remote-process}.
12
Ứng dụng Chat Client-Server trong mạng Lan
Trong đó local-addr và remote-addr là địa chỉ của các máy địa phương và máy
từ xa. local-process, remote-process để xác định vị trí tiến trình trên mỗi hệ

thống. Chúng ta định nghĩa một nửa kết nối là {Protocol, local-addr, local-
process} và {Protocol, remote-addr, remote-process} hay còn gọi là một socket.

Chúng ta đă biết để xác đinh một máy ta dựa vào địa chỉ IP của nó, nhưng trên
một máy có vô số các tiến tŕnh ứng dụng đang chạy, để xác định vị trí các tiến
trình ứng dụng này người ta định danh cho mỗi tiến trình một số hiệu cổng, giao
thức TCP sử dụng 16 bit cho việc định danh các cổng tiến trình và qui ước số
hiệu cổng từ 1-1023 được sử dụng cho các tiến tŕnh chuẩn (như FTP qui ước sử
dụng cổng 21, dịch vụ WEB qui ước cổng 80, dịch vụ gửi thư SMTP cổng 25 )
số hiệu cổng từ 1024- 65535 dành cho các ứng dụng của người dùng. Như vậy
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. Một kết nối 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 kết thúc phiên truyền dữ liệu th́ liên kết đó sẽ được giải phóng.
13
Ứng dụng Chat Client-Server trong mạng Lan
Quá tŕnh thiết lập một socket với các lời gọi hệ thống được mô tả như sau:
server thiết lập một socket với các thông số đặc tả các thủ tục truyền thông như
(TCP, UDP, XNS ) và các kiểu truyền thông (SOCK_STREAM,
SOCK_DGRAM ), sau đó liên kết tới socket này các thông số về địa chỉ như
IP và các cổng TCP/UDP sau đó server ở chế độ chờ và chấp nhận kết nối đến
từ client.
2.3 Giới thiệu Multicast
Multicast: gửi một gói tin tới một nhóm địa chỉ một cách đồng thời.
Root multicast: một thành viên đóng vai trò là root phát tán thông tin tới các
lá, root truyền thông tin đồng thời tới các lá, lá chỉ truyền thông tin về root mà
không thể truyền thông tin sang lá khác
Non root multicast: tất cả các thành viên là các lá, lá truyền thông tin
tới tất cả các lá khác.

14
Ứng dụng Chat Client-Server trong mạng Lan
Multicast group: là một địa chỉ, tương tự như địa chỉ của một Host, nhận diện
như địa chỉ máy đích một cách logic, hoặc một nhóm. Các hosts (thuộc hay
không thuộc nhóm) có thể gửi dữ liệu cho nhóm, tham gia hay rời bỏ nhóm.
Địa chỉ Multicast:
- Miêu tả trong RFC 1112
- sử dụng IGMP(Internet Group Multicasting Protocol)
- sử dụng lớp D của địa chỉ IP: từ 224.0.0.0 đến
239.255.255.255. Mỗi địa chỉ IP trong khoảng này đại diện
cho một nhóm multicast.
- một địa chỉ IP trong nhóm multicast được sử dụng chung cho
tất cả các thành viên của nhóm để gửi và nhận dữ liệu.
Phần III Thiết kế chương trình Chat
3.1 Các chứ năng trong chương trình
a) các chức năng bên client
15
Client
Ứng dụng Chat Client-Server trong mạng Lan
b) Các chức năng bên Server
c) Các quá trình gửi tin nhắn giữa Client và Server
c1) Quá trình đăng nhập
16
Đăng nhập
Gửi tin nhắn
Thoát chương trình
Server
Tự động phản hồi tin
nhắn
Thoát chương trình

Tự động lấy
dữ liệu
Server
gửi gói tin đăng nhập
gửi phản hồi gói tin đăng nhập (Ýes / No)
gửi gói tin dữ liệu
Ứng dụng Chat Client-Server trong mạng Lan
Gói tin đăng nhập (client gửi tới Server)
Nội dung gói tin:
“DANGNHAP” tên gói tin
“NICK” tên máy khách
“ PASS ” mật khẩu.
Gói tin thông báo client 1 đã đăng nhập cho các client trong mạng (Server gửi
tới các client)
Nội dung gói tin:
“NICK” tên client vừa đăng nhập
“Status” trạng thái của client
Gói tin phản hồi đăng nhập (Server gửi phản hồi cho client)
Nội dung gói tin:
“PHANHOI” : tên gói tin
“STATUS”: trạng thái client
17
gửi gói tin
client 1 đã
đăng nhập
gửi gói tin
client 1 đã
đăng nhập
gửi gói tin
client 1 đã

đăng nhập
gửi gói tin
client 1 đã
đăng nhập
Client nClient …Client 3Client 2Client 1
Ứng dụng Chat Client-Server trong mạng Lan
c2) Quá trình gửi tin nhắn
Client gửi gói tin chat đến Server
”CHAT”: Tên gói tin
”SENDNICK”: tên client gửi tin nhắn tới Server
“RECVNICK”: tên client nhận tin nhắn từ Server
“TEXT”: nội dung chat client gửi tin nhắn
c3) Quá trình thoát
Nội dung gói tin thoát (client gửi tới Server)
“EXIT”: tên gói tin
”NICK”: tên client cần thoát
Nội dung gói tin phản hồi thooát (Server gửi cho các client trong mạng)
18
gửi tin nhắn Chat (gửi
cho client 2)
nhận tin nhắn Chat (nhận
từ server
Server
Client 2Client 1
Ứng dụng Chat Client-Server trong mạng Lan
“NICK” tên client vừa thoát
“Status” trạng thái của client
c4) Lập trình Multicast.
Các bước:
- tạo UDP socket

- tham gia một nhóm multicast chỉ ra bởi một địa chỉ IP lớp D
- nhận các gói tin gửi đến cho nhóm đó
- gửi các gói tin đến các máy trong nhóm thông qua địa chỉ IP
của nhóm
19
gửi gói tin thoát
Server
gửi gói
tin client
1 đã
thoát
gửi gói tin
client 1 đã
thoát
gửi gói tin
client 1 đã
thoát
gửi gói tin
client 1 đã
thoát
Client nClient …Client 3Client 2Client 1
Ứng dụng Chat Client-Server trong mạng Lan
- rời bỏ khỏi nhóm multicast
- đóng socket
Lập trình multicast với winsock:
- winsock hỗ trợ lập trình Multicast trên hai phiên bản giao
thức IGMP2, IGMP3.
- sử dụng socket với kiểu SOCK_DGRAM
- sử dụng cấu trúc ip_mreq để định địa chỉ nhóm
- sử dụng hàm setsockpt để tác động lên socket.

3.2 Cài đặt và kiểm thử
a) Server
20
Ứng dụng Chat Client-Server trong mạng Lan
b) Client khi cần đăng nhập
c) Client đăng nhập thành công
21
Ứng dụng Chat Client-Server trong mạng Lan
d)Chat giữa 2 client
22
Ứng dụng Chat Client-Server trong mạng Lan
e) Gửi tin nhắn cho nhóm
huyanh gửi tin nhắn cho nhóm
23
Ứng dụng Chat Client-Server trong mạng Lan
24
Ứng dụng Chat Client-Server trong mạng Lan
25

×