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

简介:
所有连入Internet 的终端设备( 包括计算机、PDA 、打印机以及其他的电子设备) 都有一个唯一的索引,这个索引被称为IP 地址。现在Internet 上的IP 地址大多由四个字节组成,这种IP 地址叫做IPv4 。除了这种由四个字节组成的IP ,在Internet 上还存在一种IP ,这种IP 16 个字节组成,叫做IPv6 IPv4 IPv6 后面的数字是Internet 协议 (Internet Protocol IP) 的版本号。
IPv4 地址的一般表现形式为:X.X.X.X 。其中X 0 255 的整数。这四个整数用“.” 隔开。从理论上说,IPv4 地址可以表示2 32 次幂,也就是4,294,967,296 IP 地址,但由于要排除一些具有特殊意义的IP (如0.0.0.0 127.0.0.1 224.0.0.1 255.255.255.255 等),因此,IPv4 地址可自由分配的IP 数量要小于它所能表示的IP 地址数量。
为了便于管理,人为地将IPv4 划分为A 类、B 类和C IP 地址。
  • AIP地址
范围:0.0.0.0 –– 127.255.255.255 ,标准的子网掩码是255.0.0.0
  • BIP地址
范围:128.0.0.0 –– 191.255.255.255 ,标准的子网掩码是255.255.0.0
  • CIP地址
范围:192.0.0.0 –– 223.255.255.255 ,标准的子网掩码是255.255.255.0
从上面的描述可看出,第一个字节在0 127 之间的是A IP 地址,在128 191 之间的是B IP 地址,而在192 223 之间的是C IP 地址。如果两个IP 地址分别和它们的子网掩码进行按位与后得到的值是一样的,就说明这两个IP 在同一个网段。下面是两个C IP 地址IP1 IP2 和它们的子网掩码。
IP1 192.168.18.10     子网掩码:  255.255.255.0
IP2 192.168.18.20     子网掩码:  255.255.255.0
这两个IP 和它们的子网掩码按位与后,得到的值都是192.168.18.0 。因此,IP1 IP2 在同一个网段。当用户使用Modem ADSL Modem 上网后,临时分配给本机的IP 一般都是C 类地址,也就是说,第一个字节都会在192 223 之间。
上面给出的IP 地址和子网掩码只是标准的形式。用户也可以根据自己的需要使用其他的IP 和子网掩码,如IP 地址设为10.0.0.1 ,子网掩码设为255.255.255.128 。但为了便于分类和管理,在局域网中设置IP 地址时,建议按着标准的分类来设置。
IPv6 地址由16 个字节组成,共分为8 段。每一段由16 个字节组成,并用4 个十六进制数表示,段与段之间用“:” 隔开。如A34E:DD3D:1234:4400:A123:B231:A111:DDAA 是一个标准的IPv6 地址。IPv6 在两种情况下可以简写:
1.        0 开头的段可省略0 。如A34E: 003D: 0004:4400:A123:B231:A111:DDAA 可简写为A34E:  3D4:4400:A123:B231:A111:DDAA
2.  连续出现0 的多个段可使用“::” 来代替多个为0 的段。如A34E: 0000: 0000: 0000:A123:B231:0:DDAA 可简写为A34E ::A123:B231:0:DDAA 。在使用这种简写方式时,“::” 只能出现一次,如果出现多次,IPv6 地址将会产生歧义。
IPv4 IPv6 混合的网络中,IPv6 地址的后四个字节可以被写成IPv4 的地址格式。如A34E::A123:B231:A111:DDAA 可以写成A34E::A123:B231:161.17.221.170 。当访问网络资源的计算机使用的是IPv4 的地址时,系统会自动使用IPv6 的后四个字节作为IPv4 的地址。
无论是IPv4 地址,还是IPv6 地址,都是很难记忆的。因此,为了使这些地址便于记忆,Internet 的设计师们发明了DNS Domain Name System ,域名系统)。DNS IP 地址和域名(一个容易记忆的字符串,如microsoft )联系在一起,当计算机通过域名访问Internet 资源时,系统首先通过DNS 得到域名对应的IP 地址,再通过IP 地址访问Internet 资源。在这个过程中,IP 地址对用户是完全透明的。如果一个域名对应了多个IP 地址,DNS 从这些IP 地址中随机选取一个返回。
域名可以分为不同的层次,如常见的有顶层域名、顶级域名、二级域名和三级域名。
  • 顶层域名
顶层域名可分为类型顶层域名和地域顶层域名。如www.microsoft. com www.w3c. org 中的com org 就是类型顶层域名,它们分别代表商业(com) 和非盈利组织(org) 。而www.dearbook. com.cn 中的cn 就是地域顶层域名,它表示了中国(cn) 。主要的类型顶层域名有com( 商业) edu( 教育) gov( 政府) int( 国际组织) mil( 美国军方) net (网络部门)、org( 非盈利组织) 。大多数国家都有自己的地域顶层域名,如中国(cn) 、美国(us) 、英国(uk) 等。
  • 顶级域名
www.microsoft.com 中的microsoft.com 就是一个顶级域名。在Email 地址的“@” 后面跟的都是顶级域名,如abc@126.com mymail@sina.com 等。
  • 二级域名
blog.csdn.net 就是顶级域名csdn.net 的二级域名。有很多人认为www.csdn.net 是顶级域名,其实这是一种误解。实际上www.csdn.net 是顶级域名csdn.net 的二级域名。www.csdn.net blog.csdn.net 在本质上是一样的,只是我们已经习惯了使用www 表示一个使用HTTP HTTPS 协议的网址,因此,给人的误解就是www.csdn.net 是一个顶级域名。
  •  三级域名
   如abc.photo.163.com 就是二级域名photo.163.com 的三级域名。有很多blog 或电子相册之类的网站都为每个用户分配一个三级域名。
 


 本文转自 androidguy 51CTO博客,原文链接:http://blog.51cto.com/androidguy/214820,如需转载请自行联系原作者

相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
19小时前
|
机器学习/深度学习 Java Serverless
Java开发者的神经网络进阶指南:深入探讨交叉熵损失函数
今天来讲一下损失函数——交叉熵函数,什么是损失函数呢?大体就是真实与预测之间的差异,这个交叉熵(Cross Entropy)是Shannon信息论中一个重要概念,主要用于度量两个概率分布间的差异性信息。在信息论中,交叉熵是表示两个概率分布 p,q 的差异,其中 p 表示真实分布,q 表示预测分布,那么 H(p,q)就称为交叉熵:
|
22小时前
|
Java 程序员 数据处理
【技能升级】JAVA程序员的进阶之路:掌握URL与URLConnection,轻松玩转网络资源!
【6月更文挑战第21天】在Java中,URL是网络资源的位置标识,如`http://www.example.com/resource.txt`,而URLConnection是与这些资源交互的接口。创建URL对象后,通过`openConnection()`获取URLConnection实例以读取或写入资源。读取时,设置请求头,获取输入流并读取数据;写入(POST)时,设置输出流并写入数据。处理网络操作时,别忘了异常处理、使用连接池以优化性能、设置超时以及恰当使用请求头和响应头。这些最佳实践能助你高效、稳定地进行网络编程。
|
22小时前
|
JSON 算法 安全
【真相揭秘】JAVA网络编程中的URL与URLConnection:那些你不知道的秘密!
【6月更文挑战第21天】Java网络编程中,URL和URLConnection是核心工具。URL处理特殊字符需用URLEncoder转义;URLConnection可设置请求头,如`Content-Type`和`Authorization`;读取响应体通过输入流,例如`BufferedReader`;它默认支持GET/POST,但能模拟PUT/DELETE等方法。优化包括使用连接池、设置超时、压缩数据和启用HTTPS。了解这些细节能提升效率和安全性。
|
22小时前
|
人工智能 Java 物联网
【未来趋势】JAVA网络编程的未来:URL与URLConnection的无限可能,你准备好了吗?
【6月更文挑战第21天】JAVA网络编程核心URL和URLConnection驱动智能API调用与实时数据流处理,适应微服务、物联网趋势。通过案例展示,它们在API集成、实时流处理中发挥关键作用,预示着与AI、大数据结合的自动化与高效性。未来,开发者需把握这些技术,共创网络编程新篇章。
|
22小时前
|
Java 开发者
【技术觉醒】JAVA高手必备:URL与URLConnection,解锁网络资源的终极秘籍!
【6月更文挑战第21天】Java网络编程中,URL和URLConnection是关键。案例一展示了如何使用它们从网站抓取数据:创建URL对象,打开连接,读取输入流获取HTML内容。案例二解释了POST请求:设定请求方法为POST,写入数据到输出流,上传至服务器。这两个基础工具在需要精细控制网络请求时尤其有用,是每个JAVA开发者必备技能。了解并熟练运用,能增强网络编程能力。
|
22小时前
|
JSON 安全 Java
【颠覆认知】JAVA网络编程新纪元:URL与URLConnection的神级运用,你真的会了吗?
【6月更文挑战第21天】在Java网络编程中,URL标识网络资源,包含协议、主机、端口等信息,用于精确访问。URLConnection作为资源访问桥梁,支持GET、POST等HTTP请求。示例展示了如何使用URLConnection发送GET请求并读取响应。理解并熟练运用这两者是构建现代网络应用的关键,能实现高效、安全的网络通信。
|
22小时前
|
Java
Java 从入门到进阶之路(十九)
Java 从入门到进阶之路(十九)
|
1天前
|
Java 程序员
从菜鸟到大神:JAVA多线程通信的wait()、notify()、notifyAll()之旅
【6月更文挑战第21天】Java多线程核心在于wait(), notify(), notifyAll(),它们用于线程间通信与同步,确保数据一致性。wait()让线程释放锁并等待,notify()唤醒一个等待线程,notifyAll()唤醒所有线程。这些方法在解决生产者-消费者问题等场景中扮演关键角色,是程序员从新手到专家进阶的必经之路。通过学习和实践,每个程序员都能在多线程编程的挑战中成长。
|
1天前
|
缓存 安全 Java
Java线程面试题含答案
Java线程面试题含答案
|
1天前
|
Java
并发编程的艺术:Java线程与锁机制探索
【6月更文挑战第21天】**并发编程的艺术:Java线程与锁机制探索** 在多核时代,掌握并发编程至关重要。本文探讨Java中线程创建(`Thread`或`Runnable`)、线程同步(`synchronized`关键字与`Lock`接口)及线程池(`ExecutorService`)的使用。同时,警惕并发问题,如死锁和饥饿,遵循最佳实践以确保应用的高效和健壮。
8 2

热门文章

最新文章