internet地址java表示

【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地址)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329848.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微软也加入FB开放计算项目 发布交换机操作系统

微软3月10日宣布了一则震动技术业界的消息&#xff0c;它正式发布了基于Debian Linux的网络交换机操作系统。这款名为“SONiC”&#xff08;Software for Open Networking in the Cloud&#xff09;的软件以前仅供微软内部使用&#xff0c;主要运行在网络交换机上。 这条消息对…

Docker-Desktop储存路径更改

前言 Docker是一个非常好用的容器引擎, 使我们部署环境速度大幅度提升。但是windows版本的docker-desktop默认安装路径是C盘&#xff0c;这时候就有一个非常让人头疼的问题 -【C盘储存空间严重不足】。下面主要记录一下怎么解决这一个问题~ 原缓存路径 C:\Users${用户文件}\A…

深入解析String中的intern

转载自 深入解析String中的intern引言 在 JAVA 语言中有8中基本类型和一种比较特殊的类型String。这些类型为了使他们在运行过程中速度更快&#xff0c;更节省内存&#xff0c;都提供了一种常量池的概念。常量池就类似一个JAVA系统级别提供的缓存。 8种基本类型的常量池都是系统…

URLConnection-URL连接

【README】 本文介绍了 URLConnection java类&#xff0c;通过 URLConnection 如何获取网络资源&#xff1b;本文还梳理了涉及网络编程的java类的进化过程&#xff1b;从 URL -> URLConnection -> HttpURLConnection 或 HttpClient ; URL与URI的介绍&#xff0c; refer2…

excel趋势线公式导出_如何用Excel进行预测分析?

【面试题】一个社交APP, 它的新增用户次日留存、7日留存、30日留存分别是52%、25%、14%。请模拟出来&#xff0c;每天如果日新增6万用户&#xff0c;那么第30天&#xff0c;它的日活数会达到多少&#xff1f;请使用Excel进行分析。【分析思路】第1日(次日)留存用户数第1日新增用…

ASP.NET Core 行军记 -----第一步(艰辛的 MVC Hello World)

现在ASP.NET Core还在不断成长、更新中&#xff0c;说不定到了明天又换了个模样&#xff0c;就如同一个小孩&#xff0c;从蹒跚学步&#xff0c;到奔向未来。 所以我们可以相应的去理解更新中所发生的变化&#xff0c;包容它、呵护它&#xff0c;而不是盲目的指责与批评&#x…

记录一下SpringCloud-Gateway使用lb动态路由遇到的坑

前言 前一段时间&#xff0c;学习springcloud-alibaba时候&#xff0c;学习到gateway组件与nacos注册中西一起使用时遇到了一个问题在此记录一下&#xff0c;避免以后遇到又做无用功。 问题 通过gateway配置路由时&#xff0c;uri参数使用lb://xxxx无法映射到对应的服务地址…

Java程序创建Kafka Topic,以及数据生产消费,常用的命令

转自&#xff1a; Java程序创建Kafka Topic&#xff0c;以及数据生产消费&#xff0c;常用的命令_Zyy_z_的博客-CSDN博客_java kafka创建topicKafka简介&#xff1a; Kafka是一个分布式发布——订阅消息传递系统。Kafka快速、可扩展且耐用。它保留主题中的消息源。生产者将数据…

c++ 凸包 分治算法_三维凸包

缘起众所周知&#xff0c;二维凸包可以使用 Graham 扫描 内解决.所以本文来学习一下三维空间中凸包的一种直观算法——增量算法(increment algorithm)分析有一条叫 Willy 的苹果虫一直快乐的居住在一个苹果中&#xff0c;直到有一天有一只仓鼠想吃这个苹果&#xff0c;Willy 自…

深度分析Java的ClassLoader机制(源码级别)

转载自 深度分析Java的ClassLoader机制&#xff08;源码级别&#xff09;Java中的所有类&#xff0c;必须被装载到jvm中才能运行&#xff0c;这个装载工作是由jvm中的类装载器完成的&#xff0c;类装载器所做的工作实质是把类文件从硬盘读取到内存中&#xff0c;JVM在加载类的时…

.NET跨平台之Sake和KoreBuild

最近在了解Asp.net Core 1.0&#xff08;也可称为Asp.net5\Asp.net vNext)的跨平台&#xff0c;发现了两个新的新东西&#xff1a;Sake和KoreBuild&#xff08;或者已经出了很久&#xff09;。 通过国内某度查询资料大部分都是复制黏贴来的&#xff0c;几乎没有详细的介绍。 只…

Ubuntu系统安装准备

前言 最初学习程序开发时&#xff0c;大多数都会教linux系统的基础用法&#xff0c;但是很少以linux为操作系统开发程序&#xff0c;因为windows系统的简单便利为人的提供优秀的操作基础&#xff0c;成为首选系统。 突然心血来找想使用linux操作系统作基础进行程序代码开发。 …

(转)Kafka 消费者 Java 实现

转自&#xff1a; Kafka 消费者 Java 实现 - 简书应用程序使用 KafkaConsumer向 Kafka 订阅 Topic 接收消息&#xff0c;首先理解 Kafka 中消费者&#xff08;consumer&#xff09;和消费者组&#xff08;consumer group...https://www.jianshu.com/p/1f9e18e926f6据原文作者&…

docker export_docker使用简介

一 docker服务端和客户端declare -x DOCKER_HOST"192.168.2.162export DOCKER_HOST192.168.2.162docker -H tcp://192.168.2.162:2375 images二 docker daemon配置cat /etc/sysconfig/dockerOPTIONS--selinux-enabled --log-driverjournald --signature-verificationfalse…

深度解析单例与序列化之间的爱恨情仇

转载自 深度解析单例与序列化之间的爱恨情仇本文将通过实例阅读Java源码的方式介绍序列化是如何破坏单例模式的&#xff0c;以及如何避免序列化对单例的破坏。单例模式&#xff0c;是设计模式中最简单的一种。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访…

Windows 10中国定制版完工!更专业

去年底&#xff0c;微软与中国电子科技网络信息安全有限公司成立了一个合资公司&#xff0c;该公司的主要任务是为中国政府和企业定制 Windows 10 系统。 现在&#xff0c;微软大中华区董事长兼CEO贺乐赋在接受财新网记者采访时表示&#xff0c;微软与中国电子科技集团公司&…

Spring [CVE-2022-22965]漏洞处理

问题描述 近期spring官方公布了漏洞 - [CVE-2022-22965] 参考地址&#xff1a; https://tanzu.vmware.com/security/cve-2022-22965 参考issues提到的问题答案开发人员回应&#xff1a; 可能是由于Springframework 3.x 早于 JDK9发布&#xff0c;甚至发布时还未完整的支持JDK…

kafak消费者从头开始消费(消费者组)

【README】 本文主要用于描述 kafka 消费者如何从头开始消费&#xff1b; 【1】从头开始消费 1&#xff09;从头开始消费&#xff0c;需要满足两个条件&#xff0c; 如下&#xff1a; 条件1&#xff0c; 使用一个全新的消费者组id&#xff1b;条件2&#xff0c;指定 auto.of…

jenkins安装与配置windows_Windows下Scoop安装、配置与使用

Scoop简介Scoop是Windows的命令行安装程序&#xff0c;是一个强大的包管理工具。可以在github上找到其项目的相关信息&#xff0c;项目网址。安装的起因&#xff1a;在平常生活中如果要安装像gcc、git等一些需要手动配置相关参数的工具&#xff0c;需要先去官网下载安装程序&am…

对于线程安全的集合类(例如Vector)的任何操作是不是都能保证线程安全

转载自 对于线程安全的集合类&#xff08;例如Vector&#xff09;的任何操作是不是都能保证线程安全之前在公众号中问了这个问题&#xff1a;对于线程安全的集合类&#xff08;例如Vector&#xff09;的任何操作是不是都能保证线程安全&#xff1f; 三天之内收到120回复&#x…