SlideShare una empresa de Scribd logo
1 de 91
Descargar para leer sin conexión
TR NG I H C KHOA H C T NHIÊN
KHOA CÔNG NGH THÔNG TIN
MÔN CÔNG NGH PH N M M
GIANG QU C MINH – H PH M THÁI VINH
XÂY D NG NG NG B T GÓI TIN CHO
VI C PHÂN TÍCH THÔNG TIN NG PH C
QU N LÝ
KHOÁ LU N C NHÂN TIN H C
TP. HCM, M 2005
TR NG I H C KHOA H C T NHIÊN
KHOA CÔNG NGH THÔNG TIN
MÔN CÔNG NGH PH N M M
GIANG QU C MINH - 0112016
H PH M THÁI VINH - 0112081
XÂY D NG NG NG B T GÓI TIN CHO
VI C PHÂN TÍCH THÔNG TIN NG PH C
QU N LÝ
KHÓA LU N C NHÂN TIN H C
GIÁO VIÊN H NG D N
GVC CAO NG TÂN
NIÊN KHÓA 2001 – 2005
NH N XÉT A GIÁO VIÊN H NG D N
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
Tp.HCM, ngày…..tháng….n m 2005
NH N XÉT A GIÁO VIÊN PH N BI N
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
Tp.HCM, ngày…..tháng….n m 2005
L I CÁM N
Chúng em xin chân thành cám n Ban giám hi u, quý Th y 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 y, trang cho chúng
em nh ng ki n th c c n thi t, b ích trong su t nh ng n m c t p i tr ng.
Chúng em xin chân thành 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 trong su t th i gian làm lu n
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
, cùng toàn th gia ình, nh ng ng i ã nuôi 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 , 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
Giang Qu c Minh – H Ph m Thái Vinh
B C C A LU N V N
Lu n v n g m có 3 ph n và 7 ch ng
PH N 1: T NG QUAN
Ch ng 1 Gi i thi u v tài
PH N 2: TÌM HI U CÁC V N L P TRÌNH. Ph n này gi i thi u
các v n l p trình c n nh t xây d ng 1 ng ng có kh 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 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” a h u h t các ng ng b t gói tin mã ngu n m hi n nay.
Ch ngg 3. Gi i thi u MySQL, m t h qu n tr 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 thu t l p trình socket vi t các ng ng trên
môi tr ng ng
Ph n 3 Xây ng ng ng PacketCap. Ph n này s d ng các ki n
th c ã tìm hi u ch ng 2, 3, 4 xây d ng m t ng ng b t gói tin,
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
ng.
Ch ng 5. Phân tích, thi t k ng 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,
nh ng n ch và h ng phát tri n PacketCap trong t ng lai.
Các danh c
11
M C C
DANH SÁCH HÌNH.................................................................................... 14
DANH SÁCH NG .................................................................................. 15
PH N 1: T NG QUAN .............................................................................. 16
Ch ng 1: Gi i thi u tài.......................................................................... 17
1.1. t v n .......................................................................................... 17
1.2. Gi i thi u tài.................................................................................. 18
1.3. Yêu c u a tài.............................................................................. 19
PH N 2: TÌM HI U CÁC V N L P TRÌNH ...................................... 20
Ch ng 2 : Th vi n l p trình ng libpcap ................................................ 21
2.1. Gi i thi u libpcap............................................................................... 21
2.2. Cài t th vi n libpcap ..................................................................... 21
3.3. Các b c xây d ng ch ng trình s d ng libpcap.............................. 22
3.4. Chi ti t các b c ................................................................................ 23
3.4.1. Ch n Interface( card ng) ......................................................... 23
3.4.2. M device l ng nghe( sniff) d li u......................................... 24
3.4.3. c traffic.................................................................................... 25
Ch ng 3: H qu n tr s d li u MySQL............................................... 34
3.1. Gi i thi u v MySQL......................................................................... 34
3.2. Cài t MySQL.................................................................................. 34
3.2.1. Cài t MySQL t các gói nh phân............................................ 34
3.2.2. Cài t t mã ngu n..................................................................... 35
3.3. S d ng MySQL................................................................................ 36
3.3.1. L nh mysql.................................................................................. 36
3.3.2. L nh mysqladmin ........................................................................ 36
3.3.3. L nh mysqlshow.......................................................................... 36
3.3.4. L nh grant.................................................................................... 37
3.3.5. L nh Revoke................................................................................ 38
3.3.6. Ví d v t o m t c s d li u ..................................................... 38
3.4. L p trình MySQL trên ngôn ng C .................................................... 38
4.4.1 mysql_init..................................................................................... 38
3.4.2 mysql_real_connection ................................................................. 39
3.4.3 mysql_query ................................................................................. 40
3.4.4. mysql_affected_rows................................................................... 40
3.4.5. mysql_store_result....................................................................... 40
3.4.6. mysql_fetch_row ......................................................................... 40
3.4.7. mysql_row_seek .......................................................................... 41
3.4.8. mysql_free_result ........................................................................ 41
Các danh c
12
Ch ng 4: L p trình socket.......................................................................... 42
4.1. Gi i thi u v l p trình socket ............................................................. 42
4.2. Nguyên lý ho t ng a socket......................................................... 42
4.3. L p trình v i socket ........................................................................... 44
4.3.1. Các thu c tính a socket............................................................. 44
4.3.1.1. Vùng( domain) ...................................................................... 44
5.3.1.2. Ki u socket(type)................................................................... 46
4.3.1.3. Giao th c a socket( protocol)............................................. 47
4.3.2. o socket.................................................................................... 48
4.3.3. nh a ch cho socket................................................................ 49
4.3.4. t tên cho socket........................................................................ 51
4.3.5. o hàng i cho socket .............................................................. 52
4.3.6. Ch và ch p nh n k t n i............................................................. 53
4.3.7. Yêu c u k t n i............................................................................ 54
4.3.8. óng k t n i ................................................................................ 55
4.3.9. Giao ti p b ng socket................................................................... 56
4.4. S d ng socket trong ng ng minh a....................................... 58
PH N 3: XÂY D NG NG NG TH NGHI M PACKETCAP ......... 59
Ch ng 5: Phân tích và thi t k PacketCap.................................................. 60
5.1. Kh o sát hi n tr ng ............................................................................ 60
5.2. Phân tích và xác nh yêu c u ............................................................ 61
5.2.1. Phân tích...................................................................................... 61
5.2.2. Xác nh yêu c u ......................................................................... 61
5.3. Các h ng xây d ng ng ng PacketCap......................................... 63
5.3.1. Phân tích h ng phát tri n d a trên Ethereal................................ 63
5.3.2. Phân tích h ng phát tri n d a trên libcap................................... 64
5.3.3. L a ch n h ng phát tri n PacketCap ......................................... 64
5.4. Các thành ph n PacketCap................................................................. 65
5.5. Xây d ng mô hình use case................................................................ 66
5.5.1. Xác nh Actor và use case .......................................................... 66
5.5.2. Mô hình use case ......................................................................... 66
5.6. t use case.................................................................................... 67
5.6.1. Connect........................................................................................ 67
5.6.2. StartCapture................................................................................. 68
5.6.3. StopCapture................................................................................. 69
5.6.4. GetFilter....................................................................................... 70
5.6.5. Terminate..................................................................................... 71
Các danh c
13
5.7.Thi t k d li u................................................................................... 72
5.7.1. Phân tích các h ng l u tr ......................................................... 72
5.7.2. Thi t k s li u................................................................... 75
5.7.2.1. Danh sách các i t ng (table)............................................. 75
5.7.2.2 Table PACKET ...................................................................... 75
6.7.2.4. Table IP................................................................................. 76
5.7.2.5. Table TCP ............................................................................. 76
5.7.2.6. Table UDP............................................................................. 77
5.7.2.7 Table ICMP............................................................................ 77
5.7.2.8 Table IGMP............................................................................ 78
5.7.2.9. Table ARP............................................................................. 80
5.8. Xây d ng PCServer( server), PCManager(client)............................... 81
5.8.1. L u PCServer ......................................................................... 81
5.8.2. L u PCManager( Client)......................................................... 82
5.8.3. C u trúc d li u trao i gi a PCServer và PCManager............... 83
5.9.Thi t k giao di n PCManager( phiên n ch y trên Windows).......... 85
Ch ng 6: Cài t và th nghi m................................................................. 87
6.1. Cài t................................................................................................ 87
6.2. Th nghi m........................................................................................ 88
6.2.1. Mô hình th nghi m 1.................................................................. 88
6.2.2. Mô hình th nghi m 2.................................................................. 89
6.2.3. Mô hình th nghi m 3.................................................................. 90
Ch ng 7: T ng k t ..................................................................................... 91
7.1. K t lu n.............................................................................................. 91
7.1.1. K t qu t c.......................................................................... 91
7.1.2. n ch ........................................................................................ 91
7.2. H ng phát tri n ................................................................................ 92
PH L C H ng d n s d ng PacketCap................................................... 93
1.Ch ng trình PCServer.......................................................................... 93
2. Ch ng trình PCManager ..................................................................... 93
2.1. PCManager trên môi tr ng Linux ................................................. 93
2.2. PCManager trên môi tr ng Windows............................................ 94
TÀI LI U THAM KH O............................................................................ 95
Các danh c
14
DANH SÁCH HÌNH
Hình 5-1 Các thành ph n a PacketCap...................................................... 65
Hình 5-2 Mô hình use case........................................................................... 66
Hình 5-3 Mô hình l u tr 1 .......................................................................... 72
Hình 5-4 Mô hình l u tr 2 .......................................................................... 73
Hình 5-5 Mô hình l u tr 3 .......................................................................... 74
Hình 5-6 L u PCServer........................................................................... 81
Hình 5-7 L u PCManager ....................................................................... 82
Hình 6-1 Mô hình th nghi m 1................................................................... 88
Hình 6-2 Mô hình th nghi m 2................................................................... 89
Hình 6-3 Mô hình th nghi m 3................................................................... 90
Các danh c
15
DANH SÁCH NG
ng 4-1 Các giá tr c a domain .................................................................. 48
ng 4-2 Các mã l i a hàm bind() ............................................................ 51
ng 4-3 Các mã l i a domain AF_UNIX................................................ 52
ng 4-4 Mã l i a hàm connect().............................................................. 55
ng 5-1 Xác nh yêu c u........................................................................... 62
ng 5-2 Danh sách các i t ng............................................................... 75
ng 5-3 Table PACKET............................................................................. 75
ng 5-4 Table IP ........................................................................................ 76
ng 5-5 Table TCP..................................................................................... 76
ng 5-6 Table UDP.................................................................................... 77
ng 5-7 Table ICMP .................................................................................. 77
ng 5-8 Table IGMP.................................................................................. 78
ng 5-9 Table ARP .................................................................................... 80
ng 5-10 Mô màn hình PCManager ....................................................... 86
Ph n 1: T ng quan
16
PH N 1: T NG QUAN
Ch ng 1. Gi i thi u tài
Ch ng 1: Gi i thi u tài
17
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 nh 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 ng 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 t ng 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 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 .
Ch ng 1: Gi i thi u tài
18
y gi i pháp nào gi i quy t bài toá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
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
ng nh ng ch a s d ng c h t kh n ng tính toán c a
chúng.
• 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ì
nh g p nhi u l n 1 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).
i nh ng u 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 ng th nghi m Grid Computing trong vi c phân tích
thông tin ng ph c qu n lý” là m t l n g m 2 nhóm th c hi n.
Nhóm th 1 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
ng ph c cho vi c theo dõi và phân tích thông tin ng (Ph n I).
Nhóm th 2 tìm hi u Grid Computing và xây d ng ng ng phân
tích hi n tr ng c a m ng d a trên thông tin t s d li u do nhóm th 1
xây d ng (Ph n II).
Ch ng 1: Gi i thi u tài
19
1.3. Yêu c u a tài
• Xây 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 ng ph c 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 d
li u phân tán trên m ng theo nhu c u c a ng i qu n tr .
• th ng cho phép c u hình ng d ng t xa.
• H tr u k t qu b t c theo nh ng a các ng ng b t
gói tin khác nh Ethereal, TCPDump...
Ph n 2: Tìm hi u các v n l p trình
20
PH N 2: TÌM HI U CÁC V N L P TRÌNH
Ch ng 2. Th vi n l p trình ng libpcap
Ch ng 3. H qu n tr s d li u MySQL
Ch ng 4. L p trình socket
Ch ng 2: Th vi n l p trình ng libpcap
21
Ch ng 2 : Th vi n l p trình ng libpcap
2.1. Gi i thi u libpcap
Libpcap là m t th vi n mã ngu n m tr l p trình 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 n m i nh t 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 n m i nh t a libpcap u có a ch này.
Gi s b n i v gói libpcap-0.8.3.tar.tar, ti nhànhcài t:
• Gi i nén gói tar
tar –xzvf libpcap-0.8.3.tar.tar
• Chuy n vào th m c libpcap
cd libpcap-0.8.3
• gõ l nh ./configure
• Gõ l nh make
• Gõ l nh make install
N u không có l i gì x y ra thì quá trình cài t ã hoàn t t.
Ch ng 2: Th vi n l p trình ng libpcap
22
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
• c 1: Xác nh interface (card 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_lookupdev() c a th vi n libpcap l y t t c các
inteface.
• c 2: Kh i t o pcap. Cung c p cho pcap bi t interface nào trong
các interface ã l y v b c trên s c ch n sniff.
• c 3: L c frame .pcap cho chúng ta c ch ch n l a khi l c các
frame khi b t (ví d ch b t frame TCP/IP có source IP
192.168.8.8 và port 23 …). ta ph i t o ra filter r i biên ch filter
này báo cho pcap bi t b l c nó s dùng.
• c 4: Pcap th c thi vi c sniff frames.
• c 5: óng phiên làm vi c và k t thúc ng d ng
Trên ây là qui trình t 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.
Ch ng 2: Th vi n l p trình ng libpcap
23
3.4. Chi ti t các b c
3.4.1. Ch n Interface( card 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(int 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
• Cách 2 : S d ng hàm pcap_lookupdev() c a libpcap tìm
ki m các interface t n i trên máy tính.
#include <stdio.h>
#include <pcap.h>
int main(int argc , char* argv[])
{
Char* dev,errbuf[PCAP_ERRBUF_SIZE]
dev = pcap_lookupdev(errbuf);
if(dev == NULL)
{
printf("%sn",errbuf);
exit(1);
}
printf("DEV: %sn",dev);
}
Ch ng 2: Th vi n l p trình ng libpcap
24
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 : Dùng hàm pcap_findalldevs tìm 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,i=0; 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
Kh i t o phiên làm vi c cho các thi t b s d ng hàm
pcap_open_live(). C u trúc hàm này nh sau :
pcap_t *pcap_open_lives(
char* device,int snaplen,int promisc,int yo_ms,char *ebuf)
Tham s :
• device là thi t b ã c nh ngh a trên
Ch ng 2: Th vi n l p trình ng libpcap
25
• snaplen cho bi t s byte l n nh t mà pcap có th b t frames
• promisc n u t b ng 1 thì interface s ho t ng trong ch
promiscuos mode. ây là ch libpcap s sniff t t c các 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(): %sn",errbuf);
exit(1);
}
Dev là nh danh thi t b .
3.4.3. 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ào ó ta thì s d ng pcap_compile() pcap_setfilter()
có c u trúc nh sau:
int pcap_compile(pcap_t *p, struct bpf_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 là
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.
Ch ng 2: Th vi n l p trình ng libpcap
26
int pcap_setfilter(pcap_t *p,struct_bpf_program *fp)
Tham s th nh t là handle qu n 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())
nh d ng str mô t cho filter:
• Filter theo source ip
Ví d ," src net 172.168.8.8 "
• Filter theo dest ip :
Ví d ," dst net 172.168.8.8 "
• Filter theo source và dest ip
Ví d ," src and dst net 172.168.8.8 "
• Filter theo source hay dest ip
Ví d ," src or dst net 172.168.8.8 "
• Filter theo source port :
Ví d ," src port 23 "
• Filter theo dest port :
Ví d ," dst port 23 "
• Filter theo source và dest port
Ví d ," src and dst port 23 "
• Filter theo source hay dest port
Ví d ," src or dst port 172.168.8.8 "
Ch ng 2: Th vi n l p trình ng libpcap
27
• Filter theo protocal
Ví d ," tcp "
• Ngoài ra còn có th filter t ng h p :
Ví d ," dst net 172.168.8.8 and src port 23 tcp"
Ví d v filter n gi n
#include <pcap.h>
.
char *dev;
char errbuf[PCAP_ERRBUF_SIZE];
pcap_t* descr;
const u_char *packet;
struct pcap_pkthdr hdr; /* pcap.h */
struct bpf_program fp; /* hold compiled program */
bpf_u_int32 maskp; /* subnet mask */
bpf_u_int32 netp; /* ip */
dev = pcap_lookupdev(errbuf);
if(dev == NULL)
{
fprintf(stderr,"%sn",errbuf);
exit(1);
}
descr = pcap_open_live(dev,BUFSIZ,1,-1,errbuf);
if(descr == NULL)
{
printf("pcap_open_live(): %sn",errbuf);
exit(1);
}
Ch ng 2: Th vi n l p trình ng libpcap
28
if(pcap_compile(descr,&fp, port 23 ,0,netp) == -1)
{
fprintf(stderr,"Error calling pcap_compilen");
exit(1);
}
pcap_setfilter(descr,&fp)
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 c 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 pcap_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 là pointer ch n c u trú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 tr n frame c mô t b i c u trúc này
struct pcap_pkthdr
{
struct timeval ts; time stamp
bpf_u_int32 caplen; length of portion present
bpf_u_int32; lebgth this packet (off wire)
}
Ch ng 2: Th vi n l p trình ng libpcap
29
Ví 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 hdr; /* pcap.h */
struct ether_header *eptr; /* net/ethernet.h */
u_char *ptr; /* printing out hardware header info */
dev = pcap_lookupdev(errbuf);
if(dev == NULL)
{
printf("%sn",errbuf);
exit(1);
}
printf("DEV: %sn",dev);
descr = pcap_open_live(dev,BUFSIZ,0,-1,errbuf);
Ch ng 2: Th vi n l p trình ng libpcap
30
if(descr == NULL)
{
printf("pcap_open_live(): %sn",errbuf);
exit(1);
}
packet = pcap_next(descr,&hdr);
if(packet == NULL)
{
printf("Didn't grab packetn");
exit(1);
}
printf("Grabbed packet of length %dn",hdr.len);
printf("Recieved at ..... %sn",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 pcap_close() dùng óng phiên làm vi c.
t k thu t khác ph c t p h n là dùng hàm pcap_loop() c a
libpcap. C u trúc hai hàm này nh sau :
int pcap_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.
Ch ng 2: Th vi n l p trình ng libpcap
31
C u trúc c a hàm 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
vào (th ng là NULL). Tham s th hai là c u trúc pcap_pkthdr.
Ví d v cách s d ng pcap_loop :
#include <pcap.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
void my_callback(u_char *useless,const struct pcap_pkthdr*
pkthdr,const u_char*packet)
{
tatic int count = 1;
fprintf(stdout,"%d, ",count);
if(count == 4)
fprintf(stdout,"Come on baby sayyy you love me!!!
");
if(count == 7)
fprintf (stdout,"Tiiimmmeesss!! ");
fflush(stdout);
count++;
}
Ch ng 2: Th vi n l p trình ng libpcap
32
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 hdr; /* pcap.h */
struct ether_header *eptr; /* net/ethernet.h */
if(argc != 2)
{
fprintf(stdout,"Usage: %s numpacketsn",argv[0]);
return 0;
}
dev = pcap_lookupdev(errbuf);
if(dev == NULL)
{
printf("%sn",errbuf);
exit(1);
}
descr = pcap_open_live(dev,BUFSIZ,0,-1,errbuf);
if(descr == NULL)
{
printf("pcap_open_live(): %sn",errbuf);
exit(1);
}
Ch ng 2: Th vi n l p trình ng libpcap
33
pcap_loop(descr,atoi(argv[1]),my_callback,NULL);
fprintf(stdout,"nDone processing packets... wheew!n");
return 0;
}
Ch ng 3: H qu n tr c s d li u MySQL
34
Ch ng 3: H qu n tr 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
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 phát tri n nên MySQL
MySQL ho t ng theo mô hình client-server, r t 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 trong môi tr ng Web,
Internet.
a ch download MySQL : http://www.MySQL.com
3.2. Cài t MySQL
3.2.1. Cài t MySQL t các gói nh phân
Các gói c n thi t:
• Gói trình ch (server package):
MySQL-version-architecture.rpm
• Gói trình khách (client package):
MySQL-client-version-architecture.rpm
• tr th vi n cho trình khách:
MySQL-shared-version-architecture.rpm
• Gói phát tri n ng d ng trên MySQL:
MySQL-devel-version-architecture.rpm
Ta cài t ng gói b ng l nh
rpm –ivh <tên gói>
Ch ng 3: H qu n tr c s d li u MySQL
35
Trình cài t script s t ng t o:
• t CSDL database m u
• Script init.d và mysql kh i ng và d ng d ch v
ki m soát database c a MySQL.
• Script mysql ch a 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 mysql as this
user
• User mang tên mysql dùng ng nh p và kh i ng d ch
daemon c a trình ch .
Kh i ng trình ch b ng tay:
• ng nh p quy n user mysql:
$ su mysql
• Kh i ng trình ch :
# /etc/rc.d/init.d/mysql start
3.2.2. Cài t t mã ngu n
• G i nén file ch a mã ngu n
• Th c hi n cài t b ng t h p l nh sau :
$ ./configure
$ make
$ su
$ make intall
$scripts/mysql_intal.db
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;
Ch ng 4: L p trình socket
46
Ngoài vùng giao ti p AF_UNIX và AF_INET, n còn có th
g p AF_ISO dành cho chu n giao th c ng theo ISO hay AF_NS
dành cho h th ng ng Xerox, tuy nhiên chúng không c s
ng th ng xuyên, cho nên ta không c p n chi ti t.
5.3.1.2. Ki u socket(type)
V i m i vùng domain a socket, n có th có nhi u cách
giao ti p. Có hai ki u giao ti p ki u giao ti p i n hình s là giao
ti p m t chi u (SOCK_DGRAM) và giao ti p o m hai chi u
(SOCK_STREAM). D li u khi chuy n i c óng thành t ng
gói (data package hay datagram). SOCK_STREAM và
SOCK_DGRAM qui 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 m gói thông tin
g i i c chuy n n ích và nh n y . Sau khi nh n xong d
li u, n i nh n g i thông tin ph n h i cho n i g i và quá trình g i
ch 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 th c ng Internet AF_INET c là giao th c truy n
TCP. Khi k t h p v i c ch nh tuy n theo a ch IP chúng c
i t t là TCP/IP. K t n i và truy n d li u theo cách này tuy o
m nh ng t n nhi u tài nguyên a h th ng do k t n i ph i duy
trì và theo dõi th ng xuyên.
SOCK_DGRAM cách g i nh n d li u này ch di n ra m t
chi u. Trình khách, n i g i d li u i không c n bi t trình ch (n i
nh n) có nh n c gói d li u y hay không. Trình ch khi
nh n c d li u ng không c n thông báo hay xác nh n v i trình
khách là d li u ã nh n xong. Cách g i này có v không an toàn
Ch ng 4: L p trình socket
47
nh ng bù l i th c hi n nhanh và không tiêu t n nhi u tài nguyên
duy trì k t n i và ki m tra d li u nh n g i. Ki u truy n d li u
socket này trong vùng giao th c ng Internet AF_INET c i
là giao th c truy n UDP (User Datagram Protocol). Khi k t h p v i
ch nh tuy n theo c ch IP chúng c i t t là UDP/IP. Do
tính ch t không m o nên UDP c dùng nhi u trong ng v i
c ích thông báo hay g i tin tin n m t nhóm máy tính nào ó
trong ng. Nó ít khi c dùng trong các ch c n s chính xác
cao nh g i nh n file hay k t nói c s d li u.
4.3.1.3. Giao th c a socket( protocol)
Giao th c là cách qui c g i nh n d li u gii a hai hay nhi u
máy tính trong m ng. Tùy theo m i ki u g i nh n d li u mà ta có
các giao th c khác nhau. Hi n nay ki u g i nh n theo giao th c
TCP và UDP là s d ng nhi u nh t. Tuy nhiên i u này không b t
bu c, TCP và UDP ch là cách cài t cho vùng socket AF_INET
theo giao ti p Internet mà thôi. Ví d , ban có th cài t m t giao
th c khác thay cho UDP áp ng cho cách chuy n d li u không
o m. Mõi ki u socket u có giao th c m c nh áp ng cho
nó. Trong t t các hàm socket sau này, tùy ch n protocol n u có
yêu c u n có th t giá tr 0 yêu c u s d ng giao th c m c
nh.
Trong các ví d ph n sau ta ch t p trung nghiên c u v vùng
socket AF_INET và a ch IP thay cho vùng AF_UNIX. V i
AF_INET i ng ng ng a n u có th giao ti p c
v i nhau b t k chúng ang ch y trên Windows, Linux hay UNIX.
Ch ng 4: L p trình socket
48
4.3.2. T o socket
H th ng cung c p cho n hàm socket() t o m i m t socket.
Hàm socket() tr v s nguyên int cho bi t s mô hay nh danh dùng
truy c p socket sau này.
#include <sys/types.h>
#include <sys/socket.h>
int socket(int domain, int type, int protocol);
Tham s domain ch nh vùng hay a ch áp t cho socket.
domain có th nh n m t trong các giá tr sau:
AF_UNIX M socket k t n i theo giao th c file (xu t nh p socket d a
trên xu t nh p (file) a UNIX/Linux
AF_INET M socket theo giao th c Internet (s d ng a ch IP k t
n i)
AF_IPX Vùng giao th c IPX ( ng Novell)
AF_IS Chu n giao th c ISO
AF_NS Giao th c Xerox Network System
ng 4-1 Các giá tr c a domain
H u nh n ch s d ng AF_UNIX và AF_INET là chính. Các
vùng giao th c khác ã l i th i và hi n nay ít còn c s d ng.
Tham s type trong hàm socket() dùng ch nh ki u giao tiép hay
truy n d li u a socket. n có th ch nh b ng SOCK_STREAM
dùng cho truy n d li u o m ho c SOCK_GRAM dùng cho truy n
không o m.
Ch ng 4: L p trình socket
49
Tham s protocol dùng ch n giao th c áp ng cho ki u socket(
trong tr ng h p có nhi u giao th c áp ng cho m t ki u truy n). Tuy
nhiên n ch c n t giá tr 0 (l y giao th c m c nh). AF_INET ch cài
t m t giao th cduy nh t cho các ki u truy n SOCK_STREAM và
SOCK_DGRAM ó là TCP và UDP.
N u o socket thành công, hàm tr v s nh danh socket(
descriptor). n s d ng s nh danh này trong t t các l i i truy
xu t socket khác nh read/write. S này t ng t nh s nh danh file
mà b n th ng dùng c và ghi file. c/ ghi vào socket ng ng
ngh a v i g i và nh n d li u gi a trình khách và trình ch .
4.3.3. nh a ch cho socket
Khi socket ã c o ra, n ch c n ch nh a ch và tên cho
socket. M t socket c n ph i có a ch và tên các trình khách có th
tham chi u n. Tùy m i vùng giao th c mà cách ánh a ch có th
khác nhau.
Ví d khi n dùng vùng giao th c AF_UNIX d a trên h th ng t p
tin, a ch socket c nh ngh a trong c u trúc sockaddr_un a file
include sys/un.h nh sau:
struct sockaddr_un{
sa_family_t sun_family; /* AF_UNIX */
char sun_path []; /* ng d n */
};
Ch ng 4: L p trình socket
50
Trong Linux sa_family_t c nh ngh a là ki u short. sun_path là
ng d n t o t p tin socket.
Vùng AF_UNIX c s d ng nhi u trong các ng ng c b
trên t máy vì nó ph thu c vào ng d n t p tin tuy t i a h
i u hành.
Th c t b n dùng AF_INET v i c u trúc a ch c nh ngh a
trong sockadd_in a file include netinet/in.h nh sau:
struct sockadd_in{
short in sin_family; /* AF_INET */
unsigned short int sin_port; /* s c ng */
struct in_addr sin_addr; /* a ch IP */
};
C u trúc in_addr mô a ch IP c nh ngh a nh sau:
struct in_addr{
unsigned long int s_addr;
};
Nh n th y a ch IP là m t s long (4 bytes hay 32 bits). ây
ng chính là c u trúc a ch cho m t ch ng trình giao ti p v i nhau
qua ng Internet.
Trên quan i m a l p trình ng ng, cho dù socket có nh a
ch theo vùng nào i ch ng n a m t khi ã m c socket, n ch c n
xem socket nh m t t p tin và th c hi n thao tác read/write trên ó(
ng ng v i send và receive trên Winsock a Microsoft).
Ch ng 4: L p trình socket
51
4.3.4. t tên cho socket
Sau khi ã nh a ch , n ch c n t tên cho socket. i v i
AF_UNIX c ch chính là ng d n, còn tên chính là tên t p tin t o
socket. i v i vùng giao th c AF_INET 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 n c n i hàm bind() rabgd bu c nh ng
thông tin này cho socket ã m ra tr c ó.
#include <sys/socket.h>
int byte (int socket, const struct sockaddr *address, size_t address_len);
Hàm h th ng bind() s d ng các thông tin trong c u trúc address
gán cho socket s nh danh socketd tr v b i hàm socket() tr c ó.
Tham s address_len cho bi t chièu dài a c u trúc (struct sockaddr*)
truy n vào hàm. n l u ý sockaddr là c u trúc t ng quát cho
sockaddr_un và sockaddr_in
Khi ràng bu c thành công bind() tr v tr 0. N u không hàm tr v
-1 và errno ch a m t trong các l i sau:
Mã l i Mô
EBADF S mô file không h p l
ENOTSOCK S mô file không dành cho socket
EINVAL S mô file tham chi u n m t socket ã có.
EADDRNOTAVAIL a ch không xác nh
EADDRINUSE a ch và c ng ràng bu c ã b m t socket khác
chi m ng
ng 4-2 Các mã l i a hàm bind()
Ch ng 4: L p trình socket
52
N u n m socket thu c vùng AF_UNIX errno có th nh n thêm
các l i sau:
Mã l i Mô
EACCESS Không th t o file cho socket do không có
quy n o file
ENOTDIR,
ENAMETOOLONG
Tên file không h p l
ng 4-3 Các mã l i a domain AF_UNIX
Ràng bu c tên socket là b c quan tr ng nh t socket a n có
kh ng nhìn th y và truy xu t c t các ng ng bên ngoài.
M t socket n u ch a c t tên i là socket vô danh ( unnamed
socket).
4.3.5. o hàng i cho socket
ón nh n các k t n i chuy n n, socket trình ch ph i o ra
m t hàng i (queue). c ích a hành i là u i các k t n i ch a
c trình ch x lý k p. Hàm h th ng listen() th c hi n công vi c
này.
#include <sys/socket.h>
int listen(int socketd, int backlog);
Tham s socketd cho bi t s mô socket c n o hàng i. backlog
là s k t n i t i a c phép a vào hàng i. N u m t k t n i n
trình ch trong khi ã có backlog k t n i tr c ó ch a x lý thì k t n i
này b th t i. Lý do hàng i ã y, trình ch server không mu n
nh n thêm k t n i n a. Thông th ng backlog mang giá tr 5 là s trung
bình kh thi nh t.
Ch ng 4: L p trình socket
53
Hàm listen() tr v 0 n u o hàng i thành công, n u th t i tr
tr v s là -1 và bi n errno ch a tr EBADF, EINVAL, ho c
ENOTSOCK.
4.3.6. Ch và ch p nh n k t n i
M t khi ã t o c socket, t tên cho nó và chu n xong hàng
i ti p nh n k t n i, công vi c sau cùng là ch k t n i a trình
khách g i n. n i hàm accept() th c hi n công vi c này.
#include <sys/socket.h>
int accept(int socketd, struct sockaddr *address, size_t
*address_len);
Hàm h th ng accept() tr v khi có m t trình khách mu n k t
n i v i c m socket ch nh s mô socketd. K t n i a trình khách
tr c h t c t vào hàng i. Khi accept() phát hi n ra có socket
trong hàng i, nó s t ng l y a ch c a máy khách t vào c u trúc
address, chi u dài th t s c a c u trúc a ch tr v trong bi n
address_len. Ti p n accept() o ra m t socket vô danh. K t qu tr v
a accept() là s mô cho socket vô danh, n có th s d ng s này
liên c v i trình khách. Socket vô danh m i này có cùng ki u v i
socket t tên ang l ng nghe trên hàng i.
Do c u trúc struct sockaddr không có nh cho nên n c n thi t l p
kích th c v a ti p nh n a ch trình khách. N u a ch trình
khách dài h n không gian n dành cho c u trúc sockaddr, ph n d ra
c t .
Ch ng 4: L p trình socket
54
N u ch a có k t n i nào trong hàng i, accept() d ng i ch –
block( trình ch s không th c thi các l nh k ti p) cho n khi có k t
n i a client g i n. Bàn có th thay i c ch ch này b ng cách i
hàm fcntl() i u ch nh và thêm vào c O_NONBLOCK cho socket nh
sau:
int flags=fcntl(socketd, F_GETFL, 0);
fcntl(socketd, F_SETFL, O_NONBLOCK | flags);
Sau khi t c này cho socket, hàm accept() không d ng i ch
khi n i nó. accept() tr v ngay s mô cho socket n u có k t n i
trong hàng i, n u không nó s tr v -1 và th c thi dòng l nh k ti p.
4.3.7. Yêu c u k t n i
Trình ch c a n th ng th c hi n ch ac n ng o, t tên, ch k t
n i b nh các hàm socket(), bind(), và accept(). Tuy nhiên phía trình
khách n gi n h n, n ch c n i hàm connect() yêu c u k t n i
v i trình ch . connect() c khai báo nh sau:
#include <sys/socket.h>
int connnect(int socketd, const struct sockaddr *address,
size_t address_len);
Tham s socketd là s mô tr v b i hàm socket(). address là c u
trúc a ch tr n socket a trình ch . address_len là chi u dài a
bi n c u trúc address. K t qu tr v c a hàm là 0 n u thành công và
ng c i là -1. Trong tr ng h p -1, bi n errno ch a m t trong nh ng
tr sau:
Ch ng 4: L p trình socket
55
Mã l i Mô
EBADF S mô socket truy n cho hàm không h p l
EALREADY Kêt n i ã c thi t l p tr c ó
ETIMEOUT Quá th i gian ch k t n i
ECONNREFUSED Trình ch server t ch i k t n i
ng 4-4 Mã l i a hàm connect()
N u k t n i không thành công hàm connect() có g ng ch k t n i
i. N u sau m t s l n k t n i không thành công connect() tr v l i
ETIMEOUT.
ng t accept() n có th i ch ch c a hàm connect()
b ng cách i fcntl() t i c ENONBLOCK. B ng cách này, khi k t
n i không thành công l n u tiên, hàm connect() không ch l p
i k t n i. Hàm k t thúc và tr v mã l i ngay l p t c.
4.3.8. óng k t n i
ng t nh x lý trên file. n có trách nhi m óng các k t n i
ã t o ra b ng cách g hàm close(). óng k t nói gi i phóng tài
nguyên và b o m d li u ã chuy n i hoàn t t c hai u g i và
nh n.
#include <sys/socket.h>
int close(int sockd);
i v i hai phía trình khách và trình ch , n nên i close()
óng socket khi l nh read tr v tr 0 (không còn d li u c).
Ch ng 4: L p trình socket
56
Th ng thì close() tr v ngay t c kh c, tuy nhiên có th close() i
vào tr ng thái ch (block) n u scoket a n thi t l p ki u k t n i hai
chi u (SOCK_STREAM) cùng v i tùy ch n SOCK_LINGER và d li u
ang tr nh thái ch a chuy n h t. Tùy ch n SOCK_LINER c
c p sau.
4.3.9. Giao ti p b ng socket
Chúng ta v a xem qua các hàm h th ng dùng o và x lý socket,
gi ây ta có th tr l i nh ng ví d v s d ng socket th n.
Nh ã nêu, 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 a
UNIX/Linux. Vi c phân quy n cho phép c ghi file ng là m t v n .
Th ng file socket o ra trong th c hi n hành ho c th c m
/tmp và b n ph i cho phép h u nh toàn quy n truy c p các th 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 ng a n trên
Linux s d ng AF_INET d chuy n i sang Windows h n là
AF_UNIX.
Trong AF_INET, khi o m i m t socket trên trình ch , 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 ng khác s d ng. n có th tham
kh o t p tin /etc/services, ây là t p tin v n n li t kê danh sách các
ch và c ng ã c dành s d ng, s c ng a n không nên
trùng v i nh ng s ã có trong danh sách này. Ban ng không th s
ng các c ng nh n 1024, chúng dành cho các ch c a h th ng.
Giao ti p ng không òi i ph i k t n i v i m t h th ng ng
th t s . Ngay trên m t máy, n có th s d ng giao ti p ng liên
Ch ng 4: L p trình socket
57
c gi a các ti n trình ang ch y. N u c n s a ch IP, n có th s
ng s 127.0.0.1, ây là a ch IP “h i qui” (loop back) th ng dùng
cho các ng ng c b . V i a ch này, d li u g i i 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 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 nh n c
d li u và h i âm i. N u máy n hòa ng, n nên i ng i qu n tr
ng xin m t a ch IP thích h p.
a ch m ng IP 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
207.46.131.91 www.microsoft.com
Nh n th y, m t a ch IP có th ánh b ng nhi u tên khác
nhau ( a ch IP và tên th ng cách nhau b ng kho ng tr ng hay tab).
Th ng a ch IP 127.0.0.1 c i là localhost và không có gì tr
ng i n u n d nh t cho nó m t cái tên khác ch ng 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 i ng v i m t
a ch IP có t n i hay không, n có th g i l nh ping nh sau:
Ch ng 4: L p trình socket
58
$ 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=255 time=67 usec
64 bytes from (127.0.0.1) : icmp_seq=0 ttl=255 time=48 usec
64 bytes from (127.0.0.1) : icmp_seq=0 ttl=255 time=51 usec
4.4. S d ng socket trong ng ng minh a
Ph n l p trình socket này 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 ng minh
a.
th thành ph n client dùng socket k t n i n thành ph n
server. Sau khi k t n i thành công client g i các l nh nh Start
Capture, Stop Capture, Get Filter... n server, 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 i
cho client.
Ph n 3: Xây d ng ng d ng th nghi m PacketCap
59
PH N 3: XÂY D NG NG 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
60
Ch ng 5: Phân tích và thi t k PacketCap
5.1. Kh o sát hi n t 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 u vào các file có c u trúc theo nh ng riêng 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 r t
ch m.
Nh ng ph n m m này ch ch 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 : u ch nh b l c , thi t l p ng d n
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:
• n có thông tin v l u l ng m ng 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.
• Theo dõi hành ng truy c p và xâm nh p m ng b t h p
pháp.
• t c hành ng trên nên là online (phân tích và u
khi n) n u c.
Ch ng 5: Phân tích và thi t k PacketCap
61
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 ng này l y tên là PacketCap.
Trên c s ó, m t h th ng phân tán b t gói tin, trích l c và luu tr
vào c s d li u trên m ng c xây d ng kh c ph c ph n nào
khuy t 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 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
c tiêu a tài là m t xây d ng ng ng phân tán b t các gói
tin, ng này cung c p cho qu n tr m ng nh ng thông tin ph c cho
vi c theo dõi và phân tích thông tin 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 a
toàn b h th ng ng.
Ch ng 5: Phân tích và thi t k PacketCap
62
ng ng PacketCap này bao g m các ch c n ng:
STT Ch c n ng
1
B t và phân tích c các gói tin a nh ng protocol thông ng
nh TCP, UDP, ICMP, ARP...
2
Cho phép l u tr thông tin b t c d i ng c s d li u và
ch n h qu n tr s d li u u tr .
3
Cho phép l u tr thông tin b t theo c u trúc file a Ethereal ho c
các ph n m m b t gói tin khác.
4
i u khi n t xa vi c b t các gói tin, bao g m:
• Kh i 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 nh yêu c u
Ch ng 5: Phân tích và thi t k PacketCap
63
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 u s d ng th vi n l p trình libcap ho c
winpcap(tên a phiên 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 có 2
h ng l a ch n phát tri n ng ng PacketCap:
Ø H ng 1: Tìm hi u c u trúc a ph n m m Ethereal, tích h p thêm
ch c n ng l u các gói tin vào c s d li u và c u hình t xa vào
ph n m m Ethereal.
Ø óng 2: S d ng th vi n l p trình 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
• Thu n l i
o Source code 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 c source code.
Ch ng 5: Phân tích và thi t k PacketCap
64
5.3.2. Phân tích h ng phát tri n d a trên libcap
• 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 capture 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 a 2 h ng phát tri n
ng 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 ng b t gói tin PacketCap
d a trên th vi n libpcap.
Ch ng 5: Phân tích và thi t k PacketCap
65
5.4. Các thành ph n PacketCap
PacketCap có h ch c n ng i u khi n xa nên nó s c xây d ng theo
mô hình ng ng Client/ Server.
PacketCap g m 3 thành ph n:
• Thành ph n th c hi n vi c l ng nghe yêu c u t phía client và
b t gói tin: PCServer( PacketCap Server)
• Thành ph n i u khi n t xa: PCManager.
• Thành ph n l u tr : PCStore, thành ph n này ch là i l u tr
d li u b t c. PCStore th là m t máy tính b t kì có ch y h
qu n tr s d li u MySQL.
Trong mô hình client/ server thì PCServer là thành ph n server, còn
PCManager là client.
PCServer m c ng 8088 và ch k t n i, nh n yêu c u và th c hi n yêu
c u khi ã có client k t n i vào.
PCManager k t n i n PCServer và i u khi n i ho t ng a
PCServer.
Hình 5-1 Các thành ph n a PacketCap
Ch ng 5: Phân tích và thi t k PacketCap
66
5.5. Xây d ng mô hình use case
5.5.1. Xác nh Actor và use case
• Actor là ng i dùng ch ng trình PCManager (client)
• Use case
o Connect: Dùng PCManager k t n i vào PCServer
o StartCapture: Yêu c u PCServer b t u th c hi n vi c b t
gói tin.
o StopCapture: Yêu c u PCServer d ng vi c b t gói tin
o GetFilter: l y b l c hi n i
o Terminate: yêu c u PCServer k t thúc.
5.5.2. Mô hình use case
Hình 5-2 Mô hình use case
Ch ng 5: Phân tích và thi t k PacketCap
67
5.6. t use case
5.6.1. Connect
• Tên use case: Connect
• Mô
Use-case này mô t quá trình qu n tr viên yêu c u
PCManager(client) k t n i qu n tr vi c b t gói tin máy server.
• Dòng s ki n
o Dòng s ki n chính
Use-case b t u khi có yêu c u t máy client xin k t
i. Máy client g i yêu c u n máy server.
Sau khi máy server nh n c yêu c u, n u ch p
nh n yêu c u máy server s g i v s port giao
ti p, k t n i thanh công.
u máy sever không nh n yêu c u ho c có sai sót
thì client thông báo l i.
o Dòng s ki n ph
Không có
o Các dòng s ki n khác
• Các yêu c u c bi t.
o Không có.
• u ki n tiên quy t.
o Ph i ng nh p quy n qu n tr m i c th c hi n Use-
Case này.
o Máy sever c n k t n i ph i s n sàng.
• m m r ng
o Không có.
Ch ng 5: Phân tích và thi t k PacketCap
68
5.6.2. StartCapture
• Tên use case: StartCapture
• Mô
Use-case này mô t quá trình qu n tr viên yêu c u máy client
g i l nh y u c u server b t u vi c b t gói tin.
• Dòng s ki n
o Dòng s ki n chính
Use-case b t u khi có yêu c u t máy client. Máy client
g i yêu c u n máy server.
Sau khi máy server nh n c yêu c u s ki m tra ti n
trình b t gói tin ã c th c thi ch a.
u ti n trình ch a th c thi thì th c thi vi c b t gói tin
u vào c s d li u, thông báo v máy client yêu c u
ã c áp ng.
u ti n trình ã c th c thi thì g i thông báo l i v .
o Dòng s ki n ph
Ki m tra CSDL ngày ó ã có ch a. N u có r i thì m
s d li u l u. N u ch a có thì t o c s d li u
i.
Qu n tr viên ch nh s a các thông tin liên quan n
phòng ban, r i c p nh t l u l i. Use-case k t thúc.
Máy client yêu c u qu n tr nh p c u trúc filter gói tin.
Ki m tra tính h p l c a c u trúc filter.
Ch ng 5: Phân tích và thi t k PacketCap
69
o Các dòng s ki n khác
Không có
• Các yêu c u c bi t
o Không có.
• u ki n tiên quy t
o Ph i ng nh p quy n qu n tr m i c th c hi n Use-
Case này.
• m m r ng
o Không có.
5.6.3. StopCapture
• Tên use case: StopCapture
• Mô :
Use-case này mô t quá trình qu n tr viên yêu c u máy
client g i n server yêu c u k t thúc b t gói tin.
• Dòng s ki n
o Dòng s ki n chính
Use-case b t u khi có yêu c u t máy client. Máy
client g i yêu c u ng ng b t gói tin n máy
server.
Sau khi máy server nh n c yêu c u s ki m tra
ti n trình b t gói tin ã c th c thi ch a.
u ti n trình ch a th c thi thì th c thi thì ng ng
t gói tin, thông báo v máy client yêu c u ã
c áp ng.
u ti n trình ch a c th c thi thì g i thông báo
i v .
Ch ng 5: Phân tích và thi t k PacketCap
70
o Dòng s ki n ph
óng c s d li u
• Các dòng s ki n khác
o Không có.
• Các yêu c u c bi t
o Không có.
• u ki n tiên quy t
Ph i ng nh p quy n qu n tr m i c th c hi n Use-Case
này.
• m m r ng
o Không có.
5.6.4. GetFilter
• Tên use case: GetFilter
• Mô
Use-case này mô t quá trình qu n tr viên yêu c u máy client
g i yêu c u cho server tr l i b l c hi n th i.
• Dòng s ki n
o Dòng s ki n chính
Use-case b t u khi có yêu c u t máy client yêu
u thay l y filter hi n i ang dùng b t gói tin.
Sau khi máy server nh n c yêu c u s ki m tra
ti n trình b t gói tin ã c th c thi ch a.
u ti n trình ã th c thi thì nó s g i tr l i cho
client
u ti n trình ch a c th c thi thì g i thông báo
i v cho client.
Ch ng 5: Phân tích và thi t k PacketCap
71
o Dòng s ki n ph
óng c s d li u
o Các dòng s ki n khác
• Các yêu c u c bi t
o Không có.
• u ki n tiên quy t:
o Không có
• m m r ng:
o Không có.
5.6.5. Terminate
• Tên use case: Terminate
• Mô :
Use-case này mô t quá trình qu n tr viên yêu c u máy
client g i n server yêu c u server k t thúc( thoát).
• Dòng s ki n
o Dòng s ki n chính
Use-case b t u khi có yêu c u t máy client. Máy
client g i yêu c u k t thúc ch ng trình server.
Sau khi máy server nh n c yêu c u s ki m tra
n u quá trình b t gói tin ang ch y thì nó s ch m
d t.
Thoát ra kh i ch ng trình. (ch m d t)
o Dòng s ki n ph
óng c s d li u
• Các dòng s ki n khác
o Không có.
Ch ng 5: Phân tích và thi t k PacketCap
72
• Các yêu c u c bi t
o Không có.
• u ki n tiên quy t
Ph i ng nh p quy n qu n tr m i c th c hi n Use-Case
này.
• m m r ng
o Không có.
5.7.Thi t k d li u
5.7.1. Phân tích các h ng l u tr
Có 3 h ng
• ng 1: Các máy client b t gói tin trên các m ng khác nhau và
li u c truy n v l u tr trên m t máy server.
Hình 5-3 Mô hình l u tr 1
Ch ng 5: Phân tích và thi t k PacketCap
73
o u m :
li u c l u t p trung d dàng cho vi c x lý sau này.
o Khuy t m
Khi s l ng các gói tin b t c quá nhi u vi c truy n d
li u v máy server có th làm b n ng truy n c a m ng.
òi h i dung l ng l u tr r t l n máy server.
• ng 2 : Gi ng nh h ng 1 nh ng thi t l p thêm m t m ng
LAN gi a các máy client và sever truy n d li u.
Hình 5-4 Mô hình l u tr 2
o u m :
Kh c ph c c khuy t m c a h ng 1
o Khuy t m
T n kém trong vi c thi t l p m ng LAN.
Vi c thi t l p m ng LAN có th g p khó kh n trong tr ng
p các máy client quá xa nhau.
òi h i dung l ng l u tr r t l n máy server.
Ch ng 5: Phân tích và thi t k PacketCap
74
• ng 3 : L u phân tán trên các máy client và ch truy n d li u
theo yêu c u c a client.
Hình 5-5 Mô hình l u tr 3
o u m:
Ch truy n nh ng d li u c client yêu c u nên ph n
nào kh c ph c c khuy t m c a h ng 1.
Vi c l u tr phân tán s không òi h i dung l ng l u tr
n m t máy.
Vi c xây d ng ch ng trình th c hi n l u tr phân tán s
dàng h n.
o Khuy t i m
ng ng PacketCap cho phép l u tr theo 3 h óng trên.
Ch ng 5: Phân tích và thi t k PacketCap
75
5.7.2. Thi t k s li u
5.7.2.1. Danh sách các i t ng (table)
STT Tên i t ng Mô
1 PACKET Thông tin chung t t c các gói tin b t c
2 IP Thông tin v IP header c a gói tin
3 TCP Thông tin chi ti t v gói tin TCP
4 UDP Thông tin chi ti t v gói tin UDP
5 ICMP Thông tin chi ti t v gói tin ICMP
6 IGMP Thông tin chi ti t v gói tin IGMP
7 ARP Thông tin chi ti t v gói tin ARP
ng 5-2 Danh sách các i t ng
Sau ây là mô t chi ti t m t s l p i t ng quan tr ng c a h
th ng.
5.7.2.2 Table PACKET
ST
T
Tên thu c tính Ki u d li u Ý ngh a
Ràng
bu c
1 Ma Chu i (10) nh danh gói tin
2 Source Mac Chu i (10)
a ch mac c a máy g i
gói tin
3
Dest Mac
Chu i (10)
a ch mac c a máy
nh n gói tin
4 Packetlength Chu i (10) chi u dài gói tin
5 Time Chu i (20) Th i gian nh n gói tin
6 Data Chu i (1000) D li u c gói tin
ng 5-3 Table PACKET
Ch ng 5: Phân tích và thi t k PacketCap
76
6.7.2.4. Table IP
ST
T
Tên thu c tính Ki u d li u Ý ngh a
Ràng
bu c
1 Ma Chu i (10) a ch mac c a máy g i
2 Service Chu i (10) Service c a gói tin
3 ID Chu i (10) ID c a gói tin
4 TTL Chu i (20) Time to live
5 ChecksumIP Chu i (20) Checksum c a IP
6 SourceIP Chu i (20) a ch IP ngu n
7 Dest IP Chu i (20) a ch IP ích
ng 5-4 Table IP
5.7.2.5. Table TCP
ST
T
Tên thu c tính Ki u d li u Ý ngh a
Ràng
bu c
1 Ma Chu i (10) nh danh gói tin
2 Source Port Chu i (10) Port ngu n
3 Dest Port Chu i (10) Port ích
4 Seg No Chu i (20) S segment
5 Ack No Chu i (20) Ack
6 Winsize Chu i (20) Winsize
7 checksumTCP Chu i (20) Checksum c a TCP
8 Type Chu i (20)
ng 5-5 Table TCP
Type : {"FIN ","SYN ","RST ","PUSH ","ACK ","URG ","ECE ","CWR "}
Ch ng 5: Phân tích và thi t k PacketCap
77
5.7.2.6. Table UDP
ST
T
Tên thu c tính Ki u d li u Ý ngh a
Ràng
bu c
1 Ma Chu i (10) nh danh gói tin
2 Source Port Chu i (10) Port ngu n
3 Dest Port Chu i (10) Port ích
4 ChecksumUDP Chu i (20) Checksum c a UDP
ng 5-6 Table UDP
5.7.2.7 Table ICMP
ST
T
Tên thu c tính Ki u d li u Ý ngh a
Ràng
bu c
1 Ma Chu i (10) nh danh gói tin
2
ICMP message
group
Chu i (10)
3 Type Chu i (10)
4 Code Chu i (20)
5 Id Chu i (20)
6 Seg No Chu i (20)
ng 5-7 Table ICMP
Các h ng và ý ngh a c a ICMP message group
( 0, "Echo Reply"},
{ 3, "Destination Unreachable"},
{ 4, "Source Quench"},
{ 5, "Redirect Message"},
Ch ng 5: Phân tích và thi t k PacketCap
78
{ 6, "Alternate Host Address"},
{ 8, "Echo Request"},
{ 9, "Router Advertisement"},
{ 10, "Router Selection"},
{ 11, "Time Exceeded"},
{ 12, "Parameter Problem"},
{ 13, "Timestamp Request"},
{ 14, "Timestamp Reply"},
{ 15, "Information Request"},
{ 16, "Information Reply"},
{ 17, "Address Mask Request"},
{ 18, "Address Mask Reply"},
5.7.2.8 Table IGMP
ST
T
Tên thu c tính Ki u d li u Ý ngh a
Ràng
bu c
1 Ma Chu i (10) nh danh gói tin
2
IGMP message
group
Chu i (10)
3 Type Chu i (10)
4 Response Time Chu i (20)
5 Checksum Chu i (20)
6 Group Addr Chu i (20)
ng 5-8 Table IGMP
Ch ng 5: Phân tích và thi t k PacketCap
79
Các h ng và ý ngh a c a IGMP message group:
{ 0x11 ," Group Membership Query."},
{0x12 ,"IGMPv1 Membership Report." },
{0x13 ,"DVMRP. "},
{0x14 ,"PIMv1. "},
{0x15 ,"Cisco Trace Messages. "},
{0x16 ,"IGMPv2 Membership Report. "},
{0x17 ,"IGMPv2 Leave Group." },
{0x1E ,"Multicast Traceroute Response. "},
{0x1F ,"Multicast Traceroute. "},
{0x22 ,"IGMPv3 Membership Report. "},
{0x24 ,"Multicast Router Advertisement. "},
{0x25 ,"Multicast Router Solicitation. "},
{0x26 ,"Multicast Router Termination. "}
Ch ng 5: Phân tích và thi t k PacketCap
80
5.7.2.9. Table ARP
ST
T
Tên thu c tính Ki u d li u Ý ngh a
Ràng
bu c
1 Ma Chu i (10) nh danh gói tin
2 ARP type Chu i (10)
3 ARP Source IP Chu i (10)
4 ARPDest IP Chu i (20)
5 Group Addr Chu i (20)
ng 5-9 Table ARP
ARP type:
ARP Request frame
ARP Reply frame
RARP Request frame
RARP Reply frame
Unknown ARP
Ch ng 5: Phân tích và thi t k PacketCap
81
5.8. Xây d ng PCServer( server), PCManager(client)
5.8.1. L u PCServer
Hình 5-6 L u PCServer
Ch ng 5: Phân tích và thi t k PacketCap
82
5.8.2. L u PCManager( Client)
Hình 5-7 L u PCManager
Ch ng 5: Phân tích và thi t k PacketCap
83
5.8.3. C u trúc d li u trao i gi a PCServer và PCManager
Sau khi Client k t n i thành công v i PCServer, PCManager và
PCServer trao i các thông i p v i nhau. th là PCManger s
g i yêu c u lên cho PCServer và sau khi th c hi n yêu c u a
PCManager, Server g i tr l i k t qu th c hi n cho Client.
C u trúc a m i thông i p nh sau:
struct tagCMD
{
int CmdCode;
int IPFilterType;
int b1,b2,b3,b4;//4 parts of IP address(for filter)
int PortFilterType;
int Port;
int ProtocolFilter;//TCP, UDP, ICMP..
int mb1,mb2,mb3,mb4;//MySQL
int NumberPacket;
};
V i CmdCode là mã l nh c n g i, các mã l nh mày c nh
ngh a b ng các h ng d dàng cho vi c l p trình.
Ch ng 5: Phân tích và thi t k PacketCap
84
IPFilterType xác nh ki u c theo a ch IP, giá tr c a nó c
nh ngh a nh sau:
#define NO_FILTER 0
#define SOURCE_FILTER 1
#define DEST_FILTER 2
#define SOURCE_OR_DEST_FILTER 3
#define SOURCE_AND_DEST_FILTER 4
N u IPFilterType=NO_FILTER ngh a là không th c hi n vi c
c các gói tin theo a ch IP, n u IPFilterType khác 0 thì lúc ó
b1,b2,b3,b4 s là a ch IP c n c. B n s nguyên này hình thành
a ch IP theo ng b1.b2.b3.b4
SOURCE_FILTER l c theo a ch IP ngu n, các gói tin có a
ch ngu n (n i g i) b ng b1.b2.b3.b4 c b t i.
DEST_FILTER l c theo a ch ích, các gói tin có a ch ích
(n i n) b ng b1.b2.b3.b4 s c b t i.
PortFilterType xác nh ki u c theo Port a ng ng, giá tr c a
nó c nh ngh a nh a IPFilterType.
SOURCE_OR_DEST nh ng gói tin có a ch ngu n ho c ích
b ng b1.b2.b3.b4 c b t.
SOURCE_AND_DEST nh ng gói tin có a ch ngu n b ng
b1.b2.b3.b4 c b t và nh ng gói tin có a ch ích b ng
b1.b2.b3.b4 c b t.
T ng t í IPFilterType là PortFilterType
Protocol là giao th c c n c, 0 có ngh a là không c, 1 là l c theo
TCP...
Ch ng 5: Phân tích và thi t k PacketCap
85
Mb1, mb2, mb3,mb4 là 4 thành ph n a a ch IP a máy tính
ch y h qu n tr s d li u mà ta mu n l u thông tin b t c vào ó.
NumberPacket xác nh s gói tin c n b t.
5.9.Thi t k giao di n PCManager( phiên n ch y trên Windows)
Mô
th
Tên i t ng Ki u i
ng
Ghi chú
1
IDC_STATIC Label IP
2
IDC_IPADDR_SOURCE IP Address Nh p IP c n filter
3
CboFilterIP Combobox L a ch n ki u filter theo IP
4
IDC_STATIC Label Port
5
IDC_SOURCEPORT Textbox Nh p port c n filter
6
CboFilterPORT Combobox L a ch n ki u filter theo IP
Ch ng 5: Phân tích và thi t k PacketCap
86
7
IDC_STATIC Label Protocol
8
CboProtocol Combobox Ch n protocol c n filter
9
IDC_STATIC Label Thông báo nh p IP
10
IDC_IPADDR_MYSQL IP Address Ch n máy ch y MySQL
11
IDC_STATIC Label Number of packet
12
IDC_NUMBER Combo
box
l ng packet c n b t
13
IDC_STATIC Label Server IP
14
IDC_IPADDR_SERVER Textbox Nh p a ch IP máy
PCServer c n u khi n
15
IDC_STATUS Label Báo tình tr ng k t n i
16
BtnStart button B t u b t gói tin
17
BtnStop Button K t thúc vi c b t gói tin
18
BtnGetFilter Button L y thông tin filter hi n
th i
19
BtnTermServer Button K t thúc liên k t v server
20
BtnConnect Button K t n i n ma1y server
21
BtnExit Button Thoát kh i ch ng trình
ng 5-10 Mô màn hình PCManager
Ch ng 6: Cài t và th nghi m
87
Ch ng 6: Cài t và th nghi m
6.1. Cài t
Ph n PCServer c cài t trên môi tr ng Linux, PCManager c
cài t trên 2 môi tr ng Linux và Windows.
• Môi tr ng cài t ng ng
o Windows XP Professional
o Linux Redhat 9.0
• Môi tr ng l p trình
o C for Linux
o Visual C++ 6.0
• Môi tr ng cài t th nghi m
o PCServer: Linux Redhat 9.0
o PCManager: Windows XP Professional
o PCManager: Linux Redhat 9.0
• Các ph n m m h tr
PCServer : MySQL, th vi n libpap
Ch ng 6: Cài t và th nghi m
88
6.2. Th nghi m
6.2.1. Mô hình th nghi m 1
Hình 6-1 Mô hình th nghi m 1
• Mô : PCServer và PCStore cùng ch y trên m t máy,
PCManager và PCServer cùng trong m t LAN segment
• K t qu :
o PCManager k t n i vào PCServer thành công
o PCServer th c hi n t t t t các yêu c u do PCManager
g i n
o PCServer ghi k t qu b t c vào c s d li u MySQL
thành công.
Ch ng 6: Cài t và th nghi m
89
6.2.2. Mô hình th nghi m 2
Hình 6-2 Mô hình th nghi m 2
• Mô : PCServer và PCStore có th l a ch n ch y trên cùng 1
máy ho c 2 máy khác nhau.
• K t qu :
o PCManager k t n i vào PCServer thành công
o PCServer th c hi n t t t t các yêu c u do PCManager
g i n
o PCServer ghi k t qu b t c vào c s d li u MySQL
thành công.
Ch ng 6: Cài t và th nghi m
90
6.2.3. Mô hình th nghi m 3
Hình 6-3 Mô hình th nghi m 3
• Mô
PCServer và PCManager ch y trên 2 ng LAN khác nhau
c n i qua 1 router.
• K t qu
Ch a th nghi m c mô hình này do không có thi t .
Ch ng 7: T ng k t
91
Ch ng 7: T ng k t
7.1. K t lu n
7.1.1. K t qu t c
Sau khi th c hi n xong tài, chúng em ã thu c m t s k t
qu :
• Tìm hi u c th vi n mã ngu n m libpcap và vi t c ng
ng b t gói tin d a vào th vi n này. ây là b th vi n mã
ngu n m h tr l p trình ng c p th p c s d ng r t nhi u
trong các ph n m m h tr b t gói tin nh TcpDump, TCPFlow,
Ethereal...
• Tìm hi u h qu n tr s d li u mã ngu n m MySQL.
• Tìm hi u v n l p trình socket, multithread trên môi tr ng
Linux.
• Xây d ng c ng ng phân tán b t các gói tin ph c cho
vi c phân tích thông tin ng.
7.1.2. n ch
• Ch a th b t gói tin ng trên nhi u card ng
• l ng protocol có th phân tích và trích c thông tin không
nhi u
• Ch a h tr ch c n ng phân tích thông tin t nh ng d li u ã
b t c.
Ch ng 7: T ng k t
92
7.2. H ng phát tri n
Trong t ng lai, ng ng PacketCap c phát tri n thêm nh ng
ch c n ng m i và nâng c p ch c n ng hi n i ch a c t t.
• H tr b t các gói tin ng th i trên nhi u card ng
• ng thêm s l ng protocol mà ch ng trình có th phân tích và
trích c thông tin.
• tr u thông tin b t c theo các nh ng a Ethereal,
TcpDump..
Ph L c
93
PH L C H ng d n s d ng PacketCap
1.Ch ng trình PCServer
ch y ch ng trình Server n ch c n vào th c ch a ch ng trình
server và gõ l nh ./pcserver thì ch ng trình c th c thi.
thoát kh i ch ng trình PCServer n có th dùng ch ng trình
Client g i yêu c u k t thúc ch ng trình PCServer, ho c nh n t h p phím
Ctrl-C trên console ang ch y PCserver.
2. Ch ng trình PCManager
2.1. PCManager trên môi tr ng Linux
ng t nh khi ch y PCServer, n vào th c có ch a ch ng
trình PCManager r i gõ l nh ./pcman.Ch ng trình yêu c u nh p a
ch IP a máy ch y PCServer. N u k t n i thành công thì ch ng trình
hi n th các dòng thông báo, n ch c n nh p các giá tr hi n th trên
màn hình là có th i u khi n c ho t ng a PCServer.
Ph L c
94
2.2. PCManager trên môi tr ng Windows
Double click chu t vào file PCManager.exe, giao di n a ch ng trình
Hình 7-1 Màn hình PCManager
ánh a ch IP a PCServer vào c PCServerIP, click chu t vào
nút Connect n u k t n i thành công thì dòng tr ng thái phía d i nút
Connect thông báo k t qu k t n i thành công hay không.
N u thành k t n i thành công thì các nút l nh có hi u l c. Lúc
này ta m i có th th c hi n các thao tác i u khi n c.
Ví d b t t t các gói tin i qua card ng( a máy ang ch y
PCServer) và u k t qu vào chính máy tính ang ch y PCServer thì ch
c n click chu t vào nút StartCapture
k t thúc ch ng trình PCServer thì click chu t vào nút
Terminate Server.
Tài li u tham kh o
95
TÀI LI U THAM KH O
[1] Nguy n Ph ng Lan – Hoàng c i, L p trình Linux t p 1, NXBGiáo
D c, H Chí Minh, 2001
[2] Sams, Linux Programming Unleashed, 1999
Website
[3] VietNam OpenSource Forum, www.vnoss.org
[4] MySQL, www.mysql.com
[5] libpcap, www.tcpdump.org
[6] SourceForge, www.sourceforge.net

Más contenido relacionado

Similar a Xd ung dung bat goi tin cho mang quan ly

Chiết lọc thông tin pháp luật trong dữ liệu văn bản.pdf
Chiết lọc thông tin pháp luật trong dữ liệu văn bản.pdfChiết lọc thông tin pháp luật trong dữ liệu văn bản.pdf
Chiết lọc thông tin pháp luật trong dữ liệu văn bản.pdfTieuNgocLy
 
Bao mat ma_nguon_tren_mysql
Bao mat ma_nguon_tren_mysqlBao mat ma_nguon_tren_mysql
Bao mat ma_nguon_tren_mysqlDuy Vọng
 
Xd he thong thong tin dia ly
Xd he thong thong tin dia lyXd he thong thong tin dia ly
Xd he thong thong tin dia lyVcoi Vit
 
Quan ly he_thong_thong_tin_dia_ly
Quan ly he_thong_thong_tin_dia_lyQuan ly he_thong_thong_tin_dia_ly
Quan ly he_thong_thong_tin_dia_lyViet Nam
 
Quan ly he_thong_thong_tin_dia_ly
Quan ly he_thong_thong_tin_dia_lyQuan ly he_thong_thong_tin_dia_ly
Quan ly he_thong_thong_tin_dia_lyDuy Vọng
 
Bao thuc tap tot nghiep vo minh truong 10299191
Bao thuc tap tot nghiep vo minh truong 10299191Bao thuc tap tot nghiep vo minh truong 10299191
Bao thuc tap tot nghiep vo minh truong 10299191Cu Sock
 
Bai 1 tin hoc lop 12_kbdh
Bai 1 tin hoc lop 12_kbdhBai 1 tin hoc lop 12_kbdh
Bai 1 tin hoc lop 12_kbdhSunkute
 
Seminar SFD 2016: Startup công nghệ với phần mềm nguồn mở
Seminar SFD 2016: Startup công nghệ với phần mềm nguồn mởSeminar SFD 2016: Startup công nghệ với phần mềm nguồn mở
Seminar SFD 2016: Startup công nghệ với phần mềm nguồn mởnukeviet
 
Tailieu.vncty.com nghien cuu-ve_mang_luu_tru_va_de_xuat_phuong_an_mang_luu_...
Tailieu.vncty.com   nghien cuu-ve_mang_luu_tru_va_de_xuat_phuong_an_mang_luu_...Tailieu.vncty.com   nghien cuu-ve_mang_luu_tru_va_de_xuat_phuong_an_mang_luu_...
Tailieu.vncty.com nghien cuu-ve_mang_luu_tru_va_de_xuat_phuong_an_mang_luu_...Trần Đức Anh
 
HOANG CONG TOAN_LUA CHON CHIEN LUOC KINH DOANH.pdf
HOANG CONG TOAN_LUA CHON CHIEN LUOC KINH DOANH.pdfHOANG CONG TOAN_LUA CHON CHIEN LUOC KINH DOANH.pdf
HOANG CONG TOAN_LUA CHON CHIEN LUOC KINH DOANH.pdfthanhechip99
 
Chuyen de 2 mot so net tong quan ve tmdt vn va tg - 2009 v1 update 2011 - 2013
Chuyen de 2   mot so net tong quan ve tmdt vn va tg - 2009 v1 update 2011 - 2013Chuyen de 2   mot so net tong quan ve tmdt vn va tg - 2009 v1 update 2011 - 2013
Chuyen de 2 mot so net tong quan ve tmdt vn va tg - 2009 v1 update 2011 - 2013Foreign Trade University - Hanoi
 
NGUYEN TUONG THUAT_XAY DUNG CHIEN LUOC CANH TRANH.pdf
NGUYEN TUONG THUAT_XAY DUNG CHIEN LUOC CANH TRANH.pdfNGUYEN TUONG THUAT_XAY DUNG CHIEN LUOC CANH TRANH.pdf
NGUYEN TUONG THUAT_XAY DUNG CHIEN LUOC CANH TRANH.pdfthanhechip99
 
Xay dung ung_dung_voi_sematic_web
Xay dung ung_dung_voi_sematic_webXay dung ung_dung_voi_sematic_web
Xay dung ung_dung_voi_sematic_webViet Nam
 
Xay dung ung_dung_voi_sematic_web
Xay dung ung_dung_voi_sematic_webXay dung ung_dung_voi_sematic_web
Xay dung ung_dung_voi_sematic_webDuy Vọng
 
06 phuong phap montessori ngay nay clear
06 phuong phap montessori ngay nay clear06 phuong phap montessori ngay nay clear
06 phuong phap montessori ngay nay clearNhân Nguyễn Sỹ
 
Bao thuc tap tot nghiep vo minh truong 10299191
Bao thuc tap tot nghiep vo minh truong 10299191Bao thuc tap tot nghiep vo minh truong 10299191
Bao thuc tap tot nghiep vo minh truong 10299191Cu Sock
 
Luận văn: Một số giải pháp nhằm nâng cao hiệu quả công tác quản trị chuỗi cun...
Luận văn: Một số giải pháp nhằm nâng cao hiệu quả công tác quản trị chuỗi cun...Luận văn: Một số giải pháp nhằm nâng cao hiệu quả công tác quản trị chuỗi cun...
Luận văn: Một số giải pháp nhằm nâng cao hiệu quả công tác quản trị chuỗi cun...Dịch vụ viết thuê Khóa Luận - ZALO 0932091562
 

Similar a Xd ung dung bat goi tin cho mang quan ly (20)

Chiết lọc thông tin pháp luật trong dữ liệu văn bản.pdf
Chiết lọc thông tin pháp luật trong dữ liệu văn bản.pdfChiết lọc thông tin pháp luật trong dữ liệu văn bản.pdf
Chiết lọc thông tin pháp luật trong dữ liệu văn bản.pdf
 
Bao mat ma_nguon_tren_mysql
Bao mat ma_nguon_tren_mysqlBao mat ma_nguon_tren_mysql
Bao mat ma_nguon_tren_mysql
 
Xd he thong thong tin dia ly
Xd he thong thong tin dia lyXd he thong thong tin dia ly
Xd he thong thong tin dia ly
 
Quan ly he_thong_thong_tin_dia_ly
Quan ly he_thong_thong_tin_dia_lyQuan ly he_thong_thong_tin_dia_ly
Quan ly he_thong_thong_tin_dia_ly
 
Quan ly he_thong_thong_tin_dia_ly
Quan ly he_thong_thong_tin_dia_lyQuan ly he_thong_thong_tin_dia_ly
Quan ly he_thong_thong_tin_dia_ly
 
Bao thuc tap tot nghiep vo minh truong 10299191
Bao thuc tap tot nghiep vo minh truong 10299191Bao thuc tap tot nghiep vo minh truong 10299191
Bao thuc tap tot nghiep vo minh truong 10299191
 
Bai 1 tin hoc lop 12_kbdh
Bai 1 tin hoc lop 12_kbdhBai 1 tin hoc lop 12_kbdh
Bai 1 tin hoc lop 12_kbdh
 
Seminar SFD 2016: Startup công nghệ với phần mềm nguồn mở
Seminar SFD 2016: Startup công nghệ với phần mềm nguồn mởSeminar SFD 2016: Startup công nghệ với phần mềm nguồn mở
Seminar SFD 2016: Startup công nghệ với phần mềm nguồn mở
 
Tailieu.vncty.com nghien cuu-ve_mang_luu_tru_va_de_xuat_phuong_an_mang_luu_...
Tailieu.vncty.com   nghien cuu-ve_mang_luu_tru_va_de_xuat_phuong_an_mang_luu_...Tailieu.vncty.com   nghien cuu-ve_mang_luu_tru_va_de_xuat_phuong_an_mang_luu_...
Tailieu.vncty.com nghien cuu-ve_mang_luu_tru_va_de_xuat_phuong_an_mang_luu_...
 
HOANG CONG TOAN_LUA CHON CHIEN LUOC KINH DOANH.pdf
HOANG CONG TOAN_LUA CHON CHIEN LUOC KINH DOANH.pdfHOANG CONG TOAN_LUA CHON CHIEN LUOC KINH DOANH.pdf
HOANG CONG TOAN_LUA CHON CHIEN LUOC KINH DOANH.pdf
 
Chuyen de 2 mot so net tong quan ve tmdt vn va tg - 2009 v1 update 2011 - 2013
Chuyen de 2   mot so net tong quan ve tmdt vn va tg - 2009 v1 update 2011 - 2013Chuyen de 2   mot so net tong quan ve tmdt vn va tg - 2009 v1 update 2011 - 2013
Chuyen de 2 mot so net tong quan ve tmdt vn va tg - 2009 v1 update 2011 - 2013
 
NGUYEN TUONG THUAT_XAY DUNG CHIEN LUOC CANH TRANH.pdf
NGUYEN TUONG THUAT_XAY DUNG CHIEN LUOC CANH TRANH.pdfNGUYEN TUONG THUAT_XAY DUNG CHIEN LUOC CANH TRANH.pdf
NGUYEN TUONG THUAT_XAY DUNG CHIEN LUOC CANH TRANH.pdf
 
BCTT
BCTTBCTT
BCTT
 
Xay dung ung_dung_voi_sematic_web
Xay dung ung_dung_voi_sematic_webXay dung ung_dung_voi_sematic_web
Xay dung ung_dung_voi_sematic_web
 
Xay dung ung_dung_voi_sematic_web
Xay dung ung_dung_voi_sematic_webXay dung ung_dung_voi_sematic_web
Xay dung ung_dung_voi_sematic_web
 
Đề tài: Mô phỏng bộ lọc nhiễu tín hiệu điện tim dùng Matlab, 9đ
Đề tài: Mô phỏng bộ lọc nhiễu tín hiệu điện tim dùng Matlab, 9đĐề tài: Mô phỏng bộ lọc nhiễu tín hiệu điện tim dùng Matlab, 9đ
Đề tài: Mô phỏng bộ lọc nhiễu tín hiệu điện tim dùng Matlab, 9đ
 
06 phuong phap montessori ngay nay clear
06 phuong phap montessori ngay nay clear06 phuong phap montessori ngay nay clear
06 phuong phap montessori ngay nay clear
 
Bao thuc tap tot nghiep vo minh truong 10299191
Bao thuc tap tot nghiep vo minh truong 10299191Bao thuc tap tot nghiep vo minh truong 10299191
Bao thuc tap tot nghiep vo minh truong 10299191
 
Luận văn: Một số giải pháp nhằm nâng cao hiệu quả công tác quản trị chuỗi cun...
Luận văn: Một số giải pháp nhằm nâng cao hiệu quả công tác quản trị chuỗi cun...Luận văn: Một số giải pháp nhằm nâng cao hiệu quả công tác quản trị chuỗi cun...
Luận văn: Một số giải pháp nhằm nâng cao hiệu quả công tác quản trị chuỗi cun...
 
Bai1
Bai1Bai1
Bai1
 

Más de Vcoi Vit

2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri31
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri312eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri31
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri31Vcoi Vit
 
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri14
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri142eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri14
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri14Vcoi Vit
 
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri13
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri132eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri13
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri13Vcoi Vit
 
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri05
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri052eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri05
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri05Vcoi Vit
 
Giao trinh nuoi_trong_thuy_san46
Giao trinh nuoi_trong_thuy_san46Giao trinh nuoi_trong_thuy_san46
Giao trinh nuoi_trong_thuy_san46Vcoi Vit
 
Giao trinh nuoi_trong_thuy_san28
Giao trinh nuoi_trong_thuy_san28Giao trinh nuoi_trong_thuy_san28
Giao trinh nuoi_trong_thuy_san28Vcoi Vit
 
Giao trinh nuoi_trong_thuy_san23
Giao trinh nuoi_trong_thuy_san23Giao trinh nuoi_trong_thuy_san23
Giao trinh nuoi_trong_thuy_san23Vcoi Vit
 
Giao trinh nuoi_trong_thuy_san22
Giao trinh nuoi_trong_thuy_san22Giao trinh nuoi_trong_thuy_san22
Giao trinh nuoi_trong_thuy_san22Vcoi Vit
 
Giao trinh nuoi_trong_thuy_san21
Giao trinh nuoi_trong_thuy_san21Giao trinh nuoi_trong_thuy_san21
Giao trinh nuoi_trong_thuy_san21Vcoi Vit
 
Giao trinh nuoi_trong_thuy_san16
Giao trinh nuoi_trong_thuy_san16Giao trinh nuoi_trong_thuy_san16
Giao trinh nuoi_trong_thuy_san16Vcoi Vit
 
Giao trinh nuoi_trong_thuy_san05
Giao trinh nuoi_trong_thuy_san05Giao trinh nuoi_trong_thuy_san05
Giao trinh nuoi_trong_thuy_san05Vcoi Vit
 
Giao trinh nuoi_trong_thuy_san02
Giao trinh nuoi_trong_thuy_san02Giao trinh nuoi_trong_thuy_san02
Giao trinh nuoi_trong_thuy_san02Vcoi Vit
 
Giao trinh tong hop sv50
Giao trinh tong hop sv50Giao trinh tong hop sv50
Giao trinh tong hop sv50Vcoi Vit
 
Giao trinh tong hop sv49
Giao trinh tong hop sv49Giao trinh tong hop sv49
Giao trinh tong hop sv49Vcoi Vit
 
Giao trinh tong hop sv48
Giao trinh tong hop sv48Giao trinh tong hop sv48
Giao trinh tong hop sv48Vcoi Vit
 
Giao trinh tong hop sv47
Giao trinh tong hop sv47Giao trinh tong hop sv47
Giao trinh tong hop sv47Vcoi Vit
 
Giao trinh tong hop sv46
Giao trinh tong hop sv46Giao trinh tong hop sv46
Giao trinh tong hop sv46Vcoi Vit
 
Giao trinh tong hop sv45
Giao trinh tong hop sv45Giao trinh tong hop sv45
Giao trinh tong hop sv45Vcoi Vit
 
Giao trinh tong hop sv43
Giao trinh tong hop sv43Giao trinh tong hop sv43
Giao trinh tong hop sv43Vcoi Vit
 
Giao trinh tong hop sv41
Giao trinh tong hop sv41Giao trinh tong hop sv41
Giao trinh tong hop sv41Vcoi Vit
 

Más de Vcoi Vit (20)

2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri31
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri312eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri31
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri31
 
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri14
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri142eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri14
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri14
 
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri13
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri132eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri13
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri13
 
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri05
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri052eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri05
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri05
 
Giao trinh nuoi_trong_thuy_san46
Giao trinh nuoi_trong_thuy_san46Giao trinh nuoi_trong_thuy_san46
Giao trinh nuoi_trong_thuy_san46
 
Giao trinh nuoi_trong_thuy_san28
Giao trinh nuoi_trong_thuy_san28Giao trinh nuoi_trong_thuy_san28
Giao trinh nuoi_trong_thuy_san28
 
Giao trinh nuoi_trong_thuy_san23
Giao trinh nuoi_trong_thuy_san23Giao trinh nuoi_trong_thuy_san23
Giao trinh nuoi_trong_thuy_san23
 
Giao trinh nuoi_trong_thuy_san22
Giao trinh nuoi_trong_thuy_san22Giao trinh nuoi_trong_thuy_san22
Giao trinh nuoi_trong_thuy_san22
 
Giao trinh nuoi_trong_thuy_san21
Giao trinh nuoi_trong_thuy_san21Giao trinh nuoi_trong_thuy_san21
Giao trinh nuoi_trong_thuy_san21
 
Giao trinh nuoi_trong_thuy_san16
Giao trinh nuoi_trong_thuy_san16Giao trinh nuoi_trong_thuy_san16
Giao trinh nuoi_trong_thuy_san16
 
Giao trinh nuoi_trong_thuy_san05
Giao trinh nuoi_trong_thuy_san05Giao trinh nuoi_trong_thuy_san05
Giao trinh nuoi_trong_thuy_san05
 
Giao trinh nuoi_trong_thuy_san02
Giao trinh nuoi_trong_thuy_san02Giao trinh nuoi_trong_thuy_san02
Giao trinh nuoi_trong_thuy_san02
 
Giao trinh tong hop sv50
Giao trinh tong hop sv50Giao trinh tong hop sv50
Giao trinh tong hop sv50
 
Giao trinh tong hop sv49
Giao trinh tong hop sv49Giao trinh tong hop sv49
Giao trinh tong hop sv49
 
Giao trinh tong hop sv48
Giao trinh tong hop sv48Giao trinh tong hop sv48
Giao trinh tong hop sv48
 
Giao trinh tong hop sv47
Giao trinh tong hop sv47Giao trinh tong hop sv47
Giao trinh tong hop sv47
 
Giao trinh tong hop sv46
Giao trinh tong hop sv46Giao trinh tong hop sv46
Giao trinh tong hop sv46
 
Giao trinh tong hop sv45
Giao trinh tong hop sv45Giao trinh tong hop sv45
Giao trinh tong hop sv45
 
Giao trinh tong hop sv43
Giao trinh tong hop sv43Giao trinh tong hop sv43
Giao trinh tong hop sv43
 
Giao trinh tong hop sv41
Giao trinh tong hop sv41Giao trinh tong hop sv41
Giao trinh tong hop sv41
 

Xd ung dung bat goi tin cho mang quan ly

  • 1. TR NG I H C KHOA H C T NHIÊN KHOA CÔNG NGH THÔNG TIN MÔN CÔNG NGH PH N M M GIANG QU C MINH – H PH M THÁI VINH XÂY D NG NG NG B T GÓI TIN CHO VI C PHÂN TÍCH THÔNG TIN NG PH C QU N LÝ KHOÁ LU N C NHÂN TIN H C TP. HCM, M 2005
  • 2. TR NG I H C KHOA H C T NHIÊN KHOA CÔNG NGH THÔNG TIN MÔN CÔNG NGH PH N M M GIANG QU C MINH - 0112016 H PH M THÁI VINH - 0112081 XÂY D NG NG NG B T GÓI TIN CHO VI C PHÂN TÍCH THÔNG TIN NG PH C QU N LÝ KHÓA LU N C NHÂN TIN H C GIÁO VIÊN H NG D N GVC CAO NG TÂN NIÊN KHÓA 2001 – 2005
  • 3. NH N XÉT A GIÁO VIÊN H NG D N ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... Tp.HCM, ngày…..tháng….n m 2005
  • 4. NH N XÉT A GIÁO VIÊN PH N BI N ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... Tp.HCM, ngày…..tháng….n m 2005
  • 5. L I CÁM N Chúng em xin chân thành cám n Ban giám hi u, quý Th y 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 y, trang cho chúng em nh ng ki n th c c n thi t, b ích trong su t nh ng n m c t p i tr ng. Chúng em xin chân thành 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 trong su t th i gian làm lu n 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 , cùng toàn th gia ình, nh ng ng i ã nuôi 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 , 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 Giang Qu c Minh – H Ph m Thái Vinh
  • 6. B C C A LU N V N Lu n v n g m có 3 ph n và 7 ch ng PH N 1: T NG QUAN Ch ng 1 Gi i thi u v tài PH N 2: TÌM HI U CÁC V N L P TRÌNH. Ph n này gi i thi u các v n l p trình c n nh t xây d ng 1 ng ng có kh 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 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” a h u h t các ng ng b t gói tin mã ngu n m hi n nay. Ch ngg 3. Gi i thi u MySQL, m t h qu n tr 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 thu t l p trình socket vi t các ng ng trên môi tr ng ng Ph n 3 Xây ng ng ng PacketCap. Ph n này s d ng các ki n th c ã tìm hi u ch ng 2, 3, 4 xây d ng m t ng ng b t gói tin, 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 ng. Ch ng 5. Phân tích, thi t k ng 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, nh ng n ch và h ng phát tri n PacketCap trong t ng lai.
  • 7. Các danh c 11 M C C DANH SÁCH HÌNH.................................................................................... 14 DANH SÁCH NG .................................................................................. 15 PH N 1: T NG QUAN .............................................................................. 16 Ch ng 1: Gi i thi u tài.......................................................................... 17 1.1. t v n .......................................................................................... 17 1.2. Gi i thi u tài.................................................................................. 18 1.3. Yêu c u a tài.............................................................................. 19 PH N 2: TÌM HI U CÁC V N L P TRÌNH ...................................... 20 Ch ng 2 : Th vi n l p trình ng libpcap ................................................ 21 2.1. Gi i thi u libpcap............................................................................... 21 2.2. Cài t th vi n libpcap ..................................................................... 21 3.3. Các b c xây d ng ch ng trình s d ng libpcap.............................. 22 3.4. Chi ti t các b c ................................................................................ 23 3.4.1. Ch n Interface( card ng) ......................................................... 23 3.4.2. M device l ng nghe( sniff) d li u......................................... 24 3.4.3. c traffic.................................................................................... 25 Ch ng 3: H qu n tr s d li u MySQL............................................... 34 3.1. Gi i thi u v MySQL......................................................................... 34 3.2. Cài t MySQL.................................................................................. 34 3.2.1. Cài t MySQL t các gói nh phân............................................ 34 3.2.2. Cài t t mã ngu n..................................................................... 35 3.3. S d ng MySQL................................................................................ 36 3.3.1. L nh mysql.................................................................................. 36 3.3.2. L nh mysqladmin ........................................................................ 36 3.3.3. L nh mysqlshow.......................................................................... 36 3.3.4. L nh grant.................................................................................... 37 3.3.5. L nh Revoke................................................................................ 38 3.3.6. Ví d v t o m t c s d li u ..................................................... 38 3.4. L p trình MySQL trên ngôn ng C .................................................... 38 4.4.1 mysql_init..................................................................................... 38 3.4.2 mysql_real_connection ................................................................. 39 3.4.3 mysql_query ................................................................................. 40 3.4.4. mysql_affected_rows................................................................... 40 3.4.5. mysql_store_result....................................................................... 40 3.4.6. mysql_fetch_row ......................................................................... 40 3.4.7. mysql_row_seek .......................................................................... 41 3.4.8. mysql_free_result ........................................................................ 41
  • 8. Các danh c 12 Ch ng 4: L p trình socket.......................................................................... 42 4.1. Gi i thi u v l p trình socket ............................................................. 42 4.2. Nguyên lý ho t ng a socket......................................................... 42 4.3. L p trình v i socket ........................................................................... 44 4.3.1. Các thu c tính a socket............................................................. 44 4.3.1.1. Vùng( domain) ...................................................................... 44 5.3.1.2. Ki u socket(type)................................................................... 46 4.3.1.3. Giao th c a socket( protocol)............................................. 47 4.3.2. o socket.................................................................................... 48 4.3.3. nh a ch cho socket................................................................ 49 4.3.4. t tên cho socket........................................................................ 51 4.3.5. o hàng i cho socket .............................................................. 52 4.3.6. Ch và ch p nh n k t n i............................................................. 53 4.3.7. Yêu c u k t n i............................................................................ 54 4.3.8. óng k t n i ................................................................................ 55 4.3.9. Giao ti p b ng socket................................................................... 56 4.4. S d ng socket trong ng ng minh a....................................... 58 PH N 3: XÂY D NG NG NG TH NGHI M PACKETCAP ......... 59 Ch ng 5: Phân tích và thi t k PacketCap.................................................. 60 5.1. Kh o sát hi n tr ng ............................................................................ 60 5.2. Phân tích và xác nh yêu c u ............................................................ 61 5.2.1. Phân tích...................................................................................... 61 5.2.2. Xác nh yêu c u ......................................................................... 61 5.3. Các h ng xây d ng ng ng PacketCap......................................... 63 5.3.1. Phân tích h ng phát tri n d a trên Ethereal................................ 63 5.3.2. Phân tích h ng phát tri n d a trên libcap................................... 64 5.3.3. L a ch n h ng phát tri n PacketCap ......................................... 64 5.4. Các thành ph n PacketCap................................................................. 65 5.5. Xây d ng mô hình use case................................................................ 66 5.5.1. Xác nh Actor và use case .......................................................... 66 5.5.2. Mô hình use case ......................................................................... 66 5.6. t use case.................................................................................... 67 5.6.1. Connect........................................................................................ 67 5.6.2. StartCapture................................................................................. 68 5.6.3. StopCapture................................................................................. 69 5.6.4. GetFilter....................................................................................... 70 5.6.5. Terminate..................................................................................... 71
  • 9. Các danh c 13 5.7.Thi t k d li u................................................................................... 72 5.7.1. Phân tích các h ng l u tr ......................................................... 72 5.7.2. Thi t k s li u................................................................... 75 5.7.2.1. Danh sách các i t ng (table)............................................. 75 5.7.2.2 Table PACKET ...................................................................... 75 6.7.2.4. Table IP................................................................................. 76 5.7.2.5. Table TCP ............................................................................. 76 5.7.2.6. Table UDP............................................................................. 77 5.7.2.7 Table ICMP............................................................................ 77 5.7.2.8 Table IGMP............................................................................ 78 5.7.2.9. Table ARP............................................................................. 80 5.8. Xây d ng PCServer( server), PCManager(client)............................... 81 5.8.1. L u PCServer ......................................................................... 81 5.8.2. L u PCManager( Client)......................................................... 82 5.8.3. C u trúc d li u trao i gi a PCServer và PCManager............... 83 5.9.Thi t k giao di n PCManager( phiên n ch y trên Windows).......... 85 Ch ng 6: Cài t và th nghi m................................................................. 87 6.1. Cài t................................................................................................ 87 6.2. Th nghi m........................................................................................ 88 6.2.1. Mô hình th nghi m 1.................................................................. 88 6.2.2. Mô hình th nghi m 2.................................................................. 89 6.2.3. Mô hình th nghi m 3.................................................................. 90 Ch ng 7: T ng k t ..................................................................................... 91 7.1. K t lu n.............................................................................................. 91 7.1.1. K t qu t c.......................................................................... 91 7.1.2. n ch ........................................................................................ 91 7.2. H ng phát tri n ................................................................................ 92 PH L C H ng d n s d ng PacketCap................................................... 93 1.Ch ng trình PCServer.......................................................................... 93 2. Ch ng trình PCManager ..................................................................... 93 2.1. PCManager trên môi tr ng Linux ................................................. 93 2.2. PCManager trên môi tr ng Windows............................................ 94 TÀI LI U THAM KH O............................................................................ 95
  • 10. Các danh c 14 DANH SÁCH HÌNH Hình 5-1 Các thành ph n a PacketCap...................................................... 65 Hình 5-2 Mô hình use case........................................................................... 66 Hình 5-3 Mô hình l u tr 1 .......................................................................... 72 Hình 5-4 Mô hình l u tr 2 .......................................................................... 73 Hình 5-5 Mô hình l u tr 3 .......................................................................... 74 Hình 5-6 L u PCServer........................................................................... 81 Hình 5-7 L u PCManager ....................................................................... 82 Hình 6-1 Mô hình th nghi m 1................................................................... 88 Hình 6-2 Mô hình th nghi m 2................................................................... 89 Hình 6-3 Mô hình th nghi m 3................................................................... 90
  • 11. Các danh c 15 DANH SÁCH NG ng 4-1 Các giá tr c a domain .................................................................. 48 ng 4-2 Các mã l i a hàm bind() ............................................................ 51 ng 4-3 Các mã l i a domain AF_UNIX................................................ 52 ng 4-4 Mã l i a hàm connect().............................................................. 55 ng 5-1 Xác nh yêu c u........................................................................... 62 ng 5-2 Danh sách các i t ng............................................................... 75 ng 5-3 Table PACKET............................................................................. 75 ng 5-4 Table IP ........................................................................................ 76 ng 5-5 Table TCP..................................................................................... 76 ng 5-6 Table UDP.................................................................................... 77 ng 5-7 Table ICMP .................................................................................. 77 ng 5-8 Table IGMP.................................................................................. 78 ng 5-9 Table ARP .................................................................................... 80 ng 5-10 Mô màn hình PCManager ....................................................... 86
  • 12. Ph n 1: T ng quan 16 PH N 1: T NG QUAN Ch ng 1. Gi i thi u tài
  • 13. Ch ng 1: Gi i thi u tài 17 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 nh 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 ng 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 t ng 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 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 .
  • 14. Ch ng 1: Gi i thi u tài 18 y gi i pháp nào gi i quy t bài toá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 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 ng nh ng ch a s d ng c h t kh n ng tính toán c a chúng. • 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ì nh g p nhi u l n 1 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). i nh ng u 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 ng th nghi m Grid Computing trong vi c phân tích thông tin ng ph c qu n lý” là m t l n g m 2 nhóm th c hi n. Nhóm th 1 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 ng ph c cho vi c theo dõi và phân tích thông tin ng (Ph n I). Nhóm th 2 tìm hi u Grid Computing và xây d ng ng ng phân tích hi n tr ng c a m ng d a trên thông tin t s d li u do nhóm th 1 xây d ng (Ph n II).
  • 15. Ch ng 1: Gi i thi u tài 19 1.3. Yêu c u a tài • Xây 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 ng ph c 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 d li u phân tán trên m ng theo nhu c u c a ng i qu n tr . • th ng cho phép c u hình ng d ng t xa. • H tr u k t qu b t c theo nh ng a các ng ng b t gói tin khác nh Ethereal, TCPDump...
  • 16. Ph n 2: Tìm hi u các v n l p trình 20 PH N 2: TÌM HI U CÁC V N L P TRÌNH Ch ng 2. Th vi n l p trình ng libpcap Ch ng 3. H qu n tr s d li u MySQL Ch ng 4. L p trình socket
  • 17. Ch ng 2: Th vi n l p trình ng libpcap 21 Ch ng 2 : Th vi n l p trình ng libpcap 2.1. Gi i thi u libpcap Libpcap là m t th vi n mã ngu n m tr l p trình 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 n m i nh t 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 n m i nh t a libpcap u có a ch này. Gi s b n i v gói libpcap-0.8.3.tar.tar, ti nhànhcài t: • Gi i nén gói tar tar –xzvf libpcap-0.8.3.tar.tar • Chuy n vào th m c libpcap cd libpcap-0.8.3 • gõ l nh ./configure • Gõ l nh make • Gõ l nh make install N u không có l i gì x y ra thì quá trình cài t ã hoàn t t.
  • 18. Ch ng 2: Th vi n l p trình ng libpcap 22 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 • c 1: Xác nh interface (card 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_lookupdev() c a th vi n libpcap l y t t c các inteface. • c 2: Kh i t o pcap. Cung c p cho pcap bi t interface nào trong các interface ã l y v b c trên s c ch n sniff. • c 3: L c frame .pcap cho chúng ta c ch ch n l a khi l c các frame khi b t (ví d ch b t frame TCP/IP có source IP 192.168.8.8 và port 23 …). ta ph i t o ra filter r i biên ch filter này báo cho pcap bi t b l c nó s dùng. • c 4: Pcap th c thi vi c sniff frames. • c 5: óng phiên làm vi c và k t thúc ng d ng Trên ây là qui trình t 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.
  • 19. Ch ng 2: Th vi n l p trình ng libpcap 23 3.4. Chi ti t các b c 3.4.1. Ch n Interface( card 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(int 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 • Cách 2 : S d ng hàm pcap_lookupdev() c a libpcap tìm ki m các interface t n i trên máy tính. #include <stdio.h> #include <pcap.h> int main(int argc , char* argv[]) { Char* dev,errbuf[PCAP_ERRBUF_SIZE] dev = pcap_lookupdev(errbuf); if(dev == NULL) { printf("%sn",errbuf); exit(1); } printf("DEV: %sn",dev); }
  • 20. Ch ng 2: Th vi n l p trình ng libpcap 24 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 : Dùng hàm pcap_findalldevs tìm 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,i=0; 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 Kh i t o phiên làm vi c cho các thi t b s d ng hàm pcap_open_live(). C u trúc hàm này nh sau : pcap_t *pcap_open_lives( char* device,int snaplen,int promisc,int yo_ms,char *ebuf) Tham s : • device là thi t b ã c nh ngh a trên
  • 21. Ch ng 2: Th vi n l p trình ng libpcap 25 • snaplen cho bi t s byte l n nh t mà pcap có th b t frames • promisc n u t b ng 1 thì interface s ho t ng trong ch promiscuos mode. ây là ch libpcap s sniff t t c các 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(): %sn",errbuf); exit(1); } Dev là nh danh thi t b . 3.4.3. 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ào ó ta thì s d ng pcap_compile() pcap_setfilter() có c u trúc nh sau: int pcap_compile(pcap_t *p, struct bpf_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 là 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.
  • 22. Ch ng 2: Th vi n l p trình ng libpcap 26 int pcap_setfilter(pcap_t *p,struct_bpf_program *fp) Tham s th nh t là handle qu n 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()) nh d ng str mô t cho filter: • Filter theo source ip Ví d ," src net 172.168.8.8 " • Filter theo dest ip : Ví d ," dst net 172.168.8.8 " • Filter theo source và dest ip Ví d ," src and dst net 172.168.8.8 " • Filter theo source hay dest ip Ví d ," src or dst net 172.168.8.8 " • Filter theo source port : Ví d ," src port 23 " • Filter theo dest port : Ví d ," dst port 23 " • Filter theo source và dest port Ví d ," src and dst port 23 " • Filter theo source hay dest port Ví d ," src or dst port 172.168.8.8 "
  • 23. Ch ng 2: Th vi n l p trình ng libpcap 27 • Filter theo protocal Ví d ," tcp " • Ngoài ra còn có th filter t ng h p : Ví d ," dst net 172.168.8.8 and src port 23 tcp" Ví d v filter n gi n #include <pcap.h> . char *dev; char errbuf[PCAP_ERRBUF_SIZE]; pcap_t* descr; const u_char *packet; struct pcap_pkthdr hdr; /* pcap.h */ struct bpf_program fp; /* hold compiled program */ bpf_u_int32 maskp; /* subnet mask */ bpf_u_int32 netp; /* ip */ dev = pcap_lookupdev(errbuf); if(dev == NULL) { fprintf(stderr,"%sn",errbuf); exit(1); } descr = pcap_open_live(dev,BUFSIZ,1,-1,errbuf); if(descr == NULL) { printf("pcap_open_live(): %sn",errbuf); exit(1); }
  • 24. Ch ng 2: Th vi n l p trình ng libpcap 28 if(pcap_compile(descr,&fp, port 23 ,0,netp) == -1) { fprintf(stderr,"Error calling pcap_compilen"); exit(1); } pcap_setfilter(descr,&fp) 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 c 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 pcap_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 là pointer ch n c u trú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 tr n frame c mô t b i c u trúc này struct pcap_pkthdr { struct timeval ts; time stamp bpf_u_int32 caplen; length of portion present bpf_u_int32; lebgth this packet (off wire) }
  • 25. Ch ng 2: Th vi n l p trình ng libpcap 29 Ví 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 hdr; /* pcap.h */ struct ether_header *eptr; /* net/ethernet.h */ u_char *ptr; /* printing out hardware header info */ dev = pcap_lookupdev(errbuf); if(dev == NULL) { printf("%sn",errbuf); exit(1); } printf("DEV: %sn",dev); descr = pcap_open_live(dev,BUFSIZ,0,-1,errbuf);
  • 26. Ch ng 2: Th vi n l p trình ng libpcap 30 if(descr == NULL) { printf("pcap_open_live(): %sn",errbuf); exit(1); } packet = pcap_next(descr,&hdr); if(packet == NULL) { printf("Didn't grab packetn"); exit(1); } printf("Grabbed packet of length %dn",hdr.len); printf("Recieved at ..... %sn",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 pcap_close() dùng óng phiên làm vi c. t k thu t khác ph c t p h n là dùng hàm pcap_loop() c a libpcap. C u trúc hai hàm này nh sau : int pcap_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.
  • 27. Ch ng 2: Th vi n l p trình ng libpcap 31 C u trúc c a hàm 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 vào (th ng là NULL). Tham s th hai là c u trúc pcap_pkthdr. Ví d v cách s d ng pcap_loop : #include <pcap.h> #include <stdio.h> #include <stdlib.h> #include <errno.h> void my_callback(u_char *useless,const struct pcap_pkthdr* pkthdr,const u_char*packet) { tatic int count = 1; fprintf(stdout,"%d, ",count); if(count == 4) fprintf(stdout,"Come on baby sayyy you love me!!! "); if(count == 7) fprintf (stdout,"Tiiimmmeesss!! "); fflush(stdout); count++; }
  • 28. Ch ng 2: Th vi n l p trình ng libpcap 32 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 hdr; /* pcap.h */ struct ether_header *eptr; /* net/ethernet.h */ if(argc != 2) { fprintf(stdout,"Usage: %s numpacketsn",argv[0]); return 0; } dev = pcap_lookupdev(errbuf); if(dev == NULL) { printf("%sn",errbuf); exit(1); } descr = pcap_open_live(dev,BUFSIZ,0,-1,errbuf); if(descr == NULL) { printf("pcap_open_live(): %sn",errbuf); exit(1); }
  • 29. Ch ng 2: Th vi n l p trình ng libpcap 33 pcap_loop(descr,atoi(argv[1]),my_callback,NULL); fprintf(stdout,"nDone processing packets... wheew!n"); return 0; }
  • 30. Ch ng 3: H qu n tr c s d li u MySQL 34 Ch ng 3: H qu n tr 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 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 phát tri n nên MySQL MySQL ho t ng theo mô hình client-server, r t 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 trong môi tr ng Web, Internet. a ch download MySQL : http://www.MySQL.com 3.2. Cài t MySQL 3.2.1. Cài t MySQL t các gói nh phân Các gói c n thi t: • Gói trình ch (server package): MySQL-version-architecture.rpm • Gói trình khách (client package): MySQL-client-version-architecture.rpm • tr th vi n cho trình khách: MySQL-shared-version-architecture.rpm • Gói phát tri n ng d ng trên MySQL: MySQL-devel-version-architecture.rpm Ta cài t ng gói b ng l nh rpm –ivh <tên gói>
  • 31. Ch ng 3: H qu n tr c s d li u MySQL 35 Trình cài t script s t ng t o: • t CSDL database m u • Script init.d và mysql kh i ng và d ng d ch v ki m soát database c a MySQL. • Script mysql ch a 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 mysql as this user • User mang tên mysql dùng ng nh p và kh i ng d ch daemon c a trình ch . Kh i ng trình ch b ng tay: • ng nh p quy n user mysql: $ su mysql • Kh i ng trình ch : # /etc/rc.d/init.d/mysql start 3.2.2. Cài t t mã ngu n • G i nén file ch a mã ngu n • Th c hi n cài t b ng t h p l nh sau : $ ./configure $ make $ su $ make intall $scripts/mysql_intal.db
  • 32. 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ê.
  • 33. 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
  • 34. 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
  • 35. 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
  • 36. 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)
  • 37. 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)
  • 38. 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
  • 39. 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.
  • 40. 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
  • 41. 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;
  • 42. Ch ng 4: L p trình socket 46 Ngoài vùng giao ti p AF_UNIX và AF_INET, n còn có th g p AF_ISO dành cho chu n giao th c ng theo ISO hay AF_NS dành cho h th ng ng Xerox, tuy nhiên chúng không c s ng th ng xuyên, cho nên ta không c p n chi ti t. 5.3.1.2. Ki u socket(type) V i m i vùng domain a socket, n có th có nhi u cách giao ti p. Có hai ki u giao ti p ki u giao ti p i n hình s là giao ti p m t chi u (SOCK_DGRAM) và giao ti p o m hai chi u (SOCK_STREAM). D li u khi chuy n i c óng thành t ng gói (data package hay datagram). SOCK_STREAM và SOCK_DGRAM qui 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 m gói thông tin g i i c chuy n n ích và nh n y . Sau khi nh n xong d li u, n i nh n g i thông tin ph n h i cho n i g i và quá trình g i ch 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 th c ng Internet AF_INET c là giao th c truy n TCP. Khi k t h p v i c ch nh tuy n theo a ch IP chúng c i t t là TCP/IP. K t n i và truy n d li u theo cách này tuy o m nh ng t n nhi u tài nguyên a h th ng do k t n i ph i duy trì và theo dõi th ng xuyên. SOCK_DGRAM cách g i nh n d li u này ch di n ra m t chi u. Trình khách, n i g i d li u i không c n bi t trình ch (n i nh n) có nh n c gói d li u y hay không. Trình ch khi nh n c d li u ng không c n thông báo hay xác nh n v i trình khách là d li u ã nh n xong. Cách g i này có v không an toàn
  • 43. Ch ng 4: L p trình socket 47 nh ng bù l i th c hi n nhanh và không tiêu t n nhi u tài nguyên duy trì k t n i và ki m tra d li u nh n g i. Ki u truy n d li u socket này trong vùng giao th c ng Internet AF_INET c i là giao th c truy n UDP (User Datagram Protocol). Khi k t h p v i ch nh tuy n theo c ch IP chúng c i t t là UDP/IP. Do tính ch t không m o nên UDP c dùng nhi u trong ng v i c ích thông báo hay g i tin tin n m t nhóm máy tính nào ó trong ng. Nó ít khi c dùng trong các ch c n s chính xác cao nh g i nh n file hay k t nói c s d li u. 4.3.1.3. Giao th c a socket( protocol) Giao th c là cách qui c g i nh n d li u gii a hai hay nhi u máy tính trong m ng. Tùy theo m i ki u g i nh n d li u mà ta có các giao th c khác nhau. Hi n nay ki u g i nh n theo giao th c TCP và UDP là s d ng nhi u nh t. Tuy nhiên i u này không b t bu c, TCP và UDP ch là cách cài t cho vùng socket AF_INET theo giao ti p Internet mà thôi. Ví d , ban có th cài t m t giao th c khác thay cho UDP áp ng cho cách chuy n d li u không o m. Mõi ki u socket u có giao th c m c nh áp ng cho nó. Trong t t các hàm socket sau này, tùy ch n protocol n u có yêu c u n có th t giá tr 0 yêu c u s d ng giao th c m c nh. Trong các ví d ph n sau ta ch t p trung nghiên c u v vùng socket AF_INET và a ch IP thay cho vùng AF_UNIX. V i AF_INET i ng ng ng a n u có th giao ti p c v i nhau b t k chúng ang ch y trên Windows, Linux hay UNIX.
  • 44. Ch ng 4: L p trình socket 48 4.3.2. T o socket H th ng cung c p cho n hàm socket() t o m i m t socket. Hàm socket() tr v s nguyên int cho bi t s mô hay nh danh dùng truy c p socket sau này. #include <sys/types.h> #include <sys/socket.h> int socket(int domain, int type, int protocol); Tham s domain ch nh vùng hay a ch áp t cho socket. domain có th nh n m t trong các giá tr sau: AF_UNIX M socket k t n i theo giao th c file (xu t nh p socket d a trên xu t nh p (file) a UNIX/Linux AF_INET M socket theo giao th c Internet (s d ng a ch IP k t n i) AF_IPX Vùng giao th c IPX ( ng Novell) AF_IS Chu n giao th c ISO AF_NS Giao th c Xerox Network System ng 4-1 Các giá tr c a domain H u nh n ch s d ng AF_UNIX và AF_INET là chính. Các vùng giao th c khác ã l i th i và hi n nay ít còn c s d ng. Tham s type trong hàm socket() dùng ch nh ki u giao tiép hay truy n d li u a socket. n có th ch nh b ng SOCK_STREAM dùng cho truy n d li u o m ho c SOCK_GRAM dùng cho truy n không o m.
  • 45. Ch ng 4: L p trình socket 49 Tham s protocol dùng ch n giao th c áp ng cho ki u socket( trong tr ng h p có nhi u giao th c áp ng cho m t ki u truy n). Tuy nhiên n ch c n t giá tr 0 (l y giao th c m c nh). AF_INET ch cài t m t giao th cduy nh t cho các ki u truy n SOCK_STREAM và SOCK_DGRAM ó là TCP và UDP. N u o socket thành công, hàm tr v s nh danh socket( descriptor). n s d ng s nh danh này trong t t các l i i truy xu t socket khác nh read/write. S này t ng t nh s nh danh file mà b n th ng dùng c và ghi file. c/ ghi vào socket ng ng ngh a v i g i và nh n d li u gi a trình khách và trình ch . 4.3.3. nh a ch cho socket Khi socket ã c o ra, n ch c n ch nh a ch và tên cho socket. M t socket c n ph i có a ch và tên các trình khách có th tham chi u n. Tùy m i vùng giao th c mà cách ánh a ch có th khác nhau. Ví d khi n dùng vùng giao th c AF_UNIX d a trên h th ng t p tin, a ch socket c nh ngh a trong c u trúc sockaddr_un a file include sys/un.h nh sau: struct sockaddr_un{ sa_family_t sun_family; /* AF_UNIX */ char sun_path []; /* ng d n */ };
  • 46. Ch ng 4: L p trình socket 50 Trong Linux sa_family_t c nh ngh a là ki u short. sun_path là ng d n t o t p tin socket. Vùng AF_UNIX c s d ng nhi u trong các ng ng c b trên t máy vì nó ph thu c vào ng d n t p tin tuy t i a h i u hành. Th c t b n dùng AF_INET v i c u trúc a ch c nh ngh a trong sockadd_in a file include netinet/in.h nh sau: struct sockadd_in{ short in sin_family; /* AF_INET */ unsigned short int sin_port; /* s c ng */ struct in_addr sin_addr; /* a ch IP */ }; C u trúc in_addr mô a ch IP c nh ngh a nh sau: struct in_addr{ unsigned long int s_addr; }; Nh n th y a ch IP là m t s long (4 bytes hay 32 bits). ây ng chính là c u trúc a ch cho m t ch ng trình giao ti p v i nhau qua ng Internet. Trên quan i m a l p trình ng ng, cho dù socket có nh a ch theo vùng nào i ch ng n a m t khi ã m c socket, n ch c n xem socket nh m t t p tin và th c hi n thao tác read/write trên ó( ng ng v i send và receive trên Winsock a Microsoft).
  • 47. Ch ng 4: L p trình socket 51 4.3.4. t tên cho socket Sau khi ã nh a ch , n ch c n t tên cho socket. i v i AF_UNIX c ch chính là ng d n, còn tên chính là tên t p tin t o socket. i v i vùng giao th c AF_INET 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 n c n i hàm bind() rabgd bu c nh ng thông tin này cho socket ã m ra tr c ó. #include <sys/socket.h> int byte (int socket, const struct sockaddr *address, size_t address_len); Hàm h th ng bind() s d ng các thông tin trong c u trúc address gán cho socket s nh danh socketd tr v b i hàm socket() tr c ó. Tham s address_len cho bi t chièu dài a c u trúc (struct sockaddr*) truy n vào hàm. n l u ý sockaddr là c u trúc t ng quát cho sockaddr_un và sockaddr_in Khi ràng bu c thành công bind() tr v tr 0. N u không hàm tr v -1 và errno ch a m t trong các l i sau: Mã l i Mô EBADF S mô file không h p l ENOTSOCK S mô file không dành cho socket EINVAL S mô file tham chi u n m t socket ã có. EADDRNOTAVAIL a ch không xác nh EADDRINUSE a ch và c ng ràng bu c ã b m t socket khác chi m ng ng 4-2 Các mã l i a hàm bind()
  • 48. Ch ng 4: L p trình socket 52 N u n m socket thu c vùng AF_UNIX errno có th nh n thêm các l i sau: Mã l i Mô EACCESS Không th t o file cho socket do không có quy n o file ENOTDIR, ENAMETOOLONG Tên file không h p l ng 4-3 Các mã l i a domain AF_UNIX Ràng bu c tên socket là b c quan tr ng nh t socket a n có kh ng nhìn th y và truy xu t c t các ng ng bên ngoài. M t socket n u ch a c t tên i là socket vô danh ( unnamed socket). 4.3.5. o hàng i cho socket ón nh n các k t n i chuy n n, socket trình ch ph i o ra m t hàng i (queue). c ích a hành i là u i các k t n i ch a c trình ch x lý k p. Hàm h th ng listen() th c hi n công vi c này. #include <sys/socket.h> int listen(int socketd, int backlog); Tham s socketd cho bi t s mô socket c n o hàng i. backlog là s k t n i t i a c phép a vào hàng i. N u m t k t n i n trình ch trong khi ã có backlog k t n i tr c ó ch a x lý thì k t n i này b th t i. Lý do hàng i ã y, trình ch server không mu n nh n thêm k t n i n a. Thông th ng backlog mang giá tr 5 là s trung bình kh thi nh t.
  • 49. Ch ng 4: L p trình socket 53 Hàm listen() tr v 0 n u o hàng i thành công, n u th t i tr tr v s là -1 và bi n errno ch a tr EBADF, EINVAL, ho c ENOTSOCK. 4.3.6. Ch và ch p nh n k t n i M t khi ã t o c socket, t tên cho nó và chu n xong hàng i ti p nh n k t n i, công vi c sau cùng là ch k t n i a trình khách g i n. n i hàm accept() th c hi n công vi c này. #include <sys/socket.h> int accept(int socketd, struct sockaddr *address, size_t *address_len); Hàm h th ng accept() tr v khi có m t trình khách mu n k t n i v i c m socket ch nh s mô socketd. K t n i a trình khách tr c h t c t vào hàng i. Khi accept() phát hi n ra có socket trong hàng i, nó s t ng l y a ch c a máy khách t vào c u trúc address, chi u dài th t s c a c u trúc a ch tr v trong bi n address_len. Ti p n accept() o ra m t socket vô danh. K t qu tr v a accept() là s mô cho socket vô danh, n có th s d ng s này liên c v i trình khách. Socket vô danh m i này có cùng ki u v i socket t tên ang l ng nghe trên hàng i. Do c u trúc struct sockaddr không có nh cho nên n c n thi t l p kích th c v a ti p nh n a ch trình khách. N u a ch trình khách dài h n không gian n dành cho c u trúc sockaddr, ph n d ra c t .
  • 50. Ch ng 4: L p trình socket 54 N u ch a có k t n i nào trong hàng i, accept() d ng i ch – block( trình ch s không th c thi các l nh k ti p) cho n khi có k t n i a client g i n. Bàn có th thay i c ch ch này b ng cách i hàm fcntl() i u ch nh và thêm vào c O_NONBLOCK cho socket nh sau: int flags=fcntl(socketd, F_GETFL, 0); fcntl(socketd, F_SETFL, O_NONBLOCK | flags); Sau khi t c này cho socket, hàm accept() không d ng i ch khi n i nó. accept() tr v ngay s mô cho socket n u có k t n i trong hàng i, n u không nó s tr v -1 và th c thi dòng l nh k ti p. 4.3.7. Yêu c u k t n i Trình ch c a n th ng th c hi n ch ac n ng o, t tên, ch k t n i b nh các hàm socket(), bind(), và accept(). Tuy nhiên phía trình khách n gi n h n, n ch c n i hàm connect() yêu c u k t n i v i trình ch . connect() c khai báo nh sau: #include <sys/socket.h> int connnect(int socketd, const struct sockaddr *address, size_t address_len); Tham s socketd là s mô tr v b i hàm socket(). address là c u trúc a ch tr n socket a trình ch . address_len là chi u dài a bi n c u trúc address. K t qu tr v c a hàm là 0 n u thành công và ng c i là -1. Trong tr ng h p -1, bi n errno ch a m t trong nh ng tr sau:
  • 51. Ch ng 4: L p trình socket 55 Mã l i Mô EBADF S mô socket truy n cho hàm không h p l EALREADY Kêt n i ã c thi t l p tr c ó ETIMEOUT Quá th i gian ch k t n i ECONNREFUSED Trình ch server t ch i k t n i ng 4-4 Mã l i a hàm connect() N u k t n i không thành công hàm connect() có g ng ch k t n i i. N u sau m t s l n k t n i không thành công connect() tr v l i ETIMEOUT. ng t accept() n có th i ch ch c a hàm connect() b ng cách i fcntl() t i c ENONBLOCK. B ng cách này, khi k t n i không thành công l n u tiên, hàm connect() không ch l p i k t n i. Hàm k t thúc và tr v mã l i ngay l p t c. 4.3.8. óng k t n i ng t nh x lý trên file. n có trách nhi m óng các k t n i ã t o ra b ng cách g hàm close(). óng k t nói gi i phóng tài nguyên và b o m d li u ã chuy n i hoàn t t c hai u g i và nh n. #include <sys/socket.h> int close(int sockd); i v i hai phía trình khách và trình ch , n nên i close() óng socket khi l nh read tr v tr 0 (không còn d li u c).
  • 52. Ch ng 4: L p trình socket 56 Th ng thì close() tr v ngay t c kh c, tuy nhiên có th close() i vào tr ng thái ch (block) n u scoket a n thi t l p ki u k t n i hai chi u (SOCK_STREAM) cùng v i tùy ch n SOCK_LINGER và d li u ang tr nh thái ch a chuy n h t. Tùy ch n SOCK_LINER c c p sau. 4.3.9. Giao ti p b ng socket Chúng ta v a xem qua các hàm h th ng dùng o và x lý socket, gi ây ta có th tr l i nh ng ví d v s d ng socket th n. Nh ã nêu, 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 a UNIX/Linux. Vi c phân quy n cho phép c ghi file ng là m t v n . Th ng file socket o ra trong th c hi n hành ho c th c m /tmp và b n ph i cho phép h u nh toàn quy n truy c p các th 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 ng a n trên Linux s d ng AF_INET d chuy n i sang Windows h n là AF_UNIX. Trong AF_INET, khi o m i m t socket trên trình ch , 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 ng khác s d ng. n có th tham kh o t p tin /etc/services, ây là t p tin v n n li t kê danh sách các ch và c ng ã c dành s d ng, s c ng a n không nên trùng v i nh ng s ã có trong danh sách này. Ban ng không th s ng các c ng nh n 1024, chúng dành cho các ch c a h th ng. Giao ti p ng không òi i ph i k t n i v i m t h th ng ng th t s . Ngay trên m t máy, n có th s d ng giao ti p ng liên
  • 53. Ch ng 4: L p trình socket 57 c gi a các ti n trình ang ch y. N u c n s a ch IP, n có th s ng s 127.0.0.1, ây là a ch IP “h i qui” (loop back) th ng dùng cho các ng ng c b . V i a ch này, d li u g i i 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 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 nh n c d li u và h i âm i. N u máy n hòa ng, n nên i ng i qu n tr ng xin m t a ch IP thích h p. a ch m ng IP 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 207.46.131.91 www.microsoft.com Nh n th y, m t a ch IP có th ánh b ng nhi u tên khác nhau ( a ch IP và tên th ng cách nhau b ng kho ng tr ng hay tab). Th ng a ch IP 127.0.0.1 c i là localhost và không có gì tr ng i n u n d nh t cho nó m t cái tên khác ch ng 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 i ng v i m t a ch IP có t n i hay không, n có th g i l nh ping nh sau:
  • 54. Ch ng 4: L p trình socket 58 $ 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=255 time=67 usec 64 bytes from (127.0.0.1) : icmp_seq=0 ttl=255 time=48 usec 64 bytes from (127.0.0.1) : icmp_seq=0 ttl=255 time=51 usec 4.4. S d ng socket trong ng ng minh a Ph n l p trình socket này 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 ng minh a. th thành ph n client dùng socket k t n i n thành ph n server. Sau khi k t n i thành công client g i các l nh nh Start Capture, Stop Capture, Get Filter... n server, 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 i cho client.
  • 55. Ph n 3: Xây d ng ng d ng th nghi m PacketCap 59 PH N 3: XÂY D NG NG 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
  • 56. Ch ng 5: Phân tích và thi t k PacketCap 60 Ch ng 5: Phân tích và thi t k PacketCap 5.1. Kh o sát hi n t 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 u vào các file có c u trúc theo nh ng riêng 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 r t ch m. Nh ng ph n m m này ch ch 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 : u ch nh b l c , thi t l p ng d n 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: • n có thông tin v l u l ng m ng 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. • Theo dõi hành ng truy c p và xâm nh p m ng b t h p pháp. • t c hành ng trên nên là online (phân tích và u khi n) n u c.
  • 57. Ch ng 5: Phân tích và thi t k PacketCap 61 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 ng này l y tên là PacketCap. Trên c s ó, m t h th ng phân tán b t gói tin, trích l c và luu tr vào c s d li u trên m ng c xây d ng kh c ph c ph n nào khuy t 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 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 c tiêu a tài là m t xây d ng ng ng phân tán b t các gói tin, ng này cung c p cho qu n tr m ng nh ng thông tin ph c cho vi c theo dõi và phân tích thông tin 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 a toàn b h th ng ng.
  • 58. Ch ng 5: Phân tích và thi t k PacketCap 62 ng ng PacketCap này bao g m các ch c n ng: STT Ch c n ng 1 B t và phân tích c các gói tin a nh ng protocol thông ng nh TCP, UDP, ICMP, ARP... 2 Cho phép l u tr thông tin b t c d i ng c s d li u và ch n h qu n tr s d li u u tr . 3 Cho phép l u tr thông tin b t theo c u trúc file a Ethereal ho c các ph n m m b t gói tin khác. 4 i u khi n t xa vi c b t các gói tin, bao g m: • Kh i 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 nh yêu c u
  • 59. Ch ng 5: Phân tích và thi t k PacketCap 63 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 u s d ng th vi n l p trình libcap ho c winpcap(tên a phiên 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 có 2 h ng l a ch n phát tri n ng ng PacketCap: Ø H ng 1: Tìm hi u c u trúc a ph n m m Ethereal, tích h p thêm ch c n ng l u các gói tin vào c s d li u và c u hình t xa vào ph n m m Ethereal. Ø óng 2: S d ng th vi n l p trình 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 • Thu n l i o Source code 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 c source code.
  • 60. Ch ng 5: Phân tích và thi t k PacketCap 64 5.3.2. Phân tích h ng phát tri n d a trên libcap • 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 capture 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 a 2 h ng phát tri n ng 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 ng b t gói tin PacketCap d a trên th vi n libpcap.
  • 61. Ch ng 5: Phân tích và thi t k PacketCap 65 5.4. Các thành ph n PacketCap PacketCap có h ch c n ng i u khi n xa nên nó s c xây d ng theo mô hình ng ng Client/ Server. PacketCap g m 3 thành ph n: • Thành ph n th c hi n vi c l ng nghe yêu c u t phía client và b t gói tin: PCServer( PacketCap Server) • Thành ph n i u khi n t xa: PCManager. • Thành ph n l u tr : PCStore, thành ph n này ch là i l u tr d li u b t c. PCStore th là m t máy tính b t kì có ch y h qu n tr s d li u MySQL. Trong mô hình client/ server thì PCServer là thành ph n server, còn PCManager là client. PCServer m c ng 8088 và ch k t n i, nh n yêu c u và th c hi n yêu c u khi ã có client k t n i vào. PCManager k t n i n PCServer và i u khi n i ho t ng a PCServer. Hình 5-1 Các thành ph n a PacketCap
  • 62. Ch ng 5: Phân tích và thi t k PacketCap 66 5.5. Xây d ng mô hình use case 5.5.1. Xác nh Actor và use case • Actor là ng i dùng ch ng trình PCManager (client) • Use case o Connect: Dùng PCManager k t n i vào PCServer o StartCapture: Yêu c u PCServer b t u th c hi n vi c b t gói tin. o StopCapture: Yêu c u PCServer d ng vi c b t gói tin o GetFilter: l y b l c hi n i o Terminate: yêu c u PCServer k t thúc. 5.5.2. Mô hình use case Hình 5-2 Mô hình use case
  • 63. Ch ng 5: Phân tích và thi t k PacketCap 67 5.6. t use case 5.6.1. Connect • Tên use case: Connect • Mô Use-case này mô t quá trình qu n tr viên yêu c u PCManager(client) k t n i qu n tr vi c b t gói tin máy server. • Dòng s ki n o Dòng s ki n chính Use-case b t u khi có yêu c u t máy client xin k t i. Máy client g i yêu c u n máy server. Sau khi máy server nh n c yêu c u, n u ch p nh n yêu c u máy server s g i v s port giao ti p, k t n i thanh công. u máy sever không nh n yêu c u ho c có sai sót thì client thông báo l i. o Dòng s ki n ph Không có o Các dòng s ki n khác • Các yêu c u c bi t. o Không có. • u ki n tiên quy t. o Ph i ng nh p quy n qu n tr m i c th c hi n Use- Case này. o Máy sever c n k t n i ph i s n sàng. • m m r ng o Không có.
  • 64. Ch ng 5: Phân tích và thi t k PacketCap 68 5.6.2. StartCapture • Tên use case: StartCapture • Mô Use-case này mô t quá trình qu n tr viên yêu c u máy client g i l nh y u c u server b t u vi c b t gói tin. • Dòng s ki n o Dòng s ki n chính Use-case b t u khi có yêu c u t máy client. Máy client g i yêu c u n máy server. Sau khi máy server nh n c yêu c u s ki m tra ti n trình b t gói tin ã c th c thi ch a. u ti n trình ch a th c thi thì th c thi vi c b t gói tin u vào c s d li u, thông báo v máy client yêu c u ã c áp ng. u ti n trình ã c th c thi thì g i thông báo l i v . o Dòng s ki n ph Ki m tra CSDL ngày ó ã có ch a. N u có r i thì m s d li u l u. N u ch a có thì t o c s d li u i. Qu n tr viên ch nh s a các thông tin liên quan n phòng ban, r i c p nh t l u l i. Use-case k t thúc. Máy client yêu c u qu n tr nh p c u trúc filter gói tin. Ki m tra tính h p l c a c u trúc filter.
  • 65. Ch ng 5: Phân tích và thi t k PacketCap 69 o Các dòng s ki n khác Không có • Các yêu c u c bi t o Không có. • u ki n tiên quy t o Ph i ng nh p quy n qu n tr m i c th c hi n Use- Case này. • m m r ng o Không có. 5.6.3. StopCapture • Tên use case: StopCapture • Mô : Use-case này mô t quá trình qu n tr viên yêu c u máy client g i n server yêu c u k t thúc b t gói tin. • Dòng s ki n o Dòng s ki n chính Use-case b t u khi có yêu c u t máy client. Máy client g i yêu c u ng ng b t gói tin n máy server. Sau khi máy server nh n c yêu c u s ki m tra ti n trình b t gói tin ã c th c thi ch a. u ti n trình ch a th c thi thì th c thi thì ng ng t gói tin, thông báo v máy client yêu c u ã c áp ng. u ti n trình ch a c th c thi thì g i thông báo i v .
  • 66. Ch ng 5: Phân tích và thi t k PacketCap 70 o Dòng s ki n ph óng c s d li u • Các dòng s ki n khác o Không có. • Các yêu c u c bi t o Không có. • u ki n tiên quy t Ph i ng nh p quy n qu n tr m i c th c hi n Use-Case này. • m m r ng o Không có. 5.6.4. GetFilter • Tên use case: GetFilter • Mô Use-case này mô t quá trình qu n tr viên yêu c u máy client g i yêu c u cho server tr l i b l c hi n th i. • Dòng s ki n o Dòng s ki n chính Use-case b t u khi có yêu c u t máy client yêu u thay l y filter hi n i ang dùng b t gói tin. Sau khi máy server nh n c yêu c u s ki m tra ti n trình b t gói tin ã c th c thi ch a. u ti n trình ã th c thi thì nó s g i tr l i cho client u ti n trình ch a c th c thi thì g i thông báo i v cho client.
  • 67. Ch ng 5: Phân tích và thi t k PacketCap 71 o Dòng s ki n ph óng c s d li u o Các dòng s ki n khác • Các yêu c u c bi t o Không có. • u ki n tiên quy t: o Không có • m m r ng: o Không có. 5.6.5. Terminate • Tên use case: Terminate • Mô : Use-case này mô t quá trình qu n tr viên yêu c u máy client g i n server yêu c u server k t thúc( thoát). • Dòng s ki n o Dòng s ki n chính Use-case b t u khi có yêu c u t máy client. Máy client g i yêu c u k t thúc ch ng trình server. Sau khi máy server nh n c yêu c u s ki m tra n u quá trình b t gói tin ang ch y thì nó s ch m d t. Thoát ra kh i ch ng trình. (ch m d t) o Dòng s ki n ph óng c s d li u • Các dòng s ki n khác o Không có.
  • 68. Ch ng 5: Phân tích và thi t k PacketCap 72 • Các yêu c u c bi t o Không có. • u ki n tiên quy t Ph i ng nh p quy n qu n tr m i c th c hi n Use-Case này. • m m r ng o Không có. 5.7.Thi t k d li u 5.7.1. Phân tích các h ng l u tr Có 3 h ng • ng 1: Các máy client b t gói tin trên các m ng khác nhau và li u c truy n v l u tr trên m t máy server. Hình 5-3 Mô hình l u tr 1
  • 69. Ch ng 5: Phân tích và thi t k PacketCap 73 o u m : li u c l u t p trung d dàng cho vi c x lý sau này. o Khuy t m Khi s l ng các gói tin b t c quá nhi u vi c truy n d li u v máy server có th làm b n ng truy n c a m ng. òi h i dung l ng l u tr r t l n máy server. • ng 2 : Gi ng nh h ng 1 nh ng thi t l p thêm m t m ng LAN gi a các máy client và sever truy n d li u. Hình 5-4 Mô hình l u tr 2 o u m : Kh c ph c c khuy t m c a h ng 1 o Khuy t m T n kém trong vi c thi t l p m ng LAN. Vi c thi t l p m ng LAN có th g p khó kh n trong tr ng p các máy client quá xa nhau. òi h i dung l ng l u tr r t l n máy server.
  • 70. Ch ng 5: Phân tích và thi t k PacketCap 74 • ng 3 : L u phân tán trên các máy client và ch truy n d li u theo yêu c u c a client. Hình 5-5 Mô hình l u tr 3 o u m: Ch truy n nh ng d li u c client yêu c u nên ph n nào kh c ph c c khuy t m c a h ng 1. Vi c l u tr phân tán s không òi h i dung l ng l u tr n m t máy. Vi c xây d ng ch ng trình th c hi n l u tr phân tán s dàng h n. o Khuy t i m ng ng PacketCap cho phép l u tr theo 3 h óng trên.
  • 71. Ch ng 5: Phân tích và thi t k PacketCap 75 5.7.2. Thi t k s li u 5.7.2.1. Danh sách các i t ng (table) STT Tên i t ng Mô 1 PACKET Thông tin chung t t c các gói tin b t c 2 IP Thông tin v IP header c a gói tin 3 TCP Thông tin chi ti t v gói tin TCP 4 UDP Thông tin chi ti t v gói tin UDP 5 ICMP Thông tin chi ti t v gói tin ICMP 6 IGMP Thông tin chi ti t v gói tin IGMP 7 ARP Thông tin chi ti t v gói tin ARP ng 5-2 Danh sách các i t ng Sau ây là mô t chi ti t m t s l p i t ng quan tr ng c a h th ng. 5.7.2.2 Table PACKET ST T Tên thu c tính Ki u d li u Ý ngh a Ràng bu c 1 Ma Chu i (10) nh danh gói tin 2 Source Mac Chu i (10) a ch mac c a máy g i gói tin 3 Dest Mac Chu i (10) a ch mac c a máy nh n gói tin 4 Packetlength Chu i (10) chi u dài gói tin 5 Time Chu i (20) Th i gian nh n gói tin 6 Data Chu i (1000) D li u c gói tin ng 5-3 Table PACKET
  • 72. Ch ng 5: Phân tích và thi t k PacketCap 76 6.7.2.4. Table IP ST T Tên thu c tính Ki u d li u Ý ngh a Ràng bu c 1 Ma Chu i (10) a ch mac c a máy g i 2 Service Chu i (10) Service c a gói tin 3 ID Chu i (10) ID c a gói tin 4 TTL Chu i (20) Time to live 5 ChecksumIP Chu i (20) Checksum c a IP 6 SourceIP Chu i (20) a ch IP ngu n 7 Dest IP Chu i (20) a ch IP ích ng 5-4 Table IP 5.7.2.5. Table TCP ST T Tên thu c tính Ki u d li u Ý ngh a Ràng bu c 1 Ma Chu i (10) nh danh gói tin 2 Source Port Chu i (10) Port ngu n 3 Dest Port Chu i (10) Port ích 4 Seg No Chu i (20) S segment 5 Ack No Chu i (20) Ack 6 Winsize Chu i (20) Winsize 7 checksumTCP Chu i (20) Checksum c a TCP 8 Type Chu i (20) ng 5-5 Table TCP Type : {"FIN ","SYN ","RST ","PUSH ","ACK ","URG ","ECE ","CWR "}
  • 73. Ch ng 5: Phân tích và thi t k PacketCap 77 5.7.2.6. Table UDP ST T Tên thu c tính Ki u d li u Ý ngh a Ràng bu c 1 Ma Chu i (10) nh danh gói tin 2 Source Port Chu i (10) Port ngu n 3 Dest Port Chu i (10) Port ích 4 ChecksumUDP Chu i (20) Checksum c a UDP ng 5-6 Table UDP 5.7.2.7 Table ICMP ST T Tên thu c tính Ki u d li u Ý ngh a Ràng bu c 1 Ma Chu i (10) nh danh gói tin 2 ICMP message group Chu i (10) 3 Type Chu i (10) 4 Code Chu i (20) 5 Id Chu i (20) 6 Seg No Chu i (20) ng 5-7 Table ICMP Các h ng và ý ngh a c a ICMP message group ( 0, "Echo Reply"}, { 3, "Destination Unreachable"}, { 4, "Source Quench"}, { 5, "Redirect Message"},
  • 74. Ch ng 5: Phân tích và thi t k PacketCap 78 { 6, "Alternate Host Address"}, { 8, "Echo Request"}, { 9, "Router Advertisement"}, { 10, "Router Selection"}, { 11, "Time Exceeded"}, { 12, "Parameter Problem"}, { 13, "Timestamp Request"}, { 14, "Timestamp Reply"}, { 15, "Information Request"}, { 16, "Information Reply"}, { 17, "Address Mask Request"}, { 18, "Address Mask Reply"}, 5.7.2.8 Table IGMP ST T Tên thu c tính Ki u d li u Ý ngh a Ràng bu c 1 Ma Chu i (10) nh danh gói tin 2 IGMP message group Chu i (10) 3 Type Chu i (10) 4 Response Time Chu i (20) 5 Checksum Chu i (20) 6 Group Addr Chu i (20) ng 5-8 Table IGMP
  • 75. Ch ng 5: Phân tích và thi t k PacketCap 79 Các h ng và ý ngh a c a IGMP message group: { 0x11 ," Group Membership Query."}, {0x12 ,"IGMPv1 Membership Report." }, {0x13 ,"DVMRP. "}, {0x14 ,"PIMv1. "}, {0x15 ,"Cisco Trace Messages. "}, {0x16 ,"IGMPv2 Membership Report. "}, {0x17 ,"IGMPv2 Leave Group." }, {0x1E ,"Multicast Traceroute Response. "}, {0x1F ,"Multicast Traceroute. "}, {0x22 ,"IGMPv3 Membership Report. "}, {0x24 ,"Multicast Router Advertisement. "}, {0x25 ,"Multicast Router Solicitation. "}, {0x26 ,"Multicast Router Termination. "}
  • 76. Ch ng 5: Phân tích và thi t k PacketCap 80 5.7.2.9. Table ARP ST T Tên thu c tính Ki u d li u Ý ngh a Ràng bu c 1 Ma Chu i (10) nh danh gói tin 2 ARP type Chu i (10) 3 ARP Source IP Chu i (10) 4 ARPDest IP Chu i (20) 5 Group Addr Chu i (20) ng 5-9 Table ARP ARP type: ARP Request frame ARP Reply frame RARP Request frame RARP Reply frame Unknown ARP
  • 77. Ch ng 5: Phân tích và thi t k PacketCap 81 5.8. Xây d ng PCServer( server), PCManager(client) 5.8.1. L u PCServer Hình 5-6 L u PCServer
  • 78. Ch ng 5: Phân tích và thi t k PacketCap 82 5.8.2. L u PCManager( Client) Hình 5-7 L u PCManager
  • 79. Ch ng 5: Phân tích và thi t k PacketCap 83 5.8.3. C u trúc d li u trao i gi a PCServer và PCManager Sau khi Client k t n i thành công v i PCServer, PCManager và PCServer trao i các thông i p v i nhau. th là PCManger s g i yêu c u lên cho PCServer và sau khi th c hi n yêu c u a PCManager, Server g i tr l i k t qu th c hi n cho Client. C u trúc a m i thông i p nh sau: struct tagCMD { int CmdCode; int IPFilterType; int b1,b2,b3,b4;//4 parts of IP address(for filter) int PortFilterType; int Port; int ProtocolFilter;//TCP, UDP, ICMP.. int mb1,mb2,mb3,mb4;//MySQL int NumberPacket; }; V i CmdCode là mã l nh c n g i, các mã l nh mày c nh ngh a b ng các h ng d dàng cho vi c l p trình.
  • 80. Ch ng 5: Phân tích và thi t k PacketCap 84 IPFilterType xác nh ki u c theo a ch IP, giá tr c a nó c nh ngh a nh sau: #define NO_FILTER 0 #define SOURCE_FILTER 1 #define DEST_FILTER 2 #define SOURCE_OR_DEST_FILTER 3 #define SOURCE_AND_DEST_FILTER 4 N u IPFilterType=NO_FILTER ngh a là không th c hi n vi c c các gói tin theo a ch IP, n u IPFilterType khác 0 thì lúc ó b1,b2,b3,b4 s là a ch IP c n c. B n s nguyên này hình thành a ch IP theo ng b1.b2.b3.b4 SOURCE_FILTER l c theo a ch IP ngu n, các gói tin có a ch ngu n (n i g i) b ng b1.b2.b3.b4 c b t i. DEST_FILTER l c theo a ch ích, các gói tin có a ch ích (n i n) b ng b1.b2.b3.b4 s c b t i. PortFilterType xác nh ki u c theo Port a ng ng, giá tr c a nó c nh ngh a nh a IPFilterType. SOURCE_OR_DEST nh ng gói tin có a ch ngu n ho c ích b ng b1.b2.b3.b4 c b t. SOURCE_AND_DEST nh ng gói tin có a ch ngu n b ng b1.b2.b3.b4 c b t và nh ng gói tin có a ch ích b ng b1.b2.b3.b4 c b t. T ng t í IPFilterType là PortFilterType Protocol là giao th c c n c, 0 có ngh a là không c, 1 là l c theo TCP...
  • 81. Ch ng 5: Phân tích và thi t k PacketCap 85 Mb1, mb2, mb3,mb4 là 4 thành ph n a a ch IP a máy tính ch y h qu n tr s d li u mà ta mu n l u thông tin b t c vào ó. NumberPacket xác nh s gói tin c n b t. 5.9.Thi t k giao di n PCManager( phiên n ch y trên Windows) Mô th Tên i t ng Ki u i ng Ghi chú 1 IDC_STATIC Label IP 2 IDC_IPADDR_SOURCE IP Address Nh p IP c n filter 3 CboFilterIP Combobox L a ch n ki u filter theo IP 4 IDC_STATIC Label Port 5 IDC_SOURCEPORT Textbox Nh p port c n filter 6 CboFilterPORT Combobox L a ch n ki u filter theo IP
  • 82. Ch ng 5: Phân tích và thi t k PacketCap 86 7 IDC_STATIC Label Protocol 8 CboProtocol Combobox Ch n protocol c n filter 9 IDC_STATIC Label Thông báo nh p IP 10 IDC_IPADDR_MYSQL IP Address Ch n máy ch y MySQL 11 IDC_STATIC Label Number of packet 12 IDC_NUMBER Combo box l ng packet c n b t 13 IDC_STATIC Label Server IP 14 IDC_IPADDR_SERVER Textbox Nh p a ch IP máy PCServer c n u khi n 15 IDC_STATUS Label Báo tình tr ng k t n i 16 BtnStart button B t u b t gói tin 17 BtnStop Button K t thúc vi c b t gói tin 18 BtnGetFilter Button L y thông tin filter hi n th i 19 BtnTermServer Button K t thúc liên k t v server 20 BtnConnect Button K t n i n ma1y server 21 BtnExit Button Thoát kh i ch ng trình ng 5-10 Mô màn hình PCManager
  • 83. Ch ng 6: Cài t và th nghi m 87 Ch ng 6: Cài t và th nghi m 6.1. Cài t Ph n PCServer c cài t trên môi tr ng Linux, PCManager c cài t trên 2 môi tr ng Linux và Windows. • Môi tr ng cài t ng ng o Windows XP Professional o Linux Redhat 9.0 • Môi tr ng l p trình o C for Linux o Visual C++ 6.0 • Môi tr ng cài t th nghi m o PCServer: Linux Redhat 9.0 o PCManager: Windows XP Professional o PCManager: Linux Redhat 9.0 • Các ph n m m h tr PCServer : MySQL, th vi n libpap
  • 84. Ch ng 6: Cài t và th nghi m 88 6.2. Th nghi m 6.2.1. Mô hình th nghi m 1 Hình 6-1 Mô hình th nghi m 1 • Mô : PCServer và PCStore cùng ch y trên m t máy, PCManager và PCServer cùng trong m t LAN segment • K t qu : o PCManager k t n i vào PCServer thành công o PCServer th c hi n t t t t các yêu c u do PCManager g i n o PCServer ghi k t qu b t c vào c s d li u MySQL thành công.
  • 85. Ch ng 6: Cài t và th nghi m 89 6.2.2. Mô hình th nghi m 2 Hình 6-2 Mô hình th nghi m 2 • Mô : PCServer và PCStore có th l a ch n ch y trên cùng 1 máy ho c 2 máy khác nhau. • K t qu : o PCManager k t n i vào PCServer thành công o PCServer th c hi n t t t t các yêu c u do PCManager g i n o PCServer ghi k t qu b t c vào c s d li u MySQL thành công.
  • 86. Ch ng 6: Cài t và th nghi m 90 6.2.3. Mô hình th nghi m 3 Hình 6-3 Mô hình th nghi m 3 • Mô PCServer và PCManager ch y trên 2 ng LAN khác nhau c n i qua 1 router. • K t qu Ch a th nghi m c mô hình này do không có thi t .
  • 87. Ch ng 7: T ng k t 91 Ch ng 7: T ng k t 7.1. K t lu n 7.1.1. K t qu t c Sau khi th c hi n xong tài, chúng em ã thu c m t s k t qu : • Tìm hi u c th vi n mã ngu n m libpcap và vi t c ng ng b t gói tin d a vào th vi n này. ây là b th vi n mã ngu n m h tr l p trình ng c p th p c s d ng r t nhi u trong các ph n m m h tr b t gói tin nh TcpDump, TCPFlow, Ethereal... • Tìm hi u h qu n tr s d li u mã ngu n m MySQL. • Tìm hi u v n l p trình socket, multithread trên môi tr ng Linux. • Xây d ng c ng ng phân tán b t các gói tin ph c cho vi c phân tích thông tin ng. 7.1.2. n ch • Ch a th b t gói tin ng trên nhi u card ng • l ng protocol có th phân tích và trích c thông tin không nhi u • Ch a h tr ch c n ng phân tích thông tin t nh ng d li u ã b t c.
  • 88. Ch ng 7: T ng k t 92 7.2. H ng phát tri n Trong t ng lai, ng ng PacketCap c phát tri n thêm nh ng ch c n ng m i và nâng c p ch c n ng hi n i ch a c t t. • H tr b t các gói tin ng th i trên nhi u card ng • ng thêm s l ng protocol mà ch ng trình có th phân tích và trích c thông tin. • tr u thông tin b t c theo các nh ng a Ethereal, TcpDump..
  • 89. Ph L c 93 PH L C H ng d n s d ng PacketCap 1.Ch ng trình PCServer ch y ch ng trình Server n ch c n vào th c ch a ch ng trình server và gõ l nh ./pcserver thì ch ng trình c th c thi. thoát kh i ch ng trình PCServer n có th dùng ch ng trình Client g i yêu c u k t thúc ch ng trình PCServer, ho c nh n t h p phím Ctrl-C trên console ang ch y PCserver. 2. Ch ng trình PCManager 2.1. PCManager trên môi tr ng Linux ng t nh khi ch y PCServer, n vào th c có ch a ch ng trình PCManager r i gõ l nh ./pcman.Ch ng trình yêu c u nh p a ch IP a máy ch y PCServer. N u k t n i thành công thì ch ng trình hi n th các dòng thông báo, n ch c n nh p các giá tr hi n th trên màn hình là có th i u khi n c ho t ng a PCServer.
  • 90. Ph L c 94 2.2. PCManager trên môi tr ng Windows Double click chu t vào file PCManager.exe, giao di n a ch ng trình Hình 7-1 Màn hình PCManager ánh a ch IP a PCServer vào c PCServerIP, click chu t vào nút Connect n u k t n i thành công thì dòng tr ng thái phía d i nút Connect thông báo k t qu k t n i thành công hay không. N u thành k t n i thành công thì các nút l nh có hi u l c. Lúc này ta m i có th th c hi n các thao tác i u khi n c. Ví d b t t t các gói tin i qua card ng( a máy ang ch y PCServer) và u k t qu vào chính máy tính ang ch y PCServer thì ch c n click chu t vào nút StartCapture k t thúc ch ng trình PCServer thì click chu t vào nút Terminate Server.
  • 91. Tài li u tham kh o 95 TÀI LI U THAM KH O [1] Nguy n Ph ng Lan – Hoàng c i, L p trình Linux t p 1, NXBGiáo D c, H Chí Minh, 2001 [2] Sams, Linux Programming Unleashed, 1999 Website [3] VietNam OpenSource Forum, www.vnoss.org [4] MySQL, www.mysql.com [5] libpcap, www.tcpdump.org [6] SourceForge, www.sourceforge.net