首页 > 代码库 > 网络层-IP地址

网络层-IP地址

以下内容是IPv4

IP地址长度32位,Java里面一个int的长度,总共分为5类IP地址

1:分类编址

A类IP地址0开头:           A类有31个位置可以变化,总数是2^31个,  [(00000000)000-127(01111111)].[0-255].[0-255].[0-255]

B类IP地址10开头,         B类有30个位置可以变化,总数2^30,            [(10000000)128-191(10111111)].[0-255].[0-255].[0-255]

C类IP地址110开头,       C类有29个位置可以变化,总数2^29,            [(11000000)192-223(11011111)].[0-255].[0-255].[0-255]

D累IP地址1110开头,     D类有28个位置可以变化,总数2^28,     [(11100000)224-239(11101111)].[0-255].[0-255].[0-255]

E累IP地址1111开头,     E类有28个位置可以变化总数2^28      [(11110000)240-255(11111111)].[0-255].[0-255].[0-255]

 

1.1:俩级编址

分组先抵达主机所在的网络,然后才能找到主机

A类,B类,C类IP地址可以划分为网络标识和主机标识俩部分

A类:用1个字节标识网络地址,3个字节标识主机地址,地址块总共有2^7=128个,每个地址块有2^24+1=167777216个,为什么要+1,因为还有一个netID.00000000.00000000.00000000

B类:用2个字节标识网络地址,2个字节标识主机地址,地址块总共有2^14=16384个,(16-2(10开头)=14),每个地址块有2^16+1=65536个,+1原因同上

C类:用3个字节标识网络地址,1个字节标识主机地址,地址块总共有2^21=2097152个,(24-3(110开头)=21),每个地址块有2^8+1=256个,+1原因同上

D类:多播地址

E类:保留地址,以后使用

 

网络地址的作用:路由器通过IP地址,找到网络地址,咨询路由表找到相应的接口将分组转发出去.

网络掩码:

A类的网络掩码:255.0.0.0

B类的网络掩码:255.255.0.0

C类的网络掩码:255.255.255.0

网络掩码(默认掩码)的作用:使用二进制与运算从IP地址中提取网络地址

如下:

分组中目的IP地址为:201:24:67:32

可以看出是C类IP地址:那么它对应的掩码是255.255.255.0

所以:网络地址是 

201.24.67.032

       &

255.255.255.0

____________

201.24.67.0(网络地址)

 

1.2:三级编址:子网划分

IP地址最初设计为俩级编址.也就是分组先抵达主机所在的网络,然后才能找到主机,但是俩级编址的地址不够,原因如下

1:授权使用A类或B类地址块的组织.出于安全和管理的需要,有必要把自己的大网络进一步划分为若干的小网络

2:A类地址和B类地址块已经接近用完,C类地址块又太小,所以有A类和B类使用权的组织可以将自己的地址块划分为多个较小的子地址块和其他组织共享

将一个地址块分割为若干个较小的地址块的思想称为子网划分(一个网络划分成很多小网络,很多小网络又可以划分为更小的网络)

 

子网掩码

当一个网络没有划分子网时,使用的是网络掩码,当我们把一个网络划分成若干个子网后,就要为每个子网建立一个子网掩码

一个子网由子网标识和主机标识俩部分组成.子网划分增加网络标识的长度(把A类地址当成B类或者C类地址用),同时减少主机标识的长度

当我们把一个网络划分为s个子网且每个子网的主机数目相同时,如下计算子网标识

nsub=n+log2S

其中,n是网络标识的长度,nsub是各子网标识的长度,s是子网的数目,s必须是2的乘方

如把B类网络划分成四个子网,因此n的值是16,而n1=n2=n3=n4=16+log24=18,也就是说子网掩码有18个1,14个0组成,255.255.192.0

 

子网地址

当一个网络划分子网后,子网的首地址就是它的子网标识符,也就是路由器为分组选择路由使分组到大正确的子网时要用的网络标识符。

 

1.3:构造超网

在构造超网时,一个组织可以把若干个C类地址合并成一个更大的地址段,多个网络合并成一个超网

1.3.1:超网掩码

超网掩码和子网掩码正好相反,C类子网掩码中1的个数要比C类默认掩码中1的个数要多,而C类超网掩码中1的个数比默认掩码中1的个数少

子网掩码

  11111111   11111111  11111111  11100000  nsub=24+3=27

默认掩码

  11111111   11111111  11111111  00000000  n=24

超网掩码

  11111111   11111111  11111000  00000000  nsuper=24-3=21

计算方式

  nsuper=n-log2c

构造超网带来新的问题

1:合并为超网的地址块数目必须是2的乘方,也就是说一个组织只需要7个地址块,如果它想构造一个超网,那么它必须还要去申请一个地址块(地址浪费了)

2:分组的路由选择变的相当复杂

 

2:无分类编址

在分配地址时,类别特权被取消了,以此来补偿地址耗尽的问题

在无分类编址时整个地址空间被划分为许多不同的大小的地址块,理论上讲这些地址块可以有20,21,22.....个地址。唯一的限制是一个地址块中的地址数必须是2的乘方

 

2.1:无分类俩级编址

当一个组织被授权使用一个地址块,这个地址块也可以划分为俩个部分,前缀和后缀,前缀的作用和网络标识一样,后缀就是主机标识咯

在无分类编址中,前缀的长度取决于地址块的尺寸,它可以是0,1,2,3.....32(n),后缀的长度32-n

 

地址块中的地址数目与前缀长度n成反比,n越小意味着地址块越大

2.1.1:斜线记法

分类编址时:网络标识的长度是地址固有的,给定一个地址就可以求出来

无分类编址时:如果我们仅仅给地址块中的一个地址无法求出其前缀长度

所以我们把前缀的长度附加到地址后面,并用斜线隔开,如xxxx.xxxx.xxxx.xxxx/n

斜线记法的正式名称是无分类域间路由选择或CIDR记法

在无分类编址中, 我们需要知道地址块中的一个地址,以及定义该块的前缀长度

如下:一个IP地址230.8.24.56可能属于多个地址块

前缀长度16  ->地址块230.8.0.0   到  230.8.255.255

前缀长度20  ->地址块230.8.16.0   到  230.8.31.255

 

2.2:网络掩码

在无分类编址中,网络掩码的思想和分类编址一样,一个网络掩码就是一个32位的数,左边n位全部置1,其余未全部置0

 

2.3:提取地址块的信息

1.地址块的地址数N=232-n

2.地址块的首地址用网络掩码对这个地址进行与运算求出

3.末地址=地址总数+首地址,或者直接用网络掩码的反码对该地址进行或运算

 

2.4:地址分配

由因特网名字与号码指派公司(ICANN)进行分配,不直接向个人分配地址,它将大块的地址指派给一个ISP,遵循如下原则

1.申请的地址数N必须是2的乘方.这样前缀n才会是一个整数

2.必须是地址空间中连续未分配的地址才能被分配给申请的地址块

3.如何选择起始地址是有限制的,起始地址必须能够被地址块的地址数整除,X x 232-n,其中X是前缀的十进制值,那么起始地址就是X x N

2.5:无分类编址的子网划分

假设使用的地址数是N,前缀长度为n,分配下去每个子网的地址数为Nsub,每个子网的前缀长度为nsub

1.每个子网的地址数应当是2的乘方

2.每个子网的前缀长度应当用下面公式求得

  nsub=n+log2(N/Nsub)

3.每个子网的起始地址应当能够被它的地址数整除,要做到这一点,应该先为较大的子网指派地址

 

3:特殊的地址

1.全0的地址

地址块0.0.0.0/32仅包含一个地址,它被保留用于某主机需要发送一个IPv4分组,但又不知道自己的地址的情况下用

主机为了找到自己的地址,就像引导服务器(DHCP)发送一个IPv4分组,并以这种全0的地址作为源地址,而用受限广播地址作为目的地址

2.全1地址,受限广播地址

地址块255.255.255.255/32仅包含一个地址,它被保留作为当前网络的受限广播地址,一个主机若想把报文发送给网络中其他所有主机,就可以用这个地址作为目的地址,但是,路由器

会把这种类型地址的分组阻挡住,这样广播只能局限在本地网络.

3.环回地址

地址块127.0.0.0/8被用作环回地址,用来测试机器上的软件,使用这个地址时,分组没有离开过机器。

4.专用地址

有一些地址被指派为专用地址,它们不会在全球被识别,用于拒绝其他网络或者用于具有网络地址转换技术的连接

如下

地址块        地址数

10.0.0.0/8      16777216

172.16.0.0/12    1047584

192.168.0.0/16    65536

169.254.0.0/16    65536

4:NAT技术

NAT网络地址转换技术

为什么需要它:假设一个ISP向某个企业授予了一小段地址的使用权,如果这个企业壮大了,需要一个较大的地址段,ISP又无法满足,

这个技术允许一个站点的内部通信使用一组专用地址,而与世界其他地方进行通信时使用另外一组地址.这个站点必须仅有一条到全球因特网的连接,而且这条连接通过了一个运行

NAT软件的具有NAT功能的路由器

4.1:地址转换

所有外出的分组都要通过这台NAT路由器,它将分组中的源地址替换为全球NAT地址,所有进入分组也要通过这台NAT路由器,它又将这些分组中的目的地址替换为相应的内部地址

怎么实现NAT技术

4.1.1:使用IP地址池实现

如果NAT路由器仅仅使用一个全球地址,那么在专用网络中,一次只允许一台主机访问某个外部主机,为了消除这个限制,NAT路由器可以使用全球地址池,

使用IP地址和端口地址

如下表

专用地址(本地局域网的源IP地址)      专用端口                外部地址      外部端口      运输船协议

172.18.1.1                1400                25.8.3.2      80          TCP

172.18.3.1                1401                25.8.3.2      80          TCP

当来自HTTP的响应返回时,源地址(25.8.3.2)与目的端口(1400)组合在一起指明了应当将这个响应分组交付给专用网络中哪一台主机(172.18.1.1)

注:(本人私有的想法)专用端口,本人觉得应该是路由器给的随机值,如果用内网发来分组中的端口,会冲突,如下

路由器外网IP地址是1.1.1.1

A:内部IP地址172.18.1.1,端口是1400,这个分组信息被转换成1.1.1.1:1400,发给25.8.3.2:80,响应分组发给1.1.1.1:1400,来自25.8.3.2:80

B:内部IP地址172.18.3.1,端口是1400,这个分组信息被转换成1.1.1.1:1400,发给25.8.3.2:80,响应分组发给1.1.1.1:1400,来自25.8.3.2:80

响应分组回来就冲突,查找表,不知道交给谁,想要详细了解NAT技术,查看RFC 1631

网络层-IP地址