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

Hoạt động của clientserver

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 (219.17 KB, 14 trang )

 !
Mục Lục
Chú thích hình ảnh:
- Hình 1: Client/Server hai tầng .……………………(trang 6)
- Hình 2: Client/Server ba tầng .…………………….(trang 6)
- Hình 3: Quá trình giao tiếp client/server …………(trang 9)
- Hình 4: Chế độ giao tiếp nghẽn ………………… (trang 11)
- Hình 5: Chế độ giao tiếp không nghẽn ……………(trang 12)
"
 !
Lời nói đầu
Hiện nay, công nghệ thông tin đang phát triển và bùng nổ mạnh ở các nước phát
triển và đang phát triển. Được áp dụng vào rất nhiều hệ thống, công ty để tăng năng suất
lao động, tăng mức độ hiệu quả công việc cũng như chất lượng ngày càng cao hơn.
Nhu cầu xây dựng các mô hình quản ngày càng tăng. Đặc biết trong vấn đề quản
lý tài nguyên và xây dựng hệ thống phân tán tài nguyên. Để đáp ứng nhu cầu đó, mô hình
client/server đã ra đời và được sử dụng phổ biến và chấp nhận rộng rãi trong các hệ thống
phân tán. Chính vì thế mà nhóm em đã chọn đề tài “Hoạt động của client/server” để hiểu
hơn về quá trình hoạt động của client/server.
Do thời gian có hạn nên đề tài không thể tránh được những thiếu sót, mong thầy
góp ý để chúng em được hoàn thiện hơn.
#
 !
Phần I: Giới thiệu mô hình Client/Server
1. Mô hình Client/Server
Mô hình được phổ biến nhất và được chấp nhận rộng rãi trong các hệ thống phân
tán là mô hình client/server. Trong mô hình này sẽ có một tập các tiến trình mà mỗi tiến
trình đóng vai trò như là một trình quản lý tài nguyên cho một tập hợp các tài nguyên cho
trước và một tập hợp các tiến trình client trong đó mỗi tiến trình thực hiện một tác vụ
nào đó cần truy xuất tới tài nguyên phần cứng hoặc phần mềm dùng chung. Bản thân các
trình quản lý tài nguyên cần phải truy xuất tới các tài nguyên dùng chung được quản lý


bởi một tiến trình khác, vì vậy một số tiến trình vừa là tiến trình client vừa là tiến trình
server. Các tiến trình phát ra các yêu cầu tới các server bất kỳ khi nào chúng cần truy
xuất tới một trong các tài nguyên của các server. Nếu yêu cầu là đúng đắn thì server sẽ
thực hiện hành động được yêu cầu và gửi một đáp ứng trả lời tới tiến trình client.
Mô hình client/server cung cấp một cách tiếp cận tổng quát để chia sẻ tài nguyên
trong các hệ thống phân tán. Mô hình này có thể được cài đặt bằng rất nhiều môi trường
phần cứng và phần mềm khác nhau. Các máy tính được sử dụng để chạy các tiến trình
client/server có nhiều kiểu khác nhau và không cần thiết phải phân biệt giữa chúng; cả
tiến trình client và tiến trình server đều có thể chạy trên cùng một máy tính. Một tiến
trình server có thể sử dụng dịch vụ của một server khác.
1.1. Client Trong mô hình client/server:
Nười ta còn định nghĩa cụ thể cho một máy client là một máy trạm mà chỉ được sử
dụng bởi 1 người dùng với để muốn thể hiện tính độc lập cho nó. Máy client có thể sử
dụng các hệ điều hành bình thường như Win, DOS, OS/2 Bản thân mỗi một client cũng
đã được tích hợp nhiều chức năng trên hệ điều hành mà nó chạy, nhưng khi được nối vào
một mạng LAN, WAN theo mô hình client/server thì nó còn có thể sử dụng thêm các
chức năng do hệ điều hành mạng (NOS) cung cấp với nhiều dịch vụ khác nhau (cụ thể là
các dịch vụ do các server trên mạng này cung cấp), ví dụ như nó có thể yêu cầu lấy dữ
liệu từ một server hay gửi dữ liệu lên server đó Thực tế trong các ứng dụng của mô
hình client/server, các chức năng hoạt động chính là sự kết hợp giữa client và server với
sự chia sẻ tài nguyên, dữ liệu trên cả 2 máy vai trò của client trong mô hình client/server,
client được coi như là người sử dụng các dịch vụ trên mạng do một hoặc nhiều máy chủ
cung cấp và server được coi như là người cung cấp dịch vụ để trả lời các yêu cầu của các
clients. Điều quan trọng là phải hiểu được vai trò hoạt động của nó trong một mô hình cụ
thể, một máy client trong mô hình này lại có thể là server trong một mô hình khác. Ví dụ
cụ thể như một máy trạm làm việc như một client bình thường trong mạng LAN nhưng
đồng thời nó có thể đóng vai trò như một máy in chủ (printer server) cung cấp dịch vụ in
ấn từ xa cho nhiều người khác (clients) sử dụng. Client được hiểu như là bề nổi của các
$
 !

dịch vụ trên mạng, nếu có thông tin vào hoặc ra thì chúng sẽ được hiển thị trên máy
client.
1.2. Server trong mô hình Client/Server:
Được định nghĩa như là một máy tính nhiều người sử dụng (multiuser computer).
Vì một server phải quản lý nhiều yêu cầu từ các client trên mạng cho nên nó hoạt động sẽ
tốt hơn nếu hệ điều hành của nó là đa nhiệm với các tính năng hoạt động độc lập song
song với nhau như hệ điều hành UNIX, WINDOWS Server cung cấp và điều khiển các
tiến trình truy cập vào tài nguyên của hệ thống. Các ứng dụng chạy trên server phải được
tách rời nhau để một lỗi của ứng dụng này không làm hỏng ứng dụng khác. Tính đa
nhiệm đảm bảo một tiến trình không sử dụng toàn bộ tài nguyên hệ thống. Vai trò của
server. Như chúng ta đã bàn ở trên, server như là một nhà cung cấp dịch vụ cho các
clients yêu cầu tới khi cần, các dịch vụ như cơ sở dữ liệu, in ấn, truyền file, hệ thống
Các ứng dụng server cung cấp các dịch vụ mang tính chức năng để hỗ trợ cho các hoạt
động trên các máy clients có hiệu quả hơn. Sự hỗ trợ của các dịch vụ này có thể là toàn
bộ hoặc chỉ một phần thông qua IPC. Để đảm bảo tính an toàn trên mạng cho nên server
này còn có vai trò như là một nhà quản lý toàn bộ quyền truy cập dữ liệu của các máy
clients, nói cách khác đó là vai trò quản trị mạng. Có rất nhiều cách thức hiện nay nhằm
quản trị có hiệu quả, một trong những cách đang được sử dụng đó là dùng tên Login và
mật khẩu
2. Các kiến trúc Client/Server
2.1. Client/Server hai tầng (two-tier client/server)
Kiến trúc client/server đơn giản nhất là kiến trúc hai tầng. Trong thực tế hầu hết các
kiến trúc client/server là kiến trúc hai tầng. Một ứng dụng hai tầng cung cấp nhiều trạm
làm việc với một tầng trình diễn thống nhất, tầng này truyền tin với tầng lưu trữ dữ liệu
tập trung. Tầng trình diễn thông thường là client, và tầng lưu trữ dữ liệu là server.
Hầu hết các ứng dụng Internet như là email, telnet, ftp thậm chí là cả Web là các
ứng dụng hai tầng. Phần lớn các lập trình viên trình ứng dụng viết các ứng dụng
client/server có xu thế sử dụng kiến trúc này.
Trong ứng dụng hai tầng truyền thống, khối lượng công việc xử lý được dành cho
phía client trong khi server chỉ đơn giản đóng vai trò như là chương trình kiểm soát luồng

vào ra giữa ứng dụng và dữ liệu. Kết quả là không chỉ hiệu năng của ứng dụng bị giảm đi
do tài nguyên hạn chế của PC, mà khối lượng dữ liệu truyền đi trên mạng cũng tăng theo.
Khi toàn bộ ứng dụng được xử lý trên một PC, ứng dụng bắt buộc phải yêu cầu nhiều dữ
liệu trước khi đưa ra bất kỳ kết quả xử lý nào cho người dùng. Nhiều yêu cầu dữ liệu
cũng làm giảm hiệu năng của mạng. Một vấn đề thường gặp khác đối với ứng dụng hai
%
 !
tầng là vấn đề bảo trì. Chỉ cần một thay đổi nhỏ đối với ứng dụng cũng cần phải thay đổi
lại toàn bộ ứng dụng client và server.
Hình 1: Client/Server hai tầng
2.2. Client/Server ba tầng
Ta có thể tránh được các vấn đề của kiến trúc client/server hai tầng bằng cách mở
rộng kiến trúc thành ba tầng. Một kiến trúc ba tầng có thêm một tầng mới tác biệt việc xử
lý dữ liệu ở vị trí trung tâm.
Hình 2: Client/Server ba tầng
&
 !
Theo kiến trúc ba tầng, một ứng dụng được chia thành ba tầng tách biệt nhau về
mặt logic. Tầng đầu tiên là tầng trình diễn thường bao gồm các giao diện đồ họa. Tầng
thứ hai, còn được gọi là tầng trung gian hay tầng tác nghiệp. Tầng thứ ba chứa dữ liệu
cần cho ứng dụng. Tầng thứ ba về cơ bản là chương trình thực hiện các lời gọi hàm để
tìm kiếm dữ liệu cần thiết. Tầng trình diễn nhận dữ liệu và định dạng nó để hiển thị. Sự
tách biệt giữa chức năng xử lý với giao diện đã tạo nên sự linh hoạt cho việc thiết kế ứng
dụng. Nhiều giao diện người dùng được xây dựng và triển khai mà không làm thay đổi
logic ứng dụng.
Tầng thứ ba chứa dữ liệu cần thiết cho ứng dụng. Dữ liệu này có thể bao gồm bất
kỳ nguồn thông tin nào, bao gồm cơ sở dữ liệu như Oracale, SQL Server hoặc tài liệu
XML.
2.3. Kiến trúc n-tầng
Kiến trúc n-tầng được chia thành các tầng như sau:

• Tầng giao diện người dùng: quản lý tương tác của người dùng với ứng dụng
• Tầng logic trình diễn: Xác định cách thức hiển thị giao diện người dùng và các yêu
cầu của người dùng được quản lý như thế nào.
• Tầng logic tác nghiệp: Mô hình hóa các quy tắc tác nghiệp,
• Tầng các dịch vụ hạ tầng: Cung cấp một chức năng bổ trợ cần thiết cho ứng dụng
như các thành phần (truyền thông điệp, hỗ trợ giao tác).
3. Ưu nhược điểm của kiến trúc client/Server
3.1. Ưu điểm:
• Giảm chi phí: Kiến trúc client/server cho phép các công ty có thể sử dụng server là
những máy tính cá nhân thay vì các máy tính lớn. Vì các phần mềm ngày nay
được xây dựng chủ yếu chạy trên các máy tính cá nhân do đó chi phí các phần
mềm tương đối rẻ.
• Tốc độ nhanh: Giảm việc tắc nghẽn thông tin trong hệ thống mạng do phân chia
các xử lý ra thành 2 nhánh. Các xử lý nào phức tạp tác động nhiều lên cơ sở dữ
liệu sẽ được lưu trữ ngay trên server, các xử lý đơn giản sẽ được thực hiện ngay
trong ứng dụng trên client. Chính vì thế hệ thống vận hành sẽ hiệu quả hơn.
• Tính tương thích cao: Việc chọn lựa các phần mềm để phát triển ứng dụng có thể
hoàn toàn độc lập từ ngôn ngữ lập trình đến hệ cơ sở dữ liệu quan hệ và các thiết
bị phần cứng. Ta có thể chọn các thành phần tối ưu nhất khi xây dựng một hệ
thống ứng dụng.
3.2. Nhược điểm:
'
 !
• Một trong những vấn đề nảy sinh trong mô hình này đó là tính an toàn và bảo mật
thông tin trên mạng. Do phải trao đổi dữ liệu giữa 2 máy ở 2 khu vực khác nhau
cho nên dễ dàng xảy ra hiện tượng thông tin truyền trên mạng bị lộ.
• Dễ dàng lợi dụng các lỗ hổng bảo mật của server.
• Vấn đề cân bằng tải trong mô hình nhiều server.
• Hỏng địa chỉ URL khi server thay đổi. Gặp vẫn đề nghẽn cổ chai khi truyền dữ
liệu giữa client và server.

(
)*+*
)*,-.
/01222*
/01222*
/34,516
7*


 !
Phần II: Hoạt động của Client/Server
1. Giao tiếp giữa Client/Server
Mô hình truyền tin client/server hướng tới việc cung cấp dịch vụ. Quá trình trao đổi
dữ liệu bao gồm:
1. Truyền một yêu cầu từ tiến trình client tới tiến trình server
2. Yêu cầu được server xử lý
3. Truyền đáp ứng cho client
Mô hình truyền tin này liên quan đến việc truyền hai thông điệp và một dạng đồng
bộ hóa cụ thể giữa client và server. Tiến trình server phải nhận thức được thông điệp
được yêu cầu ở bước một ngay khi nó đến và hành động phát ra yêu cầu trong client phải
được tạm dừng (bị phong tỏa) và buộc tiến trình client ở trạng thái chờ cho tớ khi nó
nhận được đáp ứng do server gửi về ở bước ba.
Mô hình client/server thường được cài đặt dựa trên các thao tác cơ bản là gửi (send)
và nhận (receive).
Hình 3: Quá trình giao tiếp client/server
Quá trình giao tiếp client và server có thể diễn ra theo một t rong hai chế độ: bị
phong tỏa (blocked) và không bị phong tỏa (non-blocked).

 !
Chế độ bị phong tỏa (blocked):

Trong chế độ bị phong tỏa, khi tiến trình client hoặc server phát ra lệnh gửi dữ liệu
(send), việc thực thi của tiến trình sẽ bị tạm ngừng cho tới khi tiến trình nhận phát ra lệnh
nhận dữ liệu (receive).
Tương tự đối với tiến trình nhận dữ liệu, nếu tiến trình nào đó (client hoặc server)
phát ra lệnh nhận dữ liệu, mà tại thời điểm đó chưa có dữ liệu gửi tới thì việc thực thi của
tiến trình cũng sẽ bị tạm ngừng cho tới khi có dữ liệu gửi tới.
Chế độ không bị phong tỏa (non-blocked)
Trong chế độ này, khi tiến trình client hay server phát ra lệnh gửi dữ liệu thực sự,
việc thực thi của tiến trình vẫn được tiến hành mà không quan tâm đến việc có tiến trình
nào phát ra lệnh nhận dữ liệu đó hay không.
Tương tự cho trường hợp nhận dữ liệu, khi tiến trình phát ra lệnh nhận dữ liệu, nó
sẽ nhận dữ liệu hiện có, việc thực thi của tiến trình vẫn được tiến hành mà không quan
tâm đến việc có tiến trình nào phát ra lệnh gửi dữ liệu tiếp theo hay không.
2. Ví dụ về dịch vụ Web.
Dịch vụ web được tổ chức theo mô hình Client - Server, trong đó:
Web server sẵn sàng cung cấp các trang web đang được lưu trữ trên đĩa cứng cục
bộ của mình.
Web Client, còn gọi là các Browser, có nhu cầu nhận các trang web từ các Web
Server.
HTTP là giao thức trao đổi thông tin qua lại giữa Web client và Web Server.
Thông điệp yêu cầu là một chuỗi có dạng sau:
Command URL HTTP/Ver \n\n
Thông điệp trả lời có dạng sau:
<HEADER>\n\n
<CONTENT>
Giả sử Client cần nhận trang Web ở địa chỉ nó sẽ gởi đến
Web Server có tên www.cit.ctu.edu.vn thông điệp yêu cầu sau:
GET www.cit.ctu.edu.vn HTTP/1.1\n\n
Server sẽ gởi về nội dung sau:
HTTP/1.0 200 OKDate: Mon, 24 Nov 2003 02:43:46 GMTServer: Apache/1.3.23

(Unix) (Red-Hat/Linux) mod_ssl/2.8.7 OpenSSL/0.9.6b DAV/1.0.3 PHP/4.1.2
mod_perl/1.26Last-Modified: Tue, 01 Jul 2003 08:08:52 GMTETag: "17f5d-2abb-
8
 !
3f014194"Accept-Ranges: bytesContent-Length: 10939Content-Type: text/htmlX-Cache:
HIT from proxy.cit.ctu.edu.vnProxy-Connection: close
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><LINK href='favicon.ico' rel="SHORTCUT ICON">

3. Các chế độ giao tiếp
Quá trình giao tiếp giữa client và server có thể diễn ra theo hai chế độ là nghẽn
(blocked) hay không nghẽn (Non blocked).
3.1. Chế độ nghẽn :
Trong chế độ này, khi quá trình client hay server phát ra lệnh gởi dữ liệu, (thông
thường bằng lệnh send) , sự thực thi của nó sẽ bị tạm dừng cho đến khi quá trình nhận
phát ra lệnh nhận số dữ liệu đó (thường là lệnh receive).
Hình 4: Chế độ giao tiếp nghẽn
Tương tự cho trường hợp nhận dữ liệu, nếu quá trình nào đó, client hay server, phát ra
lệnh nhận dữ liệu, mà ở thời điểm đó chưa có dữ liệu gởi đến, sự thực thi của nó cũng
tạm dừng cho đến khi có dữ liệu gởi đến.
3.2. Chế độ không nghẽn:
Trong chế độ này, khi quá trình client hay server phát ra lệnh gởi dữ liệu, sự thực
thi của nó vẫn được tiếp tục mà không quan tâm đến việc có quá trình nào phát ra lệnh
nhận số dữ liệu đó hay không.
"9
 !
Hình 5: Chế độ giao tiếp không nghẽn
Tượng tự cho trường hợp nhận dữ liệu, khi quá trình phát ra lệnh nhận dữ liệu, nó sẽ
nhận được số lượng dữ liệu hiện có (bằng 0 nếu chưa có quá trình nào gởi dữ liệu đến).
Sự thực thi của quá trình vẫn được tiếp tục.

Trong thực tế cần chú ý đến chế độ giao tiếp nghẽn khi lập trình, vì nó có thể dẫn đến
trường hợp chương trình bị "treo" do số lần gởi và nhận dữ liệu không bằng nhau giữa
hai bên giao tiếp.
""
 !
Phần III: Bảo mật trong Client/Server
1. Mã hoá trong mô hình Client/Server.
Trong mô hình Client/Server việc trao đổi thông tin diễn ra thường xuyên nên rất
dễ bị kẻ xấu lợi dụng, bởi vậy bảo vệ thông tin trên đường truyền là vô cùng quan trọng,
chúng đảm bảo thông tin trên đường truyền là đúng đắn. Tại mô hình này mỗi khi những
yêu cầu được gửi từ Client đến Server hoặc khi Server gửi trả lại kết quả cho Client thì
những thông tin này đều được mã hoá trong khi truyền.
2. Thiết lập firewall trên server
Triển khai thiết bị firewall cứng, mềm trên server để tăng tính bảo mật, an toán,
hạn chế thiệt hại trong các cuộc tấn công vào server. Chặn các port không cần thiết để
tránh các hacker khai thác từ các port này để có thể xâm nhập vào server.
3. Sử dụng proxy
Máy chủ proxy là một máy chủ (một hệ thống máy tính hay một ứng dụng) đứng
giữa server và client, tham gia vào cuộc trò chuyện giữa hai bên. Một client kết nối đến
máy chủ proxy, yêu cầu một số dịch vụ như một tập tin, kết nối, trang web, hoặc tài
nguyên sẵn có từ một máy chủ khác. Các máy chủ proxy đánh giá các yêu cầu như một
cách đơn giản hóa và kiểm soát phức tạp của họ.
Sử dụng máy chủ Proxy có thể tăng tính an toàn và bảo mật:
• Giữ máy tính ẩn danh khi truy cập Internet, nghĩa là máy tính được an toàn.
• Tăng tốc độ truy cập tới tài nguyên trên Internet bằng việc sử dụng bộ đệm proxy.
• Để chặn các trạng web không mong muốn hay để truy cập vào các trạng web bị
cấm, lọc bởi công ty, tổ chức của bạn.
• Kiểm soát và bảo vệ quyền truy cập vào một máy chủ trên một mạng riêng.
• Giúp cân bằng tải, giải mã, chứng thực hoặc bộ nhớ đệm.
"#

 !
Kết Luận
Qua việc nghiên cứu đề tài, chúng em đã hiểu rõ hơn về mô hình client/server
cũng như quá trình hoạt động, truyển dữ liệu từ client đến server và ngược lại. Việc triển
khai mô hình client/server sẽ giúp tiết kiệm tài nguyên máy chủ hơn, tăng tốc độ truy cập,
xử lý dữ liệu, đáp ứng được nhu cầu sử dụng của nhiều người. Tuy nhiên không có một
hệ thông nào là không tồn tại những thiếu sót, lỗ hổng, chỉ có điều nó xuất hiện sớm hay
muộn. Vì thế cần phải theo dõi sát sao quá trình hoạt động của hệ thống để có thể xác
định được lỗi và khắc phục kịp thời để đảm bảo hoạt động ổn định cho hệ thống, giảm
thời gian bị gián đoạn đường truyền do lỗi.
Đây là đề tài cần phải nghiên cứu trong thời gian dài để có thể tìm hiểu sâu hơn về
phương pháp hoạt động của mô hình áp dụng trên nhiều hệ thống khác nhau cũng như
vấn đề bảo mật của nó. Do thời gian hạn chế nên đề tài chưa được tìm hiểu chi tiết mà chỉ
ở mức tổng quan.
"$
 !
Tài Liệu Tham Khảo
- Wiki: vi.wikipedia.org/wiki/Client-server
- />- />- />"%

×