Kiểm tra loại địa chỉ

Một phần của tài liệu lap_trinh_mang (Trang 68 - 72)

CHƯƠNG 4 LỚP INETADDRESS

4.5 Kiểm tra loại địa chỉ

Một số địa chỉ IP và một số dải địa chỉ IP có ý nghĩa đặc biệt. Ví dụ, địa chỉ 127.0.0.1 luôn là địa chỉ loopback. Địa chỉ loopback, cịn gọi là localhost, là địa chỉ trỏ chính máy hiện tại. Địa chỉ IPv4 trong phạm vi 224.0.0.0 tới 239.255.255.255 là địa chỉ multicast dùng để gửi thơng điệp tới nhiều host cùng lúc. Java có 10 phương thức dùng để xác định các loại địa chỉ đặc biệt.

¥! public boolean isLinkLocalAddress()

¥! public boolean isSiteLocalAddress()

¥! public boolean isMulticastAddress()

¥! public boolean isMCGlobal()

¥! public boolean isMCNodeLocal()

¥! public boolean isMCLinkLocal()

¥! public boolean isMCSiteLocal()

¥! public boolean isMCOrgLocal()

Phương thức isAnyLocalAddress() trả về giá trị true nếu địa chỉ là địa chỉ

wildcard, ngược lại trả về giá trị false. Địa chỉ wildcard khớp với bất kỳ địa chỉ nào

trên hệ thống mạng cục bộ. Điều này sẽ quan trọng khi một hệ thống có nhiều giao diện mạng, như trường hợp hệ thống máy tính có nhiều card Ethernet và/hoặc card WiFi 802.11. Trong IPv4, địa chỉ wildcard là 0.0.0.0. Trong IPv6, địa chỉ wildcard là 0:0:0:0:0:0:0:0 (hoặc kí hiệu là !).

Phương thức isLinkLocalAddress() trả về giá trị true nếu địa chỉ này là một địa chỉ IPv6 dạng link-local. Đây là một địa chỉ giúp mạng IPv6 tự cấu hình, giống như DHCP trong mạng IPv4 nhưng không nhất thiết phải dùng một Server trong mạng này. Tất cả địa chỉ dạng link-local đều bắt đầu bởi tám byte FE00:0000:0000:0000. Tám byte tiếp theo là địa chỉ cục bộ, thường được sao chép thừ địa chỉ Ethernet MAC được gán bởi nhà sản xuất thiết bị mạng.

Phương thức isSiteLocalAddress() trả về giá trị true nếu một địa chỉ IPv6 là địa chỉ site-local. Địa chỉ loại này bắt đầu bởi tám byte FEC0:0000:0000:0000. Tám byte tiếp theo cũng được sao chép từ địa chỉ Ethernet MAC.

Phương thức isMulticastAddress() trả về giá trị true nếu địa chỉ là

multicast. Những máy có địa chỉ này sẽ gửi nội dung quảng bá tới một số nhất định các máy khác đã đăng kí thay vì chỉ gửi cho một máy nhất định. Trong IPv4, dải địa chỉ multicast từ 224.0.0.0 đến 239.255.255.255. Trong IPv6, chúng luôn được bắt đầu bởi FF.

Phương thức isMCGlobal() trả về giá trị true nếu địa chỉ này là địa chỉ

multicast toàn cục (global). Địa chỉ multicast toàn cục sẽ quảng bá tới các máy đăng kí trên tồn bộ hệ thống mạng tồn cầu. Tất cả địa chỉ loại này đều bắt đầu bằng FE. Trong IPv6, chúng bắt đầu bởi FF0E hoặc FF1E phụ thuộc vào việc đó là địa chỉ multicast vĩnh viễn hoặc tạm thời. Trong IPv4, tất cả địa chỉ IPv4 đều có phạm vi tồn cầu.

Phương thức isMCOrgLocal() trả về giá trị true nếu nó là địa chỉ dạng

đăng kí thuộc trong cùng một cơ quan, tổ chức chứ khơng có máy từ bên ngoài. Địa chỉ loại này bắt đầu bưởi FF08 hoặc FF18 phụ thuộc vào địa chỉ multicast là vĩnh viễn hoặc tạm thời.

Phương thức isMCSiteLocal() trả về giá trị true nếu nó là địa chỉ dạng

multicast site-wide. Những packet tới máy có địa chỉ loại này chỉ được truyền trong mạng cục bộ của nó. Địa chỉ loại này bắt đầu bưởi FF05 hoặc FF15 phụ thuộc vào địa chỉ multicast là vĩnh viễn hoặc tạm thời.

Phương thức isMCLinkLocal() trả về giá trị true nếu nó là địa chỉ multicast subnet-wide. Packet tới địa chỉ loại này chỉ được truyền trong nội bộ mạng con (subnet). Địa chỉ loại này bắt đầu bưởi FF02 hoặc FF12 phụ thuộc vào địa chỉ multicast là vĩnh viễn hoặc tạm thời.

Phương thức isMCNodeLocal() trả về giá trị true nếu nó là địa chỉ multicast dạng interface-local. Packet tới địa chỉ loại này không thể truyền ra khỏi giao diện mạng của nó, thậm chí khơng thể tới một giao diện mạng khác trong cùng node. Địa chỉ loại này bắt đầu bởi FF01 hoặc FF11 phụ thuộc vào địa chỉ multicast là vĩnh viễn hoặc tạm thời.

Ví dụ 4-6 sau đây là một chương trình đơn giản để kiểm tra địa chỉ nhập trực

tiếp từ cửa sổ lệnh dùng 10 phương thức trên.

Ví dụ 4-6. Kiểm tra địa chỉ IP đặc trưng

import java.net.*;

public class IPCharacteristics {

public static void main(String[] args) { try {

InetAddress address = InetAddress.getByName(args[0]); if (address.isAnyLocalAddress()) {

System.out.println(address + " lˆ địa chỉ wildcard."); }

if (address.isLoopbackAddress()) {

System.out.println(address + " lˆ địa chỉ loopback."); }

if (address.isLinkLocalAddress()) {

System.out.println(address + " lˆ địa chỉ link-local."); } else if (address.isSiteLocalAddress()) {

System.out.println(address + " lˆ địa chỉ site-local."); } else {

System.out.println(address + " lˆ địa chỉ toˆn cục."); }

if (address.isMulticastAddress()) { if (address.isMCGlobal()) {

} else if (address.isMCOrgLocal()) {

System.out.println(address + " lˆ địa chỉ multicast tổ chức.");

} else if (address.isMCSiteLocal()) {

System.out.println(address + " lˆ địa chỉ multicast site-wide.");

} else if (address.isMCLinkLocal()) {

System.out.println(address + " lˆ địa chỉ multicast subnet-wide.");

} else if (address.isMCNodeLocal()) {

System.out.println(address + " lˆ địa chỉ multicast interface-local.");

} else {

System.out.println(address + " lˆ địa chỉ multicast chưa x‡c định.");

} } else {

System.out.println(address + " lˆ địa chỉ unicast."); }

} catch (UnknownHostException ex) {

System.err.println("Kh™ng ph‰n t’ch được địa chỉ nˆy."); }

} }

Dưới đây là một số kết quả khi chạy đoạn mã trên với các địa chỉ IPv4 và IPv6 khác nhau. $ java IPCharacteristics 127.0.0.1 /127.0.0.1 lˆ địa chỉ loopback. /127.0.0.1 lˆ địa chỉ toˆn cục. /127.0.0.1 lˆ địa chỉ unicast. $ java IPCharacteristics 192.168.254.32

/192.168.254.32 lˆ địa chỉ multicast site-wide. /192.168.254.32 lˆ địa chỉ unicast.

$ java IPCharacteristics www.oreilly.com

www.oreilly.com/208.201.239.37 lˆ địa chỉ toˆn cục. www.oreilly.com/208.201.239.37 lˆ địa chỉ unicast.

$ java IPCharacteristics 224.0.2.1

/224.0.2.1 lˆ địa chỉ toˆn cục.

/224.0.2.1 lˆ địa chỉ multicast toˆn cục.

$ java IPCharacteristics FF01:0:0:0:0:0:0:1

/ff01:0:0:0:0:0:0:1 lˆ địa chỉ toˆn cục.

/ff01:0:0:0:0:0:0:1 lˆ địa chỉ multicast interface-local.

$ java IPCharacteristics FF05:0:0:0:0:0:0:101

/ff05:0:0:0:0:0:0:101 lˆ địa chỉ toˆn cục.

/ff05:0:0:0:0:0:0:101 lˆ địa chỉ multicast site-wide.

$ java IPCharacteristics 0::1

/0:0:0:0:0:0:0:1 lˆ địa chỉ loopback. /0:0:0:0:0:0:0:1 lˆ địa chỉ toˆn cục. /0:0:0:0:0:0:0:1 lˆ địa chỉ unicast.

Một phần của tài liệu lap_trinh_mang (Trang 68 - 72)

Tải bản đầy đủ (PDF)

(114 trang)