Thực hiện sự phân công của Thầy giáo, em đã hoàn thành xây dựng tiểu luận “Mô phỏng quá trình làm việc của 2 server ngang hàng trên mạng TCP/IP” Được sự hướng dẫn của Thầy giáo Lê Văn Sơ
Trang 1BAN ĐÀO TẠO SAU ĐẠI HỌC
LẬP TRÌNH MẠNG
Đ
Ề TÀI : Mô phỏng quá trình làm việc của 2 server ngang hàng trên mạng TCP/IP
Giảng viên hướng dẫn : PGS.TS Lê Văn Sơn
Sinh viên thực hiện : Nguyễn Hải Minh
Lớp : Khoa học máy tính K24
Trang 3LỜI NÓI ĐẦU
Ngày nay với sự phát triển mạnh mẽ của internet, các ứng dụng client-server đang ngày càng được sử dụng phổ biến Nhưng khi quy mô và mức độ của các ứng dụng tăng lên và yêu cầu về chất lượng, tốc độ xử lý và độ phức tạp cũng tăng theo thì trên thực tế, một xu hướng kỹ thuật mới ra đời – xu hướng phân tán các thành phần tạo nên hệ tin học theo hướng tiếp cận nơi sử dụng và sản xuất thông tin Song để khai thác có hiệu quả toàn hệ, thì cần phải tính đến việc sử dụng một cách tối ưu hóa các tài nguyên với chiến lược khai thác hiệu quả
Để xây dựng và ứng dụng hệ tin học phân tán thì việc nghiên cứu xây dựng các phần mềm ứng dụng cho các hệ tin học phân tán là công việc hết sức quan trọng
Sau khi được học hai môn “Hệ tin học phân tán” và môn “Lập trình mạng
máy tính” dưới sự giảng dạy nhiệt tình của Thầy PGS.TS Lê Văn Sơn, em đã tiếp thu
được các kiến thức của hai môn học này Thực hiện sự phân công của Thầy giáo, em
đã hoàn thành xây dựng tiểu luận “Mô phỏng quá trình làm việc của 2 server ngang
hàng trên mạng TCP/IP”
Được sự hướng dẫn của Thầy giáo Lê Văn Sơn, em đã hoàn thành được những nhiệm vụ cơ bản đề ra Mặc dù đã cố gắng hết sức nhưng chắc chắn vẫn còn nhiều khiếm khuyết, em rất mong nhận được góp ý chân thành của Thầy giáo và các bạn
Em xin chân thành cảm ơn
Đà Nẵng ngày 15 tháng 5 năm 2012
SVTH : Nguyễn Hải Minh
Trang 4MỤC LỤC
I Nguyên lý hoạt động của giao thức TCP/IP 1
II Yêu cầu của bài toán 5
III Mô tả hệ thống 6
IV Lựa chọn phần mềm để xây dựng chương trình 6
IV.1 Giới thiệu Winsock 6
IV.2 Lựa chọn giao thức 7
IV.3 Giới thiệu những lệnh cơ bản của điều khiển Winsock 7
V Thiết kế chương trình 9
V.1 Sơ đồ kết nối hệ thống 9
VI.2 Xây dựng cơ sở dữ liệu 9
VI Thiết kế giao diện chương trình 11
VI.1 Chương trình của Server1 11
VI.2 Chương trình của Server2 11
VII Mô tả hoạt động của chương trình của các Server 12
VIII Hướng dẫn cài đặt chương trình 12
VIII.1 Cài trên một máy tính 12
VIII.2 Cài trên hai máy tính 13
IX Ví dụ Database 13
TÀI LIỆU THAM KHẢO 16
Trang 5I Nguyên lý hoạt động của giao thức TCP/IP
Mạng máy tính ngày nay đã trở thành một thành phần quan trọng trong ngành truyền thông Trên thế giới, ban đầu chỉ có vài mạng máy tính được đưa vào sử dụng ở các viện nghiên cứu và phục vụ cho quốc phòng Cùng với thời gian, khoa học phát triển, giá máy giảm, mạng máy tính đã có mặt ở khắp nơi, từ trường học, nhà máy đến các học viện Đặc biệt sự bùng nổ của mạng thông tin toàn cầu Internet đã đưa khả năng sử dụng mạng đến từng người dân Hàng ngày bạn dạo chơi trên Internet, lướt trên các trang Web, có bao giờ bạn tự hỏi làm thế nào mà con người có được khả năng truy cập thông tin mạnh mẽ và tiện lợi đến như vậy?
Mô hình tổng quát của mạng Internet
Như trong Hình 1, kết cấu vật lý của mạng Internet gồm có mạng chính chứa các server cung cấp dịch vụ cho mạng, mạng nhánh bao gồm các trạm làm việc sử dụng dịch vụ do Internet cung cấp "Đám mây Internet" hàm chứa vô vàn mạng chính, mạng nhánh và bao phủ toàn thế giới Để một hệ thống phức tạp như vậy hoạt động trơn tru
và hiệu quả thì điều kiện tiên quyết là mọi máy tính trong mạng, dù khác nhau về kiến trúc, đều phải giao tiếp với mạng theo cùng một quy luật Đó là giao thức TCP/IP
Trang 6Quá trình truyền dữ liệu qua mạng Internet
Nếu đã từng lập trình, bạn hẳn biết rằng một chương trình hoàn chỉnh được tạo nên
từ nhiều module với các chức năng và nhiệm vụ khác nhau nhưng lại liên kết chặt chẽ với nhau Quá trình truyền dữ liệu cũng như vậy Để có thể truyền qua mạng Internet,
dữ liệu phải được xử lý qua nhiều tầng Một mạng intranet theo chuẩn OSI thường có bảy tầng nhưng Internet chỉ có bốn tầng xử lý dữ liệu là:
* Tầng application
* Tầng transport còn gọi là tầng TCP (Transmission Control Protocol)
* Tầng network còn gọi là tầng IP (Internet Protocol)
* Tầng Datalink/Physical
Giả sử bạn đang ở máy A và muốn gửi một thông điệp tới máy B Bạn dùng một trình soạn thảo văn bản để soạn thư, sau đó nhấn nút Send Tính từ thời điểm đó dữ liệu được xử lý lần lượt như trong hình 2
Đầu tiên, dữ liệu được xử lý bởi tầng application Tầng này có nhiệm vụ tổ chức dữ liệu theo khuôn dạng và trật tự nhất định để tầng application ở máy B có thể hiểu
Trang 7được Điều này giống như khi bạn viết một chương trình thì các câu lệnh phải tuân theo thứ tự và cú pháp nhất định thì chương trình mới chạy được Tầng application gửi
dữ liệu xuống tầng dưới theo dòng byte nối byte Cùng với dữ liệu, tầng application cũng gửi xuống các thông tin điều khiển khác giúp xác định địa chỉ đến, đi của dữ liệu Khi xuống tới tầng TCP, dòng dữ liệu sẽ được đóng thành các gói có kích thước không nhất thiết bằng nhau nhưng phải nhỏ hơn 64 KB Cấu trúc của gói dữ liệu TCP gồm một phần header chứa thông tin điều khiển và sau đó là dữ liệu Sau khi đóng gói xong ở tầng TCP, dữ liệu được chuyển xuống cho tầng IP
Gói dữ liệu xuống tới tầng IP sẽ tiếp tục bị đóng gói lại thành các gói dữ liệu IP nhỏ hơn sao cho có kích thước phù hợp với mạng chuyển mạch gói mà nó dùng để truyền
dữ liệu Trong khi đóng gói, IP cũng chèn thêm phần header của nó vào gói dữ liệu rồi chuyển xuống cho tầng Datalink/Physical
Khi các gói dữ liệu IP tới tầng Datalink sẽ được gắn thêm một header khác và chuyển tới tầng physical đi vào mạng Gói dữ liệu lúc này gọi là frame Kích thước của một frame hoàn toàn phụ thuộc vào mạng mà máy A kết nối
Trong khi được truyền trên mạng Internet, frame được các router chỉ dẫn để có thể tới đúng đích cần tới Router thực ra là một module chỉ có hai tầng là Network và Datalink/Physical Các frame tới router sẽ được tầng Datalink/Physical lọc bỏ header
mà tầng này thêm vào và chuyển lên tầng Network (IP) Tầng IP dựa vào các thông tin điều khiển trong header mà nó thêm vào để quyết định đường đi tiếp theo cho gói IP Sau đó gói IP này lại được chuyển xuống tầng Datalink/Physical để đi vào mạng Quá trình cứ thế tiếp tục cho đến khi dữ liệu tới đích là máy B
Khi tới máy B các gói dữ liệu được xử lý theo quy trình ngược lại với máy A Theo chiều mũi tên, đầu tiên dữ liệu qua tầng datalink/physical Tại đây frame bị bỏ đi phần header và chuyển lên tầng IP Tại tầng IP, dữ liệu được bung gói IP, sau đó lên tầng TCP và cuối cùng lên tầng application để hiển thị ra màn hình
Trang 8Hệ thống địa chỉ và cơ chế truyền dữ liệu trong mạng Internet
Để một gói dữ liệu có thể đi từ nguồn tới đích, mạng Internet đã dùng một hệ thống đánh địa chỉ tất cả các máy tính nối vào mạng như hình 3
Những tên và địa chỉ này được gửi cho máy tính nhận dữ liệu
Cơ chế kết nối giữa hai máy trong mạng Internet
Chặng cuối cùng trong hoạt động của mạng Internet là cơ chế kết nối giữa hai máy
Để toàn bộ các hoạt động truyền tin giữa hai máy trong mạng có thể diễn ra thì phải hình thành kênh liên lạc hay một kết nối giữa chúng Quá trình đó diễn ra như sau (hình 7):
Trang 91: ULP B giả sử là một chương trình mail server ở Mỹ Do là server nên lúc nào nó cũng chờ đợi sự kết nối
2: ULP A là chương trình nhận thư điện tử của bạn Để kết nối, bạn gửi yêu cầu kết nối xuống cho tầng TCP
3: TCP chuẩn bị một gói dữ liệu TCP với cờ SYN=1 yêu cầu có sự đồng bộ hoá, SEQ
có thể lấy bất kì giá trị nào, ở đây là =100 và gửi cho TCP B
4: Sau khi nhận gói dữ liệu có SYN=1, TCP B gửi trả lại một thông báo có SYN=1, ACK=101, SEQ có thể lấy bất kì giá trị nào, ở đây là =177
5: TCP A nhận được gói dữ liệu từ TCP B sẽ gửi tiếp một gói dữ liệu có ACK=178 6: TCP A chuyển chấp nhận kết nối lên chương trình A
7: Sau khi nhận nốt gói dữ liệu có ACK=178, TCP B chuyển chấp nhận kết nối lên chương trình B
Sự kết nối giữa 2 module TCP ở các bước 3, 4, 5 gọi là cơ chế bắt tay 3 bước (three way handshake)
Quá trình đóng một kết nối cũng thực hiện tương tự
II Yêu cầu của bài toán
Lập trình trên mạng LAN có hai Server
Không sử dụng các ứng dụng Client – Server có sẵn
Xây dựng hệ thống trao đổi thông điệp giữa hai Server
Trang 10III Mô tả hệ thống
Mỗi Server có 1 địa chỉ IP
Các Server liên lạc với nhau bằng các thông điệp (Message)
Khi mỗi Server muốn thực hiện một công việc trên chính mình thì cũng phải gửi lên hệ thống một thông điệp
Các thông điệp được xác định trước (về nội dung) do người lập trình tạo
Mỗi Server sẽ gửi các thông điệp theo tuần tự quy ước trước Quy ước là mỗi lúc chỉ
có một thông điệp được gửi
Khi một Server gửi một thông điệp yêu cầu một hoặc nhiều Server thực hiện một công việc nào đó thì thông điệp này sẽ được gửi đến tất cả các Server trên hệ thống Mỗi
Server sẽ kiểm tra thông điệp, nếu Server phải thực hiện là mình thì sẽ thực hiện Tất cả các Server đều nhận được thông điệp, nhưng chỉ có Server nào có IP ở Server
phải thực hiện thì mới thực hiện nội dung thông điệp đó.
Trên mỗi Server có thể xem được (Monitoring) nội dung công việc đã thực hiện tại các Server khác, tức là xem được Task List của Server khác
Định dạng của thông điệp (Message):
idMessage Stt của thông điệp IP Server gửi IP Server phải thực hiện
Stt của thông điệp sẽ là Stt tiếp theo trong Message List
IV Lựa chọn phần mềm để xây dựng chương trình
Chọn phần mềm lập trình Microsoft Visual Basic 6.0 và phần mềm CSDL Microsoft Access 2003
IV.1 Giới thiệu Winsock
Điều khiển Winsock cho phép kết nối đến một máy tính từ xa và trao đổi dữ liệu sử dụng một trong hai giao thức UDP (User Datagram Protocol) hoặc TCP (Transmission Control Protocol)
Có thể được sử dụng để tạo các ứng dụng client và server
Trang 11- Tạo ứng dụng client để lấy thông tin người dùng trước khi gửi chúng đến server trung tâm
- Tạo ứng dụng server mà các chức năng của nó như là một điểm trung tâm thu thập dữ liệu từ một số người dùng
- Tạo ứng dụng “chat”
IV.2 Lựa chọn giao thức
Khi sử dụng Winsock, điều quan tâm đầu tiên là chọn giao thức UDP hay TCP Điểm khác nhau chính giữa hai giao thức này nằm ở trạng thái (state) kết nối của chúng:
- TCP là giao thức dựa trên kết nối (connection-based), tương tự như điện thoại, người dùng phải thiết lập kết nối trước khi tiến trình trao đổi thông tin được thực hiện Khi một kết nối đã được tạo, giao thức TCP sẽ giữ kết nối và bảo đảm tính toàn vẹn của dữ liệu
TCP yêu cầu một kết nối rõ ràng trước khi gửi và nhận dữ liệu
- UDP là giao thức phi kết nối (connectionless) Sự giao tác giữa hai máy tính giống như qua một cái phiếu: một thông điệp được gửi từ một máy đến một máy khác mà không có một kết nối rõ ràng giữa chúng
Với bài toán này, ta chọn giao thức TCP là phù hợp.
IV.3 Giới thiệu những lệnh cơ bản của điều khiển Winsock
1 Trên Server 1
tcpServer1.RemoteHost =
“IP Addr”
Khai báo địa chỉ IP của Server 2 kết nối với Server 1
tcpServer1.RemotePort =
1001
Khai báo địa chỉ cổng của Server 2 kết nối với Server 1
tcpServer1.Connect Server 1 thực hiện kết nối vào mạng
tcpServer1.SendData Server 1 thực hiện gửi dữ liệu (lưu ở
Trang 12tcpServer1.GetData strData Server 1 thực hiện nhận dữ liệu lưu vào
biến strData
tcpServer1.LocalIP Chứa địa chỉ IP của Server 1
2 Trên Server 2
tcpServer2.LocalPort =
1001
Khai báo địa chỉ cổng của Server 2 kết nối với Server 1
tcpServer2.Listen Server 2 thực hiện lắng nghe
tcpServer2.Accept
requestID
Server 2 thực hiện chấp nhận kết nối
tcpServer2.SendData
Message
Server 2 thực hiện gửi dữ liệu (lưu ở biến Message) lên mạng
tcpServer2.GetData strData Server 2 thực hiện nhận dữ liệu lưu vào
biến strData
Trang 13V Thiết kế chương trình
V.1 Sơ đồ kết nối hệ thống
VI.2 Xây dựng cơ sở dữ liệu
Mỗi Server có một Database giống hệt nhau gồm các Table:
1 MessageStore lưu các dạng Message của hệ Các Server đều có cùng một số dạng thông điệp do người dùng định nghĩa
2 MessageList lưu tất cả các thông điệp của hệ do các Server trong hệ gửi lên, các thông điệp được lưu theo thứ tự gửi lên hệ thống
3 Một TaskList lưu các công việc chính nó và trạng thái của các công việc đó (đã thực hiện/ đang thực hiện)
Server #1 Server #2
Database
#1
Database
#2
10.149.49.1 10.149.49.2
- MessageStore
- MessageList
- TaskList
Mạng viễn thông
idMessage Mark IP of sent Server IP of execute Server
idMessage Content
- Message form
Trang 14Cấu trúc của các Table
Table: MessageStore:
idMessage Nội dung
Table: MessageList:
idMessage Mark SentServer ExecuteServer
Mark là dấu do hệ thống cấp (mô phỏng bằng auto number)
Table: TaskList:
idMessage Đã thực hiện Thời gian hoàn thành
Sơ đồ thực thể quan hệ
VI Thiết kế giao diện chương trình
Trang 15VI.1 Chương trình của Server1
Nút lệnh “Start”: Để bắt đầu thực hiện gửi các thông điệp đến Server2.
Nút lệnh “Monitor”:
Gửi thông điệp yêu cầu giám sát đến Server2
Hiển thị nội dung thực hiện công việc của Server1 và Server2
Nút lệnh “Clear my task list” : Thực hiện xóa nội dung các công việc đã thực hiện
của Server1
Nút lệnh “Exit”: Để thoát chương trình.
VI.2 Chương trình của Server2
Nút lệnh “Start”: Để bắt đầu thực hiện gửi các thông điệp đến Server1.
Nút lệnh “Monitor”:
Gửi thông điệp yêu cầu giám sát đến Server1
Hiển thị nội dung thực hiện công việc của Server1 và Server2
Nút lệnh “Clear my task list” : Thực hiện xóa nội dung các công việc đã thực hiện
của Server2
Nút lệnh “Exit”: Để thoát chương trình.
Trang 16VII Mô tả hoạt động của chương trình của các Server
- Kết nối vào mạng, gửi thông điệp đồng bộ lên mạng
- Gửi các công việc ở hàng đợi vào (MessageStore) lên mạng
- Nhận thông điệp gửi đến và lưu vào hàng đợi ra (MessageList)
- Thực hiện công việc của mình theo thứ tự ở hàng đợi ra (MessageList) nếu là công việc của mình
- Lưu công việc hoàn thành vào TaskList
- Nếu thông điệp yêu cầu giám sát (Monitoring) thì gửi toàn bộ TaskList của mình cho Server yêu cầu
- Nếu nhận được thông điệp là dạng TaskList mà các Server khác gửi đến sẽ thực hiện hiển thị nội dung thông điệp này và nội dung TaskList của mình lên màn hình giám sát
VIII Hướng dẫn cài đặt chương trình
VIII.1 Cài trên một máy tính
Khi khởi động chương trình, hai form đại diện cho hai giao diện của hai server hiển thị
+ Khi hai form hiển thị chương trình tự động thực hiện kết nối vào mạng
Trang 17+ Click nút Start để thực hiện gửi thông điệp cho nhau.
+ Click nút Monitor để hiển thị tasklist của hai Server.
+ Click nút Clear my task list để xóa task list của server đó.
VIII.2 Cài trên hai máy tính
Thiết lập lại :
Trên Server 1:
+ chọn form start là frmServer1
+ tcpServer1.RemoteHost= Địa chỉ IP của Server2
+ tcpServer1.RemotePort= Cổng của Server2
Trên Server 2:
+ chọn form start là frmServer2
+ ExecuteServer= IP của Server1
IX Ví dụ Database
MessageStore
0Send All Tasks (sv1) 1Executing task 1 (sv1) 2Executing task 2 (sv1) 3Executing task 3 (sv1) 4Executing task 4 (sv1)
Trang 18MessageList IdMessage Mark SentServer ExecuteServer
2 310.149.49.113 10.149.49.119
1 410.149.49.113 10.149.49.119
1 510.149.49.113 10.149.49.119
3 610.149.49.119 10.149.49.113
0 710.149.49.119 10.149.49.113
0 810.149.49.119 10.149.49.113
0 910.149.49.113 10.149.49.113
0 1010.149.49.113 10.149.49.113
0 1110.149.49.113 10.149.49.113
0 1210.149.49.113 10.149.49.113
0 1310.149.49.113 10.149.49.113