IP多播与NAT地址转化

时间:2022-01-01 23:42:44

IP多播

  1. 与单播相比,在一对多的通信中,多播可以大大减少网络资源。在互联网上进行多播就叫做IP多播,IP多播所传送的分组需要使用IP多播地址。
  2. 如果某台主机想要收到某个特定的多播分组,那么怎样才能是这个多播数据报传到这台主机?显然IP数据报的目目的地址一定不能写入这台主机的IP地址。这是因为在同一时间可能会有成千上万台主机加入到同一个多播组。多播组不可能将那么多的地址写入首部。在多播数据报的目的地址写入的是多播组的标识符,然后设法让加入到这个多播组的主机的IP地址与多播组标识在一起。
  3. 其实多播组的标识符就是IP地址中的D类地址。D类地址的前四位都是1110,因此D类地址的范围是224.0.0.0到239.255.255.255.255。
  4. 多播地址只能是用于目的地址,而并不适用于源地址。
  5. IP多播可以分为两种:
    1. 在本局网进行硬件多播:
      1. 互联网号码指派局(IANA)拥有的以太网地址块的高24位为00-00-5E,因此TCP/IP协议使用的以太网多播地址快为00-00-5E-00-00-00到00-00-5E-FF-FF-FF
    2. 在互联网的范围进行多播

网际组管理协议(ICMP)和多播路由选择协议

  1. IP多播需要两种协议:
    1. IP多播与NAT地址转化
    2. 图中标有IP地址的四台主机都参与了一个多播组,其组地址为229。15.37.123,多播数据报当传到路由器R1,R,R3多个分播组,而不应该传到R4路由器,因为与R3连接的局域网现在没有这个多播组成员,但是这些路由器又怎么知道多播组的成员呢?这就要利用一种协议,叫做网际组管理协议(IGMP:Internet Group Management Protocol)
    3. 上图是强调了IGMP的本地适用范围,请注意,IGMP并非在互联网范围内对所有主机多播成员进行管理的协议。IGMP并不知道IP多播组包含的成员数,也不知道这些成员都分布在哪些网络上等等。IGMP协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机参加或者退出了某个多播组
    4. 仅有IGMP协议是不能完成多播任务的,连接在局域网上的多播路由器还必须和互联网上的其他多播路由器协同工作,以便把多播数据报用最小的代价传送给所有的组成员。这就需要使用多播路由选择协议。但是多播路由选择协议要比单播路由选择协议复杂得多:
      1. IP多播与NAT地址转化
      2. 如图有两个多播组,多播组1的成员有主机A,B,C,多播组2有主机D,E,F。这些主机分布在三个网络上(N1.N2,N3).
        1. 路由器R不应当向网络N3转发多播分组1的分组,因为网络N3上并没有多播组1的成员,但是每一台主机都可以随时加入或者退出一个多播组中。例如主机G现在加入了多播组1,那么从这时起,路由器R就必须向网络N3转发多播1的分组,也就是说,多播转发必须动态的适应多播成员的变化(此时的网络拓扑结构并未发生变化),注意:单播路由选择通常是在网络拓扑结构发生变化才需要更新路由。
  2. 网际组管理协议IGMP
    1. 与ICMP相似,IGMP使用IP数据报传递报文,但它也向IP提供服务。
    2. IGMP工作分为两个阶段:
      1. 第一阶段:当某台主机加入新的多播组时,该主机应向多播组的多播地址发送一个IGMP报文,声明自己要成为该组的成员,本地的多播路由器收到IGMP报文后,还要利用多播路由选择协议把这种成员关系转发给互联网上的其它多播路由器。
      2. 第二阶段:组成员关系时是动态的,本地多播路由器要周期性的探寻本地局域网上的主机,以便知道这些主机是否还是组的成员。只要有一台主机对某个组相应,那么这个多播路由器就认为这个组是活跃的。但一个组在经过几次的探寻后仍然没有一个主机相应,多播路由器就认为本网络上的主机都已经离开了这个组,因此就不再把这个组的成员关系转发给其他的多播路由器。
  3. IGMP协议设计的非常的仔细,避免了多播控制信息给网络增加大量的开销,IGMP采用的措施如下:
    1. 在主机和多播路由器之间的所有通信都是IP多播,只要有可能,携带IGMP报文的数据报都采用硬件多播来传送。因此在支持硬件多播的基础上,没有参与IP多播的主机不会收到IGMP报文。
    2. 多播路由器在寻探组成员之间关系时,只需要对所有组发送一个请求信息的询问报文,并不需要对每一个组发送一个询问报文。默认的询问速率是每125秒发送一次(通信量并不会太大)。
    3. 当同一个网络连接有几个多播路由器时,他们能够迅速和有效的选择其中一个来寻探主机的成员关系。因此,网络上有多个多播路由器并不会引起IGMP通信量的增大。
    4. 在IGMP的询问报文中有一个数值N,它指明一个最长响应时间(默认是10秒),当收到询问后,主机在0到N中随机选择一个发送响应所需经过的时延。
    5. 同一组内的每一台主机都要设置监听响应,只要有本组的其他主机先发送了响应,自己就不能再发送响应了。这样就抑制了不必要的通信量。

虚拟专用网VPN和网络地址转换NAT

  1. 虚拟专用网VPN

    ​ 由于IP地址资源的紧缺,并且很多计算机并不需要和互联网相连。假设在一个机构内部的计算进通信也是采用TCP/IP协议,那么从原则上来讲,对于这些仅在内部机构使用的计算机就可以由本机机构自行分配IP地址,也就是说,让这些计算机使用仅在本机机构有效的IP地址(这种地址称之为本地地址),而并不需要向互联网的管理机构申请全球唯一IP地址(这种地址称之为全球地址)。这样就大大节约了宝贵的全球IP地址资源。

    ​ 但是,如果过任意选择一些IP地址作为本机构内部使用的本地地址,那么在某种情况下可能会引起一些麻烦,例如,有时机构内部的某台主机需要和互联网连接,那么在这种仅在内部使用的本地地址快就有可能会和互联网上的某个IP地址重合,这样就会出现地址的二义性问题。

    ​ 为了解决这个问题,RFC1918指明了一些专用地址(private address),这只地址只能用于一个机构的通信,而并不能用于和互联网上的主机通信。换言之,专用地址只能用于本地地址而不能用作全球地址。在互联网上的所有路由器,对目的地址时专用地址的数据报一律不允许转发。RFC6890全面的给出了所有特殊用途的IPV4地址,但三个专用地址款并未发生变化,即:

    ​ (1):10.0.0.0-10.255.255.255

    ​ (2):172.16.0.0-172.31.255.255

    ​ (3):192.168.0.0-192.168.255.255

    采用这样的专用IP地址的互联网称之为专用互联网或本地互联网,有时候一个很大的机构的许多部门分布很广,这些部门要经常交互信息,这可以有两种办法:

    ​ (1):租用电信公司的通信线路为本机构专用。这种方法虽然简单方便,但是线路的租金太高,一般难以承受。

    ​ (2):利用公网的互联网络作为本机构各专用网之间的通信载体,这样的专用网又称之为虚拟专用网(VPN)。之所以称之为"专用网"是因为这种网路是为本机构的主机用于内部通信使用的。而并不是用于和网络外非机构的主机通信,如果专用网不同网点之间的通信必须通过公用的互联网络,但又有保密的要求,那么所有通过互联网传输的数据包必须要加密,加密需要采用的协议将在以后讨论。。。"虚拟"表示的是"好像是",但实际上并不是,因为现在并没有真正的使用通信专线。而VPN只是在效果上和真正的专用网一样。一个机构要构建自己的VPN就必须为它的每一个场所购买专门的硬件和软件,并进行配置在,使每一个场所的VPN系统都知道其他场所的地址。

    ​ 如图以两个场所为例说明如何使用IP隧道技术实现虚拟网络专用:

    IP多播与NAT地址转化

    ​ 假如某个机构在两个相隔较远的场所建立了专用网A和B,其网络地址分别为10.1.0.0和10.2.0.0。现在这两个场所需要通过公网的互联网构成了一个VPN。显然,每一个场所至少要有一个路由器具有合法的全球IP地址。路由器R1和R2在专用网内部网络接口地址则是使用专用网的本地地址。

    网络地址转换协议NAT

    ​ 下面讨论的是在专用网内部的一些主机本来就已经分配到了本地IP地址(本专用网内的专用地址),但现在又想和互联网上的主机通信(并不需要加密),那么应当采取什么措施?

    ​ 最简单的办法就是设法再申请一些全球IP,但在这种情况下是不容易做大的,因为全球IPV4的地址已经所剩无几了,目前使用最多的是采用网络地址转换协议

    网络转换协议NAT(Network address Translation)方法是在1994年提出的,这个方法需要在专用网的的路由器上安装NAT软件,装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址,这样,所有使用本地地址的主机在与外界通信时,都在在NAT路由器上将其本地地址转化为全球IP地址,才能和互联网连接。

      如图时NAT路由器的工作原理:

    IP多播与NAT地址转化

    ​ 在图中,专用网192.168.0.0内所有主机的IP地址都是本地IP地址为192.168.x.x。NAT路由器至少要有一个全球IP地址,才能和互联网相连。

    ​ NAT路由器在接收到从专网内部主机A发往互联网上主机B的IP数据报:源IP地址时192.168.0.3,而目的地址为213.18.2.4。NAT 路由器会把IP数据报的源IP地址192.168.0.3转为新的IP地址(即NAT路由器全球唯一IP地址)172.38.1.5,然后转发出去。因此,当主机B接收到这个IP数据报时,以为A的IP地址为172.38.1.5。当B给A发送IP数据报,IP数据报的目的IP地址就是路由器NAT地址

    1. 38.1.5。B并不知道A的专用地址为192.168.0.3,就算知道了也不能使用,因为互联网上的路由器不允许转发目的地址是专用网本地IP地址的IP数据报。当NAT路由器接收到互联网上的主机B发送过来的IP数据报,还要进行一次IP地址转换。通过NAT转换,就可以把IP为172.38.1.5转化为192.168.0.3(主机A的真正地址)。在NAT路由器中,还有一张NAT地址转化表,通过NAT地址转换表,第一列“方向”为“出”表示离开专用网。

      IP多播与NAT地址转化

      由此可见,当NAT路由器具有n个全球IP地址时,专用网内最多同时有n太主机接入互联网。这样就可以使专用网内较多数量的主机轮询使用NAT路由器的全球唯一IP地址。

      ​ 为了更加有效的利用NAT路由器的全球IP地址,现在 常用的NAT地址转换表把运输层的端口号也利用上,这样,就可以使多个拥有本地地址的主机,共用一个NAT路由器上的全球唯一IP地址,因而可以同时和互联网上的不同主机进行通信。

      ​ 使用端口号的NAT也叫做网络地址与端口号转换(NAPT:Network Address And Port Translation),而并不使用端口号的NAT叫做传统的NAT。

      IP多播与NAT地址转化