IP多播与NAT地址转化
IP多播
- 与单播相比,在一对多的通信中,多播可以大大减少网络资源。在互联网上进行多播就叫做IP多播,IP多播所传送的分组需要使用IP多播地址。
- 如果某台主机想要收到某个特定的多播分组,那么怎样才能是这个多播数据报传到这台主机?显然IP数据报的目目的地址一定不能写入这台主机的IP地址。这是因为在同一时间可能会有成千上万台主机加入到同一个多播组。多播组不可能将那么多的地址写入首部。在多播数据报的目的地址写入的是多播组的标识符,然后设法让加入到这个多播组的主机的IP地址与多播组标识在一起。
- 其实多播组的标识符就是IP地址中的D类地址。D类地址的前四位都是1110,因此D类地址的范围是224.0.0.0到239.255.255.255.255。
- 多播地址只能是用于目的地址,而并不适用于源地址。
- IP多播可以分为两种:
- 在本局网进行硬件多播:
- 互联网号码指派局(IANA)拥有的以太网地址块的高24位为00-00-5E,因此TCP/IP协议使用的以太网多播地址快为00-00-5E-00-00-00到00-00-5E-FF-FF-FF
- 在互联网的范围进行多播
- 在本局网进行硬件多播:
网际组管理协议(ICMP)和多播路由选择协议
- IP多播需要两种协议:
- 图中标有IP地址的四台主机都参与了一个多播组,其组地址为229。15.37.123,多播数据报当传到路由器R1,R,R3多个分播组,而不应该传到R4路由器,因为与R3连接的局域网现在没有这个多播组成员,但是这些路由器又怎么知道多播组的成员呢?这就要利用一种协议,叫做网际组管理协议(IGMP:Internet Group Management Protocol)
- 上图是强调了IGMP的本地适用范围,请注意,IGMP并非在互联网范围内对所有主机多播成员进行管理的协议。IGMP并不知道IP多播组包含的成员数,也不知道这些成员都分布在哪些网络上等等。IGMP协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机参加或者退出了某个多播组。
- 仅有IGMP协议是不能完成多播任务的,连接在局域网上的多播路由器还必须和互联网上的其他多播路由器协同工作,以便把多播数据报用最小的代价传送给所有的组成员。这就需要使用多播路由选择协议。但是多播路由选择协议要比单播路由选择协议复杂得多:
- 如图有两个多播组,多播组1的成员有主机A,B,C,多播组2有主机D,E,F。这些主机分布在三个网络上(N1.N2,N3).
- 路由器R不应当向网络N3转发多播分组1的分组,因为网络N3上并没有多播组1的成员,但是每一台主机都可以随时加入或者退出一个多播组中。例如主机G现在加入了多播组1,那么从这时起,路由器R就必须向网络N3转发多播1的分组,也就是说,多播转发必须动态的适应多播成员的变化(此时的网络拓扑结构并未发生变化),注意:单播路由选择通常是在网络拓扑结构发生变化才需要更新路由。
- 如图有两个多播组,多播组1的成员有主机A,B,C,多播组2有主机D,E,F。这些主机分布在三个网络上(N1.N2,N3).
- 网际组管理协议IGMP
- 与ICMP相似,IGMP使用IP数据报传递报文,但它也向IP提供服务。
- IGMP工作分为两个阶段:
- 第一阶段:当某台主机加入新的多播组时,该主机应向多播组的多播地址发送一个IGMP报文,声明自己要成为该组的成员,本地的多播路由器收到IGMP报文后,还要利用多播路由选择协议把这种成员关系转发给互联网上的其它多播路由器。
- 第二阶段:组成员关系时是动态的,本地多播路由器要周期性的探寻本地局域网上的主机,以便知道这些主机是否还是组的成员。只要有一台主机对某个组相应,那么这个多播路由器就认为这个组是活跃的。但一个组在经过几次的探寻后仍然没有一个主机相应,多播路由器就认为本网络上的主机都已经离开了这个组,因此就不再把这个组的成员关系转发给其他的多播路由器。
- IGMP协议设计的非常的仔细,避免了多播控制信息给网络增加大量的开销,IGMP采用的措施如下:
- 在主机和多播路由器之间的所有通信都是IP多播,只要有可能,携带IGMP报文的数据报都采用硬件多播来传送。因此在支持硬件多播的基础上,没有参与IP多播的主机不会收到IGMP报文。
- 多播路由器在寻探组成员之间关系时,只需要对所有组发送一个请求信息的询问报文,并不需要对每一个组发送一个询问报文。默认的询问速率是每125秒发送一次(通信量并不会太大)。
- 当同一个网络连接有几个多播路由器时,他们能够迅速和有效的选择其中一个来寻探主机的成员关系。因此,网络上有多个多播路由器并不会引起IGMP通信量的增大。
- 在IGMP的询问报文中有一个数值N,它指明一个最长响应时间(默认是10秒),当收到询问后,主机在0到N中随机选择一个发送响应所需经过的时延。
- 同一组内的每一台主机都要设置监听响应,只要有本组的其他主机先发送了响应,自己就不能再发送响应了。这样就抑制了不必要的通信量。
虚拟专用网VPN和网络地址转换NAT
虚拟专用网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隧道技术实现虚拟网络专用:
假如某个机构在两个相隔较远的场所建立了专用网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路由器的工作原理:
在图中,专用网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地址
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地址转换表,第一列“方向”为“出”表示离开专用网。
由此可见,当NAT路由器具有n个全球IP地址时,专用网内最多同时有n太主机接入互联网。这样就可以使专用网内较多数量的主机轮询使用NAT路由器的全球唯一IP地址。
为了更加有效的利用NAT路由器的全球IP地址,现在 常用的NAT地址转换表把运输层的端口号也利用上,这样,就可以使多个拥有本地地址的主机,共用一个NAT路由器上的全球唯一IP地址,因而可以同时和互联网上的不同主机进行通信。
使用端口号的NAT也叫做网络地址与端口号转换(NAPT:Network Address And Port Translation),而并不使用端口号的NAT叫做传统的NAT。
IP多播与NAT地址转化的更多相关文章
- TCP/IP学习笔记13--IP地址的构成,广播地址,IP多播,子网掩码
现在,我是蔚蓝的 :在此岸或彼岸,我都是蔚蓝的. ---李瑾 IP对应的是OSI模型中的网络层,TCP对应的是传输层.每一个参与通信的主机都会有一个IP地址. IP地址(IPv4地址)含4个字节,每 ...
- 神州数码NAT地址转换配置
实验要求:熟练掌握NAT地址转换的配置方法 拓扑如下 R1 enable 进入特权模式 config 进入全局模式 hostname R1 修改名称 interface s0/1 进入端口 ip ad ...
- NAT(地址转换技术)详解
目录 NAT产生背景ip地址基础知识NAT技术的工作原理和特点静态NAT动态NATNAT重载(经常应用到实际中)NAT技术的优缺点优点缺点NAT穿越技术应用层网关(ALG)ALG的实际应用NAT技术的 ...
- 清除路由器NAT地址转换
首先当你的NAT网络地址转换成功搭建起来,并且测试过网络通信时,此时NAT地址转换表上面是存在转换信息的,你可以通过在特权模式下输入命令"show ip nat translation&qu ...
- 手把手系列:实现Nat地址转换
1.实验目的: 掌握内网中的主机C1连接到Internet时,通过NAT实现私有全局地址转换. 2.实验拓扑: 3.实验步骤: 步骤一:给主机C1和C2配置IP地址.子网掩码和网关.如图: C1: ...
- 《TCP/IP具体解释卷2:实现》笔记--IP多播
D类IP地址(224.0.0.0到239.255.255.255)不识别互联网内的单个接口,但识别接口组,被称为多播组. 单个网络上的组成员利用IGMP协议在系统之间通信. 多播路由器用多播选录协议. ...
- IP多播(组播)
IP多播是实现数据一对多通信的模式.从一个源点传送到多个目的地,数据仅仅拷贝一份.这里说的数据仅仅拷贝一份,是指在每一条须要它的两个点之间,数据仅仅有一份.例如以下图为<计算机网络>(谢希 ...
- CentOS6.5固定IP方式上网(NAT)
使用NAT模式 虚拟机网络连接使用NAT模式,物理机网络连接使用Vmnet8.如果没有重置一下即可 虚拟机设置里面--网络适配器,网络连接选择NAT模式. 虚拟机菜单栏-编辑-虚拟网络编辑器,选择Vm ...
- 【原创】锐捷实现OSPF路由协议和NAT地址转换协议
路由网络设计与实施 [锐捷设备实现OSPF路由协议与NAT地址转换] 说明: 本文是在多VLAN双星型交换网络的基础之上发展的.关于组建多VLAN双星型交换网络,请参阅: <思科和锐捷组建多 ...
随机推荐
- SpringBoot集成<个推推送> Maven 下载jar包异常处理本地打包下载
问题描述 公司需要对用户进行消息推送,选择了个推,由于是Java进行开发,个推操作文档, 这是官网上安装的方式,可是不成功,无论怎么样都无法把Jar包下载下来! MAVEN方式(本人测试Jar无法下载 ...
- await 关键字 后面跟Task 和Task <T>
1.Task的优势 ThreadPool相比Thread来说具备了很多优势,但是ThreadPool却又存在一些使用上的不方便.比如: ◆ ThreadPool不支持线程的取消.完成.失败通知等交互性 ...
- clojure配置
1.转换clojure工程为eclipse工程 Install Counterclockwise plugin in Eclipse (from eclipse marketplace). This ...
- java的stream的使用
过滤 filter: //匹配第一个元素 Optional<Integer> findFirst=list.stream().filter(x->x>6).findFirst( ...
- seo高手教你seo优化排名该怎么做
seo高手教你seo优化排名该怎么做 第一节:如何在本地搭建服务器环境 本节课程主要是讲如何利用 Xampp在本地搭建服务器环境 .网站使用asp和php比较常见,当然,就目前而言,使用php搭建网站 ...
- Git使用教程四
拉取线上仓库 :git pull 提醒: 在每天工作的第一件事就是先git pull拉取线上最新·的版本: 每天下班前要做的是git push,将本地代码提交到线上仓库. 有兴趣可以关注一下微信公众号
- vue ele 表单规则校验俩次输入密码是否相同,校验手机号 ( 前端小课堂:小细节,大进步 )
这个是密码的拦截 : [{ required: true, validator: validatePass4, trigger: "blur" }], 同级关系下写下方法,类 ...
- 简单C++线程池
简单C++线程池 Java 中有一个很方便的 ThreadPoolExecutor,可以用做线程池.想找一下 C++ 的类似设施,尤其是能方便理解底层原理可上手的.网上找到的 demo,基本都是介绍的 ...
- VS Code闪现,巨头纷纷入局的Web IDE缘何崛起?
我发了,我装的. 就在前几天,微软简短的发布了Visual Studio Code for the Web 的公告,而没过一阵,这则公告就被删除了,现在点经相关内容已经是404状态了.虽然公告的内容已 ...
- [考试总结]noip模拟40
最近真的是爆炸啊... 到现在还是有不少没改出来.... 所以先写一下 \(T1\) 的题解.... 送花 我们移动右端点,之后我们用线段树维护全局最大值. 之后还要记录上次的位置和上上次的位置. 之 ...