So sánh Raw Socket và Pcap

Một phần của tài liệu Hướng dẫn xây dựng chương trình bắt gói tin (Trang 41 - 43)

3 Các Phương Pháp Xây Dựng

3.3 So sánh Raw Socket và Pcap

Tương ứng giữa Socket và Pcap

Raw socket và pcap đều có thể được sử dụng để viết chương trình sniffer. Tuy nhiên socket chỉ có thể làm việc từ tầng thứ 4 trong mô hình OSI trở lên (transport layer trong TCP/IP) và raw socket có thể làm việc được với tầng thứ 3 trong mô hình OSI trở lên (network layer trong TCP/IP) còn pcap có thể làm việc với tầng thứ 2 trở lên trong mô hình OSI (link layer trong TCP/IP) (nguồn). Ngoài ra raw socket trên window đã không còn được Microsoft hỗ trợ cũng như tính năng bị giới hạn như:

• Dữ liệu TCP không thể được gửi qua raw socket.

• UDP datagram với địa chỉ nguồn không hợp lệ sẽ không thể gửi qua raw socket.

Do vậy, nếu sử dụng Socket để đo đạc toàn bộ lưu lượng thông tin vào/ra một hệ thống hay một trạm thì sẽ dẫn tới kết quả có thể không chính xác do nó chỉ có thể chặn bắt một số loại packet nhất định (TCP và UDP) (IP nếu như sử dụng raw IP socket). Các giao thức với các gói dữ liệu khác như ARP, RARP, ICMP ta sẽ không thể chặn bắt khi sử dụng socket. Nếu sử dụng thư viện pcap để chặn bắt ở mức network adapter thì ta sẽ có thể chặn bắt được toàn bộ thông tin do mức chặn bắt ở đây tầng thứ 2 trong mô hình OSI (link layer trong TCP/IP). Tuy nhiên, độ sai lệch là rất nhỏ do các gói tin ngoài TCP và UDP có rất nhỏ và không thường xuyên.

Sử dụng Raw Socket ta có thể block một ứng dụng, một tiến trình sử dụng mạng bằng cách có thể chặn cổng hay chặn địa chỉ IP của nó. Tuy nhiên, khi sử dụng thư viện pcap, ta không thể làm việc này mà chỉ có thể chặn bắt và trích xuất thông tin. Kết luận: Để xây dựng một ứng dụng sniffer, ta hoàn toàn có thể sử dụng bất kỳ một trong hai phương pháp trên. Tuy nhiên, tùy vào nhiều yếu tố khác nhau mà ta có thể chọn một trong hai phương pháp hay kết hợp cả hai phương pháp.

Một phần của tài liệu Hướng dẫn xây dựng chương trình bắt gói tin (Trang 41 - 43)