internet地址java表示
【README】
本文主要總結(jié) internet地址相關(guān)知識,及相關(guān)的 java 類 ;
0)ip地址是什么
- 連接到internet的設(shè)備稱為節(jié)點(diǎn),計(jì)算機(jī)節(jié)點(diǎn)稱為主機(jī)(host),每個(gè)節(jié)點(diǎn)至少由一個(gè)唯一的數(shù)(或數(shù)字串)來表示以便通訊,這個(gè)數(shù)就是ip地址 ;
1)ipv4地址
- ipv4地址表示:4個(gè)無符號字節(jié),點(diǎn)號分隔,每個(gè)字節(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)地址,即指向本地機(jī)器節(jié)點(diǎn))
2)ipv6地址
- ipv6地址:16個(gè)字節(jié), 冒號分隔的8個(gè)區(qū)塊,每個(gè)區(qū)塊是4個(gè)16進(jìn)制數(shù)字;如 FEDC:BA98:9871:3210:ABCD:BA98:9876:ABCE, 可以簡化0;
- ipv4地址的個(gè)數(shù)為 40億多一點(diǎn)(2^32=4G),無法做到每臺計(jì)算機(jī)一個(gè)地址,所以為了增加ip地址個(gè)數(shù),引入了ipv6地址 ;
3)域名
- 因?yàn)閕p地址全是數(shù)字,不方便記憶,所以引入了域名;以百度而言;其ip地址是 110.242.68.3,但這串?dāng)?shù)字不好記憶,所以引入了域名 www.baidu.com;
4)域名服務(wù)器-DNS SERVER
- 路由器在進(jìn)行路由前,需要把域名解析為ip地址, 這個(gè)功能是由 域名服務(wù)器完成的;
【1】InetAddress ip地址類
【1.1】InetAddress類說明
此類表示 Internet 協(xié)議 (IP) 地址。
IP 地址是 IP 使用的 32 位或 128 位無符號數(shù),IP 是構(gòu)建 UDP 和 TCP 等協(xié)議的低級協(xié)議。
一個(gè) InetAddress 的實(shí)例由一個(gè) IP 地址和它對應(yīng)的主機(jī)名組成(取決于它是否用主機(jī)名構(gòu)造 或 它是否已經(jīng)進(jìn)行了主機(jī)名反向解析)。
【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// 獲取一個(gè)主機(jī)域名的所有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}// 查找本地機(jī)器地址@Testpublic void f2() throws Exception {InetAddress address = InetAddress.getLocalHost();System.out.println(address); // DESKTOP-E4IASRJ/192.168.163.1}// 查找本地機(jī)器的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】多播
一組接口的標(biāo)識符(通常屬于不同的節(jié)點(diǎn),即多臺主機(jī))。 發(fā)送到多播地址的數(shù)據(jù)包將傳送到該地址標(biāo)識的所有接口。
【1.4】ipv4和ipv6地址
1)如何判斷一個(gè)地址是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");}補(bǔ)充,java使用了 Inet4Address,? Inet6Address 分別表示 ipv4和ipv6 地址;?
【2】NetWorkInterface類-網(wǎng)絡(luò)接口類
0)api說明
此類表示由名稱和分配給此接口的 IP 地址列表組成的網(wǎng)絡(luò)接口。 用于標(biāo)識加入組播組的本地接口。 接口通常以諸如“l(fā)e0”之類的名稱命名;
補(bǔ)充,如何理解網(wǎng)絡(luò)接口? 狹隘理解就是一個(gè)物理上的網(wǎng)線插拔口, 廣義上可以是虛擬網(wǎng)絡(luò)接口,比如 vmnet8;
?
1)NetWorkInterface類實(shí)例表示一個(gè)本地ip地址,或者一個(gè)物理接口,或一個(gè)虛擬接口;
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 類獲取單個(gè)網(wǎng)絡(luò)接口
// NetworkInterface 類獲取單個(gè)網(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()));}運(yùn)行結(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上海高考成绩最好的
- 下一篇: 360浏览器崩溃了解决方法