Giao th泳c e栄a socket( protocol)

Một phần của tài liệu ứng dụng bắt gói tin cho mạng quản trị (Trang 43)

Giao th泳c là cách qui逢噂c g穎i nh壱n d英li羽u gii英a hai hay nhi隠u máy tính trong m衣ng. Tùy theo m厩i ki吋u g穎i nh壱n d英 li羽u mà ta có các giao th泳c khác nhau. Hi羽n nay ki吋u g穎i nh壱n theo giao th泳c TCP và UDP là s穎 d映ng nhi隠u nh医t. Tuy nhiên 8i隠u này không b逸t bu瓜c, TCP và UDP ch雨 là cách cài 8員t cho vùng socket AF_INET theo giao ti院p Internet mà thôi. Ví d映, ban có th吋 cài 8員t m瓜t giao th泳c khác thay cho UDP áp f映ng cho cách chuy吋n d英 li羽u không

d違o 8違m. Mõi ki吋u socket 8隠u có giao th泳c m員c 8鵜nh áp f映ng cho nó. Trong t医t e違 các hàm socket sau này, tùy ch丑n protocol n院u có yêu c亥u d衣n có th吋 8員t giá tr鵜 0"8吋 yêu c亥u s穎 d映ng giao th泳c m員c

8鵜nh.

Trong các ví d映"荏ph亥n sau ta ch雨t壱p trung nghiên c泳u v隠 vùng socket AF_INET và 8鵜a ch雨 IP thay cho vùng AF_UNIX. V噂i AF_INET o丑i 泳ng f映ng o衣ng e栄a d衣n 8隠u có th吋 giao ti院p 8逢嬰c v噂i nhau b医t k吋 chúng 8ang ch衣y trên Windows, Linux hay UNIX.

Ch逢挨ng 4: L壱p trình socket

4.3.2. T衣o socket

H羽th嘘ng cung c医p chod衣n hàm socket()8吋 t衣o m噂i m瓜t socket. Hàm socket() tr違v隠s嘘nguyên int cho bi院t s嘘mô v違hay 8鵜nh danh dùng

8吋truy c壱p socket sau này. #include <sys/types.h> #include <sys/socket.h>

int socket(int domain, int type, int protocol);

Tham s嘘 domain ch雨 8鵜nh vùng hay j丑 8鵜a ch雨 áp 8員t cho socket.

domain có th吋nh壱n m瓜t trong các giá tr鵜 sau:

AF_UNIX Mぞsocket kxt nぐi theo giao thとc file (xuXt nhfp socket dばa trên xuXt nhfp (file)eてa UNIX/Linux

AF_INET Mぞsocket theo giao thとc Internet (sぬ dつng 8おa chえ IP8あkxt nぐi)

AF_IPX Vùng giao thとc IPX (oTng Novell)

AF_IS Chubn giao thとc ISO

AF_NS Giao thとc Xerox Network System

D違ng 4-1 Các giá tr鵜 c栄a domain

H亥u nh逢 d衣n ch雨 s穎 d映ng AF_UNIX và AF_INET là chính. Các vùng giao th泳c khác 8ã l厩i th運i và hi羽n nay ít còn 8逢嬰c s穎 d映ng.

Tham s嘘 type trong hàm socket() dùng ch雨 8鵜nh ki吋u giao tiép hay truy隠n d英 li羽u e栄a socket. D衣n có th吋 ch雨 8鵜nh b茨ng SOCK_STREAM dùng cho truy隠n d英 li羽u d違o 8違m ho員c SOCK_GRAM dùng cho truy隠n không d違o 8違m.

Ch逢挨ng 4: L壱p trình socket

Tham s嘘 protocol dùng8吋 ch丑n giao th泳c áp f映ng cho ki吋u socket( trong tr逢運ng h嬰p có nhi隠u giao th泳c áp f映ng cho m瓜t ki吋u truy隠n). Tuy nhiênd衣n ch雨 c亥n 8員t giá tr鵜0 (l医y giao th泳c m員c 8鵜nh). AF_INET ch雨 cài

8員t m瓜t giao th泳cduy nh医t cho các ki吋u truy隠n SOCK_STREAM và SOCK_DGRAM 8ó là TCP và UDP.

N院u v衣o socket thành công, hàm u胤 tr違 v隠 s嘘 8鵜nh danh socket( descriptor). D衣n s穎 d映ng s嘘 8鵜nh danh này trong t医t e違 các l運i i丑i truy xu医t socket khác nh逢 read/write. S嘘 này t逢挨ng t詠 nh逢 s嘘 8鵜nh danh file mà b衣n th逢運ng dùng 8吋 8丑c và ghi file. A丑c/ ghi vào socket e ng 8欝ng ngh a v噂i g穎i và nh壱n d英li羽u gi英a trình khách và trình ch栄.

4.3.3. A鵜nh 8鵜a ch雨cho socket

Khi socket 8ã 8逢嬰c v衣o ra, d衣n ch雨 c亥n ch雨 8鵜nh 8鵜a ch雨 và tên cho socket. M瓜t socket c亥n ph違i có 8鵜a ch雨 và tên 8吋 các trình khách có th吋

tham chi院u 8院n. Tùy m厩i vùng giao th泳c mà cách 8ánh 8鵜a ch雨 có th吋

khác nhau.

Ví d映khi d衣n dùng vùng giao th泳c AF_UNIX d詠a trên h羽th嘘ng t壱p tin, 8鵜a ch雨 socket 8逢嬰c 8鵜nh ngh a trong c医u trúc sockaddr_un e栄a file include sys/un.h nh逢 sau:

struct sockaddr_un{

sa_family_t sun_family; /* AF_UNIX */

char sun_path []; /* 8⇔ぜng ddn */ (adsbygoogle = window.adsbygoogle || []).push({});

Ch逢挨ng 4: L壱p trình socket

Trong Linux sa_family_t 8逢嬰c 8鵜nh ngh a là ki吋u short. sun_path là

8逢運ng d磯n8吋 t衣o t壱p tin socket.

Vùng AF_UNIX 8逢嬰c s穎 d映ng nhi隠u trong các 泳ng f映ng e映c b瓜

trên o丑t máy vì nó ph映 thu瓜c vào 8逢運ng d磯n t壱p tin tuy羽t 8嘘i e栄a h羽 8i隠u hành.

Th詠c t院 b衣nu胤 dùng AF_INET v噂i c医u trúc 8鵜a ch雨 8逢嬰c 8鵜nh ngh a trong sockadd_ine栄a file include netinet/in.h nh逢 sau:

struct sockadd_in{

short in sin_family; /* AF_INET */

unsigned short int sin_port; /* sぐcごng */

struct in_addr sin_addr; /* Aおa chえIP */

};

C医u trúc in_addr môv違 8鵜a ch雨 IP 8逢嬰c 8鵜nh ngh a nh逢 sau: struct in_addr{

unsigned long int s_addr; };

Nh逢 d衣n th医y 8鵜a ch雨 IP là m瓜t s嘘long (4 bytes hay 32 bits). Aây

e ng chính là c医u trúc 8鵜a ch雨 cho m瓜t ch逢挨ng trình giao ti院p v噂i nhau quao衣ng Internet.

Trên quan 8i吋m e栄a l壱p trình 泳ngf映ng, cho dù socket có 8鵜nh 8鵜a ch雨 theo vùng nào 8i ch<ng n英a m瓜t khi 8ã m荏 8逢嬰c socket, d衣n ch雨 c亥n xem socket nh逢 m瓜t t壱p tin và th詠c hi羽n thao tác read/write trên 8ó(

Ch逢挨ng 4: L壱p trình socket

4.3.4.A員t tên cho socket

Sau khi 8ã 8鵜nh 8鵜a ch雨, d衣n ch雨 c亥n 8員t tên cho socket. A嘘i v噂i AF_UNIX 8鵜c ch雨 chính là 8逢運ng d磯n, còn tên chính là tên t壱p tin8吋 t衣o socket. A嘘i v噂i vùng giao th泳c AF_INET 8鵜a ch雨 chính là s嘘 IP còn tên chính là s嘘 hi羽u c鰻ng (sin_port) trong c医u trúc sockaddr_in. Khi 8ã gán thông tin 8亥y 8栄cho socketd衣n c亥ni丑i hàm bind()8吋rabgd bu瓜c nh英ng thông tin này cho socket 8ã m荏ra tr逢噂c 8ó.

#include <sys/socket.h>

int byte (int socket, const struct sockaddr *address, size_t address_len);

Hàm h羽 th嘘ng bind() s穎 d映ng các thông tin trong c医u trúc address

8吋 gán cho socket s嘘 8鵜nh danh socketd tr違 v隠b荏i hàm socket() tr逢噂c 8ó. Tham s嘘 address_len cho bi院t chièu dài e栄a c医u trúc (struct sockaddr*) truy隠n vào hàm. D衣n l逢u ý sockaddr là c医u trúc t鰻ng quát cho e違

sockaddr_un và sockaddr_in

Khi ràng bu瓜c thành công bind()u胤 tr違v隠 tr鵜 0. N院u không hàm u胤 tr違 v隠

-1 và errnou胤ch泳a m瓜t trong các l厩i sau:

Mã l厩i Môv違

EBADF SぐmôvVfile không hぢp lう

ENOTSOCK SぐmôvVfile không dành cho socket

EINVAL SぐmôvVfile tham chixu8xn mじt socket 8ã có. (adsbygoogle = window.adsbygoogle || []).push({});

EADDRNOTAVAIL Aおa chえkhông xác 8おnh

EADDRINUSE Aおa chえ và cごng ràng buじc 8ã bお mじt socket khác chixm fつng

Ch逢挨ng 4: L壱p trình socket

N院u d衣n m荏 socket thu瓜c vùng AF_UNIX errno có th吋 nh壱n thêm các l厩i sau:

Mã l厩i Môv違

EACCESS Không thあ tTo file cho socket do không có quyznvTo file

ENOTDIR,

ENAMETOOLONG

Tên file không hぢp lう

D違ng 4-3 Các mã l厩i e栄a domain AF_UNIX

Ràng bu瓜c tên socket là b逢噂c quan tr丑ng nh医t 8吋socket e栄a d衣n có kh違 p<ng nhìn th医y và truy xu医t 8逢嬰c t瑛 các泳ngf映ng bên ngoài.

M瓜t socket n院u ch逢a 8逢嬰c 8員t tên i丑i là socket vô danh ( unnamed socket).

4.3.5.V衣o hàng 8嬰i cho socket

A吋 8ón nh壱n các k院t n嘘i chuy吋n 8院n, socket trình ch栄 ph違i v衣o ra m瓜t hàng 8嬰i (queue). O映c 8íche栄a hành 8嬰i làn逢un衣i các k院t n嘘i ch逢a

8逢嬰c trình ch栄 x穎 lý k鵜p. Hàm h羽 th嘘ng listen() u胤 th詠c hi羽n công vi羽c này.

#include <sys/socket.h>

int listen(int socketd, int backlog);

Tham s嘘socketd cho bi院t s嘘môv違socket c亥nv衣o hàng 8嬰i. backlog là s嘘 k院t n嘘i t嘘i 8a 8逢嬰c phép 8逢a vào hàng 8嬰i. N院u m瓜t k院t n嘘i 8院n trình ch栄trong khi 8ã có backlog k院t n嘘i tr逢噂c 8ó ch逢a x穎 lý thì k院t n嘘i này u胤 b鵜 th医t d衣i. Lý do hàng 8嬰i 8ã 8亥y, trình ch栄 server không mu嘘n nh壱n thêm k院t n嘘i n英a. Thông th逢運ng backlog mang giá tr鵜 5 là s嘘trung

Ch逢挨ng 4: L壱p trình socket

Hàm listen()u胤 tr違v隠 0 n院uv衣o hàng 8嬰i thành công, n院u th医t d衣i tr鵜

tr違 v隠 s胤 là -1 và bi院n errno u胤 ch泳a tr鵜 EBADF, EINVAL, ho員c ENOTSOCK.

4.3.6. Ch運 và ch医p nh壱n k院t n嘘i

M瓜t khi 8ã t衣o 8逢嬰c socket, 8員t tên cho nó và chu育n d鵜xong hàng

8嬰i 8吋 ti院p nh壱n k院t n嘘i, công vi羽c sau cùng là ch運 k院t n嘘i e栄a trình khách g穎i8院n.D衣ni丑i hàm accept()8吋th詠c hi羽n công vi羽c này.

#include <sys/socket.h>

int accept(int socketd, struct sockaddr *address, size_t *address_len);

Hàm h羽 th嘘ng accept() u胤 tr荏 v隠 khi có m瓜t trình khách mu嘘n k院t n嘘i v噂i 鰻 c逸m socket ch雨 8鵜nh s嘘 mô v違 socketd. K院t n嘘i e栄a trình khách tr逢噂c h院t 8逢嬰c 8員t vào hàng 8嬰i. Khi accept() phát hi羽n ra có socket trong hàng 8嬰i, nó s胤t詠 8瓜ng l医y 8鵜a ch雨 c栄a máy khách 8員t vào c医u trúc address, chi隠u dài th壱t s詠 c栄a c医u trúc 8鵜a ch雨 tr違 v隠 trong bi院n address_len. Ti院p 8院n accept()v衣o ra m瓜t socket vô danh. K院t qu違 tr違v隠 e栄a accept() là s嘘 mô v違 cho socket vô danh, d衣n có th吋 s穎 d映ng s嘘 này

8吋 liên n衣c v噂i trình khách. Socket vô danh m噂i này có cùng ki吋u v噂i socket 8員t tên 8ang l逸ng nghe trên hàng 8嬰i.

Do c医u trúc struct sockaddr không có8鵜nh cho nênd衣n c亥n thi院t l壱p kích th逢噂c v瑛a 8栄" 8吋 ti院p nh壱n 8鵜a ch雨 trình khách. N院u 8鵜a ch雨 trình khách dài h挨n không giand衣n dành cho c医u trúc sockaddr, ph亥n d逢 rau胤 d鵜c逸t d臼.

Ch逢挨ng 4: L壱p trình socket (adsbygoogle = window.adsbygoogle || []).push({});

N院u ch逢a có k院t n嘘i nào trong hàng 8嬰i, accept() u胤 d瑛ng n衣i ch運 – block( trình ch栄 s胤 không th詠c thi các l羽nh k院 ti院p) cho 8院n khi có k院t n嘘i e栄a client g穎i 8院n. Bàn có th吋thay 8鰻i c挨 ch院ch運 này b茨ng cách i丑i hàm fcntl() 8i隠u ch雨nh và thêm vào c運 O_NONBLOCK cho socket nh逢

sau:

int flags=fcntl(socketd, F_GETFL, 0);

fcntl(socketd, F_SETFL, O_NONBLOCK | flags);

Sau khi 8員t c運 này cho socket, hàm accept()u胤 không d瑛ngn衣i ch運

khi d衣ni丑i nó. accept()u胤 tr違v隠ngay s嘘môv違cho socket n院u có k院t n嘘i trong hàng 8嬰i, n院u không nó s胤 tr違v隠-1 và th詠c thi dòng l羽nh k院ti院p.

4.3.7. Yêu c亥u k院t n嘘i

Trình ch栄 c栄ad衣n th逢運ng th詠c hi羽n ch泳ac n<ngv衣o, 8員t tên, ch運 k院t n嘘i b茨nh các hàm socket(), bind(), và accept(). Tuy nhiên phía trình khách 8挨n gi違n h逢n, d衣n ch雨 c亥n i丑i hàm connect() 8吋 yêu c亥u k院t n嘘i v噂i trình ch栄. connect() 8逢嬰c khai báo nh逢 sau:

#include <sys/socket.h>

int connnect(int socketd, const struct sockaddr *address, size_t address_len);

Tham s嘘 socketd là s嘘 môv違 tr違v隠b荏i hàm socket(). address là c医u trúc 8鵜a ch雨 tr臼" 8院n socket e栄a trình ch栄. address_len là chi隠u dài e栄a bi院n c医u trúc address. K院t qu違 tr違 v隠 c栄a hàm là 0 n院u thành công và ng逢嬰cn衣i là -1. Trong tr逢運ng h嬰p -1, bi院n errnou胤ch泳a m瓜t trong nh英ng tr鵜 sau:

Ch逢挨ng 4: L壱p trình socket

Mã l厩i Mô v違

EBADF SぐmôvVsocket truyzn cho hàm không hぢp lう

EALREADY Kêt nぐi 8ã8⇔ぢc thixt lfp tr⇔ずc 8ó

ETIMEOUT Quá thぜi gian chぜ kxt nぐi

ECONNREFUSED Trình chてserver tなchぐi kxt nぐi

D違ng 4-4 Mã l厩ie栄a hàm connect()

N院u k院t n嘘i không thành công hàm connect()u胤 có g逸ng ch運k院t n嘘i

n衣i. N院u sau m瓜t s嘘 l亥n k院t n嘘i không thành công connect() u胤 tr違 v隠 l厩i ETIMEOUT.

V逢挨ng t詠 accept() d衣n có th吋 8鰻i ch院 8瓜 ch運 c栄a hàm connect() b茨ng cách i丑i fcntl() 8員t n衣i c運 ENONBLOCK. B茨ng cách này, khi k院t n嘘i không thành công 荏 l亥n 8亥u tiên, hàm connect()u胤 không ch運"8吋l壱p

n衣i k院t n嘘i. Hàm u胤k院t thúc và tr違v隠 mã l厩i ngay l壱p t泳c.

4.3.8. Aóng k院t n嘘i

V逢挨ng t詠nh逢 x穎 lý trên file. D衣n có trách nhi羽m 8óng các k院t n嘘i

8ã t衣o ra b茨ng cách g丑 hàm close(). Aóng k院t nói u胤 gi違i phóng tài nguyên và b違o 8違m d英 li羽u 8ã chuy吋n v違i hoàn t医t 荏 c違 hai 8亥u g穎i và nh壱n.

#include <sys/socket.h> int close(int sockd);

A嘘i v噂i e違 hai phía trình khách và trình ch栄, d衣n nên i丑i close()

Ch逢挨ng 4: L壱p trình socket

Th逢運ng thì close() tr荏 v隠 ngay t泳c kh逸c, tuy nhiên có th吋 close() u胤 t挨i vào tr衣ng thái ch運 (block) n院u scoket e栄a d衣n thi院t l壱p ki吋u k院t n嘘i hai chi隠u (SOCK_STREAM) cùng v噂i tùy ch丑n SOCK_LINGER và d英 li羽u

8ang荏 tr衣nh thái ch逢a chuy吋n h院t. Tùy ch丑n SOCK_LINER u胤 8逢嬰c 8隠 (adsbygoogle = window.adsbygoogle || []).push({});

c壱p sau.

4.3.9. Giao ti院p b茨ng socket

Chúng ta v瑛a xem qua các hàm h羽th嘘ng dùng v衣o và x穎 lý socket, gi運 8ây ta có th吋 tr荏 l衣i nh英ng ví d映v隠s穎 d映ng sockete映 th吋 j挨n.

Nh逢"8ã nêu, d衣n nên s穎 d映ng socket theo vùng AF_INET thay cho AF_UNIX. Socket d詠a trên h羽th嘘ng file th逢運ng g員p ph違i m瓜t s嘘v医n8隠

nh逢 chúng ch雨 8逢嬰c truy xu医t trên h羽 th嘘ng file ch雨 8鵜nh e栄a UNIX/Linux. Vi羽c phân quy隠n cho phép 8丑c ghi filee ng là m瓜t v医n 8隠. Th逢運ng file socket v衣o ra trong th逢 o映c hi羽n hành ho員c th逢 o映c v衣m /tmp và b衣n ph違i cho phép h亥u nh逢toàn quy隠n truy c壱p các th逢 o映c này

8吋 socket ho衣t 8瓜ng. V噂i AF_INET thì v医n 8隠 này không phát sinh, AF_INET d詠a vào c鰻ng và 8鵜a ch雨 IP 8吋 k院t n嘘i. 永ng f映ng e栄a d衣n trên Linux s穎 d映ng AF_INET u胤 d宇 chuy吋n 8鰻i sang Windows h挨n là AF_UNIX.

Trong AF_INET, khi v衣o m噂i m瓜t socket trên trình ch栄, d衣n ph違i ch丑n m瓜t s嘘 hi羽u c鰻ng 8員t cho socket. Vi羽c ch丑n s嘘 hi羽u c鰻ng ph違i lo衣i tr瑛 nh英ng c鰻ng 8ã 8逢嬰c các 泳ng f映ng khác s穎 d映ng. D衣n có th吋 tham kh違o t壱p tin /etc/services, 8ây là t壱p tin v<n d違n li羽t kê danh sách các

f鵜ch x映 và c鰻ng 8ã 8逢嬰c 8吋 dành s穎 d映ng, s嘘 c鰻ng e栄a d衣n không nên trùng v噂i nh英ng s嘘 8ã có trong danh sách này. Ban e ng không th吋 s穎 f映ng các c鰻ng nh臼 j挨n 1024, chúng dành cho cácf鵜chx映 c栄a h羽th嘘ng.

Giao ti院p o衣ng không 8òi j臼i ph違i k院t n嘘i v噂i m瓜t h羽 th嘘ngo衣ng th壱t s詠. Ngay trên m瓜t máy, d衣n có th吋 s穎 d映ng giao ti院p o衣ng 8吋 liên

Ch逢挨ng 4: L壱p trình socket

n衣c gi英a các ti院n trình 8ang ch衣y. N院u c亥n s嘘 8鵜a ch雨 IP, d衣n có th吋 s穎 f映ng s嘘 127.0.0.1, 8ây là 8鵜a ch雨 IP “h欝i qui” (loop back) th逢運ng dùng cho các 泳ngf映nge映c b瓜. V噂i 8鵜a ch雨 này, d英li羽u g穎i 8i u胤quay v隠 8úng

8鵜a ch雨 ban 8亥u, có ngh a là máy g穎i và máy nh壱n 8逢嬰c xem là m瓜t. Do tính ch医t 8員c bi羽t này, n院u trình khách trên máy e映c b瓜 g穎i d英 li羽u 8院n trình ch栄theo IP 127.0.0.1 thì trình ch栄 c ng trên máy này u胤 nh壱n 8逢嬰c d英li羽u và h欝i âm n衣i. N院u máyd衣n hòao衣ng,d衣n nênj臼i ng逢運i qu違n tr鵜 o衣ng8吋xin m瓜t 8鵜a ch雨 IP thích h嬰p.

A鵜a ch雨 m衣ng IP th逢運ng khó nh噂, d衣n có th吋 yêu c亥u socket ti院p nh壱n m瓜t tên g嬰i nh噂 khách thay cho s嘘 IP. Ch鰯ng j衣n localhost hay my.computer.home thay cho 127.0.0.1. T壱p tin v<n d違n /etc/hosts ch泳a các danh sách chuy吋n 8鰻i này. Ví d映,d衣n có th吋 dùng trình so衣n th違o vi hay gnotepad s穎a n瓜i dung t壱p tin này nh逢 sau:

127.0.0.1 localhost

127.0.0.1 my.computer.home 207.46.131.91 www.microsoft.com

Nh逢 d衣n th医y, m瓜t 8鵜a ch雨 IP có th吋 ánh z衣 b茨ng nhi隠u tên khác nhau (8鵜a ch雨 IP và tên th逢運ng cách nhau b茨ng kho違ng tr逸ng hay tab). Th逢運ng 8鵜a ch雨 IP 127.0.0.1 8逢嬰c i丑i là localhost và không có gì tr荏

ng衣i n院u d衣n d詠 8鵜nh 8員t cho nó m瓜t cái tên khác ch鰯ng j衣n nh逢

my.computer.home. Các 8鵜a ch雨 Web mà b衣n th逢運ng th医y nh逢

www.yahoo.com hay www.microsoft.com là các 8鵜a ch雨 toàn c亥u 8逢嬰c qu違n lý b荏i t鰻 ch泳c qu嘘c t院 InterNIC. A吋 bi院t m瓜t tên i丑i 泳ng v噂i m瓜t

Ch逢挨ng 4: L壱p trình socket $ ping localhost

PING (127.0.0.1) from 127.0.0.1 : 56 (84) bytes of data. 64 bytes from (127.0.0.1) : icmp_seq=0 ttl=255 time=67 usec 64 bytes from (127.0.0.1) : icmp_seq=0 ttl=255 time=48 usec 64 bytes from (127.0.0.1) : icmp_seq=0 ttl=255 time=51 usec

4.4. S穎 d映ng socket trong泳ngf映ng minhj丑a

Ph亥n l壱p trình socket nàyu胤 8逢嬰c s穎 d映ng8吋th詠c hi羽n vi羽c trao 8鰻i thông tin gi英a thành ph亥n client và server trong ph亥n 泳ng f映ng minh

j丑a.

E映 th吋 thành ph亥n client u胤 dùng socket k院t n嘘i 8院n thành ph亥n server. Sau khi k院t n嘘i thành công client u胤 g穎i các l羽nh nh逢 Start Capture, Stop Capture, Get Filter... 8院n server, server nh壱n các l羽nh này, th詠c hi羽n xong nó s胤 tr違 l運i k院t qu違th詠c hi羽n là thành công hay th医t d衣i cho client.

Ph亥n 3: Xây d詠ng 泳ng d映ng th穎 nghi羽m PacketCap

PH井N 3: XÂY D衛NG永NGF影NG TH盈NGHI烏M PACKETCAP

Ch逢挨ng 5. Phân tích và thi院t k院PacketCap Ch逢挨ng 6. Cài 8員t và th穎nghi羽m

Ch逢挨ng 5: Phân tích và thi院t k院PacketCap

Ch逢挨ng 5: Phân tích và thit k PacketCap (adsbygoogle = window.adsbygoogle || []).push({});

5.1. Kh違o sát hi羽n tt衣ng

Hi羽n nay có r医t nhi隠u ph亥m m隠m b逸t gói tin nh逢 Tcpdump, Microsoft Network Monitor, Ethereal...Trong 8ó ph亥n m隠m ngu欝n m荏 Ethereal n鰻i b壱t v噂i nhi隠u 逢u 8i吋m nh逢ch衣y trên nhi隠u h羽 8i隠u hành, h鰻 tr嬰 b逸t gói tin theo nhi隠u giao th泳c khác nhau...

Các ph亥n m隠m này có h衣n ch院 chung là khi chúng 8ang b逸t các gói tin thì chúng ta không th吋 8丑c, phân tích các thông tin b逸t 8逢嬰c, hay nói cách khác khi k院t thúc quá trình b逸t các gói tin r欝i thì m噂i phân tích các thông tin này 8逢嬰c.

Một phần của tài liệu ứng dụng bắt gói tin cho mạng quản trị (Trang 43)