tailieunhanh - Giáo trình Lập trình mạng: Phần 2

Nối tiếp phần 1 của "Giáo trình Lập trình mạng" phần 2 giới thiệu đến các bạn những nội dung: Xây dựng ứng dụng mạng, xây dựng ứng dụng nhiều lớp. Hy vọng, đây là tài liệu tham khảo hữu ích dành cho các bạn. | CHƯƠNG 3 XÂY DỰNG ỨNG DỤNG MẠNG . Giao thức ICMP Giới thiệu giao thức ICMP Internetwork Control Message Protocol - Giao thức ICMP hoạt động trên layer 2 - Internetwork trong mô hình TCP IP hoặc layer 3 - Network trong mô hình OSI Cho phép kiểm tra và xác định lỗi của Layer 3 Internetwork trong mô hình TCP IP bằng cách định nghĩa ra các loại thông điệp có thể sử dụng để xác định xem mạng hiện tại có thể truyền được gói tin hay không. Trong thực tế ICMP cần các thành phần của mọi gói tin IP để có thể hoạt động được. Cấu trúc của gói tin IP và ICMP Type có thể là một query hay một lỗi Code Xác định đây là loại query hay thông điệp lỗi Checksum Kiểm tra và sửa lỗi cho dữ liệu ICMP Message Tuỳ thuộc vào Type và Code . Sử dụng Raw Socket Gói tin ICMP không sử dụng TCP hoặc UDP nên chúng ta không thể sử dụng các lớp được hỗ trợ như TcpClient hay UdpClient mà phải sử dụng một Raw Socket Muốn tạo Raw Socket khi tạo ra Socket bạn sử dụng giao thức ICMP Tạo Raw Socket như sau Socket sock new Socket Raw Socket Format Value Description Ggp Gateway-to-Gateway Protocol Icmp Internet Control Message Protocol 55 Idp IDP Protocol Igmp Internet Group Management Protocol IP A raw IP packet Ipx Novell IPX Protocol ND Net Disk Protocol Pup Xerox PARC Universal Protocol PUP Raw A raw IP packet Spx Novell SPX Protocol SpxII Novell SPX Version 2 Protocol Unknown An unknown protocol Unspecified An unspecified protocol Gửi gói dữ liệu Raw ICMP là giao thức không hướng kết nối Sử dụng phương thức SendTo của lớp Socket để gửi Cổng trong giao thức ICMP không quan trọng IPEndPoint iep new IPEndPoint 0 packet iep Nhận gói dữ liệu Raw Sử dụng phương thức ReceiveForm cửa lớp Socket Dữ liệu nhận về là một gói tin IP chúng ta phải tách ra để lấy gói tin ICMP Raw Socket không tự động định dạng gói tin ICMP cho chúng ta. Chúng ta phải tự làm Data Variable Size Type Type 1 byte Byte