Ngược lại, giao thức RARP được dùng để chuyển đổi từ địa chỉ MAC sang địa chỉ IP.Khuôn dạng của một gói tin RARP tương tự như khuôn dạng của một gói tin ARP đã được chỉ ra như trong hình
Trang 1ĐỀ TÀI
Ứng dụng giao thức ICMP để xây dựng
chương trình Scan IP
Võ Duy Dũng Lớp 07T4 – Nhóm 09B
Trang 2NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
………
… ………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 3CHƯƠNG I: CƠ SỞ LÝ THUYẾT 4
I Giới thiệu TCP/IP 4
1 Các lớp trong mô hình TCP/IP 4
2 Các bước đóng gói dữ liệu trong mô hình TCP/IP 5
3 Một số giao thức cơ bản trong mô hình TCP/IP 5
II Giao thức ICMP 11
1 Giới thiệu ICMP 11
2 Cấu trúc 12
3 Danh sách các thông điệp điều khiển của giao thức ICMP 13
CHƯƠNG II: THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH 16
I Phân tích yêu cầu 16
II Phân tích các chức năng 16
1 Phương thức hoạt động của ứng dụng: 16
2 Xây dựng chức năng: 16
III Xây dựng các chức năng 17
CHƯƠNG III: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ 19
I Môi trường triển khai 19
1 Hệ thống 19
2 Phần mềm 19
II Kết quả các chức năng của chương trình: 19
1 Giao diện chính của chương trình: 19
Trang 4Code chương trình: 21
1 Lớp ICMP.cs: Xử lý gói tin ICMP 21
2 Lớp Kiemtra.cs: Kiểm tra thông tin trả về của gói tin ICMP 22
3 Form1.cs: Xử lý sự kiện trên Winform 23
DANH MỤC HÌNH VẼ Hình 1.1 Mô hình TCP/IP 4
Hình 1.2 Các bước đóng gói trong mô hình TCP/IP 5
Hình 1.3 Các giao thức khác nhau TCP/IP 6
Hình 1.4 ARP Header 6
Hình 1.5 IP Header 7
Hình 1.6 Vị trí của ICMP message 8
Hình 1.7 ICMP Header 8
Hình 1.8 IGMP Header 8
Hình 1.9 UDP Header 9
Hình 1.10 Cách thiết lập kết nối giao thức 10
Hình 1.11 Truyền, nhận gói tin trong TCP 11
Hình 2.1 Cấu trúc gói tin ICMP 13
Hình 3.1 Chương trình trước khi quét 20
Hình 3.2 Quét dãy địa chỉ mà người dùng nhập vào 20
Hình 3.3 Chức năng quét theo lớp 21
Trang 5I Giới thiệu TCP/IP
1 Các lớp trong mô hình TCP/IP
Lớp Transport: đảm nhiệm việc vận chuyển từ nguồn đến đích Tầng Transport đảm nhiệm việc truyền dữ liệu thông qua hai nghi thức: TCP (Transmission Control Protocol) và UDP (User Datagram Protocol)
Lớp Internet: đảm nhiệm việc lựa chọn đường đi tốt nhất cho các gói tin Nghi thức được sử dụng chính ở tầng này là nghi thức IP (Internet Protocol)
Lớp Network Interface: có tính chất tương tự như như hai lớp Data Link và
Trang 62 Các bước đóng gói dữ liệu trong mô hình TCP/IP
Hình 1.2 Các bước đóng gói trong mô hình TCP/IP
3 Một số giao thức cơ bản trong mô hình TCP/IP
Trang 7Hình 1.3 Các giao thức khác nhau TCP/IP
a Giao thức ARP (Address Resolution Protocol) và giao thức RARP (Reverse Address Resolution Protocol)
Trên một mạng cục bộ hai trạm chỉ có thể liên lạc với nhau nếu chúng biết địa chỉ MAC của nhau Như vậy vấn đề đặt ra là phải thực hiện ánh xạ giữa địa chỉ IP (32 bit) và địa chỉ MAC (48 bit) của một trạm Giao thức ARP đã được xây dựng
để chuyển đổi từ địa chỉ IP sang địa chỉ MAC khi cần thiết.Khuôn dạng của một gói tin ARP được chỉ ra trong hình dưới đây:
Hình 1.4 ARP Header
Trang 8Ngược lại, giao thức RARP được dùng để chuyển đổi từ địa chỉ MAC sang địa chỉ IP.
Khuôn dạng của một gói tin RARP tương tự như khuôn dạng của một gói tin ARP đã được chỉ ra như trong hình trên Chỉ khác là ở trường Operation nó sẽ có giá trị là 3 cho gói tin RARP request và giá trị là 4 cho gói tin RARP reply
Các giao thức ARP và RARP không phải là bộ phận của IP mà IP sẽ dùng đến chúng khi cần
b Giao thức IP (Internet Protocol)
Giao thức IP là một trong những giao thức quan trọng nhất của bộ giao thức TCP/IP Mục đích của giao thức IP là cung cấp khả năng kết nối các mạng con thành liên mạng để truyền dữ liệu IP là giao thức cung cấp dịch vụ phân phát datagram theo kiểu không liên kết và không tin cậy nghĩa là không cần có giai đoạn thiết lập liên kết trước khi truyền dữ liệu, không đảm bảo rằng IP datagram sẽ tới đích và không duy trì bất kỳ thông tin nào về những datagram đã gửi đi
Khuôn dạng đơn vị dữ liệu dùng trong IP được mô tả như sau:
Hình 1.5 IP Header
c Giao thức ICMP (Internet Control Message Protocol)
- ICMP là một giao thức thông điệp, thường được xem như là một phần của lớp
IP, được dùng để trao đổi các thông tin điều khiển dòng số liệu, thông báo lỗi và các thông tin trạng thái khác của bộ giao thức TCP/IP
- Khuôn dạng của một thông điệp ICMP và mối quan hệ của nó với một IP datagram được minh họa qua hình dưới đây
Trang 9Hình 1.6 Vị trí của ICMP message
Có nhiều loại thông điệp ICMP, mỗi thông điệp ICMP có một khuôn dạng riêng của nó, mặc dù vậy chúng luôn bắt đầu với 3 trường giống nhau:
Hình 1.7 ICMP Header
• Type (8 bit)
• Code (8 bit)
• Checksum (16 bit)
Có 15 giá trị khác nhau cho trường type, để định nghĩa từng thông điệp ICMP
cụ thể Một vài loại thông điệp ICMP sử dụng thêm những giá trị khác của trường code để định nghĩa cho nó
d Giao thức IGMP (Internet Group Management Protocol)
IGMP là một giao thức được sử dụng bởi host và router mà hỗ trợ kỹ thuật multicasting Giống như ICMP, IGMP thường được xem như là một phần của lớp
IP Tuy nhiên, IGMP không giống như các giao thức khác, nó là một giao thức thông điệp có kích thước cố định và không có phần dữ liệu
Hình vẽ sau đây chỉ ra khuôn dạng của một thông điệp IGMP phiên bản 2:
Hình 1.8 IGMP Header
Trang 10Ý nghĩa các tham số:
• Type (8 bit): định nghĩa loại thông điệp IGMP
• Respond time (8 bit): giá trị thời gian tối đa mà một host phải trả lời một truy vấn
• Checksum (16 bit): kiểm soát lỗi
• Group address (32 bit): dùng để chỉ định một nhóm cụ thể hay được thiết lập giá trị 0.0.0.0 để chỉ tất cả các nhóm
e Giao thức UDP (User Datagram Protocol)
UDP là giao thức không liên kết, cung cấp dịch vụ giao vận không tin cậy, sử dụng thay thế cho TCP trong tầng giao vận Khác với TCP, UDP không có chức năng thiết lập và giải phóng liên kết, không có cơ chế báo nhận (ACK), không sắp xếp tuần tự các đơn vị dữ liệu (datagram) đến và có thể dẫn đến tình trạng mất hoặc trùng dữ liệu mà không hề có thông báo lỗi cho người gửi
Khuôn dạng của UDP datagram được mô tả như sau:
Trang 11dữ liệu bắt đầu truyền TCP còn gọi là nghi thức hướng kết nối, với nghi thức TCP thì quá trình hoạt động trải qua ba bước sau:
• Thiết lập kết nối (Connection establishment)
• Truyền dữ liệu (Data transfer)
• Kết thúc kết nối (Connection termination)
TCP phân chia các thông điệp thành các segment, sau đó nó ráp các segment này lại tại bên nhận và nó có thể truyền lại những gói dữ liệu nào đã bị mất Với TCP thì dữ liệu đến đích là đúng thứ tự, TCP cung cấp Vitual Circuit giữa các ứng dụng bên gửi và bên nhận
Giao thức TCP thiết lập một kết nối bằng phương pháp “Bắt tay 3 lần” way handshake)
(three-Hình 1.10 Cách thiết lập kết nối giao thức
Hình vẽ dưới đây là một ví dụ về cách thức truyền, nhận gói tin bằng giao thức TCP
Trang 12Hình 1.11 Truyền, nhận gói tin trong TCP
Giao thức TCP là giao thức có độ tin cậy cao, nhờ vào phương pháp truyền gói
tin, như cơ chế điều khiển luồng (flow control), các gói tin ACK,…
II Giao thức ICMP
Internet Control Message Protocol (ICMP) là một trong những giao thức cốt
lõi của giao thức Internet Suite Đó là chủ yếu được sử dụng bởi các hệ điều hành của máy tính nối mạng để gửi thông báo lỗi cho thấy, ví dụ, một dịch vụ yêu cầu không có hoặc có một máy chủ hoặc router không thể đạt được ICMP cũng có thể được sử dụng để chuyển tiếp tin nhắn truy vấn
ICMP khác với giao thức vận chuyển như TCP và UDP ở chỗ nó không thường được sử dụng để trao đổi dữ liệu giữa các hệ thống, cũng không phải là thường xuyên làm việc của người sử dụng các ứng dụng mạng lưới cấp (với ngoại lệ của một số công cụ chẩn đoán như ping và traceroute )
ICMP cho giao thức Internet phiên bản 4 (IPv4) cũng được gọi là ICMPv4 IPv6 có một giao thức tương tự, ICMPv6
1 Giới thiệu ICMP
Internet Control Message Protocol là một phần của giao thức Internet Suite được định nghĩa trong RFC 792 thông điệp ICMP thường được tạo ra để đáp ứng
Trang 13TTL đạt đến 0, một ICMP Thời gian để sống vượt quá cảnh báo được gửi đến các nguồn của gói dữ liệu này
Mỗi thông điệp ICMP được đóng gói trực tiếp trong một gói dữ liệu IP duy nhất, và do đó, giống như UDP , ICMP là không đáng tin cậy
Mặc dù thông điệp ICMP được chứa trong tiêu chuẩn datagrams IP, các thông điệp ICMP thường được xử lý như một trường hợp đặc biệt, phân biệt với chế biến
IP bình thường, chứ không phải xử lý như là một giao thức bình thường phụ của
IP Trong nhiều trường hợp, nó là cần thiết để kiểm tra các nội dung của thông điệp ICMP và cung cấp những thông báo lỗi thích hợp cho các ứng dụng tạo ra các gói tin IP ban đầu, một trong đó nhắc việc gửi thông điệp ICMP
Nhiều tiện ích mạng thông dụng dựa trên thông điệp ICMP Các lệnh
traceroute được thực hiện bằng cách truyền UDP datagrams với gói tin được đặt
thêm thông số IP TTL, và tìm kiếm ICMP có thời gian sống lớn hơn TTL(ở trên)
và "Destination unreachable" trong quá trình truyền Các tiện ích ping được thực
hiện bằng cách sử dụng ICMP "Echo Request" và "Echo Reply"
2 Cấu trúc
Các gói tin bắt đầu sau IP header (20 bytes) Tất cả các gói ICMP sẽ có một header có kích thước 8 byte và phần biến dữ liệu 4 byte đầu tiên của header này sẽ được nhất quán Các byte đầu tiên dành cho trường Type Các byte thứ hai là cho trường Code Các byte thứ ba và thứ tư là trường Checksum Nội dung của các byte từ byte thứ 4 của header sẽ khác nhau dựa trên trường Type và Code
Thông báo lỗi của ICMP có chứa một phần dữ liệu bao gồm toàn bộ các IP header cộng với các byte đầu tiên của gói tin mà tạo ra các thông báo lỗi khác nhau Các gói dữ liệu ICMP sau đó được gói gọn trong một gói IP mới
• Type - ICMP Code theo quy định dưới đây
• Code - Kiểu loại hình nhất định
• Checksum - kiểm tra lỗi dữ liệu Tính từ ICMP header + dữ liệu, với giá trị
0 cho lĩnh vực này Thuật toán là giống như tổng kiểm tra tiêu đề cho IPv4
Trang 140 Loại Mã số Checksum
Hình 2.1 Cấu trúc gói tin ICMP
3 Danh sách các thông điệp điều khiển của giao thức ICMP
Type Code Description
0 - Echo Reply 0 Có phản hồi lại (sử dụng để ping)
3 - Destination Unreachable
0 Điểm đích của mạng không thể truy cập
1 Host đích không thể truy cập
2 Giao thức đích không thể truy cập
3 Cổng đích không thể truy cập
4 Yêu cầu sự phân mảnh , và đặt cở DF
5 Định tuyến nguồn bị lỗi
6 Không biết mạng đich
7 Không biết máy đích
8 Host nguồn bị cô lập
9 Mạng hành chính bị cấm
10 Host hành chính bị cấm
11 Mạng không thể truy cập cho TOS
12 Máy không thể truy cập cho TOS
13 Truyền thông bị cấm
4 - Source Quench 0 Nguồn bị tắt (điều khiển tắc nghẽn)
Trang 156 Thay thế địa chỉ host
8 - Echo Request 0 Lặp lại yêu cầu
9 – Router Advertisement 0 Router quảng bá
10 - Router Solicitation 0 Router khám phá/lựa chọn
11 - Time Exceeded 0 TTL hết trong quá trình truyền
13 - Timestamp 0 Dấu thời gian
14 - Timestamp Reply 0 Trả lời dấu thời gian
15 - Information Request 0 Yêu cầu thông tin
16 - Information Reply 0 Phản hồi thông tin
17 - Address Mask Request 0 Yêu cầu địa chỉ mặt nạ
18 - Address Mask Reply 0 Trả lời địa chỉ mặt nạ
19 Dành riêng cho bảo mật
30 - Traceroute 0 Yêu cầu thông tin
Trang 1632 Chuyển host di động
Simple Key – Quản lý giao thức Internet
động như Seamoby [RFC4065]
Trang 17I Phân tích yêu cầu
Ứng dụng phải đảm bảo thực hiện được các yêu cầu sau:
• Gửi gói tin ICMP đến tất cả các máy đến dải địa chỉ trong mạng LAN
• Bắt các gói tin IP được gửi về và tách ra gói tin ICMP từ gói tin IP để xử lý
• Có thể quét theo các lớp địa chỉ Private
II Phân tích các chức năng
1 Phương thức hoạt động của ứng dụng:
Ứng dụng hoạt động bằng cách sẽ lần lượt gửi từng gói tin ICMP tới tất cả các máy trong mạng LAN cần quét Dãy địa chỉ IP để gửi các gói tin ICMP sẽ do người dùng nhập vào hay sẽ chọn lựa việc gửi theo lớp (lớp A, lớp B, lớp C ) Trong khi gửi gói tin thì ứng dụng sẽ bắt gói tin phản hồi từ một địa chỉ IP nào đó
để tiến hành xử lý Và dựa vào thông tin phản hồi đó mà biết được địa chỉ IP đó có tồn tại trong mạng hay không
Để gửi được gói tin tới tất cả các địa chi thì ta dùng 4 vòng lặp for lồng nhau tương ứng với 4 octet của đị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 phân tích và xác định được địa chỉ IP nào tồn tại trong mạng thì ta sẽ tiến hành hiển thị ra cho người dùng Thông tin hiển thị bao gồm số thứ tự của máy trong mạng, tên máy và địa chỉ IP của máy đó
2 Xây dựng chức năng:
Từ việc phân tích hoạt động của ứng dụng như trên ta tiến hành xây dựng chức năng cho ứng dụng Ứng dụng sẽ bao gồm các chức năng cơ bản sau:
• Chức năng gửi gói tin ICMP
• Chức năng nhận và xử lý gói tin
• Chức năng quét địa chỉ IP dựa trên 2 chức năng cơ bản trên
Trang 18III Xây dựng các chức năng
a Xây dựng chức năng gửi gói tin:
Để gửi một gói tin trong Visual C# thì ta phải sử dụng một Raw Socket Muốn tạo Raw Socket khi tạo ra Socket ta sử dụng SocketType.Raw, giao thức ICMP.Tạo Raw Socket như sau:
Socket sock = new Socket(AddressFamily.InterNetwork,
SocketType.Raw, ProtocolType.Icmp);
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 (IPAddress.Parse
(“192.168.1.2”), 0);
sock.SendTo(packet, iep);
b Xây dựng chức năng nhận gói tin và xử lý:
Để nhận gói tin từ các máy khác gửi vể ta dùng phương thức ReceiveFrom của lớp Socket Dữ liệu nhận về là một gói tin IP, vì vậy ta phải tách ra để lấy gói tin ICMP Raw Socket không tự động định dạng ICMP cho chúng ta
Ta định nghĩa lớp ICMP như sau:
class ICMP
{
public byte Type;
public byte Code;
public UInt16 Checksum;
public int Messagesize;
public byte[] Message = new byte[1024];
public ICMP()
{
}
}
Ta tạo ra một gói tin ICMP với Type = 8, Code = 0 để tiến hành gửi
ICMP packet = new ICMP();
Trang 19}
Vì gói tin ICMP bắt đầu từ byte thứ 20 trong gói tin IP nên ta sẽ lấy dữ liệu bắt đầu từ vị trí byte thứ 20
•Byte thứ 20 chứa thông tin về Type
•Byte thứ 21 chứa thông tin về Code
•Byte thứ 22 và 23 chứa thông tin về Checksum
•Dữ liệu bắt đầu từ byte thứ 24
Sau khi nhận gói tin ta tiến hành phân tích gói tin ICMP theo các thông điệp điểu khiển:
c Xây dựng chức năng quét địa chỉ IP:
Chức năng quét địa chỉ IP là mở rộng của việc gửi, nhận và phân tích gói tin nhận được từ nhiều máy trong mạng LAN Ở đây ta sẽ quét một dãy các địa chỉ IP
Để thực thiện công việc này ta tiến hành một vòng lặp trên 4 octet của địa chỉ IP để lần lượt gửi các gói tin ICMP đến từng máy và tiến hành phân tích nhận được tương ứng của mỗi máy
Nếu có sự phản hồi của máy nào thì ta biết máy đó đang tồn tại trong mạng và
Trang 20CHƯƠNG III: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT
QUẢ
I Môi trường triển khai
1 Hệ thống
• Bộ xử lý Intel Pentium III hoặc các bộ xử lý mạnh hơn
• 128 MB Ram hoặc cao hơn
• Màn hình có độ phân giải (800 x 600) hoặc cao hơn
• Bàn phím, chuột
• Có kết nối mạng (hoặc Internet, hoặc LAN)
2 Phần mềm
• Hệ điều hành Windows 2000/XP/7
• Visual Studio 2010 (Visual C#)
II Kết quả các chức năng của chương trình:
1 Giao diện chính của chương trình: