1. Trang chủ
  2. » Luận Văn - Báo Cáo

khóa luận xây dựng ứng dụng bắt gói tin cho việc phần tích thông tin mạng phục vụ quản lý

60 324 0
Tài liệu được quét OCR, nội dung có thể không chính xác

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 60
Dung lượng 15,03 MB

Nội dung

Trang 1

TRUONG DAI HQC KHOA HQC TU NHIEN KHOA CONG NGHE THONG TIN BO MON CONG NGHE PHAN MEM GIANG QUOC MINH - HO PHAM THAI VINH

XÂY DỰNG ỨNG DỤNG BẮT GỐI TIN CHO

VIEC PHAN TICH THONG TIN MANG PHUC VU QUAN LY

KHOA LUAN CU NHAN TIN HOC

Trang 2

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN

BO MON CONG NGHE PHAN MEM

GIANG QUOC MINH - 0112016 HO PHAM THAI VINH - 0112081

XAY DUNG UNG DUNG BAT GOI TIN CHO VIỆC PHÂN TÍCH THƠNG.TTN MẠNG PHỤC

VU QUAN bY

KHÓA LUẬN CỬ NHÂN TIN HỌC GIÁO VIÊN HƯỚNG DẪN

GVC CAO ĐĂNG TÂN

Trang 3

NHAN XET CUA GIAO VIEN HUONG DAN

Trang 4

NHAN XET CUA GIAO VIEN PHAN BIEN

Trang 5

LOI CAM ON

Chúng em xin chân thành cám ơn Ban giám hiệu, quý Thầy cô của trường Đại Học Khoa Học Tự Nhiên TP Hồ Chí Minh, đặc biệt là các Thầy cô trong Khoa Công nghệ Thông tin đã tận tình giảng dạy, trang bị cho chúng em những kiến thức cần thiết, bỗ ích trong suốt những năm.học tập tại trường

Chúng em xin chân thành cảm ơn Thầy Cao Đăng Tân, người Thầy đã

tận tình quan tâm hướng dẫn, giúp đỡ chúng em‹ffong suốt thời gian làm luận văn này

Chúng con xin gửi lòng biết ơn sẩu sắc vầsự kính trọng đến ông bà, cha mẹ, cùng toàn thể gia đình, những người đã nuôi dạy chúng con trưởng thành như ngày hôm nay

Chúng tôi xin chân thành cám ơn sự giúp đỡ, động viên, nhận xét, đóng góp ý kiến của các-anh chị, bạn bè trong quá trình thực hiện luận văn này

TP Hồ Chí Minh, 7/2005

Nhóm sinh viên thực hiện

Trang 6

BO CUC CUA LUAN VAN

Luận văn gồm có 3 phan va 7 chương

PHAN 1: TONG QUAN

Chương 1 Giới thiệu về đề tài

PHAN 2: TIM HIEU CAC VAN DE LAP TRINH Phan nay giới thiệu

các vấn đề lập trình cơ bản nhất để xây dựng 1 ứng dụng có khả năng bắt các gói tin và cho phép người dùng có thể điều khiển từ xa qua môi trường mạng

Chương 2 Tìm hiểu thư viện lập trình mạng cấp thấp libpcap, đây là “trái tim” của hầu hết các ứng dụng bắt gói tin mã nguồn mở hiện nay Chươngg 3 Giới thiệu MySQL, một hệ đuản trị cơ sở dữ liệu tầm trung được sử dụng phổ biến nhất hiện nay

Chương 4 Tìm hiểu kỹ thuật lập trình soèket để viết các ứng dụng trên môi trường mạng

Phần 3 Xây dụng ứng đụng PacketCap Phần này sẽ sử dụng các kiến

thức đã tìm hiểu ở chương Z, 3, 4 dé xây dựng một ứng dụng bắt gói tin,

lưu các kết quả bắt được vào cơ sở dữ liệu để phân tích các thông tin mạng

Chương 5: Phân tích, thiết kế ứng dụng PacketCap

Chương 6 Cài đặt và thử nghiệm PacketCap

Chương 7 Tông kết Chương này trình bày những kết quả đạt được,

Trang 7

Cac danh muc

MUC LUC

DANH SACH HINH ccsssessssessssscessseessnseessnecessneeesnecsnneessneessnseesnneessnnses DANH SACH BANG .ssssecssssessssseessseessnseessnecensnecesnseesuneeesneessnteesnnessnnses PHAN 1: TÔNG QUAN 22-222 He

Chương 1: Giới thiệu đề tài be

ha c.n

1.2 Giới thiệu đề tài

1.3 Yêu cầu của đề tài we

PHAN 2: TIM HIEU CAC VAN DE LAP TRIN: cà

Chương 2 : Thư viện lập trình mạng libpcap 21 2.1 Giới thiệu libpcap

2.2 Cài đặt thư viện libpcap . -

3.3 Các bước xây dựng chương trình sử dụng libpcap "

3.4 Chỉ tiết các bước -ccrtic nh HH Ề ê

3.4.1 Chọn Interface( card mạng) .¿ sềx¿ «5-5 55+ + sex

3.4.2 Mở device đề lắng nghe( sniff) dữ liệu: se

E6 uc

Chương 3: Hệ quản trị cơ sở dữ liệu MySQLL :¿ 5-5555 <<+<<++

3.1 Giới thiệu về MySQL - 3.2 Cài đặt MySQL 3.2.1 Cài Đặt MySQL từ các gói nhị phân 3.2.2 Cài đặt từ mã nguồn 3.3 Sử dụng MySQL 3.3.1 Lệnh mysdl " 3.3.2 Lệnh mysqÏadmii . - + + + *£+*E+E+*E£EsEekEekeskrserkrsee ES ni 0a, 00 o2 3.3.4 Lệnh grant 3.3.5 Lệnh Revoke

3.3:6 Ví dụ về tạo một cơ sở dữ liệu -ccccvceeerrrrrrrreee

Trang 8

Cac danh muc

Chương 4: Lập trình SOCK€( .- 5 << E91 vn ng ng ng ryc 42

4.1 Giới thiệu về lập trình socket - 2 2s x+x+zx+zxrxczxerrecree 42

4.2 Nguyên lý hoạt động của SOCk€( ¿5+5 +++*+svE+vesesereerrers 42

4.3 Lập trình với socket tees

4.3.1 Các thuộc tính của SOCKet eee eeeeeesseeeseeceeeeseesseeeseesseeesseeeaee 44 4.3.1.1 Vùng( Oima1T)) . - c5 << + + SE * re re 44 5.3.1.2 Kiểu socket(type) - đ6 4.3.1.3 Giao thức cua socket( protocol)

4.3.2 Tạo sOCK€( - s-ĂSSssseeee 4.3.3 Định địa chỉ cho socket 4.3.4 Đặt tên cho socket

4.3.5 Tạo hàng đợi cho socke " 4.3.6 Chờ và chấp nhận kết nối -<ẤẾ 2ÌỀ 2.22 25c csccsccxcrccre 4.3.7 Yêu cầu kết nối +

4.3.8 Đóng kết nối

4.3.9 Giao tiếp bằng socket 4.4 Sử dụng socket trong ứng dụng minh họa.`¿ s5 «+ 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ế PackefCap . -5- 552552 ©c2+c+zxccxeczz 5.1 Khảo sát hiện trạng .- 34 ng 5.2 Phân tích và xác định yêu cầu 5.2.1 Phân tích

5.2.2 Xác định yêu câu

5.3 Các hướng xây dựng ứng dụng PacketCap

5.3.1 Phân tích hướng phát triển dựa trên Ethereal

5.3.2 Phân tích hướng phát triển dựa trên libcap " 5.3.3 Lựa chọn hướng phát triển PacketCap .- :-2 5+-

5.4 Các thành phần PacketCap 22-©52©2ScSE2EEcEEEcEEEeEErrkrrkerrkee 5.5 Xây dựng mô hình use case "

Trang 9

Cac danh muc

5.7.Thiết kế dữ liệu ¿- 2c 5£ SEE2EE2E122122171217121.21E 1.1 cxe

5.7.1 Phân tích các hướng lưu trữ - - 5+ + c+<£+<£++ces+++

5.7.2 Thiết kế cơ sở đư liệu -2- 2 5£ s¿+x+EE£E£2EC£EEvEEvrErrxerxerree

5.7.2.1 Danh sách các đổi tượng (table) "

5.7.2.2 Table PACKET -. 2- 22 ©+£2EE2EE£EE+EEEEEEEEEEEEErErrkrrree 6.7.24 Table IIP 2-22 ©2<+S<9EEEEEEEE2EE1271127171171211211 21.11 cye 5.7.2.5 Table TCP 5.7.2.6 Table UDP 5.7.2.7 Table ICMP 5.7.2.8 Table IGMP

5.7.2.9 Table ARP oo cece eeessceeteeseeeeeeeee

5.8 Xây dựng PCServer( server), PCManager(client) see

5.8.1 Lưu đồ PCServer coi HẦM eưeu 81

5.8.2 Luu dé PCManager( Client) c.cccccccccesihesessessesselibesessessseseseeeses 82

5.8.3 Cấu trúc đữ liệu trao đổi giữa PCServe£ vàPCManager .83

5.9.Thiết kế giao diện PCManager( phiên bảñ chạy trên Windows) 85

Chương 6: Cài đặt và thử nghiỆm ‹ss-« - -Ề+ 5 + ngư 87 6.1 Cai dat 6.2 Thử nghiệm 6.2.1 Mô hình thử nghiệm Ì -¿- + + *++£+k£**Eekrkrserkrske 88 6.2.2 Mô hình thử nghiệm 2 6.2.3 Mô hình thử nghiệm3 Chương 7: Tổng kết I] 7.1 Két luan 0 91 7.1.1 Kết quả đạt được 91 7.1.2 Hạn chết, 91

7.2 Hướng phát triỂn - 2 2 ++©+++EE2EEeEEEerEvtrxerrrerrrrrrerrree 92

PHỤ LỤC Hướng dẫn sử dụng PacketCap -. 5-5552 55c+>x+zscse2 93

1.Chương trình PCServer 2 Chương trình PCManager

2.1 PCManager trên môi trường Linux . 5 - «+ <+s<+<<+x+£+ 2.2 PCManager trên môi trường Windows

TÀI LIỆU THAM KHẢO .2-2©-<+cs+zs+zxscsee

Trang 10

Cac danh muc

DANH SACH HINH

Trang 11

Cac danh muc

DANH SACH BANG

Bảng 4-1 Các giá trị của OTa11 - ¿<< + + xen reee Bảng 4-2 Các mã lỗi của hàm bind() ¿- + +5++>x+vextsrxezrterrssrresree Bảng 4-3 Các mã lỗi của domain AF_UNIX

Bảng 4-4 Mã lỗi của hàm connect(() 2-2 2s s52 +x+xezx+zx+xzxerscsee

Bảng 5-1 Xác định yêu cầu ¿2-52 52©2+2E+eEE+eExerEzrxerrrerxrerrerree

Bảng 5-2 Danh sách các đối tượng "

206W )0I.03.(0 4511 in y)0 0 1 Bang 5-5 Table TCP we Bảng 5-6 Table UDP 5 5S Sex serseeerex

Trang 12

Phan 1: Téng quan

PHAN 1: TONG QUAN 3% Chương 1 Giới thiệu dé tai

Trang 13

Chương 1: Giới thiệu đề tài

Chương 1: Giới thiệu đề tài 1.1 Đặt vấn đề

Ngày nay công nghệ thông tin nói chung và Intenet nói riêng ngày càng phát triển mạnh mẽ và trở thành không thể thiếu trong cuộc sống chúng ta

Xuất phát từ nhu cầu trao đổi thông tin ngày càng nhanh và nhiều giữa các doanh nghiệp, các tổ chức và công ty trong nền kinh tế thị trường hôm nay, số lượng các doanh nghiệp thiết lập các hệ thống mạñg và kết nối Intenet ngày càng nhiều

Việc Công nghệ thông tin và mạng Intenet phát triển và ngày càng nhiều các thông tin quan trọng được trao đổi trên mạng lầm nảy sinh một số vấn đề quan trọng là bảo mật thông tin trên mạng đê tránh rò rỉ hay ngăn không cho truy cập vào các dữ liệu không cho phếp-gây thiệt hại kinh tế, quản lý băng

thông dé tang khả năng đáp ứng thông tin, giao dịch với khách hàng đồng thời

tránh được tình trạng nghẽn mạch lưu thông trên mạng

Việc phân tích lưu lượng mạng đòi hỏi năng lực tính toán rất lớn, vì vậy muốn làm được việc này cần phải trang bị các siêu máy tính để thực hiện bài toán này Trong'điều kiện kinh tế nước ta thì không thể trang bị những hệ thống này được vì chúng quá đắt đỏ

Trang 14

Chương 1: Giới thiệu đề tài

Vậy giải pháp nào để giải quyết bài tốn này ?

© Grid Computing là hệ thống tính toán song song và phân tán cho phép chúng ta thực hiện những bài toán lớn dựa trên các hệ thống nhỏ gồm nhiều máy tính được nối mạng với nhau © Hiện nay chúng ta lại có rất nhiều hệ thống máy tính nối

mạng nhưng chưa sử dụng được hết khả năng tính toán của chúng

© Với số lượng các máy tính đủ lớn thì việc triển khai Grid

Computing sẽ cho chúng ta một hệ thống tính toán cực kì mạnh gấp nhiều lần I siêu máy tính ( lúc đó các siêu máy tính có thể chỉ là một node trong hệ thống Grid Computing) Với những ưu điểm trên chúng tôi chọn để tài “Ứng dụng thử nghiệm Grid Computing trong việc phân tích thông tin mạng phục vụ quản lý”

1.2 Giới thiệu đề tài

Đề tài “Ứng dụng thử nghiệm Grid Computing trong việc phân tích thông tin mạng phục vự quản lý” là một đề lớn gồm 2 nhóm thực hiện Nhóm thứ 1 sẽ xây dựng ứng dụng phân tán trên mạng cho phép thiết lập từ xa chế độ lọc và bắt cắc gói tin, trích lọc và lưu vào các cơ sở dữ liệu trên mạng để phục vụ cho việc theo dõi và phân tích thông tin mạng (Phần J)

Nhóm thứ 2“sẽ tìm hiểu Grid Computing và xây dựng ứng dụng đề phân tích hiện trạng của mạng dựa trên thông tin từ cơ sở đữ liệu do nhóm thir 1

xây dựng (Phần II)

Trang 15

Chương 1: Giới thiệu đề tài

1.3 Yêu cầu của đề tài

e XAy dựng ứng dụng phân tán thử nghiệm cho phép bắt các gói tin dùng để phân tích thông tin mạng phục vụ quản lý

© Các gói tin sau khi bắt, được trích thông tin và lưu vào các cơ sở đữ liệu phân tán trên mạng theo nhu cầu của người quản trị

e Hệ thống cho phép cấu hình ứng dng t xa

đâ_ H trợ lưu kết quả bắt được theo định dạng của các ứng dụng bắt gói tin khác như Ethereal, TCPDump

Trang 16

Phần 2: Tìm hiểu các vấn dé lập trình

PHAN 2: TIM HIEU CAC VAN DE LAP TRINH

3+ Chương 2 Thư viện lập trình mạng libpcap ** Chương 3 Hệ quảntrị'cơ sở dữ liệu MySQL

3+ Chương 4 Lập trình socket

Trang 17

Chương 2: Thư viện lập trình mang libpcap

Chương 2 : Thư viện lập trình mạng libpcap

2.1 Giới thiệu libpcap

Libpcap là một thư viện mã nguồn mở hỗ trợ lập trình mạng cấp thấp, cho phép bắt các gói tin trên đường truyền theo nhiều hướng khác nhau, cho phép phân tích các frame vừa tìm được

Thư viện libcap được sử dụng rộng rãi trong các phần mềm sniffer packet Các phần mềm sử dụng libcap phổ biến là TCPdump, TCPflow

Hiện nay phiên bản mới nhất của libpcap là 0.9.1 2.2 Cài đặt thư viện libpcap

Chương trình nguồn của libpcap có thể download ở địa chỉ www.tcpdump.org , các phiên bản mới nhất của libpcap đều có ở địa chỉ này

Giả sử bạn tải về gói libpcap-0.8.3:fãr.tar; tiến hành cài đặt:

Trang 18

Chương 2: Thư viện lập trình mang libpcap

3.3 Các bước xây dựng chương trình sử dụng libpcap Có 5 bước chính trong việc sử dụng thư viện libpcap

Bước 1: Xác định interface (card mạng) mà ta muốn bắt frame vào (Trong Linux, interface thường là eth0,eth1 Ta có thê dùng các hàm pcap_lookupdevQ của thư viện libpcap để lấy tất cả các inteface

Bước 2: Khởi tạo pcap Cung cấp cho pcap biết interface nào trong số các interface đã lấy về ở bước trên sẽ được chọn để sniff

Bước 3: Lọc frame pcap cho chúng ta cơ chế chọn lựa khi lọc các

frame khi bat (vi dụ chỉ bắt framúe TCP/IP`có source IP

192.168.8.8 va port 23 .) ta phai tao ra filter rdi bién dich filter này để báo cho pcap biết bộ lọc nó sẽ dùng

Bước 4: Pcap thực thi việc sniff frames

Bước 5: Đóng phiên làm việc và:kết thúc ứng dụng

Trên đây là qui trinheténg quát cách libpcap bắt gói tin trong đó bước 3 là tùy chọn có thể có hoặc không

Trang 19

Chương 2: Thư viện lập trình mang libpcap

3.4 Chỉ tiết các bước

3.4.1 Chọn Interface( card mạng)

Có 3 cách thiết lập devices đề sniff các frames dữ liệu

© Cách 1 : Cho người dùng nhập tên thiết bị từ dòng lệnh #include <stdio.h> #include <pcap.h> int main(im argc, char* argv[]) ( Char * dev = argv[1] Printf(“Devices : %s\n“,dev); }

Trong đó argv[1] là tham số dòng lệnh đầu tiên

Trang 20

Chương 2: Thư viện lập trình mang libpcap

Trong trường hợp này, pcap tự tìm ra thiết bị errbuf là chuỗi chứa thông báo lỗi nếu có

©_ Cách 3 : Ding ham pcap_findalldevs dé tim tất cả thiết bị sau đó đưa vào một mảng #include <stdio.h> #include <pcap.h> int main(int argc , char* argv[]) ( pcap_if_t *devlist; char devname[10][100]; Char* dev,errbuf[PCAP_ERRBUF_SIZE] int devcount=0; retvalue=pcap_findalldevs(&devlist,err); if(retvalue==-1 || devlist==NULL) return 0; for(d=devlist,iz0; d && i<10 ;d=d->next,i++) sprintf(devname[i],"%s",d->name); devcount=i; }

3.4.2 Mớ device để lắng nghe( sniff) dữ liệu

Trang 21

Chương 2: Thư viện lập trình mang libpcap

¢ snaplen cho biết số byte lớn nhất mà pcap có thé bat frames ® promisc nếu đặt bằng 1 thì interface sẽ hoạt động trong chế độ

promiscuos mode Đây là chế độ libpcap sé sniff tat cA cdc frame trên dây dẫn Nếu đặt bằng 0 thì interface sẽ hoạt động ở chế độ non promiscuos mode, trong chế độ này,pcap chỉ sniff những frame gửi đến máy Pcap_t *descr descr = pcap_open_live(dev, BUFSIZ,0,-1,errbuf); if(descr == NULL) ( printf("Pcap_open_live(): %s\n",errbuf); exit(1); } Dev là định danh thiết bị 3.4.3 Lọc traffic

Trong trường hợp không bắt tất cả các gói tin mà chỉ bắt các gói tin theo một yêu cầu nầõ đó ta thi str dung pcap_compile() pcap_setfilter() có cấu trúc nhu sau:

infpcap-compile(pcap_t† *p, struct bpƒ_program *ft, char *str, int optimize, bpf_u_int32 netmask )

Tham số đầu tiên là handle của phiên làm việc (pcap_t) Tham số thứ hai là tham số chỉ đến nơi lưu compile version của filter str 1a chuỗi mô tả cho filter biết những gói tin cần bắt Kế đến là số nguyên

cho biết str là opyimize hay không (1 là true, 0 là false) Cuối cùng là

netmask của đường mạng

Trang 22

Chương 2: Thư viện lập trình mang libpcap

int pcap_setfilter(pcap_t *p,struct_bpf_program *fp)

Tham số thứ nhất 14 handle quan lý phiên làm việc Tham số thứ hai

là tham chiếu chỉ đến compile version của filter (đã được định nghĩa trong pcap_compile())

Dinh dang str mé ta cho filter: e Filter theo source ip Vidu," src net 172.168.8.8 " e Filter theo dest ip : Vídụ,” dsf net 172.166:8:8:.” e Filter theo source va dest ip Ví dụ," src and dst net 172.168.8.8 ” e Filter theo source hay dest ip

Trang 23

Chương 2: Thư viện lập trình mang libpcap

e Filter theo protocal Vidu,” tcp "

© Ngoai ra còn có thé filter tong hop :

Vidu," dst net 172.168.8.8 and src port 23 tcp" Vi du vé filter don gian

#include <pcap.h> char *dev;

char errbuf[PCAP_ERRBUF_SIZE]; pcap_t* descr;

const u_char *packet;

struct pcap_pkthdr hảr; *pcap.h */

Trang 24

Chương 2: Thư viện lập trình mang libpcap Ứ(pcap_compile(descr, &ƒp, ” port 23 ”,0,nefp) == -]) ( primf(stderr, "Error calling pcap_compile\n"); exit(1); } pcap_ seffilter(descr, &ƒp) Quá trình bắt frame thật sự :

Ở đây ta định nghĩa một thiết bị một thiết bị để chuẩn bị sniff frame (thiết lập filter nếu cần) Có 2 kĩ thuật chính đượ€ dùng trong việc sniff frame Chúng ta có thé bắt frame và đưa vào vòng lặp chờ xử lý Đầu tiên ta xem cách bắt frame sử dụng hàm Ðcap_neXt của libpcap

Hàm này có cấu trúc sau :

u_char *pcap_next(pcap_t *p,struct pcap_hkthdr *h )

Tham số đầu tiên là:handle quản lý phiên làm việc Tham số thứ

hai 1a pointer chỉ đến câufrúc lưu giữ thông tin chung về frame ( thời gian bắt, chiều dài frame ) pcap_next trả về một con trỏ có dạng u_char tro đến frame<ấẩược mô tả bởi cấu trúc này

struct peap_pkthdr

(

struct timeval ts; time stamp

bpf_u_int32 caplen; length of portion present bpf_u_int32; lebgth this packet (off wire)

Trang 25

Chương 2: Thư viện lập trình mang libpcap Vi dụ về sniff frame sử dựng cấu trúc này #include <stdio.h> #include <stdlib.h> #include <pcap.h> #include <errno.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netinet/if_ether.h> int main(int argc, char **argv) ( int i; char *dev; char errbuf[PCAP_ERRBUF_SIZE]; pcap_t* descr;

const u_char *packet;

struct pcap_pkthdr hảf; /* pcap.h */

struct ether_header *eptr; /* net/ethernet.h */

Trang 26

Chương 2: Thư viện lập trình mang libpcap if(descr == NULL) ( printf("pcap_open_live(): %s\n",errbuf); exit(1); } packet = pcap_next(descr, &hdr); if(packet == NULL) ( printf("Didn't grab packet\n"); exit(1); } printf("Grabbed packet of length %d\n*hdr.len); printf(""Recieved at %s\n",ctime((const time_t*) &hdr.ts.tv_sec)); pcap_close(descr);

Chương trình này in ra chiều dài và thời gian bắt gói tin đầu tiên mà nó bắt được Hầm peap£ close(Q dùng để đóng phiên làm việc

Một kỹ thuật khác phức tạp hơn là dùng hàm pcap_ loopQ của libpcap Cấu trúc hai hàm này như sau :

intpcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user)

Tham số đầu tiên là handle quản lý phiên làm viêc, tham số thứ hai

là số frame sẽ được sniff trước khi thoát ra Nếu tham số này là số âm

thì sẽ sniff đến khi nào có lỗi xảy ra Tham số thứ ba là tên của hàm

callback Tham số cuối cùng được sử dụnng trong một số ứng dụng, đơn giản hãy dặt là NULL

Trang 27

Chương 2: Thư viện lập trình mang libpcap

Cấu trúc của ham callback :

void my_callback(u_char *useless,const struct pcap_pkthdr* pkthdr,const u_char* packet)

Tham số đầu tiên là tham số cuối cùng của hàm pcap_loop truyền

Trang 28

Chương 2: Thư viện lập trình mang libpcap int main(int arge,char **argv) { int i; char *dev; char errbuf[PCAP_ERRBUF_SIZE]; pcap_t* descr;

const u_char *packet;

struct pcap_pkthdr hdr; /* pcap.h */

Trang 30

Chương 3: Hệ quản trị cơ sở dữ liệu MySQL

Chương 3: Hệ quản trị cơ sở dữ liệu MySQL 3.1 Giới thiệu về MySQL

Công ty Tcx muốn phát triển một ứng dụng web và muốn sử dụng cơ sở dữ liệu của riêng mình Tcx đã dựa trên tiếp cận lập trình API của mSQL và

ngôn ngữ SQL dé phát trién nén MySQL

MySQL hoat d6ng theo mé hinh client-server, rat đơn giản, không có các tính năng cao cấp như quản lý giao tác, chia sẻ kết nối Được sử dụng rộng rãi trong Linux đối với các ứng dụng cgi hay Perl troný môi trường Web, Internet

Dia chi download MySQL : http://www.MySQL.com 3.2 Cai dat MySQL

Trang 31

Chương 3: Hệ quản trị cơ sử dữ liệu MySQL

Trình cài đặt script sẽ tự động tạo:

đ Mt CSDL database mu

â Script init.d va mysql để khởi động và dừng dịch vụ kiểm soát database cla MySQL

© Script mysql chita céc khai báo biến môi trường cho CSDL cho biết vị trí các file CSDL của MySQL: bindir=/usr/bin datadir=/var/lib/mysql pid_file=/var/lib/mysql/mysqld.pid mysql_daemon_user=mysql # Run mysq| as this user ® User mang tên mysql dùng để đăng nhập và khởi động dịch vụ daemon của trình chủ Khởi động trình chủ bằng tay: ¢ Png nhap quyén user mysql: $isu mysql ® Khởi động trình chủ: # /etc/rc.d/init.d/mysql start 3.2.2 Cài đặt từ mã nguồn

$ Giải nén file chứa mã nguồn

Trang 32

Chương 3: Hệ quản trị cơ sử dữ liệu MySQL 3.3 Sử dụng MySQL 3.3.1 Lénh mysql Đây là lệnh thâm nhập trình quản lý cơ sở dữ liệu và đưa ra các lệnh quản trị khác Cú pháp mysql —u username —p password databasename Vi du Truy xuất cơ sở đữ liệu packet voi username la “pac” va password la “ket” $ mysql -I pac —p ket packet 3.3.2 Lénh mysqladmin

Là công cụ chính của người quan trị cơ Sở đữ liệu với 2 tham số -u,- p- Với mysaladmin có một/số lệnh.quản trị sau

â create databasename tao csdl

 drop database name :x6a co s0 dữ liệu © passwordnewpassword : déi mat khau

© status: thong tin về trạng thái hiện hành của trình chủ ¢ yersion cho biét thông tin về phiên bản của trình chủ my sql 3.3.3 Lệnh mysqlshow

Lệnh này cho biết thông tin về database Nếu không có tham số sẽ hiển thị toàn bộ database, ngược lại nếu có tham số là tén database thì hiển thị tất cả các bảng trong database

Nếu tham số là tên đatabase và tên bảng thì toàn bộ tên các cột trong bảng sẽ được hiển thị

Nếu tham số là tên database,tên bảng,tên cột thì thông tin của cột sẽ được liệt kê

Trang 33

Chương 3: Hệ quản trị cơ sử dữ liệu MySQL

3.3.4 Lệnh grant

Cấp quyền cho người dùng database Cú pháp :

grant privilege on object to user[user-password] [opt]

¢ privilege 1a quyén cấp cho tài khoản người dùng bao gồm: = Alter : quyền thay đổi bang và file chỉ mục " Creat : quyền tạo bảng vàdatabase

" Delete : quyền xoá dữ liệu trong dafabase = Drop : quyền xoá database

“ Index : quyền quản lý chi muc index " Insert : quyền chèn đữ liệu mới vào " Select : quyền xem dữ liệu

" Update : quyền cập nhậtdữ liệu " All :đất cả các quyền ®_ Object : databasename.table

Có thể dùng databasename.* sẽ tác động đến mọi bảng trên databasename

Lưu ý: mysql cho phép cấp quyền trên database chưa có cho một người dùng sau này sẽ tạo

e User : username.host Vi du rick@”%”

¢ Password : néu grant tag mdi user ta dit password bang cach thém identyfied by password

© Vi du: tao mdi user khtn với password cntt toàn quyền trên database tên packet(packet có thể chưa có)

mysql>grant all on packet.* to khtn@”%” indentified by cntt

Trang 34

Chương 3: Hệ quản trị cơ sử dữ liệu MySQL

3.3.5 Lệnh Revoke

Lệnh này dùng để tước quyền người dùng Cú pháp:

revoke privilege on object from user

3.3.6 Ví dụ về tạo một cơ sở dữ liệu

Tạo cơ sở dữ liệu packet với username là khtn và password la cntt : $mysql> grant all on packet.* to khin@ ”%” identified by cntt; Lệnh trên được thực hiện với tư cách quản trị root của MySQL

(Thoát về dấu nhắc lệnh $mysal>quii )

Rồi gõ tiếp các lệnh sau: $mysql —u khtn —p cntt

$ mysql>create database packet;

$mysql>use packet (st dung database tén packet) Bây giờ mọi truy vấn sqI đều lác déng 1én database packet 3.4 Lập trình MySQL trên ngôn ngữ C

Một số hàm thườnế đăng khi lập trình với MySQL 4.4.1 mysql_init Khởi tạo câu trúc xử lý kết nối Cũ pháp: MYSQL *mysql_init (MYSQL *old_connect) Tham số:

® old_connect =NĐULL :tạo kết nối mới

® old_connect khác NULL :tái kết nối với con trỏ old_connect

Trang 35

Chương 3: Hệ quản trị cơ sử dữ liệu MySQL

3.4.2 mysql_real_connecfion

Thực hiện kết nối vật ly dén may chi noi Mysql sever dang chay Cú pháp :

MYSQL *mysql_real_connect(MYSQL *connection , const char* server_host, const char * sql_username, const char *sql_pass, const char* db_name,

unsigned port_num ,const char * unit_socket_name , unsigned int flag )

Tham số :

Connection : trỏ đến câu trúc MYSQL được khởi tạo bởi hàm mysqlconnect

Server_host : dia chi IP cua“may)chu noi dich vu mysql server dang chay

sql_username,sql_pass: 1a/d6i s6 chimg thyc quyén dang

nhập hệ thống

đb_name:::tên của database

port_num : số hiệu công mysql dùng (mặc định bằng 0) unit sockét_name kiéu socket (mặc định NULL)

Jlag: kiểu giao thức sẽ kết nỗi

Trang 36

Chương 3: Hệ quản trị cơ sử dữ liệu MySQL 3.4.3 mysql_query Thực thi câu lệnh sql query Cú pháp: int mysql_query(MYSQL *connect,const char* query) Tham số: © query : cau lệnh sql cần thực hiện Kết quả trả về

© Bằng 0 nếu thực thi thành cơng

¢ Bang 1 néu that bai

3.4.4 mysql_affected_rows

Cho biết số đòng bị ảnh hưởng sau lệnh query Cú pháp :

my_ulonglong mysql_affected_rows(MYSQL *connection) Khi sử dụng hàm nầy phải ép kiểu giá trị trả về là unsigned long 3.4.5 mysql_store_result Lay giá.trị trả về sau khi gọi hàm mysql_query dua vào cấu trúc MYSQL RES Cũ pháp : MYSQL_RES *mysql_store_result(MYSQL -*connection) 3.4.6 mysql_fetch_row

Lay ra mét donh dit liéu tir MYSQL_RES Ban ciing cé thé di

Trang 37

Chương 3: Hệ quản trị cơ sử dữ liệu MySQL

3.4.7 mysql_row_seek

Di chuyên đến vi tri offset va tra về vị trí con trỏ trước đó Cú pháp :

MYSOL ROW_OFFSET myql_row_seek(

Trang 38

Chuong 4: Lap trinh socket

Chương 4: Lập trình socket 4.1 Giới thiệu về lập trình socket

Khi viết ứng dụng và có nhu cầu tương tác với một ứng dụng khác, chúng ta thường dựa vào mô hình khách/ chủ (client/server) Theo mô hình này, ứng dụng có khả năng phục vụ hoặc cung cấp những thông tin gì đó gọi là ứng dụng chủ (trình chủ hay server) Ứng dụng gửi yêu cầu đến trình chủ được gọi là ứng dụng khách (trình khách hay client) Mở rộng hơn nữa, server có thê là một máy tính với cầu hình mạnh còn client 1a ratnhiéu máy con khác nối vào máy chủ

Như vậy, trước khi yêu cầu một dịch vụ củá trình chủ thực hiện điều gì

đó, trình khách (client) phải có khả năng kết nối được với trình chủ Quá trình

kết nối này được thực hiện thông qua một cơ chế trừu tượng hóa gọi là socket

(tạm dịch là “cơ chế ô cắm”) Kết nối giữa tfình khách và trình chủ tương tự như việc cắm phích điện vào ô cắm điện:-Trình khách thường được coi như

phích căm điện, còn trình chủ được:coi như ô cắm điện, một ô cắm có thể cắm vào đó nhiều phich điệấ khác nhau cũng như một máy chủ có thể kết nối và phục vụ cho rất nhiều máy khách

Nếu kết nối thành công thì trình khách và trình chủ có thé trao đổi dit

liệu với nhau, thực hiện các yêu cầu về trao đổi đữ liệu 4.2 Nguyên lý hoạt động của socket

Đầu tiên server mở một ổ cắm socket Đây chỉ là quá trình hệ điều hành phân bổ tài nguyên để chuẩn bị kết nối Dùng hàm socketQ để tạo “ổ cắm” cho trình chủ server

Tiếp đến, để ứng dụng khách biết đến ổ cắm socket của trình chủ, bạn phải đặt cho server chủ một cái tên Nếu trên máy cục bộ và dựa vào hệ thống file của UNIX hay Linux, bạn có thể đặt tên cho socket như là một tên file

Trang 39

Chuong 4: Lap trinh socket

(với đầy đủ đường dẫn) Bạn chỉ cần đặt tên còn đường dẫn thường đặt trong thư mục /tmp hay /usrtmp Đối với giao tiếp mạng thông qua giao thức TCP/IP tên của socket được thay thế bằng khái niệm cổng (port) Công là một số nguyên 2 bytes (khoảng 65000 công bạn có thé chon dat cho socket) thay

thế cho tên tập tin Nếu trình khách và trình chủ nằm trên hai máy khách

nhau, giao thức TCP/IP còn yêu cầu xác định thêm địa chỉ IP để kết nối đến máy chủ ở xa

Sau khi đã chỉ định tên hoặc số hiệu port cho socket, bạn gọi hàm bindQ

dé rang buộc hay đặt tên chính thức cho socket của trình hủ Tiếp đến là chờ kết nối từ phía trình khách, trình chủ sẽ gọi hàm IiấtenQ để tạo hàng đợi nhận các kết nối do trình khách đưa đến Nếu có'yêu cầu:kết nối từ phía trình khách, trình chủ gọi hàm acceptQ) để tiếp nhận yêu cầu của trình khách

acceptQ sẽ tạo một socket vô danh khác (unnamed socket), cắm kết nối của trình khách vào socket vô danh này và thực hiện quá trình chuyền dữ liệu trao đổi giữa khách chủ Socket được đặt tên trước đó vẫn tiếp tục hoạt động để

chờ nhận yêu cầu từ trình khách Khác

Mọi giao tiếp đọc ghi thông qua socket cũng đơn giản như việc dùng lệnh read/write để đọc ghi-trên file Nếu file đựa vào số mô ta (file descriptor) đề xác định.sockef cần đọc ghi cho hàm read/write

Phía trình khách chỉ cầm tạo một socket vô đanh, chỉ định tên và vị trí socket của trình chủ Yêu cầu kết nối bằng hàm connectQ và đọc ghi, truy xuất dữ liệu của socket bằng lệnh read/ write hoặc lệnh send/ recv

Trang 40

Chuong 4: Lap trinh socket

4.3 Lập trình với socket

4.3.1 Các thuộc tính của socket

Socket được định nghĩa dựa trên 3 thành phần thuộc tính( attribute) đó là: vùng( domain), kiéu( type) va giao thitc( protocol) Socket còn căn cứ vào một địa chỉ kết hợp với nó Địa chỉ này phụ thuộc vào vùng của socket và thường được gọi là dòng giao thức (protocol family) Ví dụ

như dòng giao thức theo hệ thống file của Sun thường lấy tên file làm

đường dẫn địa chỉ, trong khi giao thức TCP/IP lại lay dia chi IP (32 bits)

để tham chiếu và thực hiện kết nối vật lý

4.3.1.1 Vùng( domain)

Vùng dùng xác định hạ tầng mạng nơi giao tiếp của Socket diễn ra Vùng giao tiếp Socket thông dụng nhất hiện nay là AF_INET hay gia tiép socKet theo chuẩn mạng Internet Chuẩn này sử dụng địa chỉ IP dé xác định nút kết nối vật lý trên mạng Ngoài ra, nêu bạn chỉ cầnígïao tiếp cục bộ, bạn có thể dùng vùng giao tiếp

theo chuẩn của-Sun AF_UNIX, đó là dùng đường dẫn và hệ thống

file để đặt tên và xác định kết nối giữa hai hay nhiều ứng dụng Chẳng hạn.nhữ'ví dụ trên, chúng ta đã thực hiện bằng cách đặt tên cHo soéket là server_socket, và Linux đã tạo ra file server_socket ngay-trên thư mục hiện hành (hay trong thư mục tạm /tmp tùy theo phiên bản của Linux và UNIX) Tuy nhiên vùng giao tiếp AF_UNIX lại ít được sử dụng trong thực tế Ngày nay hầu hết các img dung mang str dung socket déu theo vùng AF_INET là chủ yếu Chúng ta sẽ bàn sâu về phân vùng này ngay sau đây

Vùng AF_INET như đã nêu sử dụng địc chi IP (Internet

Protocol) là một chủ nghĩa số 32 bits để xác định kết nối vật lý Số

này thường được viết ở dạng nhòm như 192.168.1.1, 203.162.42.1

Ngày đăng: 18/06/2014, 13:00

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w