You are on page 1of 47

TRNG CAO NG CNG NGH THNG TIN

HU NGH VIT-HN
KHOA KHOA HC MY TNH

N MN HC
LP TRNH MNG NNG CAO
TI

S DNG K THUT LP TRNH SOCKET XY


DNG CHNG TRNH SCAN IP

SVTH

: Nguyn c Trung
Trng Vn ng
T Th Thu Thy

Lp

: CCMM03C

Nin kha : 2009 2012


CBHD

: Ths. Nguyn V

Nng, thng 3 nm 2012

LI M U
Hin nay, mng my tnh l cng ngh ca mi thi i. Cc ng dng mng ng vai
tr khng th thiu khai thc tim nng ca mng my tnh, c bit l mng Internet.
Do vy, lp trnh mng l mn hc khng th thiu ca sinh vin ngnh cng ngh thng
tin ni chung v sinh vin chuyn ngnh mng ni ring. Mc ch ca mn hc lp trnh
mng l cung cp cho sinh vin bit kin thc mng lin quan cng nh c ch hot ng
v kin trc ca cc phn mm mng. T , hiu v bit cch vit cc chng trnh ng
dng trong mt h thng mng quy m nh cng nh mng Internet.
C# l mt ngn ng mm do v rt ph bin. N s dng h thng kiu/i tng
trong.NET m , cc chng trnh C# c th giao tip vi nhiu ngn ng khc trong
.NET m khng gp rc ri no v kiu. Da trn kin thc lp trnh mng vi C#, cng
vi s a dng ca cc dch v mng vi nhiu tnh nng h tr cao. T tng xy dng
mt chng trnh scan IP c kh nng qut cng, c kh nng qut cc a ch trong phm
vi bt k, cng nh bt k cc cng. Chng trnh ScanIP c xy dng vi mt s tnh
nng hon chnh nh: xc nh a ch MAC, qut cng v.v
Mc tiu ca n l tm hiu v mng my tnh v k thut lp trnh socket vi ngn
ng lp trnh C#, trn c s xy dng mt chng trnh qut cng trn mng ni b.
Bao gm ba chng:
Chng I. Tng Quan V Lp Trnh Mng
Chng II. Lp Trnh Mng Vi Socket
Chng III. Thit k V Xy Dng Chng Trnh
Trong qu trnh xy dng chng trnh do thi gian ngn v cha kin thc, nn
khng trnh khi sai st. Knh mong thy c cng cc bn ng gp kin xy dng
nhm hon thin hn. Cui cng, nhm em xin chn thnh cm n thy Nguyn V h
tr v to iu kin gip chng em hon thnh n ny.

Nng, thng 3 nm 2012

MC LC

MC LC...............................................................................................................................i
DANH MC HNH NH.......................................................................................................i
CHNG 1. TNG QUAN V LP TRNH MNG.........................................................ii
1.1.GII THIU V NGN NG C#..............................................................................ii
1.2.KIN TRC .NET.......................................................................................................ii
1.3.NGN NG C#..........................................................................................................iv
1.4.M HNH THAM CHIU OSI....................................................................................v
1.5.CHNG GIAO THC TCP/IP.................................................................................viii
1.6.M HNH TRUYN THNG TRONG CU TRC MNG....................................x
1.6.1.Nguyn tc truyn thng........................................................................................x
1.6.2.Nguyn tc ca phng php phn tng...............................................................xi
1.6.3.a ch IP Cc a ch IP dnh ring.................................................................xii
1.7.GIAO THC ICMP...................................................................................................xii
1.7.1.Gii thiu ICMP..................................................................................................xiii
1.7.2.Cu trc...............................................................................................................xiii
1.7.3.Danh sch cc thng ip iu khin ca giao thc ICMP ................................xiv
CHNG 2. LP TRNH MNG VI SOCKET............................................................xvi
2.1.GII THIU V LP TRNH VI SOCKET.........................................................xvi
1.8.S DNG RAW SOCKET.....................................................................................xvii
CHNG 3. THIT K V XY DNG CHNG TRNH......................................xxiv
1.9.PHN TCH YU CU.........................................................................................xxiv
1.10.PHN TCH CC CHC NNG........................................................................xxiv
1.10.1.Phng thc hot ng ca ng dng............................................................xxiv
1.10.2.Xy dng chc nng.......................................................................................xxiv
1.11. XY DNG CHC NNG.................................................................................xxv
1.11.1.Xy dng chc nng gi gi tin.......................................................................xxv
1.11.2.Xy dng chc nng nhn gi tin v x l......................................................xxv
1.11.3.Xy dng chc nng qut a ch IP..............................................................xxvii

1.12.GIAO DIN V S DNG CHNG TRNH................................................xxvii


1.12.1.Giao din........................................................................................................xxvii
1.12.2.S dng chng trnh....................................................................................xxxix
KT LUN..........................................................................................................................xli
DANH MC TI LIU THAM KHO.............................................................................42
NHN XT CA GING VIN HNG DN...............................................................43

DANH MC HNH NH

Hnh 1. 1. M t cc thnh phn trong .NET Framework.....................................................iii


Hnh 1. 2.M hnh OSI............................................................................................................v
Hnh 1.3. M hnh chng giao thc TCP/IP..........................................................................ix
Hnh 2.1. Gii thiu v lp trnh vi socket.........................................................................xvi
Hnh 3.1. Giao din chnh ca chng trnh scanip..........................................................xxvii
Hnh 3.2. Chc nng qut tt c cc a ch ip................................................................xxviii
Hnh 3.3. Chc nng qut theo lp..................................................................................xxviii

CHNG 1. TNG QUAN V LP TRNH MNG


1.1.

GII THIU V NGN NG C#


Microsoft .NET khng phi l mt ngn ng lp trnh, l mt khng gian lm vic

tng hp bi bn b ngn ng lp trnh: C#, VB.NET, Managed C++, and J# . NET.


c s chng gi ln nhau ca cc ngn ng, v c nh ngha trong FCL (Framework
Class Library).
Microsoft .NET bao gm 2 thnh phn chnh: Framework v Intergrated Development
Enviroment (IDE). Framework cung cp nhng g cn thit v cn bn, l khun dng hay
mi trng h tr cc h tng c s theo mt quy c nht nh cng vic c thun
tin. IDE cung cp mt mi trng gip chng ta trin khai c d dng v nhanh chng
cc ng dng trn nn tng .NET.
Thnh phn Framework l quan trng nht .NET y l ct li v tinh hoa ca mi
trng, cn IDE ch l cng c pht trin da trn nn tng . Trong .NET ton b cc
ngn ng C#, Visual C++ hay Visual Basic .NET u dng cng mt IDE.
Microsoft .NET l nn tng cho vic ng dng v thc thi cc ng dng phn tn th
h k tip. Bao gm cc ng dng t client n server v cc dch v khc. Mt s tnh
nng ca Microsoft .NET cho php nhng nh pht trin s dng nh sau:
o Mt m hnh lp trnh cho php nh pht trin xy dng cc ng dng dch v
web v ng dng client vi Extensible Markup Language (XML).
o Tp hp dch v XML Web, nh Microsoft .NET My Services cho php nh
pht trin n gin v tch hp ngi dng kinh nghim.
o Cung cp cc server phc v bao gm: Windows 2000, SQL Server v BizTalk
Server, tt c u tch hp, hot ng v qun l cc dch XML Web v cc ng dng
o Cc phn mm client nh Windows XP v Windows CE gip ngi pht trin
phn phi su v thuyt phc ngi dng kinh nghim thng qua cc dng thit b.
o Nhiu cng c h tr nh Visual Stuido .NET, pht trin cc dch v Web
XML, ng dng trn nn Windows hay nn web mt cch d dng v hiu qu.
1.2.

KIN TRC .NET


ii

.NET Framework l mt platform mi gip lm n gin vic pht trin ng dng


trong mi trng phn tn ca Internet. .NET Framework c thit k y p ng
theo quan im sau:

Hnh 1. 1. M t cc thnh phn trong .NET Framework


o cung cp mt mi trng lp trnh hng i tng vng chc, trong m
ngun i tng c lu tr v thc thi mt cch cc b. Thc thi cc b nhng c
phn tn trn Internet, hoc thc thi t xa.
o cung cp mt mi trng thc thi m ngun m ti thiu c vic ng gi
phn mm v s tranh chp v phin bn.
o cung cp mt mi trng thc thi m ngun m m bo vic thc thi an
ton m ngun, bao gm c vic m ngun c to ra bi hng th ba hay bt c hng no
m tun th theo kin trc .NET. cung cp mt mi trng thc thi m ngun m loi b
c nhng li thc hin cc script hay mi trng thng dch.
o lm cho nhng ngi pht trin c kinh nghim vng chc c th nm vng
nhiu kiu ng dng khc nhau. Nh l t nhng ng dng trn nn Windows n nhng
ng dng da trn web.
o xy dng tt c cc thng tin da trn tiu chun cng nghip m bo
rng m ngun trn .NET c th tch hp vi bt c m ngun khc.
.NET Framework c hai thnh phn chnh: Common Language Runtime (CLR) v th
vin lp .NET Framework. CLR l nn tng ca .NET Framework. Chng ta c th hiu
iii

nh: qun l b nh, qun l tiu trnh, v qun l t xa. Ngoi ra n cn thc y vic s
dng kiu an ton v cc hnh thc khc ca vic chnh xc m ngun, m bo cho vic
thc hin c bo mt v mnh m. Tht vy, khi nim qun l m ngun l nguyn l
nn tng ca runtime. M ngun m ch ti runtime th c bit nh l m ngun c
qun l (managed code). Trong khi m ngun m khng c ch ti runtime th c
bit nh m ngun khng c qun l (unmanaged code).
Th vin lp, mt thnh phn chnh khc ca .NET Framework l mt tp hp hng
i tng ca cc kiu d liu c dng li, n cho php chng ta c th pht trin nhng
ng dng t nhng ng dng truyn thng command-line hay nhng ng dng c giao din
ha (GUI) n nhng ng dng mi nht c cung cp bi ASP.NET, nh l Web
Form v dch v XML Web.
1.3.

NGN NG C#
Ngn ng C# kh n gin, ch khong 80 t kha v hn mi my kiu d liu

c xy dng sn. Tuy nhin, ngn ng C# c ngha cao khi n thc thi nhng khi
nim lp trnh hin i. C# bao gm tt c nhng h tr cho cu trc, thnh phn, lp trnh
hng i tng. Nhng tnh cht hin din trong mt ngn ng lp trnh hin i. V
ngn ng C# hi nhng iu kin nh vy, hn na n c xy dng trn nn tng ca
hai ngn ng mnh nht l C++ v Java.
Phn ct li ca bt c ngn ng lp trnh hng i tng l s h tr ca n cho
vic nh ngha v lm vic vi nhng lp. Nhng lp th nh ngha nhng kiu d liu
mi, cho php ngi pht trin m rng ngn ng to m hnh tt hn gii quyt vn
. Ngn ng C# cha nhng t kha cho vic khai bo nhng kiu lp i tng mi v
nhng phng thc hay thuc tnh ca lp, v cho vic thc thi ng gi, k tha v tnh
a hnh, ba thuc tnh c bn ca bt c ngn ng lp trnh hng i tng.
Trong ngn ng C# mi th lin quan n khai bo lp u c tm thy trong phn
khai bo ca n. nh ngha mt lp trong ngn ng C# khng i hi phi chia ra tp tin
header v tp tin ngun ging nh trong ngn ng C++. Hn th na, ngn ng C# h tr
kiu XML, cho php chn cc tag XML pht sinh t ng cc document cho lp.

iv

Trong ngn ng C#, nhng cu trc cng c h tr , nhng khi nim v ng ngha
ca n thay i khc vi C++. Trong C#, mt cu trc c gii hn, l kiu d liu nh
gn, v khi to th hin, th n yu cu t hn v h iu hnh v b nh so vi mt lp.
Mt cu trc th khng th k tha mt lp hay c k tha nhng mt cu trc c th
thc thi mt giao din.
Ngn ng C# cung cp nhng c tnh hng thnh phn (component-oriented), nh
l nhng thuc tnh, nhng s kin. Lp trnh hng thnh phn c h tr bi CLR cho
php lu tr metadata vi m ngun cho mt lp. Metadata m t cho mt lp, bao gm
phng thc v nhng thuc tnh ca n, cng nh nhng s bo mt cn thit v nhng
thuc tnh khc. M ngun cha ng nhng logic cn thit thc hin nhng chc nng
ca n. Do vy, mt lp c bin dch nh l mt khi self-contained, nn mi trng
hosting bit c cch c metadata ca mt lp v m ngun cn thit m khng cn
nhng thng tin khc s dng n.
Ngn ng C# h tr truy cp b nh trc tip s dng kiu con tr ca C++ v t
kha cho du ngoc [] trong ton t. Cc m ngun ny l khng an ton. V b gii phng
b nh t ng ca CLR s khng thc hin vic gii phng nhng i tng c tham
chiu bng s dng con tr cho n khi chng c gii phng.
1.4.

M HNH THAM CHIU OSI

Hnh 1. 2.M hnh OSI

M hnh tham chiu OSI (Open Systems Interconnection Reference Model) l mt


thit k da vo nguyn l tng cp, l gii mt cch tru tng k thut kt ni truyn
thng gia cc my tnh v thit k giao thc mng gia chng. M hnh ny c pht
trin thnh mt thnh phn trong k hoch Kt ni cc h thng m dong ISO v IUT-T
khi xng.
M hnh tham chiu OSI nh ngha cc quy tc cho cc ni dung sau:
o Cch thc cc thit b giao tip v truyn thng c vi nhau.
o Cc phng php cc thit b trn mng khi no th c truyn d liu, khi
no th khng c.
o Cc phng php m bo truyn ng d liu v ng bn nhn.
o Cch thc vn ti, truyn, sp xp v kt ni vi nhau.
o Cch thc m bo cc thit b mng duy tr tc truyn d liu thch hp
o Cc biu din mt bit truyn dn
M hnh tham chiu OSI c chia thnh by lp vi cc chc nng sau:
o Lp ng dng (Application Layer): l giao din gia cc chng trnh ng dng
ca ngi dng v mng. Lp application x l truy cp mng chung, kim sot lung v
phc hi li. Lp ny khng cung cp cc ng dng cho lp no m n cung cp dch v
cho cc ng dng nh: truyn file, gi nhn E-mail, Telnet, HTTP, FTP, SMTP
o Lp trnh din (Presentation Layer): lp ny chu trch nhim thng lng v
xc lp dng d liu c trao i. N m bo thng tin m lp ng dng ca mt h
thng u cui gi i, lp ng dng ca h thng khc c th c c. Lp trnh by
thng dch gia nhiu dng d liu khc nhau thng qua mt dng chung, ng thi n
cng nn v gii nn d liu.
o Lp phin (Session Layer): lp ny c chc nng thit lp, qun l, v kt thc
cc phin thng tin gia hai thit b truyn nhn. Lp phin cung cp cc dch v cho lp
trnh by. Lp phin cung cp s ng b ha gia cc tc v ngi dng bng cch t
nhng kim tra vo lung d liu. Bng cch ny, nu mng khng hot ng th ch c d
liu truyn sau im kim tra cui cng mi phi truyn li. Lp ny cng thi hnh kim
vi

sot hi thoi gia cc qu trnh giao tip, iu chnh bn no truyn, khi no, trong bao
lu.
o Lp vn chuyn (Transport Layer): lp vn chuyn phn on d liu t h
thng my truyn v ti thit lp d liu vo mt lung d liu ti h thng my nhn m
bo rng vic bn giao cc thng ip gia cc thit b l ng tin cy. Lp ny thit lp,
duy tr v kt thc cc mch o m bo cung cp cc dch v sau:

Xp th t cc phn on: khi mt thng ip ln c tch thnh

nhiu phn on nh bn giao, lp vn chuyn s sp xp th t cc phn


on trc khi rp ni cc phn on thnh thng ip ban u.

Kim sot li: khi c phn on b tht bi, sai hoc trng lp, lp

vn chuyn s yu cu truyn li.

Kim sot lung: lp vn chuyn dng cc tn hiu bo nhn

xc nhn. Bn gi s khng truyn i phn on d liu k tip nu bn nhn


cha gi tn hiu xc nhn rng nhn c phn on d liu trc y
.
o

Lp mng (Network Layer): lp ny chu trch nhim lp a ch cc thng

ip, din dch a ch v tn logic thnh a ch vt l ng thi n cng chu trch nhim
gi packet t mng ngun n mng ch. Lp ny quyt nh ng i t my tnh ngun
n my tnh ch. N quyt nh d liu s truyn trn ng no da vo tnh trng,
u tin dch v v cc yu t khc. N cng qun l lu lng trn mng chng hn nh
chuyn i gi, nh tuyn, v kim sot s tc nghn d liu.
o

Lp lin kt d liu (Data Link Layer): cung cp kh nng chuyn d liu tin

cy xuyn qua mt lin kt vt l. Lp ny lin quan n: a ch vt l, m hnh mng, c


ch truy cp ng truyn, thng bo li, th t phn phi frame, iu khin dng. Ti lp
lin kt d liu, cc bit n t lp vt l c chuyn thnh cc frame d liu bng cch
dng mt s nghi thc ti lp ny. Lp lin kt d liu c chia thnh hai lp con:
Lp LLC (Logical Link Control): phn trn so vi cc giao thc truy cp
ng truyn khc, n cung cp s mm do v giao tip. Bi v lp con LLC
hot ng c lp vi cc giao thc truy cp ng truyn, cho nn cc giao
vii

thc lp trn hn c th hot ng m khng ph thuc vo loi phng tin


LAN. Lp con LLC c th l thuc vo cc lp thp hn trong vic cung cp
truy nhp ng truyn.
Lp MAC (Media Access Control): cung cp tnh th t truy cp vo mi
trng LAN. Khi nhiu trm cng truy cp chia s mi trng truyn, nh
danh mi trm, lp MAC nh ngha mi trng a ch phn cng gi l a ch
MAC y l mt con s n nht i vi mi giao tip LAN.
o

Lp vt l (Physical Layer): nh ngha cc quy cch v in, c, th tc v

c t chc nng kch hot, duy tr v dng mt lin kt vt l gia cc h thng u


cui. Bao gm vic truyn ti tn hiu trong mi trng t my tnh ny n my tnh khc.
Lp ny gm cc chi tit k thut v cc c tnh in v c nh : mc in p, nh thi
tn hiu, tc d liu, di truyn ti ln nht v cc kt ni vt l ca thit b mng.
mt thit b hot ng ch trong lp vt l, n s khng c bt k kin thc no v d liu
m n truyn ti. Mt thit b lp vt l ch truyn ti hoc nhn d liu mt cch n gin.
1.5.

CHNG GIAO THC TCP/IP


B giao thc TCP/IP (Internet Protocol Suite) l mt b cc giao thc truyn thng

ci t chng giao thc m Internet v hu ht cc mng my tnh thng mi ang chy


trn . B giao thc ny c t theo hai giao thc chnh ca n l TCP v IP. L tp
hp cc tng, mi tng gii quyt mt tp cc vn c lin quan n vic truyn d liu,
v cung cp cho cc giao thc tng trn mt dch v c nh ngha r rng da trn vic
s dng cc dch v ca cc tng thp hn. V mt logic, cc tng trn gn vi ngi dng
hn v lm vic vi d liu tru tng hn, chng da vo cc giao thc tng cp di
bin i d liu thnh cc dng m cui cng c th c truyn i mt cch vt l.

viii

Hnh 1.3. M hnh chng giao thc TCP/IP


TCP/IP c cu trc tng t nh m hnh OSI, tuy nhin m bo tnh tng thch
gia cc mng v s tin cy ca vic truyn thng tin trn mng, b giao thc TCP/IP c
chia thnh 2 phn ring bit: giao thc IP s dng cho vic kt ni mng v giao thc TCP
m bo cho vic truyn d liu mt cch tin cy.
M hnh tham chiu TCP/IP c chia thnh bn lp vi cc chc nng sau:
o

Lp ng dng (Application Layer): ti mc cao nht ny, ngi s dng thc

hin cc chng trnh ng dng truy xut n cc mc dch v hin h trn TCP/IP
Internet. Mt ng dng tng tc vi mt trong nhng protocol mc giao vn (transport)
gi hoc nhn d liu. Mi chng trnh ng dng chn mt kiu giao vn m n cn,
c th l mt dy tun t tng thng ip hoc mt chui cc byte lin tc. Chng trnh
ng dng s gi d liu i di dng no m n yu cu n lp giao vn.
o

Lp giao vn(Transport Layer) : Nhim v c bn ca lp giao vn l cung

cp phng tin lin lc t mt chng trnh ng dng ny n mt chng trnh ng dng


khc. Vic thng tin lin lc thng c gi l end-to-end. Mc chuyn ch c th
iu khin lung thng tin. N cng c th cung cp s giao vn c tin cy, bo m d
liu n ni m khng c li v theo ng th t. lm c iu , lp giao vn cung
cp giao thc TCP, trong qu trnh trao i thng tin ni nhn s c gi ngc tr li
mt xc nhn (ACK) v ni gi s truyn li nhng gi d liu b mt. Tuy nhin trong
nhng mi trng truyn dn tt nh cp quang chng hng th vic xy ra li l rt nh.
Lp giao vn c th cung cp mt giao thc khc l UDP.
ix

Lp Internet (Internet Layer): Nhim v c bn ca lp ny l x l vic lin

lc ca cc thit b trn mng. N nhn c mt yu cu gi gi d liu t lp trn


cng vi mt nh danh ca my m gi d liu phi c gi n. N ng segment vo
trong mt packet, in vo phn mo u ca packet, sau s dng giao thc nh tuyn
chuyn gi tin n c ch ca n hoc trm k tip. Khi ti ni nhn s kim tra
tnh hp l ca chng, v s dng tip cc giao thc nh tuyn x l gi tin. i vi
nhng packet c xc nh thuc cng mng cc b, phn mm Internet s ct b phn
u ca packet, v chn mt trong cc giao thc lp trung chuyn thch hp x l
chng. Cui cng, lp Internet gi v nhn cc thng ip kim sot v x l li ICMP.
o

Lp giao tip mng (Network Access Layer): Lp thp nht ca m hnh

TCP/IP chnh l lp giao tip mng, c trch nhim nhn cc IP datagram v truyn chng
trn mt mng nht nh. Ngi ta li chia lp ny thnh hai lp con l: Lp vt l lm
vic vi cc thit b vt l, truyn ti dng bit 0, 1 t ni gi n ni nht. Lp lin kt d
liu ti y d liu c t chc thnh cc khung (frame). Phn u khung cha a ch
v thng tin iu khin, phn cui khung dnh cho vic pht hin li.
1.6.

M HNH TRUYN THNG TRONG CU TRC MNG

1.6.1. Nguyn tc truyn thng


mt mng my tnh tr thnh mi trng truyn d liu th n cn phi c nhng
yu t sau:
o

Cc h thng c lin kt vi nhau theo mt cu trc kt ni (topology) no

Vic chuyn d liu t my tnh ny n my tnh khc do mng thc hin

.
thng qua nhng quy nh thng nht gi l giao thc ca mng.
o

Phn chia hot ng truyn thng ca h thng thnh nhiu lp theo cc

nguyn tc nht nh.


o

Vic nhn xt cc module mt cch c lp vi nhau cho php gim phc

tp cho vic thit k v ci t. Phng php ny c s dng rng ri trong vic xy


dng mng v cc chng trnh truyn thng v c gi l phng php phn tng
(layer).
x

1.6.2. Nguyn tc ca phng php phn tng


Mi h thng thnh phn trong mng c xy dng nh mt cu trc nhiu tng v
u c cu trc ging nhau nh: s lng tng v chc nng ca mi tng.
Cc tng nm chng ln nhau, d liu ch c trao i trc tip gia hai tng k
nhau t tng trn xung tng di v ngc li.
Cng vi vic xc nh chc nng ca mi tng chng ta phi xc nh mi quan h
gia hai tng k nhau. D liu c truyn i t tng cao nht ca h thng truyn ln lt
n tng thp nht , tip n truyn qua ng ni vt l di dng cc bit ti tng thp
nht ca h thng nhn, sau d liu c truyn ngc ln trn tng cao nht ca h
thng nhn.
Ch c hai tng thp nht c lin kt vt l vi nhau cn cc tng trn cng th t ch
c cc lin kt logic vi nhau. Lin kt logic ca mt tng c th hin thng qua cc tng
di v phi tun theo nhng quy nh cht ch, cc quy nh c gi l giao thc ca
tng. Trong kin trc phn tng, mt s m hnh c pht trin : m hnh OSI, TCP/IP.
Xt trn phng din lp trnh vi my tnh, ta xt m hnh phn tng thu gn: Ni
chung trong truyn thng c s tham gia ca cc thnh phn: Cc chng trnh ng dng,
cc chng trnh truyn thng, cc my tnh v cc mng. Cc chng trnh ng dng l
cc chng trnh ca ngi s dng c thc hin trn my tnh v c th tham gia vo
qu trnh trao i thng tin gia hai my tnh. Trn mt my tnh vi h iu hnh a
nhim (nh Windows, UNIX) thng c thc hin ng thi nhiu ng dng trong
c nhng ng dng lin quan n mng v cc ng dng khc. Cc my tnh c ni vi
mng v cc d liu trao i thng qua mng t my tnh ny n my tnh khc.
Vic gi d liu c thc hin gia mt ng dng vi mt ng dng khc trn hai
my tnh khc nhau thng qua mng c thc hin nh sau: ng dng gi chuyn d liu
cho chng trnh truyn thng trn my tnh ca n, chng trnh truyn thng s gi
chng ti my tnh nhn. Chng trnh truyn thng trn my nhn s tip nhn d liu,
kim tra n trc khi chuyn giao cho ng dng ang ch d liu.
Vi m hnh truyn thng n gin ngi ta chia chng trnh truyn thng thnh ba
tng khng ph thuc vo nhau l : tng ng dng, tng giao vn v tng tip cn mng.
xi

Tng tip cn mng: Lin quan n vic trao i d liu gia my tnh v

mng m n c ni vo. d liu n c ch my tnh gi cn phi chuyn a ch


ca my tnh nhn cho mng v qua mng s chuyn cc thng tin ti ch. Ngoi ra
my gi c th s dng mt s dch v khc nhau m mng cung cp nh gi u tin, tc
cao.
o

Tng giao vn: Thc hin qu trnh truyn thng end-to-end gia hai ng

dng khng lin quan ti mng v nm trn tng tip cn mng. Tng truyn d liu
khng quan tm n bn cht cc ng dng ang trao i d liu m quan tm ti lm sao
cho cc d liu trao i mt cch an ton. Tng truyn d liu m bo cc d liu n
c ch v n theo ng thc t m chng c x l.Trong tng truyn d liu ngi
ta phi c nhng c ch nhm m bo s chnh xc v r rng cc c ch ny khng
ph thuc vo bn cht ca tng ng dng v chng s phc v cho tt c cc ng dng.
o

Tng ng dng: S cha cc module phc v cho tt c nhng ng dng ca

ngi dng. Vi cc loi ng dng khc nhau (truyn file, truyn th mc) cn cc module
khc nhau.
1.6.3. a ch IP Cc a ch IP dnh ring
Mi a ch IP c di 32 bit (i vi IPv4) c tch thnh 4 vng (mi vng 1
byte), c th c biu th di dng thp phn, bt phn, thp lc phn hoc nh phn.
Cch vit ph bin nht l dng k php thp phn c du chm tch gia cc vng. a
ch IP l nh danh duy nht cho mt host bt k trn lin mng.
Khun dng a ch IP: Mi host trn mng TCP/IP c nh danh duy nht bi mt a
ch c khun dng <Network Number, Host Number>. Do t chc v ln ca cc mng
con ca lin mng c th khc nhau, ngi ta chia a ch IP thnh 5 lp k hiu A, B, C,
D, E. Cc bit u tin ca byte u tin c dng nh danh lp a ch (0-lp A; 10
lp B; 110 lp C; 1110 lp D; 11110 lp E).
Subneting: Trong nhiu trng hp, mt mng c th c chia thnh nhiu mng
con, lc c th a thm cc vng subnetid nh danh cc mng con. Vng subnetid
c ly t vng hosted, c th i vi 3 lp A, B, C.
1.7.

GIAO THC ICMP


xii

ICMP(Internetwork Control Message Protocol) l mt trong nhng giao thc ct li


ca giao thc Internet Suite. l ch yu c s dng bi cc h iu hnh ca my tnh
ni mng gi thng bo li cho thy, v d: Mt dch v yu cu khng c hoc c mt
my ch hoc router khng th t c. ICMP cng c th c s dng chuyn tip
tin nhn truy vn.
ICMP khc vi giao thc vn chuyn nh TCP v UDP ch n khng thng c
s dng trao i d liu gia cc h thng, cng khng phi l thng xuyn lm vic
ca ngi s dng cc ng dng mng li cp (vi ngoi l ca mt s cng c chun
on nh Ping v Tracerouter).
ICMP cho giao thc Internet phin bn ICMPv4. IPv6 c mt giao thc tng t,
ICMPv6.
1.7.1. Gii thiu ICMP
Internet Control Message Protocol l mt phn ca giao thc Internet Suite c nh
ngha trong RFC 792. Thng ip ICMP thng c to ra p ng vi cc li trong IP
datagrams (theo quy nh ti RFC 1122), hoc cho hay nh tuyn nhm mc ch chn
on. ICMP lun lun c bo co vi ngun a ch IP gc ca gi d liu c ngun gc.
Mi thng ip ICMP c ng gi trc tip trong mt gi d liu IP duy nht, v
do , ging nh UDP, ICMP l giao thc khng ng tin cy.
Mc d thng ip ICMP c cha trong tiu chun IP datagrams, cc thng ip
ICMP thng c x l nh mt trng hp c bit, phn bit vi cch iu ch IP bnh
thng. Trong nhiu trng hp, vic kim tra cc ni dung ca thng ip ICMP l rt
cn thit, n cung cp nhng thng bo li thch hp cho cc ng dng to ra cc gi IP
ban u.
Nhiu tin ch mng thng dng da trn thng ip ICMP. Cc lnh tracerouter c
thc hin bng cch truyn UDP datagrams vi gi tin c t thm thng s IP TTL, v
tm kim ICMP c thi gian sng ln hn TTL v Destination neachable trong qu trnh
truyn. Cc tin ch ping c thc hin bng cch s dng ICMP Echo Request v
Echo Reply.
1.7.2. Cu trc
xiii

Cc gi tin bt u sau IP header (20 bytes). Tt c cc gi ICMP s c mt header c


kch thc 8 byte v phn bin d liu. 4 byte u tin ca header ny s c nht qun.
Cc byte u tin dnh cho trng Type. Cc byte th hai l cho trng Code. Cc byte th
ba v th t l trng Checksum. Ni dung ca cc byte t byte th 4 ca header s khc
nhau da trn trng Type v Code.
Thng bo li ca ICMP c cha mt phn d liu bao gm ton b cc IP header
cng vi cc byte u tin ca gi tin m to ra cc thng bo li khc nhau. Cc gi d
liu ICMP sau c gi gn trong mt gi IP mi.
o

Type ICMP Code theo quy nh

Code Kiu loi hnh nht nh.

Checksum Kim tra li d liu. Tnh t ICMP header + d liu, vi gi tr

0 cho trng ny.


Bit

0-7
0
32

8-15
Loi
Message

16-23
M

24-31
Checksum

1.7.3. Danh sch cc thng ip iu khin ca giao thc ICMP


Type
0 Echo Reply
1&2
3- Destination neachable

4- Source Quench

Code
0
0
1
2
3
4
5
6
7
8
9
10
11
12
13
0

Description
C phn hi li (s dng ping)
Dnh ring
im ch ca mng khng th truy cp
Host ch khng th truy cp
Giao thc ch khng th truy cp
Cng ch khng th truy cp
Yu cu s phn mnh, v t c DF
nh tuyn ngun b li
Khng bit mng ch
Khng bit my nh
Host ngun b c lp
Mng hnh chnh b cm
Host hnh chnh b cm
Mng khng th truy cp cho TOS
My khng th truy cp cho TOS
B cm truyn thng
Ngun b tt (iu khin tc nghn)
xiv

5- Redirect Message

0
1
2
3

6
7
8- Echo Request
9- Router Advertisement
10- Router Solicitation
11- Time Exceeded

0
0
0
0
1
12- Parameter Problem: Bad IP 0

Chuyn Datagram cho mng


Chuyn Datagram cho host
Chuyn Datagram cho TOS v mng
Chuyn Datagram cho TOS v host
Thay th a ch host
Dnh ring
Lp li yu cu
Router qung b
Router khm ph/ la chn
TTL ht trong qu trnh truyn
Xc nhn phn mnh ht hn
Con tr ch ra li

header
13- Timestamp
14- Timestamp Reply
15- Information Request
16- Information Reply
17- Address Mask Request
18- Address Mask Request
19
20 29
30 Traceroute
31
32
33
34
35
36
37
38
39

1
2
0
0
0
0
0
0

Thiu la chn cn thit


Tnh trng chiu di
Du thi gian
Tr li du thi gian
Yu cu thng tin
Phn hi thng tin
Yu cu a ch Mask
Tr li a ch Mask
Dnh ring cho bo mt
Dnh ring cho th nghim bn
Yu cu thng tin
Chuyn i Datagram b li
Chuyn host di ng
Where Are You (bn u cho IPv6)
Here I Am (ban u cho IPv6)
Yu cu s ng k di ng
Tr li s ng k di ng
Yu cu tn min
Tr li tn min
Thut ton SKIP Discovery Protocol,

40
41

Simple Key Qun l giao thc Internet


Photuris, bo mt fail
Cc giao thc ICMP cho th nghim trn di

42 255

ng nh Seamoby [RFC4065]
Dnh ring

xv

CHNG 2. LP TRNH MNG VI SOCKET

2.1.

GII THIU V LP TRNH VI SOCKET


Application Program
Stream
Socket
Interface

Datagram
Socket
Interface

TCP

Raw Socket
Interface

UDP
IP

Physical & Data Link Layer

Hnh 2.1. Gii thiu v lp trnh vi socket


Sockets cung cp mt interface lp trnh mng ti tng Transport. Mt socket l
mt end-point ca mt lin kt gia hai ng dng. Ngy nay, Socket c h tr trong hu
ht cc h iu hnh nh MS Windows (WinSock), Linux v c s dng trong nhiu
ngn ng lp trnh khc nhau: nh C, C++, Java, Visual Basic, C#, . . .
Windows Socket Application Programming Interface (Winsock API) l mt th vin
cc hm socket. Winsock h tr cc lp trnh vin xy dng cc ng dng mng trn nn
TCP/IP.
L giao din lp trnh ng dng (API), giao din gia chng trnh ng dng vi lp
mng trong h thng mng TCP/IP.Thng qua giao din ny chng ta c th lp trnh iu
khin vic truyn thng gia hai my s dng cc giao thc mc thp lTCP,UDP
Thit lp cc lp knh giao tip vi mi u knh c nh du bng mt cng. D
liu c th i vo v ra khi knh giao tip thng qua cng ny.
C ch giao tip:
o

Mt trong hai qu trnh phi cng b s hiu cng ca socket m mnh s

dng nhn v gi d liu.


xvi

Cc qu trnh khc c th giao tip vi qu trnh cng b cng cng bng

cch to ra mt socket.
Cc loi socket:

1.8.

Socket hng kt ni (TCP Socket)

Socket khng hng kt ni (UDP Socket)

Raw Socket

S DNG RAW SOCKET


Gi tin ICMP khng s dng TCP hoc UDP nn chng ta khng th s dng cc lp

c h tr nh TCPClient hay UDPClient m phi s dng mt Raw Socket.


Mun to Raw Socket khi to Socket ta phi s dng SocketType.Raw, giao thc
ICMP.
Cch to Raw Socket nh sau:
Socket newsock= new Socket(AddressFamily.InterNetwork, SocketType.Raw,
ProtocolType.Icmp);
Raw Socket Format

o
Value
GGP
ICMP
IDP
IGMP
IP
IPX
ND
PUP
Raw
SPX
SPXLL
Unknown
Unspecified

Description
Gateway to Gateway Protocol
Internet Control Message Protocol
IDP Protocol
Internet Group Management Protocol
A raw IP packet
Novell IPX Protocol
Net Disk Protocol
Xerox PARC Universal Protocol (PUP)
A raw IP Packet
Novell SPX Protocol
Novell SPXv2 Protocol
An unknown protocol
An unspecified protocol

Gi gi d liu Raw:
o

L giao thc khng hng kt ni, khng cn bind socket n cng cc b

gi gi tin hoc dng phng thc Conncect() kt ni n vi host c th xa.


xvii

S dng phng thc SendTo() ca lp Socket gi.

Cng trong giao thc ICMP khng quan trng.

Ch : V raw socket khng format d liu nn mng byte s truyn nguyn

nh dng n host xa. Do ta phi to th cng gi ICMP thnh mng byte ri mi


gi. Nu c li bn s khng c gi ICMP tr v.
Socket newsock= new Socket(AddressFamily.InterNetwork,
SocketType.Raw, ProtocolType.Icmp);
IPEndPoint iep = new IPEndPoint
(IPAdress.Parse(192.168.1.2),0);
Sock.SendTo(packet, iep);
Nhn gi d liu Raw
o

D liu nhn c t raw socket phc tp hn, ta phi dng phng thc

ReceiveFrom().
o

Raw socket khng xc nh giao thc tng trn, d liu tr v phng thc

ReceiveFrom() cha ton b ni dung gi IP.


o

Ch : V phng thc ReceiveFrom() cho ton b gi tin IP, ta phi khai

bo kch thc buffer nhn nhiu hn d liu cha bn trong t nht l 20 bytes.
To lp ICMP Class
o

To lp ICMP class d dng trong cc ng dng mng c cc gi ICMP.

Lp ICMP thng cn c cc bin d liu trong bn sau:


Variable
Type
Code
Checksum
Message

Size
1 byte
1 byte
2 bytes
Multibyte

Type
Byte
Byte
Unsigned 16-bit integer
Byte array

Khng gn gi tr cho cc bin d liu. Ta s gn gi tr cho chng khi thc

s khi to gi ICMP.
class ICMP
{
xviii

public byte Type;


public byte Code;
public UInt16 Checksum;
public int MessageSize;
public byte[] Message = new byte[1024];
public ICMP()
{
}
}
to gi ICMP mi, ta khai bo v gn gi tr:

ICMP packet = new ICMP();


packet.Type = 0x08;
packet.Code = 0x00;
packet.Checksum = 0;
o

on code trn to phn u ca gi ICMP Echo Request.

Gi Echo Request nh ngha cc trng trong thnh phn thng ip ICMP

(Idnetifier v Sequence), bn phi quyt nh xy dng thnh phn ny nh th no. Bng 2


cch:

To lp khc cho trng Echo Request v ly mng byte ca

lp.

Chuyn cc trng thng ip ring thnh mng byte v t

chng vo thnh phn d liu.


o

Nu bn nh to nhiu gi Echo Request, nn to lp Ping nh ngha cc

trng Echo Request ring bit.


o

Ngc li ta lm theo cch sau:


Buffer.BlockCopy(BitConverter.GetBytes((short)1),0, packet.Message, 0, 2);
Buffer.BlockCopy(BitConverter.GetBytes((short)1),0, packet.Message, 2, 2);
byte[] data = Encoding.ASCII.GetBytes("test packet");
Buffer.BlockCopy(data, 0, packet.Message, 4, data.Length);
xix

packet.MessageSize = data.Length + 4;
o

Cc trng Identifier v Sequence cho gi Echo Reply ln lt chuyn thnh

mng byte v t ng v tr trong thnh phn thng ip.


Xy dng li i tng ICMP Object
o

Sau khi gi gi ICMP, thng ta s nhn li gi ICMP ca thit b t xa tr

v. ly ni dung ca gi , bn nn to lp ICMP khi dng khc ly mng byte


ICMP v t gi tr vo thnh phn d liu ph hp trong lp:
public ICMP(byte[] data, int size)
{
Type = data[20];
Code = data[21];
Checksum = BitConverter.ToUInt16(data, 22);
MessageSize = size - 24;
Buffer.BlockCopy(data, 24, Message, 0, MessageSize);
}
o

Lu raw socket tr v ton b gi IP. Nh vy ta phi b qua thng tin IP

header trc khi trch thng tin gi ICMP.


o

Thnh phn Type v tr 20 trong mng byte. Cc thnh phn d liu ring

bit trong gi ICMP c trch theo tng byte vo thnh phn ICMP ph hp.
o

Sau khi to i tng ICMP mi vi d liu gi nhn c, ta c th xem

c thnh phn d liu ring bit:


int recv = ReceiveFrom(data, ref ep);
ICMP response = new ICMP(data, recv);
Console.WriteLine("Received ICMP packet:");
Console.WriteLine(" Type {0}", response.Type);
Console.WriteLine(" Code: {0}", response.Code);
Int16 Identifier = BitConverter.ToInt16(response.Message, 0);
Int16 Sequence = BitConverter.ToInt16(response.Message, 2);
Console.WriteLine(" Identifier: {0}", Identifier);
xx

Console.WriteLine(" Sequence: {0}", Sequence);


stringData

Encoding.ASCII.GetString(response.Message,

4,

response.MessageSize - 4);
Console.WriteLine(" data: {0}", stringData);
o

V 2 bytes u to trng s nguyn khng du Identifier vaf 2 bytes th hai

l trng s nguyn khng du Sequence, bn c th dng lp BitConverter gn cc gi


tr .
o

Phn cn li ca thnh phn thng ip c gn cho trng Message ca

gi Echo Reply packet.


o

T on code ny, ta d thy v sao thnh MessageSize c thm vo lp

ICMP. Nu khng c n, s kh xy dng li thnh phn Message t gi nhn c.


The ICMP Packet Creator
o

Sau khi i tng ICMP mi c to ra v cc thnh phn d liu gi c

xc nh, bn mun gi gi n thit b xa. Bn khng th gi i tng ICMP bng


phng thc SendTo(); cn chuyn n thnh mng byte.
o

Cc d nht gi i tng phc tp qua mng l to phng thc chuyn

mi thnh phn d liu thnh mng byte v ni cc mng byte ln hn dng phng thc
Buffer.BlockCopy():
public byte[] getBytes()
{
byte[] data = new byte[MessageSize + 9];
Buffer.BlockCopy(BitConverter.GetBytes(Type), 0, data, 0, 1);
Buffer.BlockCopy(BitConverter.GetBytes(Code), 0, data, 1, 1);
Buffer.BlockCopy(BitConverter.GetBytes(Checksum), 0, data, 2, 2);
Buffer.BlockCopy(Message, 0, data, 4, MessageSize);
return data;
}
o

Khi tt c cc thnh phn d liu c chuyn thnh mng byte c ng dng

gi ICMP c th n n thit b mng xa:


xxi

IPEndPoint iep = new IPEndPoint(IPAddress.Parse("192.168.1.2"), 0);


sock.SendTo(packet.getBytes(), iep);
o

Ch : Gi tr Identifier v Sequence khng c chuyn thnh byte trc

khi a vo mng v thit b mng xa s tr v cho bn gi y ht.


o

y l phn kh nht khi to ra gi ICMP packet. Cch lm l to phng

thc t cha tnh checksum v a vo lp ICMP ph v cho ng dng ICMP.


o

Cho vi v d tnh checksum, sau y l v d:


public UInt16 getChecksum()
{
UInt32 chcksm = 0;
byte[] data = getBytes();
int packetsize = MessageSize + 8;
int index = 0;
while ( index < packetsize)
{
chcksm += Convert.ToUInt32(BitConverter.ToUInt16(data, index));
index += 2;
}
chcksm = (chcksm >> 16) + (chcksm & 0xffff);
chcksm += (chcksm >> 16);
return (UInt16)(~chcksm);

u tin gn y gi tr tt c thnh phn d liu, t thnh phn Checksum

thnh zero. Sau , gi phng thc getChecksum() tnh checksum ca gi ICMP, t


kt qu vo thnh phn Cheksum ca gi:
packet.Checksum = 0;
packet.Checksum = packet.getChecksum();
o

Sau khi tnh xong Cheksum gi gi i s udnjg phng thc SendTo().

Ch : Khi nhn gi ICMP phi ly gi tr Checksum v so snh vi gi tr

tnh cho gi. Nu 2 gi tr khng so khp, c li v cn truyn li gi.


xxii

xxiii

CHNG 3. THIT K V XY DNG CHNG TRNH

1.9.

PHN TCH YU CU
ng dng phi m bo thc hin c cc yu cu sau:
o

Gi gi tin ICMP n tt c cc my n di a ch trong mng LAN.

Bt gi tin IP c gi v v tch ra gi tin ICMP t gi tin IP x l.

C th qut theo cc lp a ch Private

1.10. PHN TCH CC CHC NNG


1.10.1.Phng thc hot ng ca ng dng
ng dng hot ng bng cch s ln lt gi tng gi tin ICMP ti tt c cc my
trong mng LAN cn qut. Dy a ch Ip gi cc gi tin ICMP s do ngi dng nhp
vo hay s chn la vic gi theo lp (lp A, lp B, lp C ..). Trong khi gi gi tin th ng
dng s bt ti tin phn hi t mt a ch IP no tin hnh x l. V da vo thng
tin phn hi m bit c a ch IP c tn ti trong mng hay khng.
gi c gi tin ti tt c cc a ch th ta dng 4 vng lp for lng nhau tng
ng vi 4 octet ca a ch IPv4.
for (byte i=ipf1;i<=ipt1;i++)
for (byte j=ipf2;j<=ipt2;j++)
for(byte t=ipf3;t<=ipt3;t++)
for (byte z = ipf4; z <= ipt4; z++)
Sau khi phn tch v xc nh c a ch IP no tn ti trong mng th ta s tin
hnh hin th ra cho ngi dng. Thng tin hin th bao gm s th t ca my trong mng,
tn my v a ch IP ca my .
1.10.2.Xy dng chc nng
T vic phn tch hot ng ca ng dng nh trn ta tin hnh xy dng chc nng
cho ng dng. ng dng s bao gm cc chc nng c bn:
o

Chc nng gi gi tin ICMP

Chc nng nhn v x l gi tin


xxiv

Chc nng qut a ch IP da trn 2 chc nng c bn trn.

o
1.11.

XY DNG CHC NNG

1.11.1.Xy dng chc nng gi gi tin


gi mt gi tin trong Visual C# th phi s dng mt Raw Socket. Mun to Raw
Socket khi to ra Socket ta s dng SocketType, giao thc ICMP.
To ra Raw Socket nh sau:
Socket sock = new Socket(AddressFamily.InterNetwork,
SocketType.Raw, ProtocolType.Icmp);
Gi gi d liu Raw:
ICMP l giao thc khng hng kt ni.
S dng phng thc SendTo() ca lp Socket gi.
Cng trong giao thc ICMP khng quan trng
IPEndPoint iep = new(IPEndPoint (IPAddress.Parse
(192.168.1.100), 0);
Sock.SendTo(packet, iep);
1.11.2.Xy dng chc nng nhn gi tin v x l
nhn gi tin t cc my khc gi v ta dng phng thc ReceiveFrom ca lp
Soket. D liu nhn v l mt gi tin IP, v vy ta phi tch ra ly gi tin ICMP. Raw
Socket khng t ng nh dng ICMP cho chng ta.
Ta nh ngha lp ICMP nh sau:
Class ICMP
{
public byte Type;
public byte Code;
public Ulnt16 Checksum;
public int Messagesize;
public byte[] Message = new byte[1024];
public ICMP()
{
xxv

}
}
To ra mt gi tin ICMP vi Type =8, Code = 0 tin hnh gi.
ICMP packet = new ICMP();
Packet.Type = 0x08;
Packet.Code = 0x00;
Packet.Checksum = 0;
ly li gi tin ICMP t gi IP nhn c ta c phng thc:
Public ICMP(byte[] data, int size)
{
Type = data[20];
Code = data[21];
Checksum = Bitconverter.toUInt16(data, 22);
Messagesize = size 24;
Buffer.Blockcopy(data, 24, Message, 0, Messagesize);
}
V gi tin ICMP bt u t byte th 20 trong gi tin IP nn ta s ly d liu bt u t
v tr byte th 20.
Byte th 20 cha thng tin v Type
Byte th 21 cha thng tin v Code
Byte th 22 v 23 cha thng tin v Cheksum
D liu bt u t byte th 24
Sau khi nhn gi tin ta tin hnh phn tch gi tin ICMP theo cc thng ip iu
khin:
Type
Code
Indentifier
Sequence
Ty theo cc thng ip m ta bit c gi tin c c phn hi li hay khng.
xxvi

1.11.3.Xy dng chc nng qut a ch IP


Chc nng qut a ch IP l m rng ca vic gi, nhn v phn tch gi tin nhn
c t nhiu my trong mng LAN. y ta s qut mt dy cc a ch IP. thc hin
cng vic ny ta tin hnh mt vng lp trn 4 octet ca a ch IP ln lt gi cc gi
tin ICMP n tng my v tin hnh phn tch nhn c tng ng ca mi my.
Nu c s phn hi ca my no th ta bit my ang tn ti trong mng v hin
th cho ngi s dng bit.
1.12. GIAO DIN V S DNG CHNG TRNH
1.12.1.Giao din
Giao din chnh ca chng trnh

Hnh 3.1. Giao din chnh ca chng trnh scanip


Chc nng qut a ch ca chng trnh

xxvii

Hnh 3.2. Chc nng qut tt c cc a ch ip

Hnh 3.3. Chc nng qut theo lp


Code chng trnh
Lp ICMP.cs: X l gi tin ICMP
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ScanIP
{
xxviii

class ICMP
{
// nh dng cho vic xy dng lp ICMP mc nh
public byte Type;
public byte Code;
public UInt16 Checksum;
public int Messagesize;
public byte[] Message = new byte[1024];
public ICMP()
{
}
// Xy dng li i tng ICMP nhn gi tin ICMP t cc thit b xa
public ICMP(byte[] data, int size)
{
Type = data[20];
Code = data[21];
Checksum = BitConverter.ToUInt16(data, 22);
Messagesize = size - 24;
Buffer.BlockCopy(data, 24, Message, 0, Messagesize);
}
// To gi ICMP gi ti cc thit b xa
public byte[] getByte()
{
byte[] data = new byte[Messagesize + 9];
Buffer.BlockCopy(BitConverter.GetBytes(Type),0,data,0,1);
Buffer.BlockCopy(BitConverter.GetBytes(Code),0,data,1,1);
Buffer.BlockCopy(BitConverter.GetBytes(Checksum),0,data,2,2);
Buffer.BlockCopy(Message,0,data,4,Messagesize);
return data;
xxix

}
// To phng thc Checksum
public UInt16 getChecksum()
{
UInt32 chcksm = 0;
byte[] data = getByte();
int packetsize = Messagesize + 8;
int index = 0;
while (index < packetsize)
{
Chcksm +=Convert.ToUInt32(BitConverter.ToUInt16(data,index));
index +=2;
}
chcksm = (chcksm >> 16) + (chcksm & 0xffff);
chcksm += (chcksm >> 16);
return (UInt16)(~chcksm);
}
}
}
Lp Kiemtra.cs: Kim tra thng tin tr v ca gi tin ICMP
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;

xxx

namespace ScanIP
{
class Kiemtra
{
public static bool Check(string st)
{
byte[] data = new byte[1024];
int recv;
Socket host = new Socket(AddressFamily.InterNetwork, SocketType.Raw,
ProtocolType.Icmp);
IPEndPoint ipe = new IPEndPoint(IPAddress.Parse(st), 0);
EndPoint ep = (EndPoint)ipe;
// To gi ICMP Request
ICMP packet = new ICMP();
packet.Type = 0x08;
packet.Code = 0x00;
packet.Checksum = 0;
// Gi nhiu gi ICMP
Buffer.BlockCopy(BitConverter.GetBytes((short)1), 0, packet.Message, 0, 2);
Buffer.BlockCopy(BitConverter.GetBytes((short)1), 0, packet.Message, 2, 2);
data = Encoding.ASCII.GetBytes("test packet");
Buffer.BlockCopy(data, 0, packet.Message, 4, data.Length);
packet.Messagesize = data.Length + 4;
int packetsize = packet.Messagesize + 4;
// Gi ti phng thc getChecksum v khi to gi tr trng Checksum ca gi
tin
UInt16 chcksum = packet.getChecksum();
packet.Checksum = chcksum;

xxxi

host.SetSocketOption(SocketOptionLevel.Socket,
SocketOptionName.ReceiveTimeout, 100);
host.SendTo(packet.getByte(), packetsize, SocketFlags.None, ipe);
try
{
data = new byte[1024];
recv = host.ReceiveFrom(data, ref ep);
ICMP response = new ICMP(data, recv);
// Ly cc gi tr cn thit ca gi ICMP t trong gi tin IP
int Indentifier = BitConverter.ToInt16(response.Message, 0);
int Sequence = BitConverter.ToUInt16(response.Message, 2);
System.Console.WriteLine("response from: {0}", ep.ToString());
System.Console.WriteLine("Type {0}", response.Type);
System.Console.WriteLine("Code: {0}", response.Code);
System.Console.WriteLine("Indentifier: {0}", Indentifier);
System.Console.WriteLine("Sequence: {0}", Sequence);
string stringData = Encoding.ASCII.GetString(response.Message, 4,
response.Messagesize - 4);
System.Console.WriteLine("data: {0}", stringData);
host.Close();
if (response.Type == 0 && response.Code == 0 && Indentifier == 1 &&
Sequence == 1)
return true;
else return false;
}
catch (SocketException)
{
System.Console.WriteLine("No response from remote host");
host.Close();
xxxii

return false;
}
}
}
}
Form1.cs: X l s kin trn Winform
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Threading;
namespace ScanIP
{
public partial class FrMain : Form
{
int stt;
byte ipf1, ipf2, ipf3, ipf4, ipt1, ipt2, ipt3, ipt4;
public FrMain()
{
InitializeComponent();
stt = 1;
}

xxxiii

delegate void DlgThreadCode();


public void ThreadCode()
{
if (this.prgressBar.InvokeRequired)
{
this.Invoke(new DlgThreadCode(ThreadCode));
}
else
{
for (byte i=ipf1;i<=ipt1;i++)
for (byte j=ipf2;j<=ipt2;j++)
for(byte t=ipf3;t<=ipt3;t++)
for (byte z = ipf4; z <= ipt4; z++)
{
int max = ((ipt1 - ipf1) + (ipt2 - ipf1) + (ipt3 - ipf3) + (ipt4 - ipf4));
prgressBar.Minimum = 0;
prgressBar.Maximum = max;
prgressBar.Step = 1;
prgressBar.PerformStep();
string strip=i.ToString()+"."+j.ToString() + "." + t.ToString() + "." +
z.ToString();
if (Kiemtra.Check(strip))
{
IPHostEntry ipHost = Dns.Resolve(strip);
string hostName = ipHost.HostName;
Add(stt.ToString().Trim(), hostName, strip);
lvKetQua.Refresh();
stt++;
}
xxxiv

}
prgressBar.Value = 0;
lbStatus.Text = " QUT XONG";
}
}
private void btnQuet_Click(object sender, EventArgs e)
{
for(int i = 0; i<lvKetQua.Items.Count;i++)
{
lvKetQua.Items[i].Remove();
i--;
}
lbStatus.Text="ANG QUT ...";
lbStatus.Refresh();
stt =1;
if(rdbAll.Checked==true)
{
ipf1 = Convert.ToByte(tbF1.Text.Trim());
ipf2 = Convert.ToByte(tbF2.Text.Trim());
ipf3 = Convert.ToByte(tbF3.Text.Trim());
ipf4 = Convert.ToByte(tbF4.Text.Trim());
ipt1 = Convert.ToByte(tbT1.Text.Trim());
ipt2 = Convert.ToByte(tbT2.Text.Trim());
ipt3 = Convert.ToByte(tbT3.Text.Trim());
ipt4 = Convert.ToByte(tbT4.Text.Trim());
}
if(rdbLop.Checked == true)
{
xxxv

if(cbbLop.SelectedIndex == 0)
{
ipf1 = 10;
ipf2 = 0;
ipf3 = 0;
ipf4 = 0;
ipt1 = 10;
ipt2 = 255;
ipt3 = 255;
ipt4 = 255;
}
else if(cbbLop.SelectedIndex ==1)
{
ipf1 = 172;
ipf2 = 16;
ipf3 = 0;
ipf4 = 0;
ipt1 = 172;
ipt2 = 31;
ipt3 = 255;
ipt4 = 255;
}
else
{
ipf1 = 192;
ipf2 = 168;
ipf3 = 1;
ipf4 = 0;
ipt1 = 192;
xxxvi

ipt2 = 168;
ipt3 = 1;
ipt4 = 255;
}
}
Thread thread = new Thread(new ThreadStart(ThreadCode));
thread.Start();
}
private void rbtQuetALL_CheckedChanged(object sender, EventArgs e)
{
if (rdbAll.Checked == true)
{
cbbLop.Enabled = false;
tbF1.Enabled = true;
tbF2.Enabled = true;
tbF3.Enabled = true;
tbF4.Enabled = true;
tbT1.Enabled = true;
tbT2.Enabled = true;
tbT3.Enabled = true;
tbT4.Enabled = true;
}
}
private void rbtQuetlop_CheckedChanged(object sender, EventArgs e)
{
if (rdbLop.Checked == true)
{
xxxvii

tbF1.Enabled = false;
tbF2.Enabled = false;
tbF3.Enabled = false;
tbF4.Enabled = false;
tbT1.Enabled = false;
tbT2.Enabled = false;
tbT3.Enabled = false;
tbT4.Enabled = false;
cbbLop.Enabled = true;
}
}
private void FrMain_Load(object sender, EventArgs e)
{
string strhostname = Dns.GetHostName();
IPHostEntry iphost = Dns.Resolve(strhostname);
lbDiachi.Text = iphost.AddressList[0].ToString();
lbHostName.Text = strhostname;
tbF1.Enabled = false;
tbF2.Enabled = false;
tbF3.Enabled = false;
tbF4.Enabled = false;
tbT1.Enabled = false;
tbT2.Enabled = false;
tbT3.Enabled = false;
tbT4.Enabled = false;
cbbLop.Enabled = false;
}
private void Add(String st1, String st2, String st3)
xxxviii

{
ListViewItem item = new ListViewItem(st1);
item.SubItems.Add(st2);
item.SubItems.Add(st3);
lvKetQua.Items.Add(item);
}
private void btnThoat_Click(object sender, EventArgs e)
{
Close();
}
private void btnDung_Click(object sender, EventArgs e)
{
}
}
}
1.12.2.S dng chng trnh
o

a ch IP ca bn: Chng trnh s ly a ch ip ca Card mng v gn

cho phn a ch IP ca bn.


o

Tn my ca bn: Chng trnh s ly hostname ca my tnh ang chy

chng trnh.
o

Qut tt c cc a ch: Ti y ngi s dng c th gn mt di a ch

ip mun chng trnh qut.


o

Qut theo lp: Ti y ngi s dng c th la chn qut ip theo lp

A,B,C,
o

Sau khi la chn vic qut theo di a ch ip hoc qut theo lp th

kch vo iu khin Qut chy chng trnh.


xxxix

Tip chng trnh s thc hin qut v thng tin qut c s hin th

bn listbox.
o

Trong qu trnh qut c th s dng iu khin Dng tm dng

chng trnh.

xl

KT LUN
Sau khi thc hin xong n gip nhm em cng c li kin thc va hc. Di s
hng dn nhit tnh v nhng kin thc v cng qu bu ca Thy Nguyn V gip
nhm em hon thin Chng trnh Scan IP.
Tuy nhin do thi gian nghin cu t, tham kho nhiu ngun ti liu khc nhau cng
nh kin thc v lp trnh mng cn hn hp do chng trnh ca nhm cn nhiu hn
ch nh tc x l cn kh chm, cha by c ht li trn chng trnh v i lc cn
gp mt s trc trc ngoi mun. Mong Thy C v cc bn c nhng nhn xt cng nh
gp chn thnh nht chng trnh ca nhm c th c hon chnh v ng dng trong
thc tin hn.

xli

S dng k thut lp trnh Socket xy dng chng trnh Scan IP

DANH MC TI LIU THAM KHO


Ting vit
[1]

Gio trnh lp trnh mng

[2]

Ebook Bi ging lp trnh mng vi C#

Ngun t Internet
[3]

http://www.wikipedia.org

[4]

http://www.tailieu.vn

[5]

http://ebook.edu.vn

Nhm 7 Lp CCMM03C

Trang 42

S dng k thut lp trnh Socket xy dng chng trnh Scan IP

NHN XT CA GING VIN HNG DN


.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................

Nhm 7 Lp CCMM03C

Trang 43

You might also like