Thứ Năm, 23 tháng 1, 2014

Lập trình giao tiếp mạng với winshock

Tất cả các nút đều sử dụng chung đường dây cáp chính này. Phía hai đầu dây cáp được bịt
bởi một thiết bị gọi là terminator. Các tín hiệu và gói dữ liệu (packet) khi di chuyển lên
hoặc xuống trong dây cáp đều mang theo điạ chỉ của nơi đến.
Ưu điểm của topomạng bus:
- Dùng dây cáp ít, dễ lắp đạt
- Không giới hạn độ dài cáp
Nhược điểm:
- Sẽ gây ra nghẽn mạng khi chuyển lưu lượng dữ liệu lớn
- Khi một trạm trên đường truyền bị hỏng thì các trạm khác cũng phải ngừng hoạt động
Mạng dạng vòng (Ring Topology)
Mạng dạng này, bố trí theo dạng xoay vòng, đường dây cáp được thiết kế làm thành một
vòng khép kín, tín hiệu chạy quanh theo một chiều nào đó. Các nút truyền tín hiệu cho nhau
mỗi thời điểm chỉ được một nút mà thôi. Dữ liệu truyền đi phải có kèm theo địa chỉ cụ thể
của mỗi trạm tiếp nhận.
Ưu điểm của topo mạng Ring:
-Mạng dạng vòng có thuận lợi là có thể nới rộng ra xa, tổng đường dây cần thiết ít hơn so
với hai kiểu trên.
Nhược điểm:
-Đường dây phải khép kín, nếu bị ngắt ở một nơi nào đó thì toàn bộ hệ thống cũng bị
ngừng.
Mạng dạng kết hợp
Kết hợp hình sao và tuyến ( star/Bus Topology )
Cấu hình mạng dạng này có bộ phận tách tín hiệu (spitter) giữ vai trò thiết bị trung tâm, hệ
thống dây cáp mạng có thể chọn hoặc Ring Topology hoặc Linear Bus Topology.
Ưu điểm của cấu hình này là mạng có thể gồm nhiều nhóm làm việc ở cách xa nhau,
ARCNET là mạng dạng kết hợp Star/Bus Topology. Cấu hình dạng này đưa lại sự uyển
chuyển trong việc bố trí đường dây tương thích dễ dàng đối với bất cứ toà nhà n
Kết hợp hình sao và vòng (Star/Ring Topology)
Cấu hình dạng kết hợp Star/Ring Topology, có một "thẻ bài" liên lạc (Token) được chuyển
vòng quanh một cái HUB trung tâm. Mỗi trạm làm việc (workstation) được nối với HUB -
là cầu nối giữa các trạm làm việc và để tǎng khoảng cách cần thiết.
Mạng full mesh
Topo này cho phép các thiết bị kết nối trực tiếp với các thiết bị khác mà không cần phải qua
bộ tập trung như Hub hay Switch.
Ưu điểm:
- Các thiết bị hoạt động độc lập, khi thiết bị này hỏng vẫn không ảnh hưởng đến thiết bị
khác
Nhược điểm:
- Tiêu tốn tài nguyên về memory, về xử lý của các máy trạm
- Quản lý phức tạp
Mạng phân cấp (Hierarchical)
Mô hình này cho phép quản lý thiết bị tập chung, các máy trạm được đặt theo từng lớp tùy
thuộc vào chức năng của từng lớp, ưu điểm rõ ràng nhất của topo dạng này là khả năng
quản lý, bảo mật hệ thống,nhưng nhược điểm của nó là việc phải dùng nhiều bộ tập trung
dẫn đến chi phí nhiều.
1.4 Giao thức mạng
Việc trao đổi thông tin dù là đơn giản nhất cũng phải tuân theo những nguyên tắc
nhất định. Đơn giản như hai người nói chuyện với nhau, muốn cho cuộc nói chuyện đạt kết
quả thì ít nhất cả hai người phải ngầm tuân thủ quy ước : khi một người nói thì người kia
phải biết lắng nghe và ngược lại. Việc truyền thông trên mạng cũng vậy. Cần có quy tắc,
quy ước truyền thông về nhiều mặt : khuôn dạng cú pháp của dữ liệu, các thủ tục gởi, nhận
dữ liệu, kiểm soát hiệu quả nhất chất lượng truyền thông tin. Tập hợp những quy tắc, quy
ước truyền thông đó được gọi là giao thức của mạng (protocol).
Một tập hợp tiêu chuẩn để trao đổi thông tin giữa hai hệ thống máy tính hoặc hai
thiết bị máy tính với nhau được gọi là giao thức. Các giao thức này còn được gọi là các
nghi thức hoặc định ước của máy tính.
1.4.1 Giao thức TCP/IP
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à vận chuyển trên mạng Internet. TCP (Transmission Control
Protocol) là giao thức thuộc tầng vận chuyển và IP (Internet Prorocol) 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 nhiều 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 phương tiện truyền thông liên mạng.
a. Giao thức IP
Nhiệm vụ chính của giao thức IP là cung cấp khả năng kết nối các mạng con thành
liên kết mạng để truyền dữ liệu, vai trò của IP là vai trò của giao thức tầng mạng trong mô
hình OSI. Giao thức IP là một giao thức kiểu không hướng kết nối (connectionless), có
nghĩa là không cần có giai đoạn thiết lập liên kết trước khi truyền dữ liệu.
Để định danh các trạm (host) trong liên mạng được người ta sử dụng địa chỉ IP có
độ dài 32 bits. Mỗi giao diện trong một máy có hỗ trợ giao thức IP đều được gán một địa
chỉ IP (một máy tính có thể gắn với nhiều mạng do vậy có thể có nhiều địa chỉ IP). Địa chỉ
IP gồm 3 phần: bit định danh lớp mạng, địa chỉ mạng (netID) và địa chỉ máy (hostID). Mỗi
địa chỉ IP được phân thành 4 vùng (mỗi vùng 1 byte), có thể biểu thị dưới dạng thập phân,
bát phân, thập lục phân hay nhị phân. Cách viết phổ biến nhất là dùng ký pháp thập phân có
dấu chấm (dotted decimal notation) để tách các vùng. Mục đích của địa chỉ IP là để định
danh duy nhất cho một máy tính bất kỳ trên liên mạng.
Do tổ chức và độ lớn của mạng con (subnet) của liên mạng có thể khác nhau, người
ta chia các địa chỉ IP thành 5 lớp, ký hiệu là A, B, C, D, và E. Trong lớp A, B, C chứa địa
chỉ có thể gán được. Lớp D dành riêng cho lớp kỹ thuật multicasting. Lớp E được dành cho
những ứng dụng trong tương lai.
Hình 1.5. Cấu trúc của các lớp địa chỉ IP
NetID dùng để nhận dạng từng mạng riêng biệt. Các mạng liên kết phải có địa chỉ
mạng (netID) riêng cho mỗi mạng. Ở đây các bit đầu tiên của byte đầu tiên được dùng để
định danh lớp địa chỉ (0 - lớp A, 10 - lớp B, 110 - lớp C, 1110 - lớp D và 11110 - lớp E).
Ở đây ta xét cấu trúc của các lớp địa chỉ có thể gán được là lớp A, B, C.
Phân lớp của địa chỉ IP như sau:
- Mạng lớp A: địa chỉ mạng (netID) là 1 byte và địa chỉ host (hostID) là 3 byte. Lớp A cho
phép định dạng tới 126 mạng, tối đa hơn 16 triệu host trên mỗi mạng. Lớp này được dùng
cho các mạng có số trạm cực lớn.
- Mạng lớp B: địa chỉ mạng (netID) là 2 byte và địa chỉ host (hostID) là 2 byte. Lớp B cho
phép định danh tới 16382 mạng, với tối đa 65534 host trên mỗi mạng.
- Mạng lớp C: địa chỉ mạng (netID) là 3 byte và địa chỉ host (hostID) là 1 byte. Lớp C cho
phép định danh tới 2 triệu mạng, với tối đa 254 host trên mỗi mạng. Lớp này được dùng
cho các mạng có ít trạm.
Hình 1.6. Bảng phân lớp địa chỉ IP
Một số địa chỉ có tính chất đặc biệt: một địa chỉ có hostID = 0 được dùng để hướng
tới mạng định danh bởi vùng netID. Ngược lại, một địa chỉ có vùng hostID gồm toàn số 1
dùng để hướng tới tất cả các host nối vào mạng netID, và nếu vùng netID cũng gồm toàn số
1 thì nó hướng tới tất cả các host liên mạng.
Cần lưu ý rằng địa chỉ IP được dùng để định danh các host và mạng ở tầng OSI, và
chúng không phải là các địa chỉ vật lý (hay địa chỉ MAC) của các trạm trên đó một mạng
cục bộ (Ethernet, Token Ring).
Trong nhiều trường hợp, một mạng có thể được chia làm nhiều mạng con (subnet),
lúc đó có thể đưa thêm các vùng subnetid để định danh các mạng con. Vùng subnetid được
lấy từ vùng hostID, cụ thể đối với lớp A, B, C như ví dụ sau:
Hình 1.7. Ví dụ địa chỉ IP khi bổ sung subnetid
b. Giao thức TCP
TCP là một giao thức hướng kết nối, có 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 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 sau khi
gửi xong một gói tin nó sẽ chờ nhận một biên nhận từ bên nhận rằng đã nhận được đúng
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 max nào đó mà vẫn chưa 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
đ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 nhau 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 một cách đúng đắn như ở phía gửi, giao thức
TCP sẽ đánh số thứ tự cho từng gói tin 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ự ban đầu 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), FPT (File Tranfer Protocol),… Các ứng dụng này đỏi hỏi một kênh giao tiếp tin
cậy bởi thứ tự 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.
1.4.2 Giao thức UDP
UDP (User Datagram Protocol) là giao thức không hướng kết nối, được sử dụng thay thế
cho TCP theo yêu cầu của từng ứng dụng. Khác với TCP, UDP không có các chức năng
thiết lập và kết thúc kết nối. Tương tự như IP, nó cũng không cung cấp cơ chế báo nhận
(acknowledgment), không sắp xếp tuần tự các gói tin (datagram) đến và có thể dẫn đến tình
trạng mất hoặc trùng dữ liệu mà không có cơ chế thông báo lỗi cho người gửi. Qua đó ta
thấy UDP cung cấp các dịch vụ vận chuyển không tin cậy như trong TCP.
Khuôn dạng UDP datagram được mô tả với các vùng tham số đơn giản hơn nhiều so
với TCP segment.
Hình 1.4.2 Khuôn dạng của gói tin UDP
1.5 . Các mô hình hoạt động của mạng máy tính
Mô hình hoạt động của mạng máy tính có hai loại:
- Mô hình mạng hoạt động theo dạng peer to peer (Ngang hàng)
- Mô hình mạng hoạt động theo dạng clients/server
1.5.1 Mô hình mạng hoạt động theo dạng peer to peer
Không tồn tại bất kỳ máy chuyên dụng hoặc cấu trúc phân cấp giữa các máy tính, mọi
máy tính đều bình đẳng và có vai trò như nhau. Thông thường mỗi máy tính hoạt động với
cả vai trò máy khách và máy phục vụ, vì vậy không có máy nào được chỉ định quản lý toàn
mạng. Người dùng ở từng máy tự quyết định dữ liệu nào trên máy của mình sẽ được chia sẻ
để dùng chung trên mạng.
Hình 1.5.1 Mô hình mạng hoạt động theo dạng peer to peer
Ưu điểm
- Các peer tham gia vào mạng có thể đóng góp tài nguyên chia sẻ với nhau, tài
nguyên có thể riêng lẻ và có thể truy cập tài nguyên ở bất các các nodes nào trong mạng.
- Các peer đóng vai tròn như cả Client khi truy vấn thông tin và Server khi cung cấp
thông tin.
- Không cần Server riêng, khi hệ thống càng mở rộng thì khả năng hoạt động càng
tốt.
- Chi phí thấp, dễ cài đặt và bảo trì
- Nhược điểm
- Liên quan đến văn hóa trong chia sẻ về các tài nguyên có bản quyền.
- Không đáng tin cậy và không tốt cho các ứng dụng cơ sở dữ liệu cần bảo mật cao.
1.5.2 Mô hình mạng hoạt động theo dạng clients/ server
Những mô hình LAN trong thời kỳ đầu (tập trung và máy phục vụ tệp) được xây
dựng chủ yếu dựa trên phương thức chia xẻ tài nguyên dùng chung: chia xẻ sử dụng đường
truyền theo thời gian, chia xẻ các tài nguyên vật lý khác và dùng chung tài nguyên thông tin
là dữ liệu và các chương trình xử lý chúng trên một hoặc nhiều máy phục vụ (Server) của
mạng.
Hình 1.5.2.1 Mô hình Client/Server
Mô hình phần mềm Client/Server là mô hình giải pháp phần mềm cho việc khắc
phục tình trạng quá tải trên mạng và vượt qua những ngăn cách về sự khác nhau trong cấu
trúc vật lý cũng như hệ điều hành của các hệ thống máy tính khác nhau trên mạng.
Mỗi phần mềm xây dựng theo mô hình Client/Server sẽ được chia làm hai phần:
phần hoạt động trên máy phục vụ gọi là phần phía Server và phần hoạt động trên trạm làm
việc gọi là phần phía Client. Với mô hình này các trạm làm việc cũng được gọi là các
Client (hay máy Client) còn các máy phục vụ gọi là các Server. Nhiệm vụ của mỗi phần
được quy định như sau:
• Phần phía Server quản lý các giao tiếp môi trường bên ngoài tại Server và với các
Client, tiếp nhận các yêu cầu dưới dạng các xâu ký tự (query string), phân tích các
query string, xử lý dữ liệu và gửi kết quả trả lời về phía các Client.
• Phần phía Client tổ chức giao tiếp với người dùng, với môi trường bên ngoài tại
trạm làm việc và với phía Server, tiếp nhận yêu cầu của người dùng, thành lập các
query string gửi về phía Server, tiếp nhận kết quả và tổ chức trình diễn chúng.
Hình 1.5.2.2 Mô hình phần mềm Client/Server
Đặc điểm của mô hình Client/Server:
Máy phục vụ và máy khách thông minh (máy phục vụ trong mô hình này không phải
chỉ đơn thuần là phục vụ tệp mà gồm cả xử lý dữ liệu)
• Các máy chia sẻ chung đường truyền thông tốc độ cao (hàng nghìn Kbps)
• Mỗi phần mềm ứng dụng được xây dựng thành 2 phần: chương trình phục vụ và
chương trình khách
• Lưu trữ dữ liệu tập trung tại máy phục vụ
• Xử lý dữ liệu phân tán trên các máy khách
• Thông tin trên đường truyền là các xâu truy vấn và trả lời
Hình 1.2.2.3 Ví dụ về một số chương trình quản lý xây dựng trên mô hình Client/Server
Ưu điểm:
• Với mô hình này, dung lượng thông tin trên đường truyền được giảm đi đáng kể,
đường truyền tốc độ thấp có thể sử dụng được vì:
o Từ phía Server, không phải toàn bộ dữ liệu được gửi đi trên đường truyền mà
chỉ là một số thành phần của chúng sau khi đã được xử lý qua các lọc thông
tin phía Server.
o Không còn các chương trình phải gửi đi trên đường truyền từ các máy phục
vụ tới các trạm làm việc.
o Từ phía các trạm làm việc, không còn phải cập nhật toàn bộ dữ liệu sau khi
đã sử lý về máy phục vụ.
• Với mô hình này dễ dàng tổ chức vượt qua sự khác biệt về cấu trúc vật lý và hệ điều
hành giữa các hệ thống máy tính khác nhau vì giao tiếp thông tin giữa chúng là các
dữ liệu dạng ASCII text.
• Tăng hiệu suất hoạt động của hệ thống
Nhược điểm:
• Ưu thế của phần mềm Client/Server được thực hiện qua chính các đặc điểm ở
trên. Nếu một phần mềm được xây dựng từ hai phía Client và Server nhưng lại thực
hiện việc gửi các chương trình tính toán hay gửi dữ liệu dạng nguyên gốc từ phía
Server về Client thì ý nghĩa hiệu quả của Client/Server không còn nữa.
• Mô hình Client/ Server cũng bộc lộ những nhược điểm do những khó khăn
trong việc xây dựng và phát triển các phần mềm theo mô hình của nó. Người lập
trình phải tổ chức quản lý được các giao tiếp giữa hai phần của chương trình và giao
tiếp với môi trường bên ngoài tại cả hai phía Server và phía Client. Công tác bảo trì
và phát triển phải được thực hiện cả từ hai phía. Vấn đề cũng trở nên phức tạp hơn
đối với mạng có nhiều Client phân bố trên diện rộng.
1.6 Kết luận
CHƯƠNG II LẬP TRÌNH GIAO TIẾP MẠNG VỚI WINSHOCK
WinSock API (Windows Sockets Application Programming Interface) là thư viện các hàm
giao diện lập trình mạng cho Microsoft Windows. WinSock tương thích với họ nghi thức
mạng TCP/IP.
2.1 Giới thiệu về socket
2.1.1 Giới thiệu
Socket là một giao diện lập trình ứng dụng (API-Application Programming
Interface). Nó đượ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 được hỗ trợ trong 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++, Java, Visual Basic, Visual C++, . . .
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.
Mô hình socket
Hai loại Socket :
Stream Socket :
Dựa trên nghi thức TCP ( Tranmission Control Protocol ), việc truyền dữ liệu chỉ thực hiện
giữa hai quá trình đã thiết lập kết nối. Dữ liệu được truyền tin cậy, đúng trình tự và không
lập lại.
Dữ liệu được truyền như dòng liên tục các byte không phân biệt ranh giới các record
Datagram Socket :
Dựa trên nghi thức UDP ( User Datagram Protocol ), việc truyền dữ liệu không yêu cầu có
sự thiết lập kết nối giữa hai quá trình. Dữ liệu truyền không tin cậy, có thể không đúng
trình tự hoặc lập lại.
Dữ liệu được truyền như dòng các record.
2.1.2 Số hiệu cổng (Port Number) của socket
Để có thể thực hiện các cuộc giao tiếp, một trong hai quá trình phải công bố số hiệu
cổng của socket mà mình sử dụng. Mỗi cổng giao tiếp thể hiện một địa chỉ xác định trong
hệ thống. Khi quá trình được gán một số hiệu cổng, nó có thể nhận dữ liệu gởi đến cổng
này từ các quá trình khác. Quá trình còn lại cũng được yêu cầu tạo ra một socket.
Ngoài số hiệu cổng, hai bên giao tiếp còn phải biết địa chỉ IP của nhau. Địa chỉ IP
giúp phân biệt máy tính này với máy tính kia trên mạng TCP/IP. Trong khi số hiệu cổng
dùng để phân biệt các quá trình khác nhau trên cùng một máy tính.

Không có nhận xét nào:

Đăng nhận xét