Tải bản đầy đủ (.pdf) (78 trang)

khảo sát các thư viện bắt gói lớp 2 và lớp 3

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.18 MB, 78 trang )





HC VIN CÔNG NGH N THÔNG

KHOA CÔNG NGH THÔNG TIN 2



 ÁN/KHOÁ LUN
TT NGHII HC


Đề tài:
KHN BT GÓI
LP 2 VÀ LP 3

Mã số đề tài: 11407170011




ng dn : ThS LÊ PHÚC
Sinh viên thc hin : NGUY
Mã s sinh viên : 407170067
Lp : 
Khoá : 2007-2012
H : I HC CHÍNH QUY







TP.HCM , tháng 12/2011
  


Nguy-D07THM1

NHN XÉT CNG DN
  

















TP Hồ Chí Minh, Ngày …… tháng 12 năm 2011

ng dn





ThS. LÊ PHÚC
  


Nguy-D07THM1

LI M U
Công ngh mng máy tính và truyn thông ngày c s dng mt cách
rng rãi vi nhng phn mm ng dng c vi cung ci dùng. S
thành công ca mng Internet mang thông tin n m, mi t chc và mi
công ty. Mi ngày mi sn phm phn mm c vit ra nhng công
ngh mi.
Sc m phc tp ca mc phát trin mu
  s dng ca thit b i dùng cuu
 i làm khó cho nhi thit k, b ng và m bo tính an ninh ca
mng.
 nhng công c cn thit có kh 
tích, chm tra hong và v bo mt ca các thông tin truyn trên
mng.
 có th kic các lung, theo dõi 
ng thi theo dõi hong ci s dng v các v trên
ng truyn, s tn công ca virus hay nhng tn công ca Hacker. Mt git
 dng nhng công c bt gói và phân tích kt qu t các gói b có
th gii quyt các v nêu trên.

Hin nay, có rt nhiu công c bc phát trin bi các nhà phát trin ng
dng ni ti công c bt gói Wireshare, Tcpdump
   

  
 . Chính vì  nêu trên, em 
 .

 
 nm bc các git  có th thu
thp, giám sát, quc thông tin trên mng qua vic phân tích ni dung các gói
tin b giúp em có th trang b tt cho hành trang kin thc ca mình
ng.
Ni dung ca báo cáo  án tt nghip gm có:
Chương 1: Tổng quan về bắt gói.
Chương 2: Các giao thức và khuôn dạng dữ liệu chính.
Chương 3: Thư viện lọc gói lớp 2 và lớp 3.
Chương 4:Đánh giá hiệu suất bắt gói của thư viện bắt gói lớp 2 và thư viện bắt
gói lớp 3.
Phần kết luận và các tài liệu tham khảo.
  
Nguy-D07THM1


LI C


Sau thi gian hc tp tng Hc Vin Công Ngh 
s ti thành ph H c các thy cô giáo trang b cho em nhng
kin thn ca ngành Công ngh ng th

v chuyên ngành mng máy tính và truyn thông.
u kin cho em có th tìm hic các v
n tng vng chc
ng vn dng nhng kin thc h có
th góp phn xây dng ngành công ngh thông tin nói chung và ngành mng máy tính
và truyn thông nói riêng ngày càng phát trin vi nhng công ngh tiên tin hin nay.
Em xin bày t lòng cng, ti thy, cô và các anh ch
khoa Công ngh n tình ging d cho em trong sut thi
gian hc tp va qua tng.
ng thi em xin gi li cu sc ti Th,
ng dn em hc tp, tìm hiu, nghiên cu và trau di kin th hoàn
 tài báo cáo tt nghip này.
M gng trong nghiên cu và thc hi i gian và
 còn hn ch nên chc chn bài báo cáo s không tránh khi nhiu thiu sót.
E
  .



  

Nguy-D07THM1 Trang i
MC LC



LI M U
LI C
MC LC i
DANH MC CÁC BNG, HÌNH iv

DANH MC CÁC CM T VIT TT v
CHƯƠNG 1. TNG QUAN V BT GÓI 6
1.1 Gii thiu . 6
1.2 Kin trúc bt gói d liu 7
1.2.1 Card mng và trìu khin thit b NIC. 7
1.2.2 u khin bt gói. 10
1.3 i NDIS 13
1.4 Các quá trình x lý bt và gi gói. 19
1.4.1 Quá trình lc. 19
1.4.2 c d liu. 20
1.4.3 Quá trình tiêm gói. 23
1.5 Các loi b m. 23
1.5.1 B m ht nhân. 23
1.5.2 B m mi dùng 24
1.6 Các kin trúc bt gói. 25
1.6.1 Kin trúc BSD Packet Filter. 25
1.6.1.a. Network Tap. 26
1.6.1.b. Filter. 26
1.6.1.c. Kernel Buffer. 28
1.6.1.d. n Libcap. 28
1.6.2 Kin trúc ca WinPCap. 29
1.6.2.a. Tng quan v kin trúc. 29
1.6.2.b. Nha WinPCap. 31
CHƯƠNG 2. CÁC GIAO THC VÀ KHUÔN DNG D LIU CHÍNH 34
2.1 B giao thc TCP/IP. 34
2.1.1 Khái nim. 34
2.1.2 Mn gc. 34
2.1.3 m. 36
2.1.4  liu trong chng giao thc TCP/IP 36
  


Nguy-D07THM1 Trang ii
2.1.5 t cha các tng. 37
2.1.5.a. Tng ng dng(Application Layer). 37
2.1.5.b. Tng giao vn(Transport Layer). 37
2.1.5.c. Tng Internet(Internet Layer). 37
2.1.5.d. Tng Liên kt(Link Layer). 38
2.1.6 So sánh mô hình TCP/IP và OSI 38
2.2 Cu trúc khung tin và các giao thc truyn tin. 39
2.2.1 Ethernet. 39
2.2.1.a. Cu trúc khung tin Ethernet. 39
2.2.1.b. Ca ch Ethernet. 41
2.2.2 ARP(Address Resolution Protocol). 41
2.2.3 RARP(Reverse Address Resolution Protocol). 42
2.2.4 IP(Internet Protocol). 43
2.2.5 ICMP(Internet Control Message Protocol). 45
2.2.6 TCP(Transmission Control Protocol). 47
2.2.7 UDP(User Datagram Protocol) 48
2.2.8 HTTP (HyperText Transfer Protocol). 49
2.2.9 DNS(Domain Name System). 50
CHƯƠNG 3. N LC GÓI LP 2 VÀ LP 3 52
3.1 Các khái nim liên quan. 52
3.2 n bt gói lp 3 (.NET Library). 52
3.2.1 Khái nim 53
3.2.2 Hong ca .NET Socket. 55
3.3 n bt gói lp 2. 55
3.3.1 WinPcap 55
3.3.1.a. Khái nim. 56
3.3.1.b. Hong ca Winpcap. 57
3.3.2 PacketX. 58

3.4 So sánh và Nh bt gói. 59
3.4.1 So sánh Raw Socket và WinPcap. 59
3.4.2  60
CHƯƠNG 4. 
 62
4.1  62
4.1.1  2. 62
4.1.2  62
  

Nguy-D07THM1 Trang iii
4.2  63
4.2.1  63
4.2.2  65
4.2.3  66
4.2.4  67
4.3  71
KT LUN 73
DANH MC TÀI LIU THAM KHO 74

 n 

Nguy-D07THM1 Trang iv
DANH MC CÁC BNG, HÌNH

Danh mc các bng:
Bng 2.1  37

Danh mc các hình nh:
Hình 1.1 Cu trúc NPF 8

Hình 1.2  n ng dng 9
Hình 1.3 Cu trúc cu khin bt gói 11
Hình 1.4 Cu trúc cu khin vi hai adapter và hai ng dng 12
Hình 1.5 Mt kin 16
Hình 1.6 Packet Capture Driver trong NDIS 18
Hình 1.7  26
Hình 1.8 WinPCap và NPF 29
Hình 1.9 Kin trúc Winpcap tng quát 31
Hình 2.1  35
Hình 2.2  liu theo giao thc TCP/IP 36
Hình 2.3  38
Hình 2.4  39
Hình 2.5  42
Hình 2.6  43
Hình 2.7  46
Hình 2.8  47
Hình 2.9  49
Hình 2.10  50
Hình 3.1  54
Hình 3.2  55
Hình 3.3  60
Hình 4.1  62
Hình 4.2  63
Hình 4.3  63
Hình 4.4  64
Hình 4.5  64
Hình 4.6  65
Hình 4.7  66
Hình 4.8  68
Hình 4.9  68

Hình 4.10  69
Hình 4.11  70
Hình 4.12  71




  


 D07THM1 Trang v
DANH MC CÁC CM T VIT TT


T VIT TT
T VI
GI
OSI
Open Systems Interconnection
Kt ni h thng m
LAN
Local Area Network
Mng cc b
WAN
Wide Area Network
Mng din rng
SA
Source Address
a ch ngun
DA

Destination Address
a ch 
UDP
User Datagram Protocol
Giao thc d lii
dùng
TCP
Transmission Control Protocol
Giao thu khin truyn
dn
ICMP
Internet Control Message Protocol
Giao thu
khin Internet
SNMP
Simple Network Management Protocol
Giao thc qun lý mng
n
IP
Internet Protocol
Giao thc Internet
FTP
File Transfer Protocol
Giao thc truyn tp tin
CPU
Center Processing Unit
 x lý trung tâm
DNS
Domain Name Service
Dch v tên min

DHCP
Dynamic Host Configuration Protocol
Giao thc cu hình máy
ch ng
HTTP
Hyper Text Transfer Protocol
Giao thc truy
bn
PPP
Point-to-Point Protocol
Giao thm nm
DLL
Dynamic Link Library
n liên kng
TOS
Type Of Service
Loi dch v
TTL
Time To Live
Thi gian sng
NDIS
Network Driver Interface Specification
nh rõ giao tiu
khin mng

  


 D07THM1 Trang 6
CHƯƠNG 1. TNG QUAN V BT GÓI


1.1 Gii thiu .
Nhng công c bt gói c t thc hin công vic riêng cng
cn thu thp d liu truyn trên mng, bt gói (capturing) trong khi m
vic. Vic x lý bt gói tp trung  ch thu thp, lng nghe trên mng, mi khung
truyn, không ph thuc vào ngun.
Hu ht các công ngh truyn dn và giao thc truyn thông làm phc tp
thêm nhim v  na, kh tht quan trng, 
có th bc d liu t mng hong nhanh vi t cao mà không làm
mt gói d liu.
 bt d liu t mt mng: Th nht là da trên
vic s dng nhng thit b phn cng chuyên dng, trong khi cách th hai là s
dng phn cng ca mt PC hay máy tr  ng kt nn kênh truyn
  hai, card mng ca máy tính s d thu thp
cách khung (frames) t mng, và phn mm m nhim x lý bt gói.
Gii pháp phn mm ng có kh c hin thc bit là trên
nhng máy tính yu. Ni r , d chnh sa và nâng cp chn
mm. Vc hin din trong hu ht kin trúc m
kh c hin cao ca nhng phn cng chuyên dng không thc s cn.
Vic thc hin b  c l  ng t Berkeley Packet Filter (BPF),
c phát trin bi S.McCanne và V.Jaconbson ti hc ca California.
BPF là mt thành phn ht nhân ni ting s du khin bt gói
(capture driver) trong nhng phiên bn ca UNIX vi hiu qu ca nó rt cao, d
trin khai và kh  ng ca nó cho giao tip mi dùng vn
libpcap.
S phát trin rng rãi ca Windows vi nhng nhim v thc hin 
là nhng nhim v truyn thc thc hin mt cách tin cy trên nhng máy
trm Unix làm b qua nhvi nhiu v . Do vy, nó hn
ch s ng ca nhng công c cho vic phân tích và bo mt
trên nn tng này. Nhng c gc t to ra mt kin trúc có kh

  rng và mnh m cho vic phân tích mng  mc thp trên nn tng
Wini kin trúc này là mt h thng m u tiên cho
vic bt gói d liu trên Win32 và nó ly khong trng quan trng gia Unix và
Windowsc tiêu vi hiu sut là v 
nó có th h tr cho các ng di hiu sut cao.
Vic lc to ra t mt thành phn nhân ca h    la
chn gói tin) và m n ch     cung c  n ng
dng). Thành phn sau cùng cung cp mt chun giao tip cho vic truy cp mng
  


 D07THM1 Trang 7
mc thp và cho phép lp trình viên có th c lp trình  mc nhân ca h
u hành. WinPCap bao gm mu khin ch  ht nhân tc gi
là Netgroup Packet Filter (NPF), và tn mi dùng có kh 
thích vi libpcap mà to ra
nn tng mt tp các chc bt gói. WinPCap có th np các ng dng
cn Win32 d dàng và nó có th cho phép mt tp l
c s dng trên Win32 ngay lp tc, ch sau mt quá trình biên dn.
 na, do vic quan trng cng, WinPCap cung cp các li
gi h thng rõ ràng cao cho vi
1.2 Kin trúc bt gói d liu
Trong phn này s c s dng trong vic bt gói
bng vic nhn din các thành phc bit ca mt kin tc
bng.
c bit, chúng ta tc nhn v bi card mng
c chuyn ti b nh b nh chính ca máy trn ng dng cui cùng
ng cu khin thit b và h u hành. Mc dù kin trúc
    c cung cp bi BPF và b   n
WinPCn cho nhng nguyên t gii quyt

v khác. K tip,nhng thành phc yêu cu bi WinPC x
lý mn và phân phn ng du din ca hình
1.1 và hình 1.2.
1.2.1 Card mu khin thit b NIC.
Mt card mng hin nay có s ng gii hn thc s ca b nh on-board,
ng là vài Kbyte. B nh này yêu c cho phép nhn và gi gói tin ti thi
m t liên kt t thuc vào kh a máy trm ch
na, NIC thc hin mt vài kii CRC, khung Ethernet ngn,
trong khi nh trong b nh on-board, dng khung
 b loi b ngay tc thì mà không xy ra mt thao tác kim tra 
lp trên.
  


 D07THM1 Trang 8

Hình 1.1 Cu trúc NPF
Sau khi nhc nhn v bi card NIC, nó s sinh ra mt yêu
cu chuyn thng ti bus controller cho vic truyn d liu trên bus master. Ti thi
m này, NIC s chim quyu khin ca bus, chuyn gói tin t b m NIC
vào trong b nh chính ca máy trc biu din trong hình 1.2. Sau
 gii phóng bus và sinh ra mt lnh ngt phn cng chuyn thng ti chip
u khin ngt lc th tu khin
ngt h c gn vào th tc dch v ngt (ISR) cu
khin thit b NIC.
ISR cu khic vit tt có th d dàng làm vic. V n, nó
kim tra nu có liên quan ngn bn thân nó ( mt lnh ngt có th chia s gia
vài thit b trong kin trúc x86) và bich làm vic vi mt
c gi là Deferred Procedure Call, hay là DPC) mà s x lý
sau yêu cu phn cng và cnh báo tu khin l , trình

u khin lp giao thc, trình bt gói) mà mc nhn v. CPU s x lý
th tc DPC khi không có mt yêu cc ch. Nhng yêu cu ngt ti
t c vô hiu hóa khi mu khin thit b c hin công vic
ca nó, bi vì quá trình x lý cc mt quá trình yêu
  


 D07THM1 Trang 9
cu k tipa, do vic sinh ra ngt là hong rt tn chi phí nên NIC hin
nay cho phép nhic chuyn trong cùng mt ng cnh ca mt lnh ngt
 mu khin l x n mi thi
c kích hot.

Hình 1.2  n ng dng
          
 
 
 NIC và 
 thêm các 
có

 

o 


               


              


o 








  


 D07THM1 Trang 10
1.2.2 u khin bt gói.
Nhng thành phn bng trong sut vi nh n mm
khác ging chng giao thn hành vi ca
h thng chun. Nó ch móc thêm vào trong h thng và có th ng xuyên cnh
c gi là tap() ngay khi gói tin mn t mng.
Nhng thành phc triu khin giao thc
mng trong Win32.
 u khin b  c thêm vào trong nhân ca windows cho kh
t gói d liu thô t mt mng bng cách gi BPF trong nhân ca
UNIX. Thêm na, nó cung cp mt vài chu khin
BPF g giúp cho s phát trin ca nhm tra
mm chính cu khin bt gói là cho hiu sut bt gói cao, tính linh
hot và tín vi BPF gc trong UNIX.
Kt qu cu khin bt gói có th:
o B   ng d liu thô t mng và chuyn chúng ti mt ng
dng mi dùng.

o Lc nhn bng vic thc hiu này có
ng ng dng bt gói có th c m
chun và chuyn chúng tu khiu khin s loi b
nhng b lc.
o Gi nhng gói tin trong mt b m khi ng d  n hoc nó
không có kh   chp nhn ht lung cn
t mng.
o Thu thp d liu t n và tr  mà
ng dng có th  duy trì ranh gii ca gói tin, nhng gói
c bc m ( gi d 
gm mt nhãn thi gian (time stamp), chiu dài, và offset ca sp xp d
liu.
o Vit nhn mng, tc là gi gói tin lên trên mng.
o Tính toán thng trên mng.
Kin trúc chi tit cu khin b

  


 D07THM1 Trang 11

Hình 1.3 Cu trúc cu khin bt gói
Nhng lên trên hình biu din lung các gói tin t mn
ng dng bt gói. Nha b m ht nhân và b m ng
dng ch th rt gói tin có th truyn gia hai thc th này trong mt li
gi h thng. Nhng xui ca hình cho tha
nhng gói tin t ng dn mng. WinDump và Libpcap không th gi gói tin
n m dng ch mng t i lên trên. u
khin không hn ch vic s dng vic s dng WinDump và có th  to
ra nhiu công c mng m bao gm kh o

gói tin mà có th c khai thác thông qua vic trc tip s dn liên kt
ng packet.dll.
Cc biu din trong hình trên t ng
dt mô t n cu khin bt gói. Cu trúc thc s phc
tu và có th th. Trong hình này biu din
mt cu hình cu khin vi hai card mng và hai ng dng bt gói.


  


 D07THM1 Trang 12

Hình 1.4 Cu trúc cu khin vi hai adapter và hai ng dng
 mi phiên bc thit lp gia mt adapter và m
bu khin phi duy trì mt b lc và mt b m. Mt card mng có
th c s dng bi nhiu ng dng ti cùng mt thm. Cho ví di s
dng mun bn hai tp tin riêng l, có th
xem hai phiên ca WinDump trên cùng mt card m lc là khác
nhau) ti cùng mt thu tiên s t mt b lc cho gói tin IP (
và mt b   chúng), và b lc th hai s là dành cho gói U
có th bin mt ng du khin bt gói, có
th nhn gói tin t nhiu giao tip cùng mt thm.
Chú ý rng phiên bn c  có kh u hình trong Windows
c trình bày trong hình 1.3 ( mt ng
dng bu này do hn ch trong kin trúc ca phiên bn này. T phiên
bn 2.02, trong Windows 95/98 có th thc hic ging trong Windows NT, có
nhing hu khin , và nó cho phép nhiu ng dng bt gói
có th làm vic trong cùng mt tha, nó có th cho ng d
làm vic trên nhiu card mng khác nhau.

Cu trúc lõi chính  gia nhng phiên bn Windows khác nhau là hoàn toàn
ging nhau. Cu trúc d liu bên trong không khác hoàn toàn, b m gói tin và b
lu khin trong cùng mi NDIS là ging nhau
trong nhng nn tc bp nhng hàm
  


 D07THM1 Trang 13
c cung cp bu khin và mn NDIS
c s dng bu khin b giao
tiu khin NIC. S khác nhau gia mi quan h và s i
nhng phn khác nhau ca h u hành ( nhng li gc và vic x lý t
ng dng mi dùng, hàm th ng ca nhng h u
hành s khác nhau hoàn toàn.
c thc hin bi hàm tap() là lc, tc là nhng gói tin
 dò tìm cái nào là nhi dùng c cung
cp t BPF, máy lc ca NPF là mt b x lý o vi nhng ta nhng ch
th mà có th thc hin mt vài x   n trên b m chung cha các byte.
Winpcap (và libpcap) cung cp mt API mi dùng có th chuyn nhanh lên
mc cao ( ví d  n tp hp ch th mã gi ( chng
h   ng Ethernet type ca ph       ng
protocol type c IP là bng 17, thì nó s tr n
máy lc, kích hot chúng. Kin trúc c  c áp dng mt b lc gói tin trong khi
nó v m cu khing gói
tin không cn thit, mc truyn b
nh h thng.
c chp nhn bi b lc kt hp vi thông tin lp v
là chiu dài và nhãn thi gian nhc, cái mà có ích cho truy cp ng dng và x
n b ng bit là b m ht nhân (kernel
 nh c chuyn ti mi dùng (

xem hình 1.c và kin trúc ca b m này là mt thng s quan trng
cho vic thc thi quá trình x lý bt gói. Cho ví d, nu h thông b c thit
k tt và ln thì có th bù cho s chm chp ca ng dng trong khi bùng n mng
hoc gim s li gi h thng yêu cu bi chuyn d liu t u khin bt gói
( chng hn t b m nhân ti ng dng).
Nhng ng di dùng ly nhng gói tin t b m nhân bi mt li
gi h thng gic, c phát trin, li gi này s gây nên mt
li khn cu ca hàm read() (xem hình 1.1), cái mà s kim tra xem trng thái ca
b m nhân NPF : Nu b m là không rng, ni dung cc chuyn
mt b c cp phát bi dùng,  -buffer trong hình 1.1. ng
dc khi mà mt d lin mó
nó có th bu x lý nhng gói tin.
1.3 i NDIS
Chú ý  không    các phiên  UNIX có BPF (
  và  trong   các  pcap   
này.          các gói tin theo cách 
thích BPF    
  


 D07THM1 Trang 14
. Nó là   nó 

- 





-              

             


 



NDIS           


 


NDIS là chun cung cp cho vic nói chuyn gia card mng (network card)
và các giao thc (protocol) mng c dùng. NDIS cho phép s dng nhiu giao
thc mng trên cùng mt card mng. Mc nh Windows NT AdvancedServer c
cung cp s dng bn giao thc  là NetBEUI (NetBIOSExtended User Interface),
TCP/IP, Microsoft NWLINK, và Data Link Control.TDI cung cp kh  nói
chuyn gia các giao thc mng vi các phn mm mng mc trên  Server và
Redirector). Bt c trm làm vic nào (s dng h u hành Windows NT
Workstation) u có th các trình u khin u khin card mng c cung cp
ni ti trong Windows NT Advanced Server.Trong ng hp phi s dng mt
loi card mng khác, tc là phi cn trình u khin cho card mng không có sn
trong Windows NT, NDIS vn có th s dng  giao thc mng trên card mng
này. Khi máy tính s dng  giao thc mng, các gói tin d liu s c chuyn 
thông qua giao thc mng th nht (giao thc này c gi là primary protocol),
nu không c máy tính s s dng tip giao thc th hai và c th tip tc. Trên
mi máy tính c cài t Windows NT, mi mt giao thc mng c t s dng
trên mt card mng cn phi c t mt giá tr gi là LAN adapter number trên
card mng 


  


 D07THM1 Trang 15

       







            g

o 
            
    

          


           

o 
            




 

  


 



khi

             
            
     
  


 D07THM1 Trang 16


           
(Trans
           




y mt ví d v cu trúc NDIS vi hai chng bt gói trên cùng
mt card mng: mt vu khin NIC và mu khin giao thc, khác
vi mu khin NIC , mu khin trung gian và mu khin

giao thc.

Hình 1.5 Mt kin
u khin bt gói tin cn giao tip c vu khin m nhn
d liu t mng) và vi ng dng m cung c i
c trin khai trong mt cu khin
giao thu này cho phép nó có th c lp t phn cng mc thc
hin vi tt c card mc h tr bi Windows. Tuy nhiên cn chú ý rng trình
u khin bt gói ch làm vic ngay lp tc trên Ethernet adapter, loopback adapter
  


 D07THM1 Trang 17
và trên nhng kt n   hn ch lm dng bi kin trúc l   u
khin chú ý rng mt kt nc thy bu khin
giao tht Ethernet NIC, và mi gói tin nhn v có m Ethernet gi
c to ra b    u khin giao giao thc vit cho
Ethernet làm vic trên kt ni WAN mà không ci thêm gì n
phi hiu rng nhc bit ging PPP NCP-LCP không th nhìn thc
bu khin giao thc, bi vì kt nc u này ngha là
u khin gói tin không th bc nhng loi gói tin này.
Chú ý rng nhng h u hành WIN32 có s khác nhau v phiên bn ca NDIS:
 NDIS 2.0: MS-DOS, Windows for Workgroups 3.1, OS/2
 NDIS 3.0: Windows for Workgroups 3.11
 NDIS 3.1: Windows 95
 NDIS 4.0: Windows 95 OSR2, NT 4.0, Windows CE 3.0
 NDIS 5.0: Windows 98, 98 SE, Me, 2000
 NDIS 5.1: Windows XP, Server 2003, Windows CE 4.x , 5.0
 NDIS 5.2: Windows Server 2003 SP2
 NDIS 6.0: Windows Vista

 NDIS 6.1: Windows Vista SP1, Server 2008
 NDIS 6.20: Windows 7, Server 2008 R2
 NDIS 6.30: Windows 8




:

  


 D07THM1 Trang 18

Hình 1.6 Packet Capture Driver trong NDIS
Mt u khin giao thc (protocol driver) mà liên lc vu
khin NDIS  mc th    dng nhng ch  c cung cp bi
NDIS. Ví d chng hn, m u khin giao thc phi gi NdisSend hoc
NdisSend Packets  gi mt gói tin hoc nhin mu khin NDIS
 mc thp.
u khin  mc thp giao tip vu khin giao thc trong
mng b.Nó ch th gói tin mn bng cách gi hàm callback ca
u khin giao thc và chuyn mt con tr n mt b m, chiu dài ca nó,
và tc cn. Tên cu khin bt
gói là Packet_tap . Tuy nhiên, hành vi cu khin gói tin hoàn toàn khác
so vi mu khin giao thc chun. Thc t là:
o u khin gói tin nhn và x lý tt c c chuyn
hin ti trên m c bng cách chuyn ch
 card mc là ép nó nhn tt c các gói tin
t mng. M u khin giao thc chun ch qun lý nhng gói tin

n ho nó và nhng gói tin
broadcast.
o u khin gói tin không thc hin mt giao thng
gói tin và chuyi nhng nhãn thi gian và chiu dài ca nó,
n ng dng. Mu khin giao thc chun b ph t gói
  


 D07THM1 Trang 19
tin và chuyn ch d liu ti ng du khin b ph và
sao chép chúng ti ng dng vi d lic.
Chú ý rng trong vic thc th  c g c khi chng giao thc
chuyn trc tip bu khin card mu không th cho trình
u khin bt phn ca chng giao thi thích ti
u khin bt gói không có kh ng bc nhc
bit, bi vì nó không làm vic  mc phn mm, nó nm phía trên ca NDIS.
Nhng quy bao hàm chuyi trong ht nhân hoc trong
u khiu mà nó không có th trên Windows.
1.4 Các quá trình x lý bt và gi gói.
1.4.1 Quá trình lc.
 lc biu din  u khin bt gói bt ngun trc tip
t b lt c nhng th  b lc BPF vn có giá
tr. Mt ng dc thit lp b lc cho gói tin n có th xây dt
c gói chun BPF ( ví d mt li gi hàm pcap_compile ca libpcap)
và chuyn chúng tu khin, và quá trình lc s c thc hin ngay mc
hc chuyu khin thông qua mt li
gi IOCTL vu khin là pBIOCSETF. Mu quan trng rng là trình
u khin cn có kh m tra li mã lc ca ng dng. Tht v
máy mã giã BPF có th thc hic nhng tính toán s hc, r t
phép chia cho 0 hoc nhn mt v trí b nh cm, nc thc hin bi mt

u khin, chc chn s n mt màn hình xanh chng gp.
 o v , mc có nhiu li có th d
dàng làm phá v h thng. T u khin bt gói có th c s dng bi
i dùng, nó có th d cho mnh x gây ra thit hn h
thng thông qua nó. Bc cho mt
ng dc kim tra bi hàm bpf_validate cu khic khi
chp nhn nó. Nu mt b lc chp nhu khi
lc và thc thi nó trên mn, loi b nhu
kin lc. Nng b ln ng dng, hoc
t nó trong b m nu ng dng không sn sàng cho vic nhn d liu. Nu
không có b lu khin s chp nhn tt c các gói
n.
B lc áp dn gói tin khi nó vm trong b nh ca trình
u khin NIC, mà không cn phi sao chép chúng t  u khin gói tin.
u này cho phép t chi nhc khi m t
ti ca h thng.
Mt thú v ca vic khai thác b lc BPF bu khin
bt gói là vic s dng ca mt d liu tr v bng s c
  


 D07THM1 Trang 20
c áp dn mt gói tin, máy mã giã BPF s ch cho bit không ch nhng gói
tin phc truyn ti ng dng mà còn chiu dài ca phc sao chép.
u này hu dng cho vic t lý bt gói, bi vì ch mt phn ca gói tin cn
cho ng dng mc sao chép.
Mã ngun ca b lc là tc ly t tp tin phù hp ca
mã ngun BPF. Tp tin này cha ba hàm ch  hính: bpf_filter,
bpf_filter_with_2_buffers và bpf_validate.
o bpf_filter: mt hàm l    c s dng b  u

khin bt gói. Nó thi hành máy ghi, cái mà s chy mã lc. Nó cha hai
b m: mt b m cha mt gói tin và mt b m cha c
 chy. Nó tr ra chiu dài ca ph, hoc bng 0
nc loi b.
o bpf_filter_with_2_buffers: hàm này rt ging vi hàm bpf_filter,
 lc các gói l và d liu ca nó
r trong nhng b m khác nhau. Nó có 3 b m: Mt b
m cha ph ca gói tin, mt b m cha d liu ca gói tin
và mt b m ch thc thi. Hàm này thì chm
i tc cn bi
vì kic bit cc s dng bu khin bt
  ng hp c th   và d liu ca gói tin
    u khin nm  i trong nhng b m khác
nhau. Nó có th xy ra ví d ng hp mô ph
 c to ra bi mc phn mm và có th tách ra t
d liu.
o bpf_validate: hàm này kim tra mc mi, tr ra giá tr
 ng hp c tc này kim tra
rng lnh nhy có trong khi mã, kim tra b nh  hoc s
da ch, và hàm chia c biu din trong mã.
1.4.2 c d liu.
Trong khi ng dng mun thu thp nhng gói tin t mng. Nó thc hin mt
li gi read trên trìu khin b
ng dng ly li d liu thông qua li gi IOCTL; tuy nhiên kt qu là
ging nhau). Li gi này có th ng b hong b, bu
khi hai kh ng hu tiên,li g
ng dc dng ln khi mng hp th hai, ng
dc dng và phi kic thông dng
và khuyn ngh  truy cu khin là mng b bi vì
 có th trin khai trong ch  bng b luôn xy ra lt

  


 D07THM1 Trang 21
ng b có th s d thc him mc ng dng không cn
bi vì b u khing hiu qu và rõ 
u khin gói h tr c thi gian. Mt ng dng có th c thit lp
thi gian timeout thông qua IOCTL vi mã pBIOCSRTIMEOUT. Nu thi gian
timeout khác 0, mi li gi read thc hin bi ng dng s thoát ra khi ht thi gian
timeout dù là không có d lic nhn v.
Sau khi mc chp nhn bi b lu khin có th có
hai trng thái sau:
o ng dn sàng nhn gói tin, ví d c thi mt lnh
  ch kt qu ca li gi. Trong hp này gói tin
c sao chép ngay tn b nh ng dng, li gc
hoàn thành và ng dc.
o Không có mt lc nào ch ng hn ng d
thc hin mt d lii mt gói t tránh mt
gói tin, gói tin ph m cu khin và chuyn
n ng dng khi nó s sng sang nhn d liu, ví d trong li gc
tip theo.
u khin s dng mt b   nhn. Mt
gói tin  m vi m  duy trì thông tin ging chng hn
c ca, mc thêm
vào gi mà sp xp chúng nh ca vic sao chép. Kích
c ca b m tim bu ca quá trình bt là 0. Nó có th thit lp hoc
chnh sa trong mi thm bi ng dng thông qua li gi IOCTL. Khi mt
c mi ca b c thit lp, gói tin hin ti trong b m s b mt.
Nhn b loi b bi tru khin nu b y trong khi có
mc ca b u khin n nng n n

vic thc hin ca x lý bt gói. Thc vy, nó git ng dng bt gói,
cái mà cn hong trên mi gói tin, chia s x lý vi nhng nhim v khác trong
cùng mt thi gian, s không có kh c ti mng có t cao vng
traffic liên tc và bùng n. V này s ng máy chm
chp.Mu khin chy  mc hc vi bt
  xy ra mt gói d lit b
m thích hu khin có th ng gói tin trong khi ng dng
n, có th bù li s chm chp ca ng dt d liu khi
bùng n mng hoc mng hong  mc cao.
Nu b m không rng khi mà ng dng thc hin mt li gi h thng,
nhng gói tin trong b m c  u khi   n b nh ng
dng và li gc ngay tc thc hin xong. Có th c
chép t b m vòng cu khin b m ng dng vi mt li gc

×