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

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

Đ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 31
Dung lượng 315,33 KB

Nội dung

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

w