Xây dựng ứng dụng bắt gói tin cho mạng quản lý (Giang Quốc Minh) - 2 potx

31 235 0
Xây dựng ứng dụng bắt gói tin cho mạng quản lý (Giang Quốc Minh) - 2 potx

Đ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

Chng 3: H qun tr c s d liu MySQL 36 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 nh qun tr khác . Cú pháp mysql u username p password databasename Ví d Truy xut c s d 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 qun tr c s d liu vi 2 tham s -u,- p . Vi mysqladmin có mt s lnh qun tr sau • create databasename : to csdl • drop database name :xóa c s d liu • password newpassword : i mt khu • status: thông tin v trng thái hin hành ca trình ch • version 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 i nu có tham s là tên database thì hin th tt c các bng trong database. u tham s là tên database và tên bng thì toàn b tên các ct trong bng sc hin th 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ê. Chng 3: H qun tr c s d liu MySQL 37 3.3.4. Lnh grant p quyn cho ngi dùng database Cú pháp : grant privilege on object to user[user-password] [opt] • privilege là quyn cp cho tài khon ngi dùng bao gm: § Alter : quyn thay i bng và file ch mc § Creat : quyn to bng vàdatabase § Delete : quyn xoá d liu trong database § Drop : quyn xoá database § Index : quyn qun lý ch mc index § Insert : quyn chèn d liu mi vào § Select : quyn xem d liu § Update : quyn cp nht d liu § All : t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. 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 • User : username.host Ví d rick@”%” • Password : nu grant ta mi user ta t password bng cách thêm identyfied by password • Ví d : to mi 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 Chng 3: H qun tr c s d liu MySQL 38 3.3.5. Lnh Revoke Lnh này dùng  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 o c s d liu packet vi username là khtn và password la cntt : $mysql>grant all on packet.* to khtn@ identified by cntt; 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 $mysql>quit ) Ri gõ tip các lnh sau: $mysql u khtn p cntt $ mysql>create database packet; $mysql>use packet (s dng database tên packet) Bây gi mi truy vn sql u lác ng lên database packet. 3.4. Lp trình MySQL trên ngôn ng C Mt s hàm thng dù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 =NULL :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 Chng 3: H qun tr c s d liu MySQL 39 3.4.2 mysql_real_connection Thc hin kt ni vt lý n máy ch ni Mysql sever ang chy 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 : a ch IP ca máy ch ni dch vu mysql server ang chy. • sql_username,sql_pass : là i s chng thc quyn ng nhp h thng • db_name : tên ca database • port_num : s hiu cng mysql dùng (mc nh bng 0) • unit_socket_name kiu socket (mc nh NULL) • flag: kiu giao thc s kt ni Chng 3: H qun tr c s d liu MySQL 40 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 : câu 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 • Bng 1 nu tht bi 3.4.4. mysql_affected_rows Cho bit s dò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 y giá tr tr v sau khi gi hàm mysql_query a vào cu trúc MYSQL_RES Cú pháp : MYSQL_RES *mysql_store_result(MYSQL -*connection) 3.4.6. mysql_fetch_row y ra mt dònh d liu t MYSQL_RES . Bn cng có th di chuyn n 1 dòng d liu bt kì nh hai hàm mysql_row_seek và mysql_row_tell. Cú pháp : MYSQL_ROW mysql_fetch_row(MYSQL_RES *result) Chng 3: H qun tr c s d liu MySQL 41 3.4.7. mysql_row_seek Di chuyn n v trí offset và tr v v trí con tr trc ó Cú pháp : MYSQL_ROW_OFFSET myql_row_seek( MYSQL_RES *result MYSQL_ROW_OFFSET offset) 3.4.8. mysql_free_result Gii phóng tài nguyên. Cú pháp: void mysql_free_result (MYSQL_RES *result) Chng 4: Lp trình socket 42 Chng 4: Lp trình socket 4.1. Gii thiu v lp trình socket Khi vit ng ng và có nhu cu tng tác vi mt ng 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 ng có kh ng phc  hoc cung cp nhng thông tin gì ó gi là ng ng ch (trình ch hay server). ng ng gi yêu cu n trình ch c i là ng 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 nh còn client là rt nhi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 ch  ca trình ch thc hin iu gì ó, trình khách (client) phi có kh 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 i là socket (m ch là “c ch cm”). Kt ni gia trình khách và trình ch 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 phích in khác nhau ng nh mt máy ch có th kt ni và phc  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 d liu vi nhau, thc hin các yêu cu v trao i d liu. 4.2. Nguyên lý hot ng 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  kt ni. Dùng hàm socket()  to “ cm” cho trình ch server. Tip n, ng ng khách bit n  cm socket a trình ch, n phi t cho server ch mt cái tên. Nu trên máy c b và da vào h thng file a UNIX hay Linux, n có th t tên cho socket nh là mt tên file Chng 4: Lp trình socket 43 (vi y  ng dn). n ch cn t tên còn ng dn thng t trong th c /tmp hay /usr/tmp. i vi giao tip ng thông qua giao thc TCP/IP tên 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 n có th chn t 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, n i hàm bind()  ràng buc hay t tên chính thc cho socket a trình ch. Tip n là ch kt ni t phía trình khách, trình ch s gi hàm listen()  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 accept()  tip nhn yêu cu a trình khách. accept()  to mt socket vô danh khác (unnamed socket), cm kt ni 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 c hot ng  ch nhn yêu cu t trình khách khác. i giao tip c ghi thông qua socket ng n gin nh vic dùng lnh read/write  c ghi trên file. Nu file da vào s mô  (file descriptor)  xác nh socket cn c ghi cho hàm read/write. Phía trình khách ch cm o mt socket vô danh, ch nh tên và v trí socket a trình ch. Yêu cu kt ni bng hàm connect() và c ghi, truy xut d liu a socket bng lnh read/ write hoc lnh send/ recv. Chng 4: Lp trình socket 44 4.3. Lp trình vi socket 4.3.1. Các thuc tính 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) và giao thc( 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 a socket và thng c i là dòng giao thc (protocol family). Ví d nh dòng giao thc theo h thng file a Sun thng ly tên file làm ng dn a ch, trong khi giao thc TCP/IP i ly a ch 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  tng ng ni giao tip a Socket din ra. Vùng giao tip Socket thông ng nht hin nay là AF_INET hay gia tip socket theo chun ng Internet. Chun này s dng a ch IP  xác nh nút kt ni vt lý trên ng. Ngoài ra, nu n ch cn giao tip c b, n có th dùng vùng giao tip theo chun 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 ng. Chng n nh ví d trên, chúng ta ã thc hin bng cách t tên cho socket là server_socket, và Linux ã to ra file server_socket ngay trên th c hin hành (hay trong th c m /tmp tùy theo phiên n 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 ng ng ng s dng socket u theo vùng AF_INET là ch yu. Chúng ta  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 ch 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 Chng 4: Lp trình socket 45 hay 127.0.0.1 là các a ch IP hp l. a ch IP có th c ánh  thành mt tên d nh n nh www.yahoo.com hay www.microsoft.com , chúng c i là tên vùng (domain name). Vic ánh  a ch IP thành tên vùng thng do máy ch DNS (Domain Name Server) thc hin. Tuy nhiên, n ng có th t ánh  tên vùng ngay trên mày c b bng cách s dng tp tin d liu /etc/hosts. Socket theo dòng giao thc IP s dng port (s hiu cng)  t tên cho mt socket. Cng dùng  phân bit d liu gi n  chuyn cho ng ng nào. n hình dung nu a ch IP dùng  xác nh c máy hay ni kt ni vt lý  a d liu n thì cng là a ch ph dùng  gi chính xác d liu n ni ng ng cn. iu này do trên mt máy có th có nhiu ng ng cùng chy và cùng s dng trùng s cng. Do cng là mt giá tr nguyên 2 bytes nân n có th s dng khong 65000 cng  t do t cho socket. Tr các s hiu cng n ting nh FTP, Web ã nêu  phn trên n không nên s dng, còn thì bn có th chn s cng ln n 1024 m cho socket a ung ng. M socket theo AF_INET không khác my so vi AF_UNIX ngoài vic t tên và ch nh s hiu cng. Ví d: /* M socket theo kt ni IP */ server_sockfd = socket (AF_INET, SOCK_STREAM, 0); server_address.sin_family = AF_INET; server_address.sin_addr.s_addr = inet_addr(“127.0.0.1”); server_address.sin_port = 1234; [...]... protocol thông ng nh TCP, UDP, ICMP, ARP 2 Cho phép l u tr thông tin b t ch n h qu n tr 3 s d li u c d i ng c s d li u và u tr Cho phép l u tr thông tin b t theo c u trúc file 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, bao g m: • Kh i 4 ng b t gói tin • 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 t gói tin ng 5-1 Xác 62 nh yêu c u a Ethereal ho c Ch ng 5: Phân... quá trình b t gói tin ang th c l y tên là PacketCap ó, m t h th ng phân tán b t gói tin, trích l c và luu tr li u trên m ng c xây d ng kh c ph c ph n nào 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ông 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 5 .2. 2 Xác nh yêu c u c tiêu tin, ng này... 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 hi n) ng ng này Trên... m ng a tài là m t xây d ng ng ng phân tán b t các gói cung c p cho qu n tr m ng nh ng thông tin ph c vi c theo dõi và phân tích thông tin ng, d a trên nh ng thông tin cung c p này cho phép qu n tr m ng có th xác toàn b h th ng ng 61 nh c tình tr ng cho c a Ch ng 5: Phân tích và thi t k PacketCap ng ng PacketCap này bao g m các ch c n ng: STT 1 Ch c n ng B t và phân tích c các gói tin a nh ng protocol... 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) : icmp_seq=0 ttl =25 5 time=67 usec 64 bytes from ( 127 .0.0.1) : icmp_seq=0 ttl =25 5 time=48 usec 64 bytes from ( 127 .0.0.1) : icmp_seq=0 ttl =25 5 time=51 usec 4.4 S d ng socket trong ng ng minh Ph n l p trình socket này a c s d ng th c hi n vi c trao thông tin gi a thành ph n client và server trong ph... 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à... th ng khó nh , 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 n localhost hay my.computer.home thay cho 127 .0.0.1 T p tin v n n /etc/hosts ch a các danh sách chuy n i này Ví d , n có th dùng trình so n th o vi hay gnotepad s a n i dung t p tin này nh sau: 127 .0.0.1 localhost 127 .0.0.1 my.computer.home 20 7.46.131.91 www.microsoft.com Nh n th y, m t nhau ( a ch IP và tên th Th... t tên cho socket Sau khi ã AF_UNIX socket nh a ch , n ch c n c ch chính là t tên cho socket i v i ng d n, còn tên chính là tên t p tin i v i vùng giao th c AF_INET t o a ch chính là s IP còn tên chính là s hi u c ng (sin_port) trong c u trúc sockaddr_in Khi ã gán thông tin y cho socket nc n i hàm bind() thông tin này cho socket ã m ra tr rabgd bu c nh ng c ó #include int byte (int socket,... qui hay datagram) o m hai chi u c óng thành t ng SOCK_STREAM và nh cách chuy n gói d li u theo hai cách nh sau: SOCK_STREAM luôn gi k t n i và b o g i i c chuy n li u, n i nh n ch n ích và nh n y m gói thông tin Sau khi nh n xong d g i thông tin ph n h i cho n i g i và quá trình g i c xác nh n hoàn t t khi nh n c y th ng tin g i nh n c hai phía khách ch Ki u truy n d li socket này trong vùng giao... ho c Ch ng 5: Phân tích và thi t k PacketCap 5.3 Các h ng xây d ng ng 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, TcpDump, 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 d 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 winpcap(tên a phiên u . (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 1 92. 168.1.1, 20 3.1 62. 42. 1 Chng 4: Lp trình socket 45 hay 127 .0.0.1 là các a ch IP. khu • status: thông tin v trng thái hin hành ca trình ch • version 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. 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 n có th chn t 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,

Ngày đăng: 12/08/2014, 12:21

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan