3 Các Phương Pháp Xây Dựng
3.1 Raw Socket – mức hệ điều hành
Socket là một phương pháp để thiết lập kết nối truyền thông giữa một chương trình yêu cầu dịch vụ ( client) và một chương trình cung cấp dịch vụ (server) trên mạng LAN, WAN hay Internet và đôi lúc là giữa những quá trình ngay bên trong máy tính. Mỗi socket có thể được xem như một điểm cuối trong một kết nối. Một socket trên máy yêu cầu dịch vụ có địa chỉ mạng được cấp sẵn để “gọi” một socket trên máy cung cấp dịch vụ. Một khi socket đã được thiết lập phù hợp, hai máy tính có thể trao đổi dịch vụ và dữ liệu.
Các đặc tính của Socket bao gồm:
• Giao thức (TDP, UDP hay raw IP).
• Số hiệu cổng.
• Địa chỉ IP.
Phân loại: Có vài loại Socket thông dụng như:
• Datagram Socket hay còn gọi là connectionless socket sử dụng UDP.
• Stream Socket hay còn gọi là connection – oriented socket sử dụng TCP.
• Raw Socket (hay là Raw IP Socket). Với socket dạng này tầng giao vận được bỏ qua và ứng dụng có thể truy nhập trực tiếp vào dữ liệu của gói tin IP. Tóm lại, sử dụng Socket ta có thể chặn bắt và truy nhập các thông tin từ tầng giao vận trở lên (TCP và UDP) và có thể truy nhập tới tầng Internet ( IP) nếu sử dụng raw socket. Tuy nhiên hiện nay trên hệ điều hành window chỉ có thư viện winsock dành cho Visual C++ và Socket trong .Net hỗ trợ raw socket. Thư viện lập trình mạng của Java không cho phép người phát triển được sử dụng tới raw socket.
Raw socket là một socket cho phép truy nhập trực tiếp tới header của một
packet. Nói một cách khác, raw socket là một cách bỏ qua toàn bộ network stack và đưa packet tới thẳng tầng ứng dụng. Raw socket có thể thực hiện một trong hai tác vụ:
Packet Injection: gửi các packet tới raw socket.
Raw socket không nằm ở tầng ngôn ngữ lập trình mà là một phần networking API của hệ điều hành. Sử dụng raw socket chúng ta có thể lấy về header của packet khác với socket thông thường chỉ lấy về payload của packet. Raw socket được sử dụng trong transport layer và network layer.
Khi Window XP được phát hành năm 2001, raw socket được cài đặt trong thư viện Winsock, tuy nhiên Microsoft tuyên bố raw socket chỉ được hacket dùng trong việc thực hiện TCP reset attacks. Do vậy sau 3 năm sau trong bản hotfix, Mircrosoft đã hạn chế hỗ trợ raw socket trong winsock cũng như không hỗ trợ cho ứng dụng nào sử dụng chúng nữa.