分类的IP地址

1,分类的IP地址,就是将IP地址划分为若干个固定类,每一类地址都由两个
  固定的字段组成:
  
  网络号(net-id),它标志着主机(或路由器)所连接到的网络。一个
  网络在整个因特网内必须是唯一的。
  
  主机号(host-id),它标志着该主机(或路由器)。一个主机号在它
  前面的网络号所指明的网络范围内必须是唯一的。

  所以:一个IP地址在整个因特网范围内是唯一的。
分类的IP地址_第1张图片

  这里A类,B类,C类地址都是单播地址(一对一通信),是最常用的。D类
  地址(前4位是1110)用于多播(一对多通信)。而E类地址(前4位1111)
  保留以后使用

2,但是值得我们注意的是:由于近年来已经广泛的使用无分类IP地址进行路由
  选择,A类,B类,C类地址的区分已称为历史,但是由于很多文献和资料都
  还使用传统分类的IP地址,因此还是要详细的了解分类IP地址。
  
  从IP地址结构来看,IP地址并不仅仅指明一个主机,而是还指明了主机所
  连接到的网络。
  把IP地址划分为三类,当初是这样考虑的。各种网络的差异很大,有的网络
  拥有很多主机,而有的网络上的主机则很少。把IP地址划分为A类,B
  类,C类是为了更好的满足不同用户的要求。当某个单位申请到一个IP地址
  时,实际上是获得了具有同样网络号的一块地址。其中具体的各个主机号则由
  该单位自行分配,只要做到在该单位管辖的范围类无重复的主机号即可。

3,A类地址的网络号字段占一个字节,只有7位可供使用(该字段的第一位已固
  定为0),但是可以指派的网络号是126个(2^7 - 2)。减2的原因:第
  一,IP地址中全0表示“这个”。网络号字段全0的IP地址是个保留地址,意
  思是“本网络”。第二,网络号127保留作为本地软件环回测试(loopback test)
  本主机的进程之间的通信只用。若主机发送一个目的地在为环回地址(例
  如:127.0.0.1)的IP数据报,则本主机中的协议软件就处理数据报中的数
  据,而不会把数据报发送到任何网络。目的地址为环回地址的IP数据报永远
  不会出现在任何网络上,因为网络号127的地址根本不是一个网络地址。

  A类地址的主机号占3个字节,因此每一个A类网络中的最大主机数是2^24 - 2。这里减2的原因是:全0的主机号字段表示该IP地址是“本主机”所连接到的单个网络地址(例如:一主机的IP地址为5.6.7.8,则该主机所在的网络地址就是5.0.0.0),而全为1的主机号字段表示该网络上的所有主机。

  B类地址的网络号字段有2字节,但前面两位(1,0)已经固定了,只剩下14位可以进行分配。因为网络号字段后面的14位无论咋样取值也不可能出现使得整个2字节的网络号字段全为0或全为1,因此这里不存在总数减2的情况。但实际上B类网络地址128.0.0.0是不可以指派的,而可以指派的B类最小网络地址是128.1.0.0。因此B类地址可以指派的网络数为2^14 - 1。B类地址的每一个网络上的最大主机数2^16 - 2,即65534。这里需要减2是因为要扣除全0和全1的主机号。

  C类地址有三个字节的网络号字段,最前面三位(1,1,0),还有21位可以分配。C类地址192.0.0.0也是不可指派的,可以指派的C类最小网络地址是192.0.1.0,因此C类可以指派的网络总数是2^21 - 1。每一个C类地址最大主机数是2^8 - 2,即254.

分类的IP地址_第2张图片

4,IP地址和硬件地址的区别
 从层次的角度看:物理地址是数据链路层和物理层使用的地址,而IP地址是网
 络层和以上各层使用的地址,是一种逻辑地址(称IP地址是逻辑地址是因为
 IP地址使用软件来实现的)。

分类的IP地址_第3张图片
 在发送数据时,数据是从高层下到低层,然后才到通信链路上传输。使用IP地
 址的IP数据报一旦交给了数据链路层,就被封装成了MAC帧了。MAC帧在传
 送时使用的是源地址和目的地址都是硬件地址,这两个硬件地址都写在MAC帧
 的首部中。
 连接在通信链路上的设备(主机或路由器)在接收MAC帧地址时,其根据
 MAC帧首部中的硬件地址。在数据链路层看不见隐藏在MAC帧的数据中的
 IP地址。只有在剥去MAC帧的首部和尾部后把MAC层后数据上交给网络层
 后,网络层才能在IP数据报的首部中找源IP地址和目的IP地址。

  总之:IP地址放在IP数据报的首部,而硬件地址则放在MAC帧的首部。在网络层和网络层上使用的是IP,而数据链路层及以下使用的是硬件地址。当IP数据报放入数据链路层的MAC帧中以后,整个的IP数据报就成为MAC帧的数据,因而在数据链路层看不见数据报的IP地址。。。。。。。。

分类的IP地址_第4张图片
  如上图:三个局域网用两个路由器R1,R2互连起来。现在主机H1要和主机H2通信。这两个主机的IP地址分别是IP1和IP2,而它们的硬件地址分别是HA1和HA2。通信的路径是:H1—>经过R1转发—>再经过R2转发—>H2。路由器R1因同时连接到两个局域网上,因此它有两个硬件地址,即HA3和HA4。同理,路由器R2也有两个硬件地址HA5和HA6.
分类的IP地址_第5张图片
  如上图:特别强调了IP地址和硬件地址的区别

1,在IP层抽象的互联网上只能看到IP数据报。虽然IP数据报要经过路由器R1和R2的两次转发,但在它的首部中的源地址和目的地址始终是IP1和IP2.数据报中间经过的两个路由器的IP地址并不出现在IP数据报的首部中

2,虽然在IP数据报首部有源站IP地址,但路由器只根据目的站的IP地址的网络号进行路由选择

3,在局域网的链路层,只能看见MAC帧。IP数据报被封装在MAC帧中。Mac帧在不同网络上传送时,其MAC帧首部中的源地址和目的地址要发生变化。开始在H1到R1间传递时,MAC帧首部中写的是从硬件地址HA1发送到Ha3,路由器R1收到此MAC帧后,在转发时要改变首部中的源地址和目的地址,将它们换成从硬件地址HA4发送到HA5.路由器R2接收到此帧后,再改变一次MAC帧的首部,填入从HA6发送到HA2,然后在R2到H2之间传递。MAC帧的首部的这种变化。在上面IP层也是看不见的。。。

4,尽管互连在一起的网络的硬件地址体系各不相同,但IP层抽象的互联网却屏蔽了下层这些很复杂的细节。

接下来就出现了两个很简单直接的问题:::
1,主机或路由器咋样知道应当在Mac帧的首部填入什么样的硬件地址?
2,路由器中的路由表是如何得出的???

ARP地址解析协议和RARP逆地址解析协议
逆地址解析协议RARP在过去曾起到重要的作用。但现在DHCP协议已经包含了RARP协议的功能。因此现在已经没有人在单独使用RARP协议了。因此,我们只需要了解,逆地址解析协议RARP的作用是知道自己硬件地址的主机能够通过RARP协议找出其IP地址。。。

ARP:
  我们直到,网络层使用的是IP地址,但在实际网络的链路上传送数据帧时,最终还是使用该网络的硬件地址。但IP地址和下面的网络硬件地址之间由于格式不同而不存在简单的映射关系(例如:IP地址有32位,而局域网的硬件地址是48位)。此外,在一个网络上可能经常会有新的主机加入进来,或撤走一些主机。更换网络适配器也会使主机的硬件地址改变。
  地址解析协议ARP解决这个问题的方法是在主机ARP告诉缓存中应存放一个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新(新增或超时删除)。
  每一个主机都设有一个ARP高速缓存,里面有本局域网上的主机和路由器IP地址到硬件地址的映射表,这些都是该主机目前直到的一些地址。那么主机如何直到这些地址呢???

1,当主机A要向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。如有,就在ARP高速缓存中查看其对应的硬件地址,再把这个硬件地址写入MAC帧,然后通过局域网把该mac帧发往此硬件地址。
  当找不到主机B的IP地址。这可能是主机B才入网,也可能是主机A刚刚加电,其高速缓存还是空的。在这种情况下,主机A就自动的运行ARP,然后按照以下步骤找出主机B的硬件地址。

分类的IP地址_第6张图片
  1,ARP进程在本局域网上广播发送一个ARP请求分组
    如上图,是主机A广播发送ARP请求分组的示意图

  2,在本局域网上的所有主机上运行的ARP进程都收到此ARP请求分组。
  3,主机B在ARP请求分组中见到自己的IP地址,就向主机A发送ARP响应分组,并写入自己的硬件地址。。其余的所有主机都不理睬这个ARP请求分组。虽然ARP请求分组是广播发送的,但ARP响应分组是普通的单播,即从一个源地址发送到一个目的地址。
  分类的IP地址_第7张图片
  4,主机A收到主机B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP地址到硬件地址的映射。当主机A向B发送数据时,很可能以后不久主机B还要向A发送数据报,因而主机B也可能向主机A发送ARP请求分组。为了减少网络上的通信量,主机A在发送其ARP请求分组时,就把自己的IP地址到硬件地址的映射写入ARP请求分组。当主机B收到A的ARP请求分组时,,就把主机A的这一地址映射写入主机B自己的ARP高速缓存中。。。

  ARP把保存在高速缓存中的每一个映射地址都设置生存时间。(10 - 20分钟)。凡超过生存时间的就从高速缓存中删除掉。设置地址映射生存时间是很重要的。设想这种情况下,主机A和主机B通信,A的ARP高速缓存里保存有B的物理地址。但B的网络适配器突然坏了,B立即更换了一块,因此B的硬件地址就改变了。假如A还要和B继续通信。A在其ARP高速缓存中查找到了B的原有的硬件地址,并使用该硬件地址向B发送数据帧。但B原先的硬件地址已经失效了,因此A无法找到主机B。但是过了一段时间,A的高速缓存中删除了B的硬件地址,然后在重新加入,就可以通信了。。。

  值得注意的是:ARP是解决同一个局域网上的主机或路由器IP地址和硬件地址的映射问题。如果:所要找的主机和源主机不在同一个局域网上,主机H1就无法解析出主机H2的硬件地址(实际上,主机H1也不需要知道远程主机H2的硬件地址)。主机H1发送给H2的IP数据报首先需要通过与主机H1连接在同一局域网上的路由器R1来转发。因此主机H1这时需要把路由器R1的IP地址IP3解析为硬件地址HA3.以便能够把IP数据报传送给路由器R1.以后,R1从转发表找出了下一跳路由器R2,同时使用ARp解析出R2的硬件地址HA5。于是IP数据报按照硬件地址HA5转发到路由器R2.然后依次给主机H2

同样的,我们给出了一个问题:既然在网络链路上传送的帧最终是按照硬件地址找到目的主机的,那么为什么我们不使用硬件地址进行通信,而是使用抽象的IP地址并调用ARP来寻找相应的硬件地址???

1,由于全世界存在这各种各样的网络,它们使用不同的硬件地址。要使得这些异构网络能够相互通信就必须进行非常复杂的硬件地址转换工作,因此由用户或主机用户来完成这项工作几乎是不可能的。但是,但是,但是,统一的IP地址把这个复杂问题解决了。连接到因特网的主机只需要拥有统一的IP地址。极大的方便了用户。

划分子网和构造超网:
1,为了解决两级IP地址不够灵活以及IP的严重浪费,从1985年起在IP地址中又增加了一个“子网号字段”,使得两级IP地址变成三级IP地址。能够较好的解决上述问题,这种做法叫做:划分子网

  划分子网的方法是:从网络的主机号借用若干位作为子网号,当然主机号也就相应的减少了同样的位数。于是两级IP地址变为了三级IP地址

子网掩码:
分类的IP地址_第8张图片
  有一个问题:在不划分子网时,既然没有子网,为什么还要使用子网掩码?这就是为了更便于查找路由表。现在因特网规定:所有网络都必须使用子网掩码,同时在路由器的路由表中也必须有子网掩码这一栏。如果一个网络不划分子网,就使用默认的子网掩码。

  子网数是根据子网号计算出来的。若子网数有n位,则共有2^n种可能的排列,出去全为0和全为1的情况。

  注意的是:虽然根据已成为因特网标准的文档,子网号不能为全1或者全0,但随着无分类路由的广泛使用,现在全为1和全为0也是可以使用的了。。。。

你可能感兴趣的:(网络编程,面试)