【README】

本文主要总结 internet地址相关知识,及相关的 java 类 ;

0)ip地址是什么

  • 连接到internet的设备称为节点,计算机节点称为主机(host),每个节点至少由一个唯一的数(或数字串)来表示以便通讯,这个数就是ip地址 ;

1)ipv4地址

  • ipv4地址表示:4个无符号字节,点号分隔,每个字节从0~255,最高字节在前;如152.19.134.132;
  • 内部网ip, 以10.  172.16.   172.31.  和 192.168. 开头的ip地址都未分配到internet,可以在内部网使用;(127.0.0.1是回环地址,即指向本地机器节点)

2)ipv6地址

  • ipv6地址:16个字节, 冒号分隔的8个区块,每个区块是4个16进制数字;如 FEDC:BA98:9871:3210:ABCD:BA98:9876:ABCE, 可以简化0;
  • ipv4地址的个数为 40亿多一点(2^32=4G),无法做到每台计算机一个地址,所以为了增加ip地址个数,引入了ipv6地址 ;

3)域名

  • 因为ip地址全是数字,不方便记忆,所以引入了域名;以百度而言;其ip地址是 110.242.68.3,但这串数字不好记忆,所以引入了域名 www.baidu.com;

4)域名服务器-DNS SERVER

  • 路由器在进行路由前,需要把域名解析为ip地址, 这个功能是由 域名服务器完成的;

【1】InetAddress ip地址类

【1.1】InetAddress类说明

此类表示 Internet 协议 (IP) 地址。
IP 地址是 IP 使用的 32 位或 128 位无符号数,IP 是构建 UDP 和 TCP 等协议的低级协议。
一个 InetAddress 的实例由一个 IP 地址和它对应的主机名组成(取决于它是否用主机名构造 或 它是否已经进行了主机名反向解析)。

【1.2】InetAddress ip地址测试用例

// 获取ip地址@Testpublic void f1() throws Exception {// 根据域名获取ip地址InetAddress address = InetAddress.getByName("www.oreilly.com");System.out.println(address); // www.oreilly.com/23.57.133.173// 根据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. 单个接口的标识符。 发送到单播地址的数据包将传送到由该地址标识的接口。
  2. 未指定地址——也称为任何本地或通配符地址。 它绝不能分配给任何节点。 它表示没有地址。 它的一个例子是作为 bind 的目标,它允许服务器接受任何接口上的客户端连接,以防服务器主机有多个接口。未指定的地址不得用作 IP 数据包的目的地址。
  3. 环回地址(127.0.0.1)——这是分配给环回接口的地址。 发送到此 IP 地址的任何内容都会循环并成为本地主机上的 IP 输入。 该地址通常在测试客户端时使用。

【1.3.2】多播

一组接口的标识符(通常属于不同的节点,即多台主机)。 发送到多播地址的数据包将传送到该地址标识的所有接口。


【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类-网络接口类

0)api说明

此类表示由名称和分配给此接口的 IP 地址列表组成的网络接口。 用于标识加入组播组的本地接口。 接口通常以诸如“le0”之类的名称命名;

补充,如何理解网络接口? 狭隘理解就是一个物理上的网线插拔口, 广义上可以是虚拟网络接口,比如 vmnet8;

1)NetWorkInterface类实例表示一个本地ip地址,或者一个物理接口,或一个虚拟接口;

2)该类提供了枚举所有本地地址的方法,其返回值类型是  InetAddress ;

【2.1】NetworkInterface 类获取所有网络接口

// NetworkInterface 类获取所有网络接口@Testpublic void f4_8() throws SocketException {Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();while(interfaces.hasMoreElements()) {NetworkInterface myinterface = interfaces.nextElement();System.out.println(myinterface);}}

打印结果如下:可以看到, NetworkInterfaces 获取的网络接口有有限网卡,无线网卡,以及虚拟网卡接口;

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 类获取单个网络接口

// NetworkInterface 类获取单个网络接口@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()));}

运行结果:

name:eth0 (VMware Virtual Ethernet Adapter for VMnet1)
==== 分配给接口的所有ip地址
192.168.28.1
fe80:0:0:0:c1dd:f581:1222:fd2a%eth0   (ipv6地址)

internet地址java表示相关推荐

  1. python ipaddress_Python3标准库:ipaddress Internet地址

    1. ipaddress Internet地址 ipaddress模块提供了处理IPv4和IPv6网络地址的类.这些类支持验证,查找网络上的地址和主机,以及其他常见操作. 1.1 地址 最基本的对象表 ...

  2. Internet地址结构

    IP地址结构及分类寻址 IP地址 = <网络号> + <主机号>            ------------IPv4(32bit)点分四组表示法: 192.168.31.1 ...

  3. TCP/IP详解 第二章 Internet地址结构

    Internet地址结构 一.表示IP地址 二.基本的IP地址结构 分类寻址 子网寻址 子网掩码 可变长度子网掩码 广播地址 IPv6地址和接口标识符 三.CIDR和聚合 前缀 聚合 四.特殊用途地址 ...

  4. 私网地址与Internet地址

    一.A.B.C三类地址 可用地址范围 备注 A类 1.0.0.1-126.255.255.254 B类 128.1.0.1-191.255.255.254 C类 192.0.1.1-223.255.2 ...

  5. Java网络编程从入门到精通(1):Internet地址概述

    所有连入Internet的终端设备(包括计算机.PDA.打印机以及其他的电子设备)都有一个唯一的索引,这个索引被称为IP地址.现在Internet上的IP地址大多由四个字节组成,这种IP地址叫做IPv ...

  6. java 怎么输出地址,Java中char[]输出不是内存地址的原因详解

    前言 Java中共有八种基本数据类型:byte,int,short,long,float,double,char,boolean. 计算机中的基础数据单位是bit, 1byte=8bit. 数据类型 ...

  7. Service获取客户端IP地址(java)

    Java代码 <strong>1.基于jax-ws开发的webservice获取客户端ip的方法[在代理类XXXDelegate添加如下代码]:</strong> import ...

  8. java 根据ip获取mac地址,java服务器端根据ip获取客户端mac地址

    java服务器端根据ip获取客户端mac地址 2014/8/20 22:01:29  475900947  程序员俱乐部  我要评论(1) 摘要://判断系统publicStringcheckSys( ...

  9. java获取b站动态列表地址,java获取B站弹幕文件的两种方案

    (一)实现思路 1,定位弹幕文件 一般用json或xml格式来保存弹幕,所以我们只要找到视频网页里面的xml文件或json文件,就能定位到弹幕文件. 2,解析弹幕文件 然后通过jsoup解析文件,提取 ...

最新文章

  1. 测试tcp连接数工具_后端开发程序员不知道压力测试怎么能行
  2. Css3-锚链接和伪类tartet
  3. 项目开发中经常有一些被嫌弃的小数据,现在全丢给 FastDFS
  4. python网络运维案例代码库_OLDboy-python第八期运维教程
  5. 企业实战(Jenkins+GitLab+SonarQube)_03_Jenkins登录
  6. mysql 5.7 redo replacation_mysql replace
  7. 从微信的改版中我看到了微信的焦虑
  8. 持续集成部署Jenkins工作笔记0002---认识Jenkins和Hudson
  9. 安装配置java,tomcat,eclipse
  10. 2017年上海市计算机一级题库,2017年计算机一级题库及答案
  11. jQuery选择器--总结
  12. html5做一个动画qq彩贝,HTML 第九章 作业
  13. 致远互联的下一步:从“协同”到“门户”
  14. 组合数学 排列 容斥 卡特兰数
  15. 3D打印机赋予了海岸生态系统极大的恢复能力
  16. [Jzoj] 1285. 奶酪厂
  17. 音乐剧推荐-<<爱在思念的两端>>
  18. CSS3变形和动画:旋转、扭曲、缩放、位移、矩阵 、原点 transform-origin、过渡属性 transition-property、过渡所需时间 transition-duration...
  19. Zeus资源调度系统介绍
  20. Qt中QTextEdit显示字符串

热门文章

  1. C - Mr. Panda and Strips Gym - 101194C(思维//尺取//2016 icpc china final)
  2. [BeiJing2011][bzoj2460] 元素
  3. Bigraph Extension
  4. 牛客题霸 [ 换钱的最少货币数] C++题解/答案
  5. 尽梨了(贪心+dp)
  6. [2021-09-09 T2] 就差⼀点——冒泡排序和反序表之间不为人知的秘密
  7. CF1192B Dynamic Diameter(LCT)
  8. jzoj1371-假期【RMQ】
  9. 洛谷【P2758】-编辑距离
  10. 【数论】Crash的数字表格 / JZPTAB(P1829)