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地址。

A类IP地址

范围:0.0.0.0 –– 127.255.255.255,标准的子网掩码是255.0.0.0。

B类IP地址

范围:128.0.0.0 –– 191.255.255.255,标准的子网掩码是255.255.0.0。

C类IP地址

范围: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: 3D: 4: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.bianceng.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或电子相册之类的网站都为每个用户分配一个三级域名。

时间: 2024-12-28 12:44:04

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

Java网络编程从入门到精通

Hibernate从入门到精通(十一)多对多双向关联映射 Hibernate从入门到精通(十)多对多单向关联映射 Hibernate从入门到精通(九)一对多双向关联映射 Hibernate从入门到精通(八)一对多单向关联映射 Hibernate从入门到精通(七)多对一单向关联映射 Hibernate从入门到精通(六)一对一双向关联映射 Hibernate从入门到精通(五)一对一单向关联映射 Hibernate从入门到精通(四)基本映射 Hibernate从入门到精通(三)Hibernate配置文

Java网络编程从入门到精通(34)

Java网络编程从入门到精通(34):读写缓冲区中的数据---使用get和put方法按顺序读写单个数据 对于缓冲区来说,最重要的操作就是读写操作.缓冲区提供了两种方法来读写缓冲区中的数据:get.put方法和array方法.而get.put方法可以有三种读写数据的方式:按顺序读写单个数据.在指定位置读写单个数据和读写数据块.除了上述的几种读写数据的方法外,CharBuffer类还提供了用于专门写字符串的put和append方法.在本文及后面的文章中将分别介绍这些读写缓冲区的方法. 虽然使用all

Java网络编程从入门到精通 (9):使用isXxx方法判断地址类型

本文为原创,如需转载,请注明作者和出处,谢谢! 上一篇:Java网络编程从入门到精通(8):用getAddress方法获得IP地址     IP地址分为普通地址和特殊地址.在前面的文章中所使用的大多数都是普通的IP地址,在本文中将介绍如何利用InetAddress类提供的十个方法来确定一个IP地址是否是一个特殊的IP地址. 一.isAnyLocalAddress方法     当IP地址是通配符地址时返回true,否则返回false.这个通配符地址对于拥有多个网络接口(如两块网卡)的计算机非常拥有

Java网络编程从入门到精通(34):读写缓冲区中的数据---使用get和put方法按顺序读写单个数据

本文为原创,如需转载,请注明作者和出处,谢谢! 上一篇:Java网络编程从入门到精通(33):非阻塞I/O的缓冲区(Buffer)     对于缓冲区来说,最重要的操作就是读写操作.缓冲区提供了两种方法来读写缓冲区中的数据:get.put方法和array方法.而get.put方法可以有三种读写数据的方式:按顺序读写单个数据.在指定位置读写单个数据和读写数据块.除了上述的几种读写数据的方法外,CharBuffer类还提供了用于专门写字符串的put和append方法.在本文及后面的文章中将分别介绍这

Java网络编程从入门到精通(32):一个非阻塞I/O的例子

为了使读者更好地理解非阻塞I/O,本节给出了一个简单的例子用来演示如何将非阻塞I/O应用到网络程序中.读者可以先不必管这个例子的具体细节.因为这个例子的主要目的并不是讲解非阻塞I/O的使用,而是先让读者对非阻塞I/O有一个笼统的感性认识.在看完这个例子后,读者可能会有很多疑问,在本章后面的部分将会逐渐揭开这些迷团.这个例子的主要功能是访问新浪网,并将新浪网的首页在控制台上输出. package test; import java.net.*; import java.nio.*; import

Java网络编程从入门到精通(31):非阻塞I/O简介

在网络应用中,一般可以采用同步I/O(阻塞I/O)和非阻塞I/O两种方式进行数据通讯.这两种方式并非互相排斥和互相取代.我们可以在平时的应用中单独采用其中一种通讯方式,也可以混合使用这两种通讯方式.在本文中就什么是非阻塞I/O以及为什么要使用这种通讯方式进行了介绍,在下一篇文章中给出了一个简单的例子来演示在网络应用中如何使用非阻塞I/O进行通讯. 一.什么是非阻塞I/O 我们可以将同步I/O称为阻塞I/O,非阻塞I/O称为异步I/O.在本书中采用了比较常用的叫法:同步I/O和非阻塞I/O.虽然它

Java网络编程从入门到精通(27):关闭服务端连接

在客户端和服务端的数据交互完成后,一般需要关闭网络连接.对于服务端来说,需要关闭Socket和ServerSocket. 在关闭Socket后,客户端并不会马上感知自已的Socket已经关闭,也就是说,在服务端的Socket关闭后,客户端的Socket的isClosed和isConnected方法仍然会分别得到false和true.但对已关闭的Socket的输入输出流进行操作会抛出一个SocketException异常. 在关闭服务端的ServerSocket后,ServerSocket对象所绑

Java网络编程从入门到精通(25):创建ServerSocket对象

ServerSocket类的构造方法有四种重载形式,它们的定义如下: public ServerSocket() throws IOException public ServerSocket(int port) throws IOException public ServerSocket(int port, int backlog) throws IOException public ServerSocket(int port, int backlog, InetAddress bindAddr

Java网络编程从入门到精通(22):实现HTTP模拟器

在讨论HTTP协议的具体请求和响应头字段之前,让我们先来利用以前所学的知识来实现一个HTTP模拟器.所谓HTTP模拟器就是可以在用户输入HTTP的请求消息后,由这个模拟器将HTTP请求发送给相应的服务器,再接收服务器的响应消息.这个HTTP模拟器有几下特点: 1.可以手工输入HTTP请求,并向服务器发送. 2.接收服务器的响应消息. 3.消息头和实体内容分段显示,也就是说,并不是象Telnet等客户端一样将HTTP响 应消息全部显示,而是先显示消息头,然后由用户决定是否显示实体内容. 4.集中发

Java网络编程从入门到精通(18):Socket类的getter和setter方法(2)

二.用于获得和设置Socket选项的getter和setter方法 Socket选择可以指定Socket类发送和接受数据的方式.在JDK1.4中共有8个Socket选择可以设置.这8个选项都定义在java.net.SocketOptions接口中.定义如下: public final static int TCP_NODELAY = 0x0001; public final static int SO_REUSEADDR = 0x04; public final static int SO_LI