Mô hình khách – chủ

Chương trình máy chủ và máy khách nói chuyện với nhau bằng các thông điệp (messages) thông qua một cổng truyền thông liên tác IPC (Interprocess Communication). Để một chương trình máy chủ và một chương trình máy khách có thể giao tiếp được với nhau thì giữa chúng phải có một chuẩn để nói chuyện, chuẩn này được gọi là giao thức. Nếu một chương trình máy khách nào đó muốn yêu cầu lấy thông tin từ máy chủ thì nó phải tuân theo giao thức mà máy chủ đó đưa ra. Bản thân chúng ta khi cần xây dựng một mô hình chủ – khách cụ thể thì ta cũng có thể tự tạo ra một giao thức riêng nhưng thường chúng ta chỉ làm được điều này ở tầng ứng dụng của mạng.

Với sự phát triển mạng như hiện này thì có rất nhiều giao thức chuẩn trên mạng ra đời nhằm đáp ứng nhu cầu phát triển này. Các giao thức chuẩn (ở tầng mạng và vận chuyển) được sử dụng rộng rãi nhất hiện nay như: giao thức TCP/IP, giao thức SNA của IBM, OSI, ISDN, X.25 hoặc giao thức LAN-to-LAN NetBIOS.

Một máy tính chứa chương trình máy chủ được coi là một máy chủ hay máy phục vụ (server) và máy chứa chương trình máy khách được coi là máy khách (client). Mô hình mạng trên đó có các máy chủ và máy khách giao tiếp với nhau theo 1 hoặc nhiều dịch vụ được gọi là mô hình chủ – khách. Thực tế thì mô hình chủ – khách là sự mở rộng tự nhiên và tiện lợi cho việc truyền thông liên tiến trình trên các máy tính cá nhân. Mô hình này cho phép xây dựng các chương trình chủ – khách một cách dễ dàng và sử dụng chúng để liên tác với nhau để đạt hiệu quả hơn.

Chủ – khách là mô hình tổng quát nhất, trên thực tế thì một máy chủ có thể được nối tới nhiều máy chủ khác nhằm làm việc hiệu quả và nhanh hơn. Khi nhận được 1 yêu cầu từ máy khách, máy chủ này có thể gửi tiếp yêu cầu vừa nhận được cho máy chủ khác ví dụ như database máy chủ vì bản thân nó không thể xử lý yêu cầu này được.

Máy máy chủ có thể thi hành các nhiệm vụ đơn giản hoặc phức tạp. Ví dụ như một máy chủ trả lời thời gian hiện tại trong ngày, khi một máy khách yêu cầu lấy thông tin về thời gian nó sẽ phải gửi một yêu cầu theo một tiêu chuẩn do máy chủ định ra, nếu yêu cầu được chấp nhận thì máy máy chủ sẽ trả về thông tin mà máy khách yêu cầu. Có rất nhiều các dịch vụ máy chủ trên mạng nhưng nó đều hoạt động theo nguyên lý là nhận các yêu cầu từ máy khách sau đó xử lý và trả kết quả cho máy khách yêu cầu.

Thông thường chương trình máy chủ và máy khách được thi hành trên hai máy khác nhau. Cho dù lúc nào máy chủ cũng ở trạng thái sẵn sàng chờ nhận yêu cầu từ máy khách nhưng trên thực tế một tiến trình liên tác qua lại (interaction) giữa máy khách và máy chủ lại bắt đầu ở phía khách, khi mà máy khách gửi tín hiệu yêu cầu tới máy chủ.

Các chương trình máy chủ thường đều thi hành ở mức ứng dụng (tầng ứng dụng của mạng). Sự thuận lợi của phương pháp này là nó có thể làm việc trên bất cứ một mạng máy tính nào có hỗ trợ giao thức truyền thông chuẩn cụ thể ở đây là giao thức TCP/IP. Với các giao thức chuẩn này cũng giúp cho các nhà sản xuất có thể tích hợp nhiều sản phẩm khác nhau của họ lên mạng mà không gặp phải khó khăn gì. Với các chuẩn này thì các chương trình máy chủ cho một dịch vụ nào đấy có thể thi hành trên một hệ thống chia sẻ thời gian (timesharing system) với nhiều chương trình và dịch vụ khác hoặc nó có thể chạy trên chính một máy tính các nhân bình thường. Có thể có nhiều chương máy chủ cùng làm một dịch vụ, chúng có thể nằm trên nhiều máy tính hoặc một máy tính.

Với mô hình trên chúng ta nhận thấy rằng mô hình chủ – khách chỉ mang đặc điểm của phần mềm không liên quan gì đến phần cứng mặc dù trên thực tế yêu cầu cho một máy máy chủ là cao hơn nhiều so với máy khách. Lý do là bởi vì máy máy chủ phải quản lý rất nhiều các yêu cầu từ các khách khác nhau trên mạng.

Có thể nói rằng với mô hình chủ – khách thì mọi thứ dường như đều nằm trên bàn của người sử dụng, nó có thể truy cập dữ liệu từ xa (bao gồm các công việc như gửi và nhận file, tìm kiếm thông tin...) với nhiều dịch vụ đa dạng mà mô hình cũ không thể làm được.

Mô hình chủ – khách cung cấp một nền tảng lý tưởng cho phép tích hợp các kỹ thuật hiện đại như mô hình thiết kế hướng đối tượng, hệ chuyên gia, hệ thống thông tin địa lý (GIS), v.v..

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

== Máy chủ ==
Server còn được định nghĩa như là một máy tính nhiều người sử dụng (multiuser computer). Vì một máy chủ phải quản lý nhiều yêu cầu từ các máy khách 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 máy chủ 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.

Máy chủ đóng vai trò như là một nhà cung cấp dịch vụ cho các máy khách yêu cầu tới khi cần, các dịch vụ như cơ sở dữ liệu, in ấn, truyền tệp, hệ thống... Các ứng dụng máy chủ 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 khách 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 máy chủ 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 khách, 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 đăng nhập và mật khẩu