Mọi chơng trình hay phần mềm của ngời dùng sẽ đợc lu trữ trên máy Server và cũng sẽ đợc thi hành bởi CPU của máy Server.Ưu điểm của công nghệ này nằm ở các điểm sau : Đối với ngời dùng T
Trang 1Lời cảm ơn
Em xin chân thành cảm ơn đến các thầy giáo, cô giáo đã giảng dạy, trang bị cho em những kiến thức nền tảng trong thời gian qua Em xin chân
thành cảm ơn thầy Lê Hồng Trang đã hớng dẫn em thực hiện đồ án này.
Nhân đây con cũng xin cảm ơn bố mẹ và gia đình đã nuôi dạy con nên ngời, và luôn là chỗ dựa tinh thần vững chắc giúp con vợt qua mọi khó khăn thử thách trong cuộc sống
Em xin chân thành cảm ơn các anh chị thân hữu và các bạn đã tận tình
đóng góp ý kiến và giúp đỡ để mình có thể thực hiện tốt đồ án này
Vinh, tháng 5 năm 2010
Trang 2Lời nói đầu
Ngày nay, ứng dụng công nghệ thông tin và việc tin học hoá đợc xem
là một trong những yếu tố mang tính quyết định trong hoạt động của các tổ chức nhà nớc, cũng nh các công ty cổ phần Nó đóng vai trò hết sức quan trọng và có thể tạo ra những bớc phát triển mạnh mẽ Nhu cầu trao đổi thông tin của con ngời cũng rất lớn và thông qua nhiều hình thức khác nhau nh trao
đổi với nhau bằng th từ, điện thoại, mạng máy tính Với tốc độ phát triển của công nghệ thông tin hiện nay có nhiều phần mềm trao đổi thông tin trên mạng Internet đã ra đời và đợc sử dụng rộng rãi nh: Google Talk, Yahoo! Messenger, Skype, …
Bên cạnh đó, mạng LAN đã có nhiều tiến bộ vợt bậc và ngày càng phổ biến hơn trong đời sống sinh hoạt Điều này làm cho nhu cầu liên lạc và trao
đổi thông tin qua mạng LAN ngày càng lớn hơn Chính vì vậy chơng trình chat và truyền tệp tin qua mạng LAN đợc xây dựng để đáp ứng phần nào những nhu cầu cấp thiết đó
Nội dung đồ án đợc chia thành 7 chơng:
Chơng 1: Mở đầu giới thiệu về lý do, mục đích chọn đề tài, đối tợng và
Chơng 5: Giới thiệu các vấn đề liên quan tới th viện Net, đa ra các
ph-ơng thức, thuộc tính của các lớp cơ bản đợc sử dụng hỗ trợ lập trình
Trang 3 Chơng 6: Chơng trình ứng dụng Chat và truyền tệp tin Đa ra một số
hàm và giao diện khi thực hiện một số bớc của chơng trình
Chơng 7: Kết luận Tóm tắt chức năng đã xây dựng và đề ra hớng phát
triển cho tơng lai
Về nội dung và hình thức của bài toán không thể tránh khỏi những thiếu sót, em mong nhận đợc sự đóng góp ý kiến của thầy cô và các bạn Em xin chân thành cảm ơn
Trang 4Chơng 1: Mở đầu 1.1 Lý do chọn đề tài
Hiện nay, mạng LAN đã có nhiều tiến bộ vợt bậc và ngày càng phổ biến hơn trong đời sống sinh hoạt Điều này làm cho nhu cầu liên lạc và trao
đổi thông tin qua mạng LAN ngày càng lớn hơn Chính vì vậy chơng trình chat và truyền tệp tin qua mạng LAN đợc xây dựng để đáp ứng phần nào những nhu cầu cấp thiết đó
1.2 Mục đích của đề tài
Xây dựng chơng trình chat và truyền tệp tin qua mạng LAN theo mô hình Client/ Server
1.3 Đối tợng và phạm vi nghiên cứu
1.3.1 Đối tợng nghiên cứu
Tìm hiểu cơ chế hoạt động của Socket trong NetFramwork từ đó viết ứng dụng chat và truyền tệp tin
1.3.2 Phạm vi nghiên cứu
Chơng trình chat và truyền tệp tin đợc xây dựng với khả năng chat bằng văn bản và truyền tệp tin giữa các user
Trang 5Chơng 2 Mô Hình Khách/ Chủ (Client/ Server)
2.1 Mô hình
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
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
Trang 6Mô 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ới 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 1 : Mô hình truyền tin Client/ Server
Quá trình giao tiếp Client và Server có thể diễn ra theo một trong hai chế
độ: bị phong tỏa (blocked) và không bị phong tỏa (non-blocked)
+ Chế độ bị phong tỏa (blocked):
Trang 7Trong 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 đó cha 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.2 Các kiến trúc Client/ Server
2.2.1 Client/ Server hai tầng:
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 lu trữ dữ liệu tập trung Tầng trình diễn thông thờng là Client, và tầng lu trữ dữ liệu là Server
Hầu hết các ứng dụng Internet nh là Email, Telnet, FPT 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 bài tập của chúng ta cũng có thể sử dụng mô hình này trong quá trình truyền với một số chọn lọc phù hợp với ứng dụng của chúng ta
Trang 8Trong ứ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 2 : Mô hình Client/ Server hai tầng
2.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 các kiến trúc ba tầng Một kiến trúc ba tầng có thêm một tầng mới tách biệt việc xử lý dữ liệu ở vị trí trung tâm
Trang 9Hình 3 : Mô hình 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.2.3 Client/ Server 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)
Trang 102.3 Tiến trình xử lý
Trong mô hình khách chủ, ngoài hệ thống mạng máy tính phải có còn
đòi hỏi việc tổ chức các xử lý bên dới sao cho hiệu quả, đảm bảo các yêu cầu (request) từ các máy trạm phải đợc máy chủ phúc đáp (response) một cách nhanh chóng, không làm tắc nghẽn hệ thống Khi thiết kế các ứng dụng theo mô hình khách chủ, ngời ta chia các xử lý ra làm hai nhánh: nhánh máy trạm
và nhánh máy chủ
2.3.1 Nhánh máy trạm (Client side)
Các ứng dụng sẽ thực hiện các công việc đọc và hiển thị dữ liệu hiện có bên trong cơ sở dữ liệu, tính toán dữ liệu đang hiển thị trên các màn hình ứng dụng, in dữ liệu ra
Các ngôn ngữ dùng để xây dựng ứng dụng là Delphi, Visual Basic, C++, C# Các ứng dụng này còn cho phép ng… ời dùng có thể thực hiện các thao tác xóa, thêm, sửa dữ liệu hiện có bên trong cơ sở dữ liệu bên nhánh máy chủ
Các ứng dụng khi xây dựng nên tránh việc đọc toàn bộ dữ liệu của bảng (Table) khi truy xuất dữ liệu từ máy chủ mà chỉ nên lấy về đúng các thong tin cần thiết cho các xử lý Việc này làm giảm đi lợng thông tin lu thông trên mạng
2.3.2 Nhánh máy chủ (Server side)
Các xử lý đợc thực hiện trực tiếp trên máy chủ Để đảm bảo việc bảo mật (security), những ngời dùng trên mạng phải đợc cấp phát quyền truy cập thì mới có thể truy xuất đợc các dữ liệu dùng chung
Việc cập nhật dữ liệu cho phép đồng thời cùng lúc giữa những ngời dùng hiện hành trên mạng, ví dụ nh máy chủ cho phép cùng lúc cả hai ngời dùng có thể cập nhật thông tin của khách hàng trong bảng khách hàng
Việc sao lu dữ liệu (backup data) đợc tự động để đảm bảo dữ liệu không bị mất trong các trờng hợp xấu xảy ra
Trang 112.4 Ưu điểm của mô hình Client/ Server:
2.4.1 Phát triển để giảm chi phí
Trong môi trờng cạnh tranh mạnh mẽ nh ngày nay, giảm chi phí đầu t nhng đảm bảo đợc hiệu quả công việc là một trong những yếu tố quan tâm hàng đầu của các nhà kinh doanh Mặt khác, đầu t cho một môi trờng công nghệ thông tin (cả phần mềm lẫn phần cứng) là không thể thiếu đối với mọi doanh nghiệp ngày nay, đặc biệt là các doanh nghiệp có quy mô từ trung bình
đến lớn
Về vấn đề này, các nhà quản lý doanh nghiệp luôn phải đối diện với một mâu thuẫn Để đảm bảo hiệu quả, mọi nhân viên của công ty (hay phần lớn nhân viên) phải đợc trang bị một máy tính riêng của mình Các máy tính này phải
đủ mạnh và tơng đối đồng bộ với nhau về phần cứng lẫn phần mềm Tuy nhiên, việc trang bị cho mỗi nhân viên một máy tính với cấu hình (phần cứng lẫn phần mềm) đồng bộ đòi hỏi một chi phí đầu t khá lớn Đó là cha kể đến vấn đề bảo trì Bảo trì một hệ thống máy tính đợc nối mạng thờng phức tạp và tốn rất nhiều thời gian và tiền bạc (thông thờng, các doanh nghiệp phải duy trì một đội ngũ bảo trì hoạt động thờng xuyên)
2.4.2 Mô hình Thin/ Client
Ngày nay, các doanh nghiệp thờng sử dụng rộng rãi mô hình Client/ Server Trong mô hình này, tất cả máy tính để bàn của các nhân viên (gọi là máy Client) sẽ đợc kết nối vào một máy tính trung tâm (máy Server) Máy Server sẽ đóng vai trò nh một kho tài nguyên phục vụ cho tất cả các máy Client nối vào nó Các tài nguyên này thờng là dữ liệu, các thiết bị phần cứng
Trang 12cũng đều thấy mỗi máy tính của các nhân viên đều có cài đặt Microsoft Windows, Microsoft Word, Microsoft Excel, các chơng trình nghe nhạc, xem phim, …
Để cài đặt toàn bộ hệ thống gồm có 100 máy tính của một công ty Những nhân viên phụ trách (ở Việt Nam thờng gọi là admin) phải cài đặt 100 lần giống hệt nhau ở mỗi máy tính Và để bảo trì, họ cũng phải tiến hành bảo trì từng máy tính một Bạn thử nghĩ xem, nếu 100 máy tính này đặt ở nhiều phòng ban khác nhau, thậm chí ở những tầng khác nhau của một tòa nhà thì công tác cập nhật sẽ khó khăn đến mức nào? Đa số các nhân viên đều không phải là ngời thành thạo máy tính, nên đối với họ, việc cài đặt hoặc xử lý các hỏng hóc của máy tính là việc rất khó khăn Một trong những phản ứng tự nhiên của các nhân viên là “xin lỗi, cho phép tôi gặp quản trị!” Và điều này
đã làm cho công tác quản trị đối với các doanh nghiệp và đặc biệt là các thành viên quản trị
Để giải quyết vấn đề “phân tán” này Ngời ta đã nghĩ ra một giải pháp tơng đối đơn giản Đó là đặt tất cả các tập tin chơng trình lẫn dữ liệu của phần mềm lên máy Server Khi muốn sử dụng phần mềm thì máy Client sẽ tải ch-
ơng trình (và dữ liệu) xuống máy Client và sau đó, chơng trình (hoặc dữ liệu) này sẽ đợc thi hành bằng CPU của máy Client
Tuy nhiên, giải pháp này sẽ ảnh hởng đến sở thích cá nhân của mỗi nhân viên Các nhân viên thờng muốn mỗi phần mềm có một bề ngoài riêng (nh các Wall-Paper hoặc Screen Saver trên môi trờng Windows, hoặc các skin của WinAmp, ).…
Nh vậy, làm sao có thể quản trị tập trung hệ thống máy tính mà vẫn
đảm bảo đợc tính riêng t của từng dùng?
Đến đây, ngời ta đã đa ra công nghệ Thin-Client Thin-Client có nghĩa
là “máy tính của ngời dùng có cấu hình tối thiểu” Công nghệ Thin-Client
t-ơng tự nh công nghệ Client/ Server, điểm khác duy nhất và cũng quan trọng nhất là tất cả
Trang 13năng lực xử lý lẫn lu trữ của toàn bộ mạng máy tính đều tập trung vào máy Server Mọi máy Client đều chỉ còn một màn hình, bàn phím và chuột Mọi chơng trình hay phần mềm của ngời dùng sẽ đợc lu trữ trên máy Server và cũng sẽ đợc thi hành bởi CPU của máy Server.
Ưu điểm của công nghệ này nằm ở các điểm sau :
Đối với ngời dùng
Thực hiện: cắm máy tính của mình vào mạng, mở màn hình lên, tiến
hành một số thủ tục đơn giản để đăng ký cấu hình cho “máy tính” của mình (thông thờng là thao tác chọn một dòng trong một danh sách) Môi trờng Windows cùng với các phần mềm Office quen thuộc sẽ ngay lập tức xuất hiện trên màn hình sẵn sàng chờ lệnh chúng ta mà không cần phải trải qua hàng giờ liền ngồi cài đặt máy tính
Tính bảo mật cao hơn (vì toàn bộ thao tác đều đợc kiểm soát chặt chẽ bởi Server) Những kẻ xâm nhập trái phép sẽ hầu nh không có cơ hội tìm kiếm các thông tin quan trọng đợc lu trữ trên các máy ngời dùng nh trớc kia Bây giờ, những kẻ xâm nhập muốn tìm kiếm thông tin đều phải đối diện với một khó khăn cực lớn là xâm nhập vào các máy Server - vốn đã đợc bảo vệ cực kỳ nghiêm ngặt so với các máy tính của ngời dùng Nguy cơ bị nhiễm virus vào các “máy tính” Client gần nh là không có
Đối với chủ doanh nghiệp
Chi phí thấp hơn: vì chỉ cần mua một máy chủ mà thay vì phải mua
100 máy con Cho phép sử dụng một đội ngũ quản trị với ít ngời hơn Hơn nữa, việc tiêu thụ điện sẽ thấp hơn rất nhiều Ngời ta ớc tính rằng công nghệ này có khả năng giúp doanh nghiệp tiết kiệm đến 80% chi phí đầu t cho CNTT
Dễ dàng quản trị: chỉ cần cài đặt phần mềm một lần, hơn nữa chi phí
mua phần mềm cũng rẻ hơn (mua 100 phần mềm riêng lẻ sẽ mắc hơn rất nhiều khi mua một phần mềm cho 100 ngời dùng) Việc bảo trì thiết bị và xử
lý sự cố cũng đơn giản hơn (vì chỉ cần bảo trì máy Server thay vì phải bảo trì
100 máy con!)
Trang 14Rất tiện lợi khi nâng cấp: chỉ cần nâng cấp một máy Server thay vì
phải nâng cấp riêng từng máy
Tiết kiệm đợc không gian lu trữ: thay vì mỗi máy tính phải lu trữ một
bản sao của phần mềm thì chỉ cần lu một bản sao duy nhất trên Server
Bảo vệ trớc sự xâm nhập của virus: mọi hoạt động của mạng đều có thể đợc theo dõi và giám sát tập trung để ngăn chặn ngay từ đầu nguy cơ bị phá hoại bởi các loại virus (thay vì trớc kia phải khuyến cáo mỗi ngời dùng phải tự cài
đặt các phần mềm chống virus và có trách nhiệm đối với việc bảo vệ máy tính của mình) Ngời dùng không có quyền tự ý download và cài đặt những phần mềm nguy hiểm
Cho đến nay, vị trí của công nghệ Thin-Client gần nh đã đợc khẳng định Với một chi phí đầu t thấp hơn rất nhiều, công nghệ Thin-Client có thể hoàn toàn thay thế đợc cho mô hình truyền thống mà vẫn đảm bảo đợc năng lực lẫn tính hiệu quả của hệ thống
Tơng lai của thin client:–
Vai trò của Thin-Client đối với môi trờng doanh nghiệp đã rõ ràng Liệu trong tơng lai, Thin-Client có thể là công nghệ chủ lực đối với việc truy cập từ xa hay không?
Khi ngời dùng bắt đầu làm việc với công nghệ “Thin”, họ đã nhanh chóng cảm nhận đợc sự tiện lợi của nó Cho dù ngời dùng đang ở bất kỳ đâu, trong văn phòng làm việc của công ty, trong một đại lý ở xa của công ty hoặc thậm chí ở cả phi trờng, chỉ cần một sử dụng phần mềm giả lập của Thin-Client chạy trên một máy tính xách tay, toàn bộ môi trờng quen thuộc và ổn định của mạng LAN sẽ xuất hiện trở ngay trớc mắt ngời dùng cho phép họ truy xuất vào toàn bộ kho dữ liệu, sử dụng các ứng dụng, kết nối Internet tốc độ cao với
đầy đủ dịch vụ (e-mail, www, ).…
2.4.3 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 lu
Trang 15trữ ngay trên máy chủ, các xử lý đơn giản sẽ đợc thực hiện ngay trong ứng dụng trên máy trạm Chính vì thế hệ thống vận hành sẽ hiệu quả hơn.
2.4.4 Tính tơng thích cao
Việc chọn lực các phần mềm để phát triển ứng dụng có thể hòan 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 Bạn 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
2.5 Mô hình truyền tin Socket
Đây mô hình và cũng là các bớc ta cần đặc biệt quan tâm trong quá trình tạo ứng dụng của chúng ta Nó cung cấp cho ta quá trình trao đổi thông tin và dữ liệu giữa các thành phần trong mô hình Client/ Server Mô hình này cung cấp cho ta các thực thể và trình tự để ta có thẻ xây dựng ứng dụng Khi lập trình ta có thể tuân theo trình tự sau đây để tạo ứng dụng
Hình 4: Mô hình truyền tin Socket
Khi lập trình ngời ta thờng quan tâm đến chế độ bị phong toả vì nó có thể dẫn đến tình huống một tiến trình nào đó sẽ rơi vào vòng lặp vô hạn của quá trình gửi hoặc nhận
Trang 162.5.1 Giới thiệu và khái niệm
Socket là giao diện lập trình ứng dụng(API-Application Programming
Interface), đợc giới thiệu lần đầu tiên trong ấn bản UNIX-BSD 4.2 dới dạng các hàm hệ thống theo cú pháp ngôn ngữ C (socket(), bind(), connect(), send(), receive(), read(), write(), close(), ).…
Ngày nay, socket hỗ trợ hầu hết các hệ điều hành nh MS Windows, Linux và
đợc sử dụng trong nhiều ngôn ngữ lập trình khác nhau nh: C, C#, C++, Java, visual basic, Socket cho phép thiết lập các kênh giao tiếp mà hai đầu kênh…
đợc đánh dấu bởi hai cổng(port), thông qua các cổng này một quá trình có thể nhận và gửi dữ liệu với các quá trình khác nhau
2.5.2 Nguyên lý hoạt động
Trớc hết chúng ta hãy xem làm thế nào các socket có thể xác định đựợc nhau
Khi một chơng trình tạo ra một socket, một định danh dạng số sẽ đợc gán cho socket, định danh này chính là cổng mà chúng ta đã tìm hiểu ở trên Việc gán số cổng này cho socket có thể đợc thực hiện bởi chơng trình hoặc bởi hệ điều hành tùy theo cách socket đợc sử dụng nh thế nào Trong mỗi gói tin mà socket gửi đi có chứa hai thông tin để xác định đích đến của gói tin:+ Một địa chỉ mạng để xác định hệ thống sẽ nhận gói tin
+ Một số định danh cổng để nói cho hệ thống đích biết socket nào trên nó
sẽ nhận dữ liệu
Nhờ hai thông tin này mà gói tin có thể đến đợc đúng máy tính chứa socket mà nó cần đến (nhờ địa chỉ mạng) và đợc phân phối đến đúng socket
đích ( nhờ địa chỉ cổng của socket đích)
Bởi dới góc độ lập trình các socket thờng làm việc theo cặp, một socket
đóng vai trò làm Client còn các socket khác đóng vai trò nh một Server Socket phía Server xác định một cổng cho giao tiếp mạng, sau đó chờ nghe dữ liệu mà Client gửi tới nó bằng Client socket Do đó các cổng cho Server socket phải đợc biết bởi các chơng trình Client Ví dụ Server FTP sử dụng một socket để nghe tại cổng 21 do đó nếu một chơng trình Client muốn giao tiếp với Server FTP nó cần phải kết nối đến socket đang nghe tại cổng 21
Trang 17Nh vậy cổng của socket phía Server đợc xác định bởi chơng trình, ngợc lại cổng cho Client socket đợc xác định bởi hệ điều hành Khi một socket phía client gửi một gói tin tới socket phía Server thì trong gói tin đã có chứa thông tin về địa chỉ của hệ thống Client và cổng của socket phía Client nên Server hoàn toàn có thể gửi thông tin phản hồi cho Client
Chúng ta có thể khái quát quá trình trao đổi dữ liệu thông qua các socket nh sau:
1 Chơng trình phía Server tạo ra một socket, socket này đợc chơng trình gắn với một cổng trên Server Sau khi đựợc tạo ra socket này ( mà từ nay ta sẽ gọi là socket phía Server) sẽ chờ nghe yêu cầu từ phía Client
2 Khi chơng trình phía Client cần kết nối với một Server, nó cũng tạo ra một socket, socket này cũng đợc hệ điều hành gắn với một cổng Chơng trình Client sẽ cung cấp cho socket của nó ( mà từ nay ta sẽ gọi là socket phía Client) điạ chỉ mạng và cổng của socket phía Server và yêu cầu thực hiện kết nối ( nếu chơng trình định sử dụng giao thức hớng kết nối) hoặc truyền dữ liệu ( nếu chơng trình sử dụng giao thức không hớng kết nối)
3 Chơng trình phía Server và chơng trình phía Client trao đổi dữ liệu với nhau bằng cách đọc từ socket hoặc ghi vào socket của minh Các socket ở hai phía nhận dữ liệu từ ứng dụng và đóng gói để gửi đi hoặc nhận các dữ liệu đợc gửi đến và chuyển cho chơng trình ứng dụng bởi socket ở cả hai phía đều biết
đợc địa chỉ mạng và điạ chỉ cổng của nhau
Bớc thứ hai chúng ta thấy chơng trình ứng dụng phải lựa chọn giao thức mà nó
Phía Server: Khi một ứng dụng trên Server hoạt động nó sẽ tạo ra một
socket và đăng ký với Server một cổng ứng dụng và chờ đợi yêu cầu kết nối từ
Trang 18phía Client qua cổng này.
Hình 5 : Client gửi yêu cầu đến Server
Phía client: Nó biết địa chỉ của máy trên đó Server đang chạy và cổng
và Server đang chờ nghe yêu cầu Do đó khi muốn kết nối đến Server, nó cũng tạo ra một socket chứa địa chỉ máy Client và cổng của ứng dụng trên máy Client đồng thời Client sẽ cung cấp cho socket của nó địa chỉ và cổng của Server mà nó cần kết nối và yêu cầu socket thực hiện kết nối
Khi Server nhận đợc yêu cầu kết nối từ Client, nếu nó chấp nhận thì Server sẽ sinh ra một socket mới đợc gắn với một cổng khác với cổng mà nó đang nghe yêu cầu Sở dĩ Server làm nh vậy bởi nó cần cổng cũ để tiếp tục nghe yêu cầu
từ phía Client trong khi vẫn cần một kết nối với Client
Hình 6: Server chấp nhận yêu cầu và tạo một socket để phục vụ Client
Sau đó chơng trình ứng dụng phía Server sẽ gửi thông báo chấp nhận kết nối cho Client cùng thông tin về địa chỉ cổng mới của socket mà nó dành cho Client
Quay lại phía Client, nếu kết nối đợc chấp nhận nghĩa là socket của nó đã đợc tạo ra thành công và nó có thể sử dụng socket để giao tiếp với Server bằng cách viết và ghi tới socket theo cách giao tiếp với một tài nguyên trên máy tính thông thờng
Trang 192.5.4 Một số hàm và thuộc tính trong Socket.
• Accept(): Chấp nhận một kết nối vào socket
• Bind(): Gán tên định danh cho socket
• Close(): Đóng một kết nối socket
• Connect(): Khởi tạo một kết nối tới một socket
• Listen(): Mở một socket trên cổng để đợi một kết nối tới
• Create(): Tạo một socket (đầu cuối cho giao tiếp)
• GetSocketoption(): Đa các tuỳ chọn cho socket
• Receive(): Nhận dữ liệu từ một kết nối socket
• Recvfrom: Nhận dữ liệu từ một socket có định hớng không
• Send(): Gửi dữ liệu từ một kết nối socket
• SendTo(): Gửi tin nhắn tới một socket thông báo nó đã kết nối
đ-ợc hay cha
2.6 Các cổng hớng kết nối
Port có thể gọi là một cổng kết nối cho mạng thông tin, mạng Internet
Cổng kết nối có thể là một cổng thực, vật lý, ví dụ nh là trong máy tính
có cổng kết nối dây chuyền (serial port) COM1, cổng kết nối song song (parallel port) LPT1 cho máy in, cổng USB, cổng qua card mạng, Tuy nhiên trong lý thuyết mạng, cổng kết nối có thể là khái niệm trừu tợng, đánh
số từ 0 đến 65535, đợc dùng trong các lớp phần mềm (không vật lý), ví dụ cổng kết nối 8080 cho Web Browser, cổng kết nối 80 cho Web Server, Lý…
do ngời ta phát minh ra cái khái niệm trừu tợng này là vì có thể có nhiều ứng dụng cùng dùng chung một cổng vật lý, ví dụ có nhiều ứng dụng dùng cổng card mạng: email, browser, Để tránh nhầm lẫn với nhau, mỗi ứng dụng…phải dùng riêng ổ kết nối (socket), dùng riêng giao thức (protocol)
Một Client có thể chạy nhiều dịch vụ trên mạng với giao thức TCP/IP
sẽ liên kết với các port( cổng) ở lớp vận chuyển với một ứng dụng tơng ứng
Số thứ tự của port đợc sử dụng để phân biệt giữa nhiều cuộc kết nối với nhau
Trang 20tại cùng một thời điểm trên mạng Chỉ số port đặc biệt cần thiết khi host thực hiện liên lạc với một Server chạy nhiều dịch vụ đồng thời
Số port đợc phân ra thành 3 phần nh sau:
+ Chỉ số port dới 255 dành cho các ứng dụng công cộng
+ Chỉ số port từ 255 đến 1023 cung cấp cho các ứng dụng đợc mua bán trên thị trờng của các công ty
Ví dụ: Để dễ hiểu ta có thể liên tởng hai máy tính đợc kết nối với nhau nh hai
thí sinh trong phòng thi, A và B đang thi lại môn chế tạo bom chẳng hạn Tất nhiên là B không biết khoản này nên sẽ tìm cách kết nối với A để hỏi bài Khi
đó có thể coi B nh là chơng trình bên phía Client và A chạy bên phía Server
Cụ thể B (Client) khi
bí câu nào sẽ gửi thông điệp (bằng cách đa cho mảnh giấy chẳng hạn) đến A (Server) A sau khi nghiên cứu sẽ chép câu trả lời vào giấy và chuyển cho B
Trong mạng máy tính khi hai máy tính kết nối với nhau theo giao thức TCP, chúng sẽ giao tiếp với nhau bằng cách gửi và nhận thông tin qua socket
Nh trong ví dụ trên thì socket chính là mảnh giấy, Client và Server giao tiếp với nhau bằng cách ghi và đọc với mảnh giấy
Tiếp tục với ví dụ trên, trớc khi chuyển bài chắc chắn B và A sẽ phải quy ớc với nhau là sẽ chuyển giấy xuống dới chân cho khỏi bị phát hiện Và
Trang 21A sẽ luôn phải chờ B chuyển giấy (giả sử là A làm xong bài rồi) Sau khi đọc yêu cầu, A sẽ phải tìm tờ giấy ghi bài làm vào rồi chuyển cho B.
Trong mạng máy tính cũng vậy, thông thờng mỗi socket gắn với một cổng (port) nhất định và phía Server luôn lắng nghe (listen) và đợi đến khi socket từ phía Client gửi đến Sau khi nhận, Sever sẽ tạo mới socket và gửi về Client Và dĩ nhiên là thông tin đợc đọc và ghi lên socket
Chơng 3: Giao thức TCP/IP 3.1 Địa chỉ IP
Trang 22Mỗi địa chỉ IP có độ dài 32 bits (đối với IP4) đợc tách thành 4 vùng, mỗi vùng 1byte, có thể đợc biểu thị dới dạng thập phân, thập lục phân hoặc nhị phân Cách viết phổ biến thất là dùng kí pháp thập phân có dấu chấm để tách giữa các vùng Địa chỉ IP là để định danh duy nhất cho một host bất kì trên mạng.
3.2 Định tuyến IP
Có hai loại định tuyến :
+ Định tuyến trực tiếp : Là việc xác định đờng nối giữa hai trạm làm việc trong cùng một mạng vật lý
+ Định tuyến không trực tiếp: Là việc xác định đờng nối giữa hai trạm làm việc không cùng nằm trong cùng một mạng vật lý do
đó việc truyền tin giữa chúng phải thông qua các trạm trung gian
là các cổng ra vào (Gateway)
Để kiểm tra xem trạm đích có nằm trên cùng mạng với mạng nguồn hay không, ngời gửi phải tách lấy phần địa chỉ mạng trong phần địa chỉ IP Nếu hai địa chỉ này có địa chỉ mạng giống nhau thì gói thông tin (Datagram)
sẽ đợc truyền đi trực tiếp, ngợc lại phải xác định một cổng ra vào này chuyển tiếp gói dữ liệu
+ Nếu địa chỉ IP đích là địa chỉ của một trạm nằm trên cùng một mạng IP với trạm nguồn thì các gói dữ liệu sẽ đợc chuyển thẳng tới đích
+ Nếu địa chỉ IP đích không nằm trên cùng một mạng với máy nguồn thì các gói dữ liệu sẽ đợc gửi đến một máy trung chuyển, IP gateway để chuyển tiếp IP gateway là một thiết bị mạng IP đảm nhận việc lu chuyển các gói dữ liệu IP giữa hai mạng có IP khác nhau
3.3 Giao thức TCP/ IP
TCP(Transmission Control Protocol) là giao thức có liên kết (connection oriented) nghĩa là cần 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 giữ liệu với nhau
Trang 23TCP cung cấp khả năng truyền dữ liệu một cách an toàn trong các máy của một hệ thống mạng Nó cung cấp thêm các chức năng nhằm kiểm tra tính chính xác của dữ liệu khi đến và bao gồm cả việc gửi lại dữ liệu khi có lỗi xảy ra.
TCP cung cấp các chức năng chính sau:
+ Thiết lập, duy trì, kết thúc liên kết giữa hai quá trình
+ Phân phát gói tin một cách tin cậy
+ Đánh số thứ tự các gói dữ liệu nhằm truyền dữ liệu một cách tin cậy
+ Cho phép điều khiển lỗi
+ Cung cấp khả năng đa kết nối với các quá trình khác nhau giữa trạm nguồn và trạm đích nhất định thông qua việc sử dụng cổng.+ Truyền dữ liệu sử dụng cơ chế song công( full- duplex)
IP "chấp nhận" các gói dữ liệu từ các giao thức TCP và UDP, nó "cộng " thêm các "thông tin tiêu đề (header) của riêng nó và "chuyển giao" thông tin cho bộ phần truyền dữ liệu
TCP là giao thức hớng kết nối, nó cung cấp một đờng truyền dữ liệu tin cậy giữa hai máy tính.Tính tin cậy thể hiện ở việc đảm bảo dữ liệu đợc gửi sẽ
đến đợc đích và theo đúng thứ tự nh khi đợc gửi
Tính tin cậy của đờng truyền đợc thể hiện ở hai đặc điểm sau:
Mọi gói tin cần gửi sẽ đến đợc đích Để làm điều này thì mỗi lần phía gửi gửi xong một gói tin nó sẽ chờ nhận một xác nhận từ bên nhận rằng đã nhận đợc gói tin Nếu sau một khoảng thời gian mà phía gửi không nhận đợc thông tin xác nhận phản hồi thì nó sẽ phát lại gói tin.Việc phát lại sẽ đợc tiến hành cho đến khi việc truyền tin thành công, tuy nhiên sau một số lần phát lại mã nào đó mà vẫn cha thành công thì phía gửi có thể suy ra là không thể truyền tin đợc và sẽ dừng việc phát tin
Các gói tin sẽ đợc trình ứng dụng nhận đợc theo đúng thứ tự nh chúng
đợc gửi Bởi các gói tin có thể đợc dẫn đi trên mạng theo nhiều con đờng khác
Trang 24nhau trớc khi tới đích nên thứ tự khi tới đích của chúng có thể không giống nh khi chúng đợc phát Do đó để đảm bảo có thể sắp xếp lại các gói tin ở phía nhận theo đúng thứ tự nh khi chúng đợc gửi, giao thức TCP sẽ gắn vào mỗi gói tin một thông tin cho biết thứ tự của chúng trong cả khối tin chung đợc phát nhờ vậy bên nhận có thể sắp xếp lại các gói tin theo đúng thứ tự của chúng.
Nh vậy có thể thấy TCP cung cấp cho chúng ta một kênh truyền thông điểm -
điểm phục vụ cho các ứng dụng đòi hỏi giao tiếp tin cậy nh HTTP ( HyperText Tranfer Protocol), FTP ( File Tranfer Protocol), Telnet Các…ứng dụng này đòi hỏi một kênh giao tiếp tin cậy bởi thứ tự của dữ liệu đợc gửi và nhận là yếu tố quyết định đến sự thành công hay thất bại của chúng Hãy lấy ví dụng khi HTTP đợc sử dụng để đọc thông tin từ một điạ chỉ URL, dữ liệu phải đợc nhận theo đúng thứ tự mà chúng đợc gửi nếu không thứ mà bạn nhận đợc có thể là một trang HTML với nội dung lộn xộn hoặc một file zip bị lỗi và không thể giải nén
3.4 Thiết lập và kết nối TCP/IP
Mô hình kết nối Tcp Client và Server nh sau:
Trang 26trình trạm trong trờng hợp số tuần tự thu để báo rằng thực thể dịch vụ đã nhận đợc giá trị ISN của tiến trình trạm.
• Bớc 3:
Tiến trình trạm trả lời lại gói SYN của thực thể dịch vụ bằng một thông báo ACK cuối cùng Bằng cách này các thực thể TCP trao đổi một cách tin cậy các giá trị ISN của nhau và có thể bắt đầu trao đổi dữ liệu Không có thông
điệp nào trong ba bớc trên chứa bất kì dữ liệu gì, tất cả thông tin trao đổi đều nằm trong phần tiêu đề của thông điệp TCP
• Kết thúc nối:
Khi có nhu cầu kết thúc nối thực thể TCP ta thực hiện nh ví dụ sau:
A gửi yêu cầu kết thúc kết nối với FIN=1 Vì kết nối TCP là song công nên mặc dù nhận đợc yêu cầu kết thúc kết nối của A (A thông báo hết số liệu gửi) thực thể B vẫn có thể truyền số liệu cho đến khi B không còn số liệu để gửi và thông báo cho A bằng yêu cầu kết thúc kết nối với FIN=1 của mình Khi thực thể TCP đã nhận đợc thông điệp FIN và sau khi đã gửi thông điệp FIN của chính mình, kết nối TCP thực sự kết thúc
Trang 27Chơng 4: Giao Thức FTP
4.1 Giới thiệu
File Transfer thờng đợc dùng để trao đổi tập tin qua mạng lới truyền
thông dùng giao thức TCP/IP (chẳng hạn nh Internet - mạng ngoại bộ - hoặc
Vì giao thức FTP là một giao thức chuẩn công khai, cho nên bất cứ một
công ty phần mềm nào, hay một lập trình viên nào cũng có thể viết trình chủ FTP hoặc trình khách FTP
Hầu nh bất cứ một nền tảng hệ điều hành máy tính nào cũng hỗ trợ giao thức FTP Điều này cho phép tất cả các máy tính kết nối với một mạng lới có nền TCP/IP, xử lý tập tin trên một máy tính khác trên cùng một mạng lới với mình, bất kể máy tính ấy dùng hệ điều hành nào (nếu các máy tính ấy đều cho phép sự truy cập của các máy tính khác, dùng giao thức FTP)
4.3 Cơ chế hoạt động