Chúng ta vừa xem qua các hàm hệ thống dùng tạo và xử lý socket, giờ đây ta có thể trở lại những ví dụ về sử dụng socket.cụ thê hơn.
Như đã nêu, bạn nên sử dụng socket theo vừng AF_INET thay cho
AF_UNIX. Socket dựa trên hệ thống file thường gặp phải một số vấn đề
như chúng chỉ được truy xuất trên hệ thống file chỉ định của UNIX/Linux. Việc phân quyền cho phép độc:ghi file cũng là một vấn đề. Thường file socket tạo ra trong thư mục hiện hành hoặc thư mục tạm /tmp và bạn phải cho phép hầu nhữ toàn quyền truy cập các thư mục này để socket hoạt động. Với:AF_INET thì vấn đề này không phát sinh, AF_INET dựa vào.công và địa chỉ IP để kết nối. Ứng dụng của bạn trên Linux sử dụng AF INET sẽ dễ chuyên đổi sang Windows hơn là AF_UNEX.
Tfong AF_INET, khi tạo mới một socket trên trình chủ, bạn phải chộn một-số hiệu công đặt cho socket. Việc chọn số hiệu công phải loại trừ những cổng đã được các ứng dụng khác sử dụng. Bạn có thể tham khảo tập tin /etc/services, đây là tập tin văn bản liệt kê danh sách các dịch vụ và công đã được để đành sử dụng, số công của bạn không nên trùng với những số đã có trong danh sách này. Ban cũng không thể sử dụng các cổng nhỏ hơn 1024, chúng đành cho các dịch vụ của hệ thống.
Giao tiếp mạng không đòi hỏi phải kết nối với một hệ thống mạng thật sự. Ngay trên một máy, bạn có thể sử dụng giao tiếp mạng để liên
Chương 4: Lập trình socket
lạc giữa các tiến trình đang chạy. Nếu cần số địa chỉ IP, bạn có thể sử dụng số 127.0.0.1, đây là địa chỉ IP “hồi qui” (loop back) thường dùng cho các ứng dụng cục bộ. Với địa chỉ này, dữ liệu gửi đi sẽ quay về đúng địa chỉ ban đầu, có nghĩa là máy gửi và máy nhận được xem là một. Do
tính chất đặc biệt này, nếu trình khách trên máy cục bộ gửi dữ liệu đến
trình chủ theo IP 127.0.0.1 thì trình chủ cũng trên máy này sẽ nhận được dữ liệu và hồi âm lại. Nếu máy bạn hòa mạng, bạn nên hỏi người quản trị mạng để xin một địa chỉ IP thích hợp.
Địa chỉ mạng IP thường khó nhớ, bạn có tHỂ yêu cầu socket tiếp nhận một tên gợi nhớ khách thay cho số IPí Chẳng hạn localhost hay my.computer.home thay cho 127.0.0.1. Tập tin văn bản /etc/hosts chứa các danh sách chuyền đổi này. Ví dụ; bạn:có thể dùng trình soạn thảo vi hay gnotepad sửa nội dung tập tiñ này như sau:
127.0.0.1 localhost
127.0.0.1 Tmy.computer.home 207.46.131.91 WWW.microsoft.com
Như bạn thấy, một địa chỉ IP có thể ánh xạ bằng nhiều tên khác
nhau (địa chỉ ]P vầ:têñ thường cách nhau bằng khoảng trắng hay tab). Thường địa:chỉ IP 127.0.0.1 được gọi là localhost và không có gì trở ngật nếu bạn tự định đặt cho nó một cái tên khác chẳng hạn như my.computer.home. Các địa chỉ Web mà bạn thường thấy như www.yahoo.com hay www.microsoft.com là các địa chỉ toàn cầu được
quản lý bởi tổ chức quốc tế InterNIC. Để biết một tên gọi ứng với một
địa chỉ IP có tồn tại hay không, bạn có thể gọi lệnh ping như sau:
Chương 4: Lập trình socket
$ ping localhost
PING (127.0.0.1) from 127.0.0.1 : 56 (84) bytes of data. 64 bytes from (127.0.0.1) : iemp_ seq=0 ttl=255 time=67 usec 64 bytes from (127.0.0.1) : iemp_ seq=0 ttl=255 time=48 usec 64 bytes from (127.0.0.1) : iemp_ seq=0 ttl=255 time=5l usec 4.4. Sử dụng socket trong ứng dụng mỉnh họa
Phần lập trình socket này sẽ được sử dụng để thực hiện việc trao đôi thông tin giữa thành phần client và server trong phần ứng dụng minh họa.
Cụ thể thành phần client sẽ dùng socKêt kết nối đến thành phần server. Sau khi kết nối thành công client sẽ gửi các lệnh như Start Capture, Stop Capture, Get FIlter... đến sẻFVer, server nhận các lệnh này,
thực hiện xong nó sẽ trả lời kết quả thực hiện là thành công hay thất bại
cho client.
Phần 3: Xây dựng ứng dụng thử nghiệm PacketCap
PHÀN 3: XÂY DỰNG ỨNG DỤNG THỬ NGHIỆM PACKETCAP + Chương 5. Phân tích và thiết kế PacketCap
+ Chương 6: Cài đặt và thử nghiệm
+ Chương.7. Tống kết
Chương 5: Phân tích và thiết kế PacketCap
Chương 5: Phân tích và thiết kế PacketCap
5.1. Khảo sát hiện trạng
Hiện nay có rất nhiều phầm mềm bắt gói tin như Tcpdump, Microsoft Network Monitor, Ethereal...Trong đó phần mềm nguồn mở Ethereal nổi bật
với nhiều ưu điểm như chạy trên nhiều hệ điều hành, hỗ trợ bắt gói tin theo
nhiều giao thức khác nhau...
Các phần mềm này có hạn chế chung là khi chúng đang bắt các gói tin thì chúng ta không thể đọc, phân tích các thông tin bắtđược, hay nói cách
khác khi kết thúc quá trình bắt các gói tin rồi thì mới phân:tích các thông tin
này được.
Những phần mềm này không hồ trợ việc ghi kết quả vào cơ sở dữ liệu, mà chỉ lưu vào các file có cấu trúc theo định dạng riêng của chúng. Nếu file
này có kích thước lớn thì việc tìm kiếm, xử lý các thông tin để phân tích sẽ rất
chậm.
Những phần mềm này chỉ cñạy trên môi trường desktop là chủ yếu do đó không cho phép cấu hình từ›xa (ví dụ: điều chỉnh bộ lọc , thiết lập đường dẫn lưu trữ trên mạng „...từ xa. Hiện nay các phần mềm này đang được phát triển sang mô hình client/server).
Trong khi đó thì nhu cầu người quản trị mạng rất đa dạng:
s Cần có thông tin về lưu lượng mạng để điều chỉnh băng thông theo yêu cầu của khách hàng cũng như phát hiện trước các sự cô nêu được.
e Theo dõi hành động truy cập và xâm nhập mạng bất hợp pháp.
e© Tất cả hành động trên nên là online (phân tích và điều
khiên) nêu được.
Chương 5: Phân tích và thiết kế PacketCap
5.2. Phân tích và xác định yêu cầu
5.2.1. Phân tích
Việc trao đổi thông tin trên mạng ngày càng nhiều, nhu cầu của các nhà quản trị mạng đòi hỏi ngày càng đa dạng, cần thiết có một chương trình có thể bắt gói tin cho phép phân tích, trích lọc thông tin ngay trong khi bắt (các phần mềm bắt gói tin hiện nay không cho phép các nhà quản trị sử dụng thông tin thu thập được khi quá trình bắt gói tin đang thực hiện). Ứng dụng này sẽ lấy tên là PacketCap.
Trên cơ sở đó, một hệ thống phân tán bắt góĩ tin; trích lọc và luu trữ
vào cơ sở dữ liệu trên mạng được xây dựấg để khắc phục phần nào khuyết điểm trên. Hệ thống cho phép nhà quản trị sử dựng thông tin ngay trong khi bắt, tùy chọn vị trí lưu thôñg:tin-và cho phép cấu hình từ xa việc filter các gói tin.Các nhà quản trị mạng cũng có thể dùng hệ thông này làm cơ sở đề phát triển tiếp các ứng dụng về quản trị mạng.
5.2.2. Xác định yêu cầu
Mục tiêu của.đề tài là một xây dựng ứng dụng phân tán bắt các gói tin, ứng này sẽ cụng cấp cho quản trị mạng những thông tin phục vụ cho việc theo dõi và phân tích thông tin mạng, dựa trên những thông tin được cung cấp này cho phép quản trị mạng có thể xác định được tình trạng của toàn bộ hệ thống mạng.
Chương 5: Phân tích và thiết kế PacketCap
Ứng dụng PacketCap này sẽ bao gồm các chức năng:
STT Chức năng
I Bắt và phân tích được các gói tin của những protocol thông dụng như TCP, UDP, ICMP, ARP...
2 Cho phép lưu trữ thông tin bắt được dưới dạng cơ sở dữ liệu và chọn hệ quản trị cơ sở dữ liệu đê lưu trữ.
3 Cho phép lưu trữ thông tin bắt theo cấu trúc file của Ethereal hoặc các phân mêm bắt gói tin khác.
Điều khiến từ xa việc bắt các gói tin, baø gồm:
® Khởi động bắt gói tin 4 ® Dừng bắt gói tin
®©_ Lấy bộ lọc hiện thời
©_ Kết thúc chương trình bắF§gói tin
Bảng 5-1 Xác định yêu cầu
Chương 5: Phân tích và thiết kế PacketCap
5.3. Các hướng xây dựng ứng dụng PacketCap
Hiện nay có rất nhiều phần mềm bắt gói tin có mã nguồn mở như TCPTrace, TepDump, WinDump, Ethereal,..trong số này thì Ethereal là phần mềm tốt nhất. Nó hỗ trợ rất nhiều protocol, hỗ trợ các định đạng lưư trữ của
các phần mềm bắt gói tin khác, tích hợp thêm phần phân tích thông tin bắt
được.
Các phần mềm nguồn mở này đều sử dụng thư viện lập trình libcap hoặc winpcap(tên của phiên bản libpcap chạy trên hệ điều hành Windows).
Do có rất nhiều phần mềm nguồn mở hỗ trợ bắt gói tin nên sẽ có 2 hướng lựa chọn để phát triển ứng dụng PacketCap:
> Hướng l1: Tìm hiểu cấu trúc của phầñ mềm Ethereal, tích hợp thêm chức năng lưu các gói tin vào cơ §ở'dữ-liệu và cấu hình từ xa vào phần mềm Ethereal.
> Hướng 2: Sử dụng thư viện lập trình mạng libpcap để viết lại toàn bộ
ứng dụng.
5.3.1. Phân tích hướng phất triển dựa trên Ethereal e© Thuận lợi
o_Soùrce eØđe của Ethereal mở có thể dễ dàng download trên nhiều trang web. (www.ethereal.com)
o--Không cần xây dựng lại các module bắt gói tin và filter cho ứng dụng.
® Khó khăn
o_ Mã nguồn Ethereal rất nhiều và khó hiểu rõ được do đó việc tích hợp thêm chức năng vào Ethereal là rất phức tạp.
o Ethereal chỉ cung cấp free user guide không cung cấp developer guide do đó muốn tìm hiểu về ethereal phải đọc tât cả source code.
Chương 5: Phân tích và thiết kế PacketCap
5.3.2. Phân tích hướng phát triển dựa trên libcap ® Thuận lợi : ® Thuận lợi :
o Thư viện mã nguồn mở libpcap download miễn phí, được
nhiều nhà phát triển sử dụng. Phần mềm bắt gói tin Tcpdump là một điển hình.
o_ Có nhiều tài liệu hướng dẫn lập trình
o_ Có thể dễ dàng xây dựng chương trình theo ý muốn
® Khó khăn
o_ Phải viết lại tất cả các module captufe và filtering trước khi thêm vào các yêu cầu của luận văn.
5.3.3. Lựa chọn hướng phát triển PacketCap
Từ những phân tích khó khăn và thuận lợi của 2 hướng phát triển ứng dụng PacketCap, chúng em quyết định lựa phát triển PacketCap theo hướng thứ 2, nghĩa là sẽ xây dựng từ đầu ứng dụng bắt gói tin PacketCap dựa trên thư viện libpcap.