HC VIN CÔNG NGH N THÔNG
KHOA CÔNG NGH THÔNG TIN 2
ÁN/KHOÁ LUN
TT NGHII HC
Đề tài:
KHN BT GÓI
LP 2 VÀ LP 3
Mã số đề tài: 11407170011
ng dn : ThS LÊ PHÚC
Sinh viên thc hin : NGUY
Mã s sinh viên : 407170067
Lp :
Khoá : 2007-2012
H : I HC CHÍNH QUY
TP.HCM , tháng 12/2011
Nguy-D07THM1
NHN XÉT CNG DN
TP Hồ Chí Minh, Ngày …… tháng 12 năm 2011
ng dn
ThS. LÊ PHÚC
Nguy-D07THM1
LI M U
Công ngh mng máy tính và truyn thông ngày c s dng mt cách
rng rãi vi nhng phn mm ng dng c vi cung ci dùng. S
thành công ca mng Internet mang thông tin n m, mi t chc và mi
công ty. Mi ngày mi sn phm phn mm c vit ra nhng công
ngh mi.
Sc m phc tp ca mc phát trin mu
s dng ca thit b i dùng cuu
i làm khó cho nhi thit k, b ng và m bo tính an ninh ca
mng.
nhng công c cn thit có kh
tích, chm tra hong và v bo mt ca các thông tin truyn trên
mng.
có th kic các lung, theo dõi
ng thi theo dõi hong ci s dng v các v trên
ng truyn, s tn công ca virus hay nhng tn công ca Hacker. Mt git
dng nhng công c bt gói và phân tích kt qu t các gói b có
th gii quyt các v nêu trên.
Hin nay, có rt nhiu công c bc phát trin bi các nhà phát trin ng
dng ni ti công c bt gói Wireshare, Tcpdump
. Chính vì nêu trên, em
.
nm bc các git có th thu
thp, giám sát, quc thông tin trên mng qua vic phân tích ni dung các gói
tin b giúp em có th trang b tt cho hành trang kin thc ca mình
ng.
Ni dung ca báo cáo án tt nghip gm 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
LI C
Sau thi gian hc tp tng Hc Vin Công Ngh
s ti thành ph H c các thy cô giáo trang b cho em nhng
kin thn ca ngành Công ngh ng th
v chuyên ngành mng máy tính và truyn thông.
u kin cho em có th tìm hic các v
n tng vng chc
ng vn dng nhng kin thc h có
th góp phn xây dng ngành công ngh thông tin nói chung và ngành mng máy tính
và truyn thông nói riêng ngày càng phát trin vi nhng công ngh tiên tin hin nay.
Em xin bày t lòng cng, ti thy, cô và các anh ch
khoa Công ngh n tình ging d cho em trong sut thi
gian hc tp va qua tng.
ng thi em xin gi li cu sc ti Th,
ng dn em hc tp, tìm hiu, nghiên cu và trau di kin th hoàn
tài báo cáo tt nghip này.
M gng trong nghiên cu và thc hi i gian và
còn hn ch nên chc chn bài báo cáo s không tránh khi nhiu thiu sót.
E
.
Nguy-D07THM1 Trang i
MC LC
LI M U
LI C
MC LC i
DANH MC CÁC BNG, HÌNH iv
DANH MC CÁC CM T VIT TT v
CHƯƠNG 1. TNG QUAN V BT GÓI 6
1.1 Gii thiu . 6
1.2 Kin trúc bt gói d liu 7
1.2.1 Card mng và trìu khin thit b NIC. 7
1.2.2 u khin bt gói. 10
1.3 i NDIS 13
1.4 Các quá trình x lý bt và gi gói. 19
1.4.1 Quá trình lc. 19
1.4.2 c d liu. 20
1.4.3 Quá trình tiêm gói. 23
1.5 Các loi b m. 23
1.5.1 B m ht nhân. 23
1.5.2 B m mi dùng 24
1.6 Các kin trúc bt gói. 25
1.6.1 Kin 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 Kin trúc ca WinPCap. 29
1.6.2.a. Tng quan v kin trúc. 29
1.6.2.b. Nha WinPCap. 31
CHƯƠNG 2. CÁC GIAO THC VÀ KHUÔN DNG D LIU CHÍNH 34
2.1 B giao thc TCP/IP. 34
2.1.1 Khái nim. 34
2.1.2 Mn gc. 34
2.1.3 m. 36
2.1.4 liu trong chng giao thc TCP/IP 36
Nguy-D07THM1 Trang ii
2.1.5 t cha các tng. 37
2.1.5.a. Tng ng dng(Application Layer). 37
2.1.5.b. Tng giao vn(Transport Layer). 37
2.1.5.c. Tng Internet(Internet Layer). 37
2.1.5.d. Tng Liên kt(Link Layer). 38
2.1.6 So sánh mô hình TCP/IP và OSI 38
2.2 Cu trúc khung tin và các giao thc truyn tin. 39
2.2.1 Ethernet. 39
2.2.1.a. Cu trúc khung tin Ethernet. 39
2.2.1.b. Ca 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 LC GÓI LP 2 VÀ LP 3 52
3.1 Các khái nim liên quan. 52
3.2 n bt gói lp 3 (.NET Library). 52
3.2.1 Khái nim 53
3.2.2 Hong ca .NET Socket. 55
3.3 n bt gói lp 2. 55
3.3.1 WinPcap 55
3.3.1.a. Khái nim. 56
3.3.1.b. Hong ca Winpcap. 57
3.3.2 PacketX. 58
3.4 So sánh và Nh bt 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
KT LUN 73
DANH MC TÀI LIU THAM KHO 74
n
Nguy-D07THM1 Trang iv
DANH MC CÁC BNG, HÌNH
Danh mc các bng:
Bng 2.1 37
Danh mc các hình nh:
Hình 1.1 Cu trúc NPF 8
Hình 1.2 n ng dng 9
Hình 1.3 Cu trúc cu khin bt gói 11
Hình 1.4 Cu trúc cu khin vi hai adapter và hai ng dng 12
Hình 1.5 Mt kin 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 Kin trúc Winpcap tng quát 31
Hình 2.1 35
Hình 2.2 liu theo giao thc 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 MC CÁC CM T VIT TT
T VIT TT
T VI
GI
OSI
Open Systems Interconnection
Kt ni h thng m
LAN
Local Area Network
Mng cc b
WAN
Wide Area Network
Mng din rng
SA
Source Address
a ch ngun
DA
Destination Address
a ch
UDP
User Datagram Protocol
Giao thc d lii
dùng
TCP
Transmission Control Protocol
Giao thu khin truyn
dn
ICMP
Internet Control Message Protocol
Giao thu
khin Internet
SNMP
Simple Network Management Protocol
Giao thc qun lý mng
n
IP
Internet Protocol
Giao thc Internet
FTP
File Transfer Protocol
Giao thc truyn tp tin
CPU
Center Processing Unit
x lý trung tâm
DNS
Domain Name Service
Dch v tên min
DHCP
Dynamic Host Configuration Protocol
Giao thc cu hình máy
ch ng
HTTP
Hyper Text Transfer Protocol
Giao thc truy
bn
PPP
Point-to-Point Protocol
Giao thm nm
DLL
Dynamic Link Library
n liên kng
TOS
Type Of Service
Loi dch v
TTL
Time To Live
Thi gian sng
NDIS
Network Driver Interface Specification
nh rõ giao tiu
khin mng
D07THM1 Trang 6
CHƯƠNG 1. TNG QUAN V BT GÓI
1.1 Gii thiu .
Nhng công c bt gói c t thc hin công vic riêng cng
cn thu thp d liu truyn trên mng, bt gói (capturing) trong khi m
vic. Vic x lý bt gói tp trung ch thu thp, lng nghe trên mng, mi khung
truyn, không ph thuc vào ngun.
Hu ht các công ngh truyn dn và giao thc truyn thông làm phc tp
thêm nhim v na, kh tht quan trng,
có th bc d liu t mng hong nhanh vi t cao mà không làm
mt gói d liu.
bt d liu t mt mng: Th nht là da trên
vic s dng nhng thit b phn cng chuyên dng, trong khi cách th hai là s
dng phn cng ca mt PC hay máy tr ng kt nn kênh truyn
hai, card mng ca máy tính s d thu thp
cách khung (frames) t mng, và phn mm m nhim x lý bt gói.
Gii pháp phn mm ng có kh c hin thc bit là trên
nhng máy tính yu. Ni r , d chnh sa và nâng cp chn
mm. Vc hin din trong hu ht kin trúc m
kh c hin cao ca nhng phn cng chuyên dng không thc s cn.
Vic thc hin b c l ng t Berkeley Packet Filter (BPF),
c phát trin bi S.McCanne và V.Jaconbson ti hc ca California.
BPF là mt thành phn ht nhân ni ting s du khin bt gói
(capture driver) trong nhng phiên bn ca UNIX vi hiu qu ca nó rt cao, d
trin khai và kh ng ca nó cho giao tip mi dùng vn
libpcap.
S phát trin rng rãi ca Windows vi nhng nhim v thc hin
là nhng nhim v truyn thc thc hin mt cách tin cy trên nhng máy
trm Unix làm b qua nhvi nhiu v . Do vy, nó hn
ch s ng ca nhng công c cho vic phân tích và bo mt
trên nn tng này. Nhng c gc t to ra mt kin trúc có kh
rng và mnh m cho vic phân tích mng mc thp trên nn tng
Wini kin trúc này là mt h thng m u tiên cho
vic bt gói d liu trên Win32 và nó ly khong trng quan trng gia Unix và
Windowsc tiêu vi hiu sut là v
nó có th h tr cho các ng di hiu sut cao.
Vic lc to ra t mt thành phn nhân ca h la
chn gói tin) và m n ch cung c n ng
dng). Thành phn sau cùng cung cp mt chun giao tip cho vic truy cp mng
D07THM1 Trang 7
mc thp và cho phép lp trình viên có th c lp trình mc nhân ca h
u hành. WinPCap bao gm mu khin ch ht nhân tc gi
là Netgroup Packet Filter (NPF), và tn mi dùng có kh
thích vi libpcap mà to ra
nn tng mt tp các chc bt gói. WinPCap có th np các ng dng
cn Win32 d dàng và nó có th cho phép mt tp l
c s dng trên Win32 ngay lp tc, ch sau mt quá trình biên dn.
na, do vic quan trng cng, WinPCap cung cp các li
gi h thng rõ ràng cao cho vi
1.2 Kin trúc bt gói d liu
Trong phn này s c s dng trong vic bt gói
bng vic nhn din các thành phc bit ca mt kin tc
bng.
c bit, chúng ta tc nhn v bi card mng
c chuyn ti b nh b nh chính ca máy trn ng dng cui cùng
ng cu khin thit b và h u hành. Mc dù kin trúc
c cung cp bi BPF và b n
WinPCn cho nhng nguyên t gii quyt
v khác. K tip,nhng thành phc yêu cu bi WinPC x
lý mn và phân phn ng du din ca hình
1.1 và hình 1.2.
1.2.1 Card mu khin thit b NIC.
Mt card mng hin nay có s ng gii hn thc s ca b nh on-board,
ng là vài Kbyte. B nh này yêu c cho phép nhn và gi gói tin ti thi
m t liên kt t thuc vào kh a máy trm ch
na, NIC thc hin mt vài kii CRC, khung Ethernet ngn,
trong khi nh trong b nh on-board, dng khung
b loi b ngay tc thì mà không xy ra mt thao tác kim tra
lp trên.
D07THM1 Trang 8
Hình 1.1 Cu trúc NPF
Sau khi nhc nhn v bi card NIC, nó s sinh ra mt yêu
cu chuyn thng ti bus controller cho vic truyn d liu trên bus master. Ti thi
m này, NIC s chim quyu khin ca bus, chuyn gói tin t b m NIC
vào trong b nh chính ca máy trc biu din trong hình 1.2. Sau
gii phóng bus và sinh ra mt lnh ngt phn cng chuyn thng ti chip
u khin ngt lc th tu khin
ngt h c gn vào th tc dch v ngt (ISR) cu
khin thit b NIC.
ISR cu khic vit tt có th d dàng làm vic. V n, nó
kim tra nu có liên quan ngn bn thân nó ( mt lnh ngt có th chia s gia
vài thit b trong kin trúc x86) và bich làm vic vi mt
c gi là Deferred Procedure Call, hay là DPC) mà s x lý
sau yêu cu phn cng và cnh báo tu khin l , trình
u khin lp giao thc, trình bt gói) mà mc nhn v. CPU s x lý
th tc DPC khi không có mt yêu cc ch. Nhng yêu cu ngt ti
t c vô hiu hóa khi mu khin thit b c hin công vic
ca nó, bi vì quá trình x lý cc mt quá trình yêu
D07THM1 Trang 9
cu k tipa, do vic sinh ra ngt là hong rt tn chi phí nên NIC hin
nay cho phép nhic chuyn trong cùng mt ng cnh ca mt lnh ngt
mu khin l x n mi thi
c kích hot.
Hình 1.2 n ng dng
NIC và
thêm các
có
o
o
D07THM1 Trang 10
1.2.2 u khin bt gói.
Nhng thành phn bng trong sut vi nh n mm
khác ging chng giao thn hành vi ca
h thng chun. Nó ch móc thêm vào trong h thng và có th ng xuyên cnh
c gi là tap() ngay khi gói tin mn t mng.
Nhng thành phc triu khin giao thc
mng trong Win32.
u khin b c thêm vào trong nhân ca windows cho kh
t gói d liu thô t mt mng bng cách gi BPF trong nhân ca
UNIX. Thêm na, nó cung cp mt vài chu khin
BPF g giúp cho s phát trin ca nhm tra
mm chính cu khin bt gói là cho hiu sut bt gói cao, tính linh
hot và tín vi BPF gc trong UNIX.
Kt qu cu khin bt gói có th:
o B ng d liu thô t mng và chuyn chúng ti mt ng
dng mi dùng.
o Lc nhn bng vic thc hiu này có
ng ng dng bt gói có th c m
chun và chuyn chúng tu khiu khin s loi b
nhng b lc.
o Gi nhng gói tin trong mt b m khi ng d n hoc nó
không có kh chp nhn ht lung cn
t mng.
o Thu thp d liu t n và tr mà
ng dng có th duy trì ranh gii ca gói tin, nhng gói
c bc m ( gi d
gm mt nhãn thi gian (time stamp), chiu dài, và offset ca sp xp d
liu.
o Vit nhn mng, tc là gi gói tin lên trên mng.
o Tính toán thng trên mng.
Kin trúc chi tit cu khin b
D07THM1 Trang 11
Hình 1.3 Cu trúc cu khin bt gói
Nhng lên trên hình biu din lung các gói tin t mn
ng dng bt gói. Nha b m ht nhân và b m ng
dng ch th rt gói tin có th truyn gia hai thc th này trong mt li
gi h thng. Nhng xui ca hình cho tha
nhng gói tin t ng dn mng. WinDump và Libpcap không th gi gói tin
n m dng ch mng t i lên trên. u
khin không hn ch vic s dng vic s dng WinDump và có th to
ra nhiu công c mng m bao gm kh o
gói tin mà có th c khai thác thông qua vic trc tip s dn liên kt
ng packet.dll.
Cc biu din trong hình trên t ng
dt mô t n cu khin bt gói. Cu trúc thc s phc
tu và có th th. Trong hình này biu din
mt cu hình cu khin vi hai card mng và hai ng dng bt gói.
D07THM1 Trang 12
Hình 1.4 Cu trúc cu khin vi hai adapter và hai ng dng
mi phiên bc thit lp gia mt adapter và m
bu khin phi duy trì mt b lc và mt b m. Mt card mng có
th c s dng bi nhiu ng dng ti cùng mt thm. Cho ví di s
dng mun bn hai tp tin riêng l, có th
xem hai phiên ca WinDump trên cùng mt card m lc là khác
nhau) ti cùng mt thu tiên s t mt b lc cho gói tin IP (
và mt b chúng), và b lc th hai s là dành cho gói U
có th bin mt ng du khin bt gói, có
th nhn gói tin t nhiu giao tip cùng mt thm.
Chú ý rng phiên bn c có kh u hình trong Windows
c trình bày trong hình 1.3 ( mt ng
dng bu này do hn ch trong kin trúc ca phiên bn này. T phiên
bn 2.02, trong Windows 95/98 có th thc hic ging trong Windows NT, có
nhing hu khin , và nó cho phép nhiu ng dng bt gói
có th làm vic trong cùng mt tha, nó có th cho ng d
làm vic trên nhiu card mng khác nhau.
Cu trúc lõi chính gia nhng phiên bn Windows khác nhau là hoàn toàn
ging nhau. Cu trúc d liu bên trong không khác hoàn toàn, b m gói tin và b
lu khin trong cùng mi NDIS là ging nhau
trong nhng nn tc bp nhng hàm
D07THM1 Trang 13
c cung cp bu khin và mn NDIS
c s dng bu khin b giao
tiu khin NIC. S khác nhau gia mi quan h và s i
nhng phn khác nhau ca h u hành ( nhng li gc và vic x lý t
ng dng mi dùng, hàm th ng ca nhng h u
hành s khác nhau hoàn toàn.
c thc hin bi hàm tap() là lc, tc là nhng gói tin
dò tìm cái nào là nhi dùng c cung
cp t BPF, máy lc ca NPF là mt b x lý o vi nhng ta nhng ch
th mà có th thc hin mt vài x n trên b m chung cha các byte.
Winpcap (và libpcap) cung cp mt API mi dùng có th chuyn nhanh lên
mc cao ( ví d n tp hp ch th mã gi ( chng
h ng Ethernet type ca ph ng
protocol type c IP là bng 17, thì nó s tr n
máy lc, kích hot chúng. Kin trúc c c áp dng mt b lc gói tin trong khi
nó v m cu khing gói
tin không cn thit, mc truyn b
nh h thng.
c chp nhn bi b lc kt hp vi thông tin lp v
là chiu dài và nhãn thi gian nhc, cái mà có ích cho truy cp ng dng và x
n b ng bit là b m ht nhân (kernel
nh c chuyn ti mi dùng (
xem hình 1.c và kin trúc ca b m này là mt thng s quan trng
cho vic thc thi quá trình x lý bt gói. Cho ví d, nu h thông b c thit
k tt và ln thì có th bù cho s chm chp ca ng dng trong khi bùng n mng
hoc gim s li gi h thng yêu cu bi chuyn d liu t u khin bt gói
( chng hn t b m nhân ti ng dng).
Nhng ng di dùng ly nhng gói tin t b m nhân bi mt li
gi h thng gic, c phát trin, li gi này s gây nên mt
li khn cu ca hàm read() (xem hình 1.1), cái mà s kim tra xem trng thái ca
b m nhân NPF : Nu b m là không rng, ni dung cc chuyn
mt b c cp phát bi dùng, -buffer trong hình 1.1. ng
dc khi mà mt d lin mó
nó có th bu x lý nhng 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à chun cung cp cho vic nói chuyn gia card mng (network card)
và các giao thc (protocol) mng c dùng. NDIS cho phép s dng nhiu giao
thc mng trên cùng mt card mng. Mc nh Windows NT AdvancedServer c
cung cp s dng bn giao thc là NetBEUI (NetBIOSExtended User Interface),
TCP/IP, Microsoft NWLINK, và Data Link Control.TDI cung cp kh nói
chuyn gia các giao thc mng vi các phn mm mng mc trên Server và
Redirector). Bt c trm làm vic nào (s dng h u hành Windows NT
Workstation) u có th các trình u khin u khin card mng c cung cp
ni ti trong Windows NT Advanced Server.Trong ng hp phi s dng mt
loi card mng khác, tc là phi cn trình u khin cho card mng không có sn
trong Windows NT, NDIS vn có th s dng giao thc mng trên card mng
này. Khi máy tính s dng giao thc mng, các gói tin d liu s c chuyn
thông qua giao thc mng th nht (giao thc này c gi là primary protocol),
nu không c máy tính s s dng tip giao thc th hai và c th tip tc. Trên
mi máy tính c cài t Windows NT, mi mt giao thc mng c t s dng
trên mt card mng cn phi c t mt giá tr gi là LAN adapter number trên
card mng
D07THM1 Trang 15
g
o
o
khi
D07THM1 Trang 16
(Trans
y mt ví d v cu trúc NDIS vi hai chng bt gói trên cùng
mt card mng: mt vu khin NIC và mu khin giao thc, khác
vi mu khin NIC , mu khin trung gian và mu khin
giao thc.
Hình 1.5 Mt kin
u khin bt gói tin cn giao tip c vu khin m nhn
d liu t mng) và vi ng dng m cung c i
c trin khai trong mt cu khin
giao thu này cho phép nó có th c lp t phn cng mc thc
hin vi tt c card mc h tr bi Windows. Tuy nhiên cn chú ý rng trình
u khin bt gói ch làm vic ngay lp tc trên Ethernet adapter, loopback adapter
D07THM1 Trang 17
và trên nhng kt n hn ch lm dng bi kin trúc l u
khin chú ý rng mt kt nc thy bu khin
giao tht Ethernet NIC, và mi gói tin nhn v có m Ethernet gi
c to ra b u khin giao giao thc vit cho
Ethernet làm vic trên kt ni WAN mà không ci thêm gì n
phi hiu rng nhc bit ging PPP NCP-LCP không th nhìn thc
bu khin giao thc, bi vì kt nc u này ngha là
u khin gói tin không th bc nhng loi gói tin này.
Chú ý rng nhng h u hành WIN32 có s khác nhau v phiên bn ca 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
Mt u khin giao thc (protocol driver) mà liên lc vu
khin NDIS mc th dng nhng ch c cung cp bi
NDIS. Ví d chng hn, m u khin giao thc phi gi NdisSend hoc
NdisSend Packets gi mt gói tin hoc nhin mu khin NDIS
mc thp.
u khin mc thp giao tip vu khin giao thc trong
mng b.Nó ch th gói tin mn bng cách gi hàm callback ca
u khin giao thc và chuyn mt con tr n mt b m, chiu dài ca nó,
và tc cn. Tên cu khin bt
gói là Packet_tap . Tuy nhiên, hành vi cu khin gói tin hoàn toàn khác
so vi mu khin giao thc chun. Thc t là:
o u khin gói tin nhn và x lý tt c c chuyn
hin ti trên m c bng cách chuyn ch
card mc là ép nó nhn tt c các gói tin
t mng. M u khin giao thc chun ch qun lý nhng gói tin
n ho nó và nhng gói tin
broadcast.
o u khin gói tin không thc hin mt giao thng
gói tin và chuyi nhng nhãn thi gian và chiu dài ca nó,
n ng dng. Mu khin giao thc chun b ph t gói
D07THM1 Trang 19
tin và chuyn ch d liu ti ng du khin b ph và
sao chép chúng ti ng dng vi d lic.
Chú ý rng trong vic thc th c g c khi chng giao thc
chuyn trc tip bu khin card mu không th cho trình
u khin bt phn ca chng giao thi thích ti
u khin bt gói không có kh ng bc nhc
bit, bi vì nó không làm vic mc phn mm, nó nm phía trên ca NDIS.
Nhng quy bao hàm chuyi trong ht nhân hoc trong
u khiu mà nó không có th trên Windows.
1.4 Các quá trình x lý bt và gi gói.
1.4.1 Quá trình lc.
lc biu din u khin bt gói bt ngun trc tip
t b lt c nhng th b lc BPF vn có giá
tr. Mt ng dc thit lp b lc cho gói tin n có th xây dt
c gói chun BPF ( ví d mt li gi hàm pcap_compile ca libpcap)
và chuyn chúng tu khin, và quá trình lc s c thc hin ngay mc
hc chuyu khin thông qua mt li
gi IOCTL vu khin là pBIOCSETF. Mu quan trng rng là trình
u khin cn có kh m tra li mã lc ca ng dng. Tht v
máy mã giã BPF có th thc hic nhng tính toán s hc, r t
phép chia cho 0 hoc nhn mt v trí b nh cm, nc thc hin bi mt
u khin, chc chn s n mt màn hình xanh chng gp.
o v , mc có nhiu li có th d
dàng làm phá v h thng. T u khin bt gói có th c s dng bi
i dùng, nó có th d cho mnh x gây ra thit hn h
thng thông qua nó. Bc cho mt
ng dc kim tra bi hàm bpf_validate cu khic khi
chp nhn nó. Nu mt b lc chp nhu khi
lc và thc thi nó trên mn, loi b nhu
kin lc. Nng b ln ng dng, hoc
t nó trong b m nu ng dng không sn sàng cho vic nhn d liu. Nu
không có b lu khin s chp nhn tt c các gói
n.
B lc áp dn gói tin khi nó vm trong b nh ca trình
u khin NIC, mà không cn phi sao chép chúng t u khin gói tin.
u này cho phép t chi nhc khi m t
ti ca h thng.
Mt thú v ca vic khai thác b lc BPF bu khin
bt gói là vic s dng ca mt d liu tr v bng s c
D07THM1 Trang 20
c áp dn mt gói tin, máy mã giã BPF s ch cho bit không ch nhng gói
tin phc truyn ti ng dng mà còn chiu dài ca phc sao chép.
u này hu dng cho vic t lý bt gói, bi vì ch mt phn ca gói tin cn
cho ng dng mc sao chép.
Mã ngun ca b lc là tc ly t tp tin phù hp ca
mã ngun BPF. Tp tin này cha ba hàm ch hính: bpf_filter,
bpf_filter_with_2_buffers và bpf_validate.
o bpf_filter: mt hàm l c s dng b u
khin bt gói. Nó thi hành máy ghi, cái mà s chy mã lc. Nó cha hai
b m: mt b m cha mt gói tin và mt b m cha c
chy. Nó tr ra chiu dài ca ph, hoc bng 0
nc loi b.
o bpf_filter_with_2_buffers: hàm này rt ging vi hàm bpf_filter,
lc các gói l và d liu ca nó
r trong nhng b m khác nhau. Nó có 3 b m: Mt b
m cha ph ca gói tin, mt b m cha d liu ca gói tin
và mt b m ch thc thi. Hàm này thì chm
i tc cn bi
vì kic bit cc s dng bu khin bt
ng hp c th và d liu ca gói tin
u khin nm i trong nhng b m khác
nhau. Nó có th xy ra ví d ng hp mô ph
c to ra bi mc phn mm và có th tách ra t
d liu.
o bpf_validate: hàm này kim tra mc mi, tr ra giá tr
ng hp c tc này kim tra
rng lnh nhy có trong khi mã, kim tra b nh hoc s
da ch, và hàm chia c biu din trong mã.
1.4.2 c d liu.
Trong khi ng dng mun thu thp nhng gói tin t mng. Nó thc hin mt
li gi read trên trìu khin b
ng dng ly li d liu thông qua li gi IOCTL; tuy nhiên kt qu là
ging nhau). Li gi này có th ng b hong b, bu
khi hai kh ng hu tiên,li g
ng dc dng ln khi mng hp th hai, ng
dc dng và phi kic thông dng
và khuyn ngh truy cu khin là mng b bi vì
có th trin khai trong ch bng b luôn xy ra lt
D07THM1 Trang 21
ng b có th s d thc him mc ng dng không cn
bi vì b u khing hiu qu và rõ
u khin gói h tr c thi gian. Mt ng dng có th c thit lp
thi gian timeout thông qua IOCTL vi mã pBIOCSRTIMEOUT. Nu thi gian
timeout khác 0, mi li gi read thc hin bi ng dng s thoát ra khi ht thi gian
timeout dù là không có d lic nhn v.
Sau khi mc chp nhn bi b lu khin có th có
hai trng thái sau:
o ng dn sàng nhn gói tin, ví d c thi mt lnh
ch kt qu ca li gi. Trong hp này gói tin
c sao chép ngay tn b nh ng dng, li gc
hoàn thành và ng dc.
o Không có mt lc nào ch ng hn ng d
thc hin mt d lii mt gói t tránh mt
gói tin, gói tin ph m cu khin và chuyn
n ng dng khi nó s sng sang nhn d liu, ví d trong li gc
tip theo.
u khin s dng mt b nhn. Mt
gói tin m vi m duy trì thông tin ging chng hn
c ca, mc thêm
vào gi mà sp xp chúng nh ca vic sao chép. Kích
c ca b m tim bu ca quá trình bt là 0. Nó có th thit lp hoc
chnh sa trong mi thm bi ng dng thông qua li gi IOCTL. Khi mt
c mi ca b c thit lp, gói tin hin ti trong b m s b mt.
Nhn b loi b bi tru khin nu b y trong khi có
mc ca b u khin n nng n n
vic thc hin ca x lý bt gói. Thc vy, nó git ng dng bt gói,
cái mà cn hong trên mi gói tin, chia s x lý vi nhng nhim v khác trong
cùng mt thi gian, s không có kh c ti mng có t cao vng
traffic liên tc và bùng n. V này s ng máy chm
chp.Mu khin chy mc hc vi bt
xy ra mt gói d lit b
m thích hu khin có th ng gói tin trong khi ng dng
n, có th bù li s chm chp ca ng dt d liu khi
bùng n mng hoc mng hong mc cao.
Nu b m không rng khi mà ng dng thc hin mt li gi h thng,
nhng gói tin trong b m c u khi n b nh ng
dng và li gc ngay tc thc hin xong. Có th c
chép t b m vòng cu khin b m ng dng vi mt li gc