internet地址java表示
【README】
本文主要總結(jié) internet地址相關(guān)知識,及相關(guān)的 java 類 ;
0)ip地址是什么
- 連接到internet的設(shè)備稱為節(jié)點,計算機節(jié)點稱為主機(host),每個節(jié)點至少由一個唯一的數(shù)(或數(shù)字串)來表示以便通訊,這個數(shù)就是ip地址 ;
1)ipv4地址
- ipv4地址表示:4個無符號字節(jié),點號分隔,每個字節(jié)從0~255,最高字節(jié)在前;如152.19.134.132;
- 內(nèi)部網(wǎng)ip, 以10.? 172.16.?? 172.31.? 和 192.168. 開頭的ip地址都未分配到internet,可以在內(nèi)部網(wǎng)使用;(127.0.0.1是回環(huán)地址,即指向本地機器節(jié)點)
2)ipv6地址
- ipv6地址:16個字節(jié), 冒號分隔的8個區(qū)塊,每個區(qū)塊是4個16進制數(shù)字;如 FEDC:BA98:9871:3210:ABCD:BA98:9876:ABCE, 可以簡化0;
- ipv4地址的個數(shù)為 40億多一點(2^32=4G),無法做到每臺計算機一個地址,所以為了增加ip地址個數(shù),引入了ipv6地址 ;
3)域名
- 因為ip地址全是數(shù)字,不方便記憶,所以引入了域名;以百度而言;其ip地址是 110.242.68.3,但這串?dāng)?shù)字不好記憶,所以引入了域名 www.baidu.com;
4)域名服務(wù)器-DNS SERVER
- 路由器在進行路由前,需要把域名解析為ip地址, 這個功能是由 域名服務(wù)器完成的;
【1】InetAddress ip地址類
【1.1】InetAddress類說明
此類表示 Internet 協(xié)議 (IP) 地址。
IP 地址是 IP 使用的 32 位或 128 位無符號數(shù),IP 是構(gòu)建 UDP 和 TCP 等協(xié)議的低級協(xié)議。
一個 InetAddress 的實例由一個 IP 地址和它對應(yīng)的主機名組成(取決于它是否用主機名構(gòu)造 或 它是否已經(jīng)進行了主機名反向解析)。
【1.2】InetAddress ip地址測試用例
// 獲取ip地址@Testpublic void f1() throws Exception {// 根據(jù)域名獲取ip地址InetAddress address = InetAddress.getByName("www.oreilly.com");System.out.println(address); // www.oreilly.com/23.57.133.173// 根據(jù)ip地址字符串獲取ip地址對象address = InetAddress.getByName("23.57.133.173");System.out.println(address); // /23.57.133.173System.out.println(address.getHostName()); // a23-57-133-173.deploy.static.akamaitechnologies.com// 獲取一個主機域名的所有ip地址InetAddress[] addresses = InetAddress.getAllByName("www.baidu.com");Arrays.stream(addresses).forEach(System.out::println); // www.baidu.com/110.242.68.4 // www.baidu.com/110.242.68.3}// 查找本地機器地址@Testpublic void f2() throws Exception {InetAddress address = InetAddress.getLocalHost();System.out.println(address); // DESKTOP-E4IASRJ/192.168.163.1}// 查找本地機器的ip地址@Testpublic void f4_4() throws Exception {InetAddress address = InetAddress.getLocalHost();String hostAddress = address.getHostAddress();System.out.println(hostAddress); // 192.168.163.1}【1.3】ip地址類型
【1.3.1】單播
【1.3.2】多播
一組接口的標識符(通常屬于不同的節(jié)點,即多臺主機)。 發(fā)送到多播地址的數(shù)據(jù)包將傳送到該地址標識的所有接口。
【1.4】ipv4和ipv6地址
1)如何判斷一個地址是ipv4 還是ipv6 ?
// ip地址類型, ipv4 or ipv6 ?@Testpublic void f4_5() throws UnknownHostException {InetAddress address = InetAddress.getByName("www.oreilly.com");byte[] addressByteArr = address.getAddress();if (addressByteArr.length == 4) System.out.println("ipv4"); // ipv4if (addressByteArr.length == 6) System.out.println("ipv6");}補充,java使用了 Inet4Address,? Inet6Address 分別表示 ipv4和ipv6 地址;?
【2】NetWorkInterface類-網(wǎng)絡(luò)接口類
0)api說明
此類表示由名稱和分配給此接口的 IP 地址列表組成的網(wǎng)絡(luò)接口。 用于標識加入組播組的本地接口。 接口通常以諸如“l(fā)e0”之類的名稱命名;
補充,如何理解網(wǎng)絡(luò)接口? 狹隘理解就是一個物理上的網(wǎng)線插拔口, 廣義上可以是虛擬網(wǎng)絡(luò)接口,比如 vmnet8;
?
1)NetWorkInterface類實例表示一個本地ip地址,或者一個物理接口,或一個虛擬接口;
2)該類提供了枚舉所有本地地址的方法,其返回值類型是? InetAddress ;
【2.1】NetworkInterface 類獲取所有網(wǎng)絡(luò)接口
// NetworkInterface 類獲取所有網(wǎng)絡(luò)接口@Testpublic void f4_8() throws SocketException {Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();while(interfaces.hasMoreElements()) {NetworkInterface myinterface = interfaces.nextElement();System.out.println(myinterface);}}打印結(jié)果如下:可以看到, NetworkInterfaces 獲取的網(wǎng)絡(luò)接口有有限網(wǎng)卡,無線網(wǎng)卡,以及虛擬網(wǎng)卡接口;
name:lo (Software Loopback Interface 1) name:net0 (Microsoft 6to4 Adapter) name:eth0 (VMware Virtual Ethernet Adapter for VMnet1) name:net1 (WAN Miniport (SSTP)) name:net2 (Microsoft IP-HTTPS Platform Adapter) name:eth1 (WAN Miniport (IPv6)) name:eth2 (WAN Miniport (IP)) name:ppp0 (WAN Miniport (PPPOE)) name:wlan0 (Intel(R) Dual Band Wireless-AC 8265) name:eth3 (Bluetooth Device (Personal Area Network)) name:net3 (WAN Miniport (L2TP)) name:wlan1 (Microsoft Wi-Fi Direct Virtual Adapter #2) name:net4 (WAN Miniport (PPTP)) name:eth4 (Intel(R) Ethernet Connection (5) I219-V) name:wlan2 (Intel(R) Dual Band Wireless-AC 8265-WFP Native MAC Layer LightWeight Filter-0000) name:net5 (Microsoft Teredo Tunneling Adapter) name:eth5 (VMware Virtual Ethernet Adapter for VMnet8) name:eth6 (WAN Miniport (Network Monitor)) name:net6 (WAN Miniport (IKEv2)) name:wlan3 (Microsoft Wi-Fi Direct Virtual Adapter) name:eth7 (Microsoft Kernel Debug Network Adapter) name:eth8 (Sangfor SSL VPN CS Support System VNIC) name:wlan4 (Intel(R) Dual Band Wireless-AC 8265-Virtual WiFi Filter Driver-0000) name:wlan5 (Intel(R) Dual Band Wireless-AC 8265-Native WiFi Filter Driver-0000) name:eth9 (Intel(R) Ethernet Connection (5) I219-V-WFP Native MAC Layer LightWeight Filter-0000) name:eth10 (Intel(R) Ethernet Connection (5) I219-V-QoS Packet Scheduler-0000) name:eth11 (Intel(R) Ethernet Connection (5) I219-V-WFP 802.3 MAC Layer LightWeight Filter-0000) name:wlan6 (Intel(R) Dual Band Wireless-AC 8265-QoS Packet Scheduler-0000) name:wlan7 (Intel(R) Dual Band Wireless-AC 8265-WFP 802.3 MAC Layer LightWeight Filter-0000) name:wlan8 (Microsoft Wi-Fi Direct Virtual Adapter-WFP Native MAC Layer LightWeight Filter-0000) name:wlan9 (Microsoft Wi-Fi Direct Virtual Adapter-Native WiFi Filter Driver-0000) name:wlan10 (Microsoft Wi-Fi Direct Virtual Adapter-QoS Packet Scheduler-0000) name:eth12 (WAN Miniport (IP)-WFP Native MAC Layer LightWeight Filter-0000) name:eth13 (WAN Miniport (IP)-QoS Packet Scheduler-0000) name:eth14 (WAN Miniport (IPv6)-WFP Native MAC Layer LightWeight Filter-0000) name:eth15 (WAN Miniport (IPv6)-QoS Packet Scheduler-0000) name:eth16 (WAN Miniport (Network Monitor)-WFP Native MAC Layer LightWeight Filter-0000) name:eth17 (WAN Miniport (Network Monitor)-QoS Packet Scheduler-0000) name:wlan11 (Microsoft Wi-Fi Direct Virtual Adapter-WFP 802.3 MAC Layer LightWeight Filter-0000) name:wlan12 (Microsoft Wi-Fi Direct Virtual Adapter #2-WFP Native MAC Layer LightWeight Filter-0000) name:wlan13 (Microsoft Wi-Fi Direct Virtual Adapter #2-Native WiFi Filter Driver-0000) name:wlan14 (Microsoft Wi-Fi Direct Virtual Adapter #2-QoS Packet Scheduler-0000) name:wlan15 (Microsoft Wi-Fi Direct Virtual Adapter #2-WFP 802.3 MAC Layer LightWeight Filter-0000)Process finished with exit code 0【2.2】NetworkInterface 類獲取單個網(wǎng)絡(luò)接口
// NetworkInterface 類獲取單個網(wǎng)絡(luò)接口@Testpublic void f4_8_1() throws SocketException {NetworkInterface anInterface = NetworkInterface.getByName("eth0");System.out.println(anInterface); // name:eth0 (VMware Virtual Ethernet Adapter for VMnet1)// 獲取分配給該接口的ip地址System.out.println("==== 分配給接口的所有ip地址");anInterface.getInterfaceAddresses().forEach(x->System.out.println(x.getAddress().getHostAddress()));}運行結(jié)果:
name:eth0 (VMware Virtual Ethernet Adapter for VMnet1)
==== 分配給接口的所有ip地址
192.168.28.1
fe80:0:0:0:c1dd:f581:1222:fd2a%eth0?? (ipv6地址)
?
總結(jié)
以上是生活随笔為你收集整理的internet地址java表示的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上海高中排名(2021上海高考成绩最好的
- 下一篇: URLConnection-URL连接