bat goi tin_tren_mang
Post on 19-Jun-2015
48 Views
Preview:
TRANSCRIPT
TR NG I H C KHOA H C T NHIÊNKHOA 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 CHOVI 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ÊNKHOA 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 CHOVI 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.................................................................................... 14DANH SÁCH NG .................................................................................. 15PH N 1: T NG QUAN .............................................................................. 16Ch ng 1: Gi i thi u tài .......................................................................... 17
1.1. t v n .......................................................................................... 171.2. Gi i thi u tài.................................................................................. 181.3. Yêu c u a tài .............................................................................. 19
PH N 2: TÌM HI U CÁC V N L P TRÌNH ...................................... 20Ch ng 2 : Th vi n l p trình ng libpcap ................................................ 21
2.1. Gi i thi u libpcap............................................................................... 212.2. Cài t th vi n libpcap ..................................................................... 213.3. Các b c xây d ng ch ng trình s d ng libpcap.............................. 223.4. Chi ti t các b c ................................................................................ 23
3.4.1. Ch n Interface( card ng) ......................................................... 233.4.2. M device l ng nghe( sniff) d li u......................................... 243.4.3. c traffic .................................................................................... 25
Ch ng 3: H qu n tr s d li u MySQL ............................................... 343.1. Gi i thi u v MySQL......................................................................... 343.2. Cài t MySQL.................................................................................. 34
3.2.1. Cài t MySQL t các gói nh phân ............................................ 343.2.2. Cài t t mã ngu n..................................................................... 35
3.3. S d ng MySQL ................................................................................ 363.3.1. L nh mysql .................................................................................. 363.3.2. L nh mysqladmin ........................................................................ 363.3.3. L nh mysqlshow.......................................................................... 363.3.4. L nh grant.................................................................................... 373.3.5. L nh Revoke................................................................................ 383.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 .................................................... 384.4.1 mysql_init..................................................................................... 383.4.2 mysql_real_connection ................................................................. 393.4.3 mysql_query ................................................................................. 403.4.4. mysql_affected_rows ................................................................... 403.4.5. mysql_store_result ....................................................................... 403.4.6. mysql_fetch_row ......................................................................... 403.4.7. mysql_row_seek .......................................................................... 413.4.8. mysql_free_result ........................................................................ 41
Các danh c
12
Ch ng 4: L p trình socket .......................................................................... 424.1. Gi i thi u v l p trình socket ............................................................. 424.2. Nguyên lý ho t ng a socket......................................................... 424.3. L p trình v i socket ........................................................................... 44
4.3.1. Các thu c tính a socket............................................................. 444.3.1.1. Vùng( domain) ...................................................................... 445.3.1.2. Ki u socket(type)................................................................... 464.3.1.3. Giao th c a socket( protocol) ............................................. 47
4.3.2. o socket.................................................................................... 484.3.3. nh a ch cho socket................................................................ 494.3.4. t tên cho socket........................................................................ 514.3.5. o hàng i cho socket .............................................................. 524.3.6. Ch và ch p nh n k t n i............................................................. 534.3.7. Yêu c u k t n i ............................................................................ 544.3.8. óng k t n i ................................................................................ 554.3.9. Giao ti p b ng socket................................................................... 564.4. S d ng socket trong ng ng minh a ....................................... 58
PH N 3: XÂY D NG NG NG TH NGHI M PACKETCAP ......... 59Ch ng 5: Phân tích và thi t k PacketCap .................................................. 60
5.1. Kh o sát hi n tr ng ............................................................................ 605.2. Phân tích và xác nh yêu c u ............................................................ 61
5.2.1. Phân tích ...................................................................................... 615.2.2. Xác nh yêu c u ......................................................................... 61
5.3. Các h ng xây d ng ng ng PacketCap......................................... 635.3.1. Phân tích h ng phát tri n d a trên Ethereal................................ 635.3.2. Phân tích h ng phát tri n d a trên libcap ................................... 645.3.3. L a ch n h ng phát tri n PacketCap ......................................... 64
5.4. Các thành ph n PacketCap ................................................................. 655.5. Xây d ng mô hình use case................................................................ 66
5.5.1. Xác nh Actor và use case .......................................................... 665.5.2. Mô hình use case ......................................................................... 66
5.6. t use case.................................................................................... 675.6.1. Connect........................................................................................ 675.6.2. StartCapture................................................................................. 685.6.3. StopCapture ................................................................................. 695.6.4. GetFilter....................................................................................... 705.6.5. Terminate..................................................................................... 71
Các danh c
13
5.7.Thi t k d li u ................................................................................... 725.7.1. Phân tích các h ng l u tr ......................................................... 725.7.2. Thi t k s li u................................................................... 75
5.7.2.1. Danh sách các i t ng (table)............................................. 755.7.2.2 Table PACKET ...................................................................... 756.7.2.4. Table IP ................................................................................. 765.7.2.5. Table TCP ............................................................................. 765.7.2.6. Table UDP............................................................................. 775.7.2.7 Table ICMP ............................................................................ 775.7.2.8 Table IGMP............................................................................ 785.7.2.9. Table ARP............................................................................. 80
5.8. Xây d ng PCServer( server), PCManager(client)............................... 815.8.1. L u PCServer ......................................................................... 815.8.2. L u PCManager( Client)......................................................... 825.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) .......... 85Ch ng 6: Cài t và th nghi m................................................................. 87
6.1. Cài t................................................................................................ 876.2. Th nghi m........................................................................................ 88
6.2.1. Mô hình th nghi m 1.................................................................. 886.2.2. Mô hình th nghi m 2.................................................................. 896.2.3. Mô hình th nghi m 3.................................................................. 90
Ch ng 7: T ng k t ..................................................................................... 917.1. K t lu n.............................................................................................. 91
7.1.1. K t qu t c.......................................................................... 917.1.2. n ch ........................................................................................ 91
7.2. H ng phát tri n ................................................................................ 92PH L C H ng d n s d ng PacketCap ................................................... 93
1.Ch ng trình PCServer.......................................................................... 932. Ch ng trình PCManager ..................................................................... 93
2.1. PCManager trên môi tr ng Linux ................................................. 932.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...................................................... 65Hình 5-2 Mô hình use case ........................................................................... 66Hình 5-3 Mô hình l u tr 1 .......................................................................... 72Hình 5-4 Mô hình l u tr 2 .......................................................................... 73Hình 5-5 Mô hình l u tr 3 .......................................................................... 74Hình 5-6 L u PCServer........................................................................... 81Hình 5-7 L u PCManager ....................................................................... 82Hình 6-1 Mô hình th nghi m 1 ................................................................... 88Hình 6-2 Mô hình th nghi m 2 ................................................................... 89Hì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 .................................................................. 48ng 4-2 Các mã l i a hàm bind() ............................................................ 51ng 4-3 Các mã l i a domain AF_UNIX ................................................ 52ng 4-4 Mã l i a hàm connect().............................................................. 55ng 5-1 Xác nh yêu c u........................................................................... 62ng 5-2 Danh sách các i t ng ............................................................... 75ng 5-3 Table PACKET............................................................................. 75ng 5-4 Table IP ........................................................................................ 76ng 5-5 Table TCP..................................................................................... 76ng 5-6 Table UDP.................................................................................... 77ng 5-7 Table ICMP .................................................................................. 77ng 5-8 Table IGMP.................................................................................. 78ng 5-9 Table ARP .................................................................................... 80ng 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("%s\n",errbuf);
exit(1);
}
printf("DEV: %s\n",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(): %s\n",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,"%s\n",errbuf);
exit(1);
}
descr = pcap_open_live(dev,BUFSIZ,1,-1,errbuf);
if(descr == NULL)
{
printf("pcap_open_live(): %s\n",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_compile\n");
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("%s\n",errbuf);
exit(1);
}
printf("DEV: %s\n",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(): %s\n",errbuf);
exit(1);
}
packet = pcap_next(descr,&hdr);
if(packet == NULL)
{
printf("Didn't grab packet\n");
exit(1);
}
printf("Grabbed packet of length %d\n",hdr.len);
printf("Recieved at ..... %s\n",ctime((const
time_t*)&hdr.ts.tv_sec));
pcap_close(descr);
}
Ch ng trình này in ra chi u dài và th i gian b t gói tin u tiên mà
nó b t c. Hàm 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 numpackets\n",argv[0]);
return 0;
}
dev = pcap_lookupdev(errbuf);
if(dev == NULL)
{
printf("%s\n",errbuf);
exit(1);
}
descr = pcap_open_live(dev,BUFSIZ,0,-1,errbuf);
if(descr == NULL)
{
printf("pcap_open_live(): %s\n",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 ngthông theo yêu c u c a khách hàng c ng nh phát hi ntr 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 ppháp.
• t c hành ng trên nên là online (phân tích và ukhi 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
1B t và phân tích c các gói tin a nh ng protocol thông ng
nh TCP, UDP, ICMP, ARP...
2Cho 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 .
3Cho 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ínhUse-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
TTê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
3Dest 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
TTê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 IP5.7.2.5. Table TCP
ST
TTê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
TTê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
TTê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
2ICMP message
groupChu 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
TTê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
2IGMP message
groupChu 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
TTê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 ARPARP 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ô
thTên i t ng Ki u i
ngGhi 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 Combobox
l ng packet c n b t
13 IDC_STATIC Label Server IP
14 IDC_IPADDR_SERVER Textbox Nh p a ch IP máyPCServer 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 nth 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 ccài t trên 2 môi tr ng Linux và Windows.
• Môi tr ng cài t ng ngo Windows XP Professionalo Linux Redhat 9.0
• Môi tr ng l p trìnho C for Linuxo Visual C++ 6.0
• Môi tr ng cài t th nghi mo PCServer: Linux Redhat 9.0o PCManager: Windows XP Professionalo 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
top related