Tìm kiếm tài liệu miễn phí

Áp dụng mẫu thiết kế hướng đối tượng trong xây dựng các ứng dụng mạng theo giao thức TCP/IP

Giao thức TCP/IP đóng vai trò rất quan trọng trong việc phát triển các ứng dụng mạng. Các ứng dụng TCP/IP thường được viết bằng C/C++ và gọi các hàm thư viện được hỗ trợ sẵn. Tuy nhiên, do có nhiều phiên bản thư viện hàm trên Unix và Windows nên người lập trình gặp khó khăn trong việc tái sử dụng mã nguồn đã được viết. Mặt khác, bản thân giao tiếp lập trình của các hàm thư viện này làm phát sinh những đoạn mã nguồn rườm rà, trùng lặp và không rõ ràng. Trong bài báo này, chúng tôi áp dụng các mẫu thiết kế hướng đối tượng để phát triển hệ thống lớp hỗ trợ lập trình giao thức TCP/IP. Hệ thống lớp này giải quyết vấn đề tương thích trên nhiều môi trường, thuận lợi cho việc tái sử dụng mã nguồn, đồng thời làm rõ ràng ngữ nghĩa của các đối tượng trong các ứng dụng truyền thông theo giao thức TCP/IP.



Đánh giá tài liệu

0 Bạn chưa đánh giá, hãy đánh giá cho tài liệu này


  • 5 - Rất hữu ích 0

  • 4 - Tốt 0

  • 3 - Trung bình 0

  • 2 - Tạm chấp nhận 0

  • 1 - Không hữu ích 0

Mô tả

TẠP CHÍ PHÁT TRIỂN KH&CN, TẬP 9, SỐ 7 - 2006

ÁP DỤNG MẪU THIẾT KẾ HƯỚNG ĐỐI TƯỢNG TRONG XÂY DỰNG CÁC
ỨNG DỤNG MẠNG THEO GIAO THỨC TCP/IP
Trần Đan Thư, Huỳnh Thụy Bảo Trân
Trường Đại học Khoa học Tự nhiên, ĐHQG-HCM
(Bài nhận ngày 05 tháng 04 năm 2006, hoàn chỉnh sửa chữa ngày 20 tháng 07 năm 2006)

TÓM TẮT: Giao thức TCP/IP đóng vai trò rất quan trọng trong việc phát triển các ứng
dụng mạng. Các ứng dụng TCP/IP thường được viết bằng C/C++ và gọi các hàm thư viện
được hỗ trợ sẵn. Tuy nhiên, do có nhiều phiên bản thư viện hàm trên Unix và Windows nên
người lập trình gặp khó khăn trong việc tái sử dụng mã nguồn đã được viết. Mặt khác, bản
thân giao tiếp lập trình của các hàm thư viện này làm phát sinh những đoạn mã nguồn rườm
rà, trùng lặp và không rõ ràng. Trong bài báo này, chúng tôi áp dụng các mẫu thiết kế hướng
đối tượng để phát triển hệ thống lớp hỗ trợ lập trình giao thức TCP/IP. Hệ thống lớp này giải
quyết vấn đề tương thích trên nhiều môi trường, thuận lợi cho việc tái sử dụng mã nguồn, đồng
thời làm rõ ràng ngữ nghĩa của các đối tượng trong các ứng dụng truyền thông theo giao thức
TCP/IP.
Từ Khoá: Mẫu thiết kế, Giao thức TCP/IP, Lập trình hướng đối tượng
1. GIỚI THIỆU
Các mẫu thiết kế hướng đối tượng [1,3,4,8] được sử dụng rộng rãi và có hiệu quả trong
việc thiết kế các phần mềm trong nhiều lĩnh vực khác nhau. Những mẫu thiết kế này có thể áp
dụng giải quyết nhiều vấn đề đa dạng trong quá trình phát triển phần mềm hướng đối tượng.
Giao thức TCP/IP [2,5] là một trong những giao thức mạng quan trọng được sử dụng thông
dụng nhất hiện nay để phát triển các phần mềm mạng và truyền thông. Tuy nhiên, khi viết các
chương trình C/C++ với giao thức TCP/IP, mặc dù cùng một yêu cầu chức năng nhưng người
lập trình thường phải viết những chương trình nguồn riêng cho từng môi trường như Unix và
Windows. Mặt khác, mã nguồn C/C++ có sử dụng các hàm trong thư viện lập trình TCP/IP
thường rườm rà, trùng lặp, và khó tái sử dụng. Bài báo này nhằm mục đích trình bày kết quả
nghiên cứu của chúng tôi trong việc áp dụng các mẫu thiết kế kinh điển [4] để xây dựng một hệ
thống lớp đối tượng giải quyết các vấn đề trong giao tiếp lập trình của các hàm trong thư viện
lập trình TCP/IP. Trong phần 2 chúng tôi sẽ tóm tắt lại cơ chế lập trình TCP/IP cùng với những
vấn đề nảy sinh. Phần 3 sẽ trình bày việc vận dụng mẫu thiết kế nhằm đề xuất một kiến trúc lớp
giải quyết các đề đã được nêu. Việc cài đặt các lớp đối tượng cùng với một số chi tiết kỹ thuật
sẽ được trình bày trong phần 4. Phần 5 sẽ điểm qua một số nghiên cứu liên quan và trình bày
hướng phát triển.
2. GIAO THỨC LẬP TRÌNH TCP/IP
Phần này trình bày những điểm chính yếu về giao thức TCP/IP, phân tích những vấn đề trở
ngại về giao tiếp lập trình mà chúng tôi rút ra qua kinh nghiệm lập trình và giảng dạy [5].
Chúng tôi cũng đề xuất hướng giải quyết nói chung để khắc phục các vấn đề nảy sinh.
2.1 Tổng quan về giao thức TCP/IP
Giao thức TCP/IP là giao thức truyền thông được thiết kế để kết nối các máy tính trên mạng
Internet. Thư viện lập trình TCP/IP khởi đầu [2] được cung cấp sẵn trên hệ điều hành họ Unix
và sau đó được phát triển trên Windows (kể từ Windows 3.1 thì thư viện lập trình TCP/IP được
cung cấp miễn phí). Khi Windows NT ra đời thì giao thức TCP/IP được tích hợp sẵn trong hệ
điều hành đưới dạng các thư viện động DLL [5] và giao tiếp lập trình TCP/IP đã được đưa vào
hệ thống hàm lập trình trên Windows, cũng như hệ thống lớp MFC (Microsoft Foundation
Trang 5

Science & Technology Development, Vol 9, No.7- 2006

Classes [6]) của Microsoft. Hiện nay TCP/IP vẫn đang là giao thức truyền thông quan trọng,
việc sử dụng hiệu quả giao thức TCP/IP trong quá trình xây dựng các ứng dụng mạng vẫn là
một vấn đề mang tính ứng dụng thực tế, rất đáng được thảo luận [9]. Việc liên lạc giữa hai máy
tính theo giao thức TCP được thiết lập dựa trên hai khái niệm: cổng truyền thông (port) và ổ
cắm (socket). Đây chỉ là những khái niệm logic ở mức độ quan niệm của người lập trình:
• Cổng truyền thông là một số nguyên: các giao thức chuẩn qui ước dùng các số hiệu
cổng từ 0 đến 999 (chẳng hạn giao thức SMTP dùng cổng 25 để chuyển phát thư tín điện tử;
giao thức FTP dùng cổng 21 gởi lệnh và cổng 20 truyền dữ liệu), trong khi giao thức không
chuẩn có thể dùng các số hiệu cổng từ 1000 đến 64000.
• Khái niệm socket tương tự như các thẻ tập tin (file handle) nhưng được dùng để gởi và
nhận dữ liệu thay vì đọc ghi tập tin. Để hai chương trình có thể liên lạc được với nhau, mỗi
chương trình trên một máy tính sẽ tạo ra một socket và liên kết socket này với cùng một cổng
(thực hiện bằng cách gọi các hàm thư viện TCP/IP).
Chúng ta cũng có thể thiết kế để nhiều chương trình cùng giao tiếp với một chương trình
thông qua cùng một cổng giao tiếp. Thông thường các ứng dụng giao tiếp TCP/IP được viết
bằng ngôn ngữ lập trình C/C++ và gọi các hàm thư viện về socket được cung cấp sẵn. Các
chương trình giao tiếp với nhau theo mô hình khách (client) – chủ (server): chương trình chủ
tạo ra thẻ socket và kết buộc với cổng truyền thông và thông tin của máy chủ, chạy sẵn và chờ
chương trình khách nối kết vào. Chương trình khách cũng tạo ra một thẻ socket và dùng thẻ
socket này để kết nối vào máy chủ (nhờ vào địa chỉ IP của máy chủ – ví dụ như "192.158.68.1"
– cùng với cổng truyền thông). Sau khi thiết lập được kết nối, các thẻ socket được dùng để làm
"đường truyền" trao đổi dữ liệu giữa các chương trình. Hình 1 tóm tắt các hàm tiêu biểu của thư
viện socket C/C++ theo dạng BSD (Berkeley-style, thường dùng trên các máy Unix, Linux...)
và của thư viện trên Windows. Chúng ta có thể chú ý các điểm so sánh như sau về mặt lập
trình:
• Đối với các thư viện trên Windows thì các thẻ socket được khai báo kiểu SOCKET,
trong khi đối với BSD thì các thẻ socket có kiểu int. Ngoài ra các ứng dụng trên Windows cần
phải nạp thư viện động DLL nhờ gọi hàm WSAStartup() ;
• Kiểu dữ liệu sockaddr_in của BSD có cấu trúc tương thích với kiểu
SOCKADDR_IN và SOCKADDR (kiểu con trỏ LPSOCKADDR) trong thư viện của
Windows. Đây là kiểu dữ liệu dùng để xác định địa chỉ IP của máy và số hiệu của cổng truyền
thông ;
• Các cổng truyền thông (port) là các biến có kiểu int khi viết chương trình ;
• Các hàm được chia 3 nhóm chính: các hàm cho chương trình chủ (server), các hàm
dùng trong chương trình khách (client), và các hàm chung ;
• Sự khác nhau về tên và thư mục chứa các tập tin khai báo (*.h) giữa hai thư viện.
Dạng BSD (họ Unix)
Tập tin header khai báo
hàm ( *.h):
< sys/type.h >
< netinet/in.h >
< sys/socket.h >

-

-

Trang 6

Kiểu dữ liệu:
struct sockaddr_in {
short
sin_family ;
unsigned short sin_port ;
struct in_addr sin_addr ;
char
sin_zero[8] ;
};
Nhóm hàm chung:
int socket ( int af, int type, int protocol ) ; // tạo socket
int closesocket ( int hSocket ) ; // đóng socket
int send ( int hSocket, char *buf, int len, int flags) ;


TẠP CHÍ PHÁT TRIỂN KH&CN, TẬP 9, SỐ 7 -2006

-

Thư viện Windows
- Tập tin header khai
báo hàm ( *.h ):
< winsock.h >
- Hàm nạp và đóng
thư viện DLL:
int WSStartup( … ) ;
int WSACleanup( ) ;

Nhóm hàm cho chương trình chủ (server):
int bind (int hSocket, struct sockaddr_in* Addr, int
AddrLen) ;
// kết buộc thẻ hSocket với địa chỉ IP máy chủ và cổng
truyền thông
int listen ( int hSocket, int backlog ) ;
int accept ( int hSvr, struct sockaddr_in* Addr, int*
AddrLen ) ;
// chờ khách nối vào, hSvr: thẻ socket của chủ, trả về
socket khách

- Nhóm hàm cho chương trình khách (client):
int connect (int hSvr, struct sockaddr_in* Addr, int
AddrLen) ;
// kết nối vào máy chủ, hSvr là thẻ socket của máy chủ

- Kiểu dữ liệu: SOCKADDR_IN và SOCKADDR
- Nhóm hàm chung:
SOCKET socket ( int af, int type, int protocol ) ; // tạo
socket
int closesocket ( SOCKET hSocket ) ; // đóng socket
int send ( SOCKET hSocket, char* buf, int len, int
flags) ;

- Nhóm hàm cho chương trình chủ (server):
int bind (SOCKET hSocket, SOCKADDR* Addr, int
AddrLen) ;
// kết buộc thẻ hSocket với địa chỉ IP máy chủ và cổng
truyền thông
int listen ( SOCKET hSocket, int backlog ) ;
SOCKET accept ( SOCKET hSvr, SOCKADDR* Addr,
int* AddrLen ) ;
// chờ khách nối vào, hSvr: thẻ socket của chủ, trả về
socket khách

- Nhóm hàm cho chương trình khách (client):
int connect (SOCKET hSvr, SOCKADDR* Addr, int
AddrLen) ;
// kết nối vào máy chủ, hSvr là thẻ socket của máy chủ


Hình 1. Giao tiếp lập trình TCP/IP theo 2 dạng: BSD (Berkeley-style) và Windows
Để viết các chương trình theo giao thức TCP/IP, người lập trình cần tuân theo các bước
được qui định (có thể tham khảo chi tiết trong các tài liệu [2, 5, 9] ). Trong phạm vi bài viết
này, chúng tôi sẽ tập trung vào việc phân tích các vấn đề nảy sinh do điểm không tương đồng
giữa các thư viện hàm và sự rườm rà trùng lắp trong mã nguồn của giao tiếp lập trình socket.
2.2 Các vấn đề nảy sinh và hướng giải quyết
Hình 2 minh họa các đoạn mã nguồn được trích ra từ ứng dụng khách viết trên Unix (theo
thư viện socket dạng Berkeley) và ứng dụng chủ viết trên Windows (theo thư viện Windows
Trang 7

Science & Technology Development, Vol 9, No.7- 2006

socket). Chắc chắn rằng chúng ta hoàn toàn có thể có nhu cầu ngược lại: ứng dụng khách trên
Windows và ứng dụng chủ trên Unix. Do sự không tương đồng về giao tiếp lập trình: chúng ta
phải sao chép mã nguồn và thực hiện một số sửa đổi nhất định. Điều này sẽ đưa đến sự xuất
hiện nhiều đoạn mã nguồn cùng ý nghĩa với những sửa đổi vụn vặt phụ thuộc vào môi trường,
công việc bảo trì phần mềm có những đoạn mã nguồn trùng lặp như vậy sẽ tốn kém nhiều chi
phí và khó bảo đảm sự hoạt động chính xác của phần mềm. Mặt khác chúng ta cũng thấy sự
xuất hiện lặp lại khá nhàm chán và lượm thuộm trong mã nguồn như: hằng số AF_INET, lời
gọi sizeof( ), các lệnh đặt giá trị khởi tạo các trường của cấu trúc SOCKADDR_IN hay
sockaddr_in…
Sau quá trình nghiên cứu và phân tích kỹ lưỡng các đoạn mã nguồn C/C++ trích từ các
chương trình sử dụng trực tiếp thư viện socket trên Windows và Unix, chúng tôi nhận thấy có
những vấn đề như sau cần phải được cải thiện:
• Cùng một chức năng truyền thông nhưng người lập trình phải viết những phiên bản mã
nguồn khác nhau trên những môi trường khác nhau. Một số lập trình viên cũng cố gắng giải
quyết vấn đề bằng cách sử dụng các chỉ thị biên dịch có điều kiện như #ifdef, #ifndef, ... và
chèn trực tiếp các chỉ thị loại này vào nhiều chỗ trong mã nguồn. Đây là cách giải quyết không
trọn vẹn, có thể làm mã nguồn rối rắm và khó bảo trì hơn ;
• Sự trùng lặp, lặp đi lặp lại của các chỉ thị mang tính chất “thủ tục hành chánh” xuất
phát từ qui định các tham số trong giao tiếp lập trình của các thư viện hàm socket. Điều này
làm phát sinh những đoạn mã nguồn luộm thuộm, khó hiểu, trùng lắp ;
• Có nhiều khó khăn trong việc tái sử dụng mã nguồn xuất phát từ các: sử dụng trực
tiếp các hàm thư viện socket của Windows hay Unix, sử dụng các hằng số (đã định nghĩa) hay
kiểu dữ liệu đặc thù của từng môi trường, sử dụng trực tiếp các tập tin khai báo hàm (*.h) của
riêng từng môi trường ;
• Không trừu tượng hóa được ý nghĩa của các đối tượng truyền thông, điều này xuất
phát từ việc trộn lẫn các chi thiết kỹ thuật của giao thức lập trình TCP/IP với mô hình, cơ chế
hay thuật toán trao đổi dữ liệu giữa các ứng dụng, các tiến trình truyền thông.
Để giải quyết các vấn đề trên, chúng tôi sẽ sử dụng kỹ thuật hướng đối tượng để thiết kế
một kiến trúc lớp nhằm trừu tượng hóa các đối tượng truyền thông, tách bạch rõ ràng giữa chủ
và khách, bao bọc và che dấu các chi tiết kỹ thuật TCP/IP, giải quyết vấn đề phụ thuộc cứng
vào từng môi trường. Phần kế tiếp của bài báo sẽ trình bày chi tiết về giải pháp đã đề xuất và
triển khai.
...
struct sockaddr_in Addr ; unsigned short port=44966; // cổng tự định nghĩa
char* ipAddr="192.168.58.1" ; int hSock ;
Đoạn mã nguồn
memset(&Addr, 0, sizeof(Addr) );
Addr.sin_port = htons(port) ; Addr.sin_family = AF_INET ;
Addr.sin_addr.s_addr = inet_addr(ipAddr);
hSock = socket(AF_INET, SOCK_STREAM, 0) ;
if (hSock != -1) {
int status = connect(hSock, &Addr, sizeof(Addr));
...}
...

Trang 8

viết trên Unix
trích ra từ ứng
dụng khách


TẠP CHÍ PHÁT TRIỂN KH&CN, TẬP 9, SỐ 7 -2006

3. THIẾT KẾ ĐỐI TƯỢNG CHO GIAO THỨC TCP/IP
3.1 Kiến trúc hệ thống lớp bao bọc giao thức TCP/IP
serverHandle

CommPoint
serverInfo

Link ( )

CommInfo

CommHandle

Addr

Bind ( )
Accept ( )
Send ( )


clientInfo
ClientPoint

ServerPoint

Link ( )
SendServer( )
RecvServer( )


Link ( )
WaitforClient( )
SendClient( )
RecvClient( )

clientHandle



WinCommHandle
hSock : SOCKET

EnvConfig
StartUp ( )
Cleanup ( )
CreateCommObject ( )

Bind ( )
Accept ( )


BsdConfig

WinConfig

StartUp ( )
Cleanup ( )
CreateCommObject ( )

StartUp ( )
Cleanup ( )
CreateCommObject ( )

BsdCommHandle
hSock : int

Bind ( )
Accept ( )


Goïi WSAStartup( ) hay
WSACleanup( )
Traû veà
new WinCommHandle( )

Hình 3. Kiến trúc hệ thống bao bọc giao thức TCP/IP

Hình 3 trình bày kiến trúc hệ thống lớp được thiết kế để bao bọc thư viện lập trình với giao
thức TCP/IP nhằm giải quyết, khắc phục các vấn đề mà chúng tôi đã nêu ra đối với hệ thống
hàm thư viện có sẵn. Một số điểm chính cần thảo luận trong kiến trúc này:
• Lớp CommHandle (Communication Handle) là lớp trừu tượng, thực chất là một giao
diện lớp (class interface) được sử dụng để bao bọc các hàm lập trình theo giao thức TCP/IP mà
không phụ thuộc vào chi tiết kỹ thuật của giao tiếp lập trình trên từng môi trường cụ thể như
Windows hay Unix. Lớp này được hiện thực bởi 2 lớp cụ thể phụ thuộc môi trường:
WinCommHandle (communication handle of Windows) và BsdCommHandle (BSD
communication handle) ;
• Lớp CommInfo (Communication Information) bao bọc các thông tin liên quan đến địa
chỉ IP, cổng truyền thông và thông in khác chứa trong cấu trúc sockaddr_in có sẵn ;
• Lớp CommPoint (Communication Point) có mục đích trừu tượng hóa các đối tượng
truyền thông, dùng làm cơ sở để giữ các đối tượng liên lạc giữa các máy tính với nhau. Lớp này
được đặc biệt hóa thành 2 lớp ServerPoint và ClientPoint bên dưới ;
• Lớp ServerPoint (Communication Point for server side) định nghĩa các đối tượng
truyền thông của ứng dụng chủ (server), đây là sự trừu tượng hóa của đối tượng truyền thông
chủ mà không phụ thuộc vào chi tiết kỹ thuật của giao thức TCP/IP cụ thể ;
• Lớp ClientPoint (Communication point for client side) nhằm trừu tượng hóa các đối
tượng truyền thông khách, dùng để tạo các đối tượng được bên trong ứng dụng khách ;
• Lớp trừu tượng EnvConfig (Environment Configuration) dùng làm cấu hình để tạo ra
các đối tượng truyền thông trên một môi trường cụ thể, lớp này được đặc biệt hóa thành: lớp
WinConfig cho Windows và lớp BsdConfig cho họ Unix.
3.2 Các mẫu thiết kế Gamma đã sử dụng
Trong giải pháp trình bày bên trên chúng tôi đã sử dụng phối hợp một số mẫu thiết kế của
Gamma và cộng sự [4], mỗi mẫu được dùng đã giải quyết từng khía cạnh, từng vấn đề mà
Trang 9

Tài liệu cùng danh mục Quản trị mạng

Cấu trúc địa chỉ Ip trên Internet

Mô tả cấu trúc địa chỉ IP trong mạng máy tính và mạng Internet.Khái niệm và phân hoạch địa chỉ mạng máy tính ( IP ver 4). Cấu trúc địa chỉ IP trên Internet. Như chúng ta đã biết Internet là một mạng máy tính toàn cầu , do hàng nghìn mạng máy tính từ khắp...


Mục đích của việc mô hình hóa và đánh giá đặc tính hoạt động của hệ thống p5

Bây giờ ta đã có thể xem xét sâu hơn các câu lệnh của thuật toán "háu ăn". Các câu lệnh của thuật toán hơi khó hiểu vì chúng dựa trên định nghĩa của hai hàm, Test và SelestBestElement (là hàm kiểm tra tính khả thi và đánh giá các tập). Chúng ta cũng giả sử rằng có một cấu trúc properties, là một danh sách của các danh sách chứa tất cả các thông tin cần


Giáo trình phân tích các mô hình quản lý mạng phân phối xử lý dữ liệu trên diện rộng p6

Tham khảo tài liệu 'giáo trình phân tích các mô hình quản lý mạng phân phối xử lý dữ liệu trên diện rộng p6', công nghệ thông tin, quản trị mạng phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả


Sổ tay người dùng NET28 part 33

Tham khảo tài liệu 'sổ tay người dùng net28 part 33', công nghệ thông tin, quản trị mạng phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả


BitTorrent dành cho người bắt đầu: hướng dẫn download bằng torrent

Vậy BitTorrent là gì? Về cơ bản, BitTorrent là giao thức chia sẻ dữ liệu ngang hàng qua Internet, hoạt động dựa trên 1 mô hình được phân cấp rõ rệt. Tính độc đáo của mô hình này là khi bạn download 1 gói dữ liệu bất kỳ về máy tính từ những người chia sẻ trước đó, chính là bạn đã góp phần vào việc tối ưu hóa tốc độ. Hiện tại, BitTorrent đang là giao thức chia sẻ được sử dụng nhiều nhất trên thế giới để truyền tải những file dữ liệu có dung lượng “khủng”, bởi...


Managing Cisco Network Security(jmobs)

Providing good internetwork security and remaining current on new hardware and software products is a never-ending task. Every network security manager aims to achieve the best possible security because the risks are real and the stakes are high. An enterprise must decide what level of security is required, taking into account which assets to protect as well as the impact of the measures on costs, personnel, and training. Perfect security is an impossibility, so one must aim for the best possible security by devising a plan to manage the known risks and safe-guard against the potential risks. Defining the enterprise security policy is the first step in implementing good...


Internet và kết nối mạng part 6

Tham khảo tài liệu 'internet và kết nối mạng part 6', công nghệ thông tin, quản trị mạng phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả


CompTIA Network+ Certification Study Guide part 63

CompTIA’s Network+ certification Study Guide part 63 is a globally-recognized, vendor neutral exam that has helped over 235,000 IT professionals reach further and higher in their careers. The 2009 Network+ exam (N10-004) is a major update with more focus on security and wireless aspects of networking. Our new study guide has been updated accordingly with focus on network, systems, and WAN security and complete coverage of today’s wireless networking standards.


CCNA Exploration _part6

CCNA Exploration giao thức định tuyến và các khái niệm: VLSM và CIDR Hoạt động 6.4.3: khắc phục sự cố VLSM biểu Thiết kế 6. Nếu câu trả lời cho các câu hỏi trước là có, đề xuất một mặt nạ mạng con mới sẽ cho phép số lượng chính xác các địa chỉ IP mà không chồng chéo vào bất kỳ mạng con khác.


Cisco press - cisco ccie fundamentals. network design

This publication was developed to assist professionals preparing for Cisco Certified Internetwork Expert (CCIE) candidacy, though it is a valuable resource for all internetworking professionals. It is designed for use in conjunction with other Cisco manuals or as a standalone reference. You may find it helpful to refer to the Cisco CCIE Fundamentals: Case Studies, which provides case studies and examples of the network design strategies described in this book.


Tài liệu mới download

TCVN 5253:90
  • 08/08/2010
  • 71.401
  • 245

Từ khóa được quan tâm

Có thể bạn quan tâm

Distributed System - Chapter 7
  • 15/10/2011
  • 40.637
  • 462
Cracking part 21
  • 14/09/2010
  • 34.205
  • 594
Pro OpenSSH
  • 05/08/2009
  • 65.469
  • 315
CÁC KHỐI TỔ CHỨC NGẮT
  • 26/09/2009
  • 69.679
  • 118

Bộ sưu tập

Danh mục tài liệu