网络知识入门,地址转换原理,解释为何无法从互联网访问公司内网(十一)

☆樱花仙子☆ 提交于 2020-01-11 05:52:08

地址转换

 
路由器有一些附加功能。比如地址转换和包过滤,下面就来介绍一下这两种功能。
 
    首先我们先了解一下地址转换功能出现的背景所谓地址,就是用来识别每一台设备的标志,因此每台设备都应该有一个唯一不重复的地址。 网络也是一样,本来互联网中所有的设备都应该有自己的固定地址而且最早也确实是这样做的。
 
    比如公司内网需要接入互联网的时候应该向地址管理机构申请 IP 地址并将它们分配给公司里的每台设备换句话说那个时候没有内网和外网的区别,所有客户端都是直接连接到互联网的。 尽管互联网原本是这样设计的,但进入 20 世纪 90 年代之后互联网逐步向公众普及,接入互联网的设备数量也快速增长如此一来情况就发生了变化。如果还用原来的方法接入过不了多久可分配的地址就用光了。如果不能保证每台设备有唯一不重复的地址就会从根本上影响网络包的传输,这是一个非常严重的问题如果任由这样发展下去不久的将来,一旦固定地址用光新的设备就无法接入了互联网也就无法继续发展了。 解决这个问题的关键在于固定地址的分配方式。
 
     举个例子假如有 A、 B 两家公司它们的内网是完全独立的这种情况下两家公司的内网之间不会有网络包流动,即使 A 公司的某台服务器和 B 公司的某台客户端具有相同的 IP 地址也没关系因为它们之间不会进行通信只要在每家公司自己的范围内,能够明确判断网络包的目的地就可以了是否和其他公司的内网地址重复无关紧要,只要每个公司的网络是相互独立的就不会出现问题。解决地址不足的问题,利用的就是这样的性质,即公司内部设备的地址不一定要和其他公司不重复。这样一来,公司内部设备就不需要分配固定地址了,从而大幅节省了 IP 地址当然就算是公司内网也不是可以随便分配地址的因此需要设置一定的规则规定某些地址是用于内网的,这些地址叫作私有地址,而原来的固定地址则叫作公有地址 私有地址的规则其实并不复杂在内网中可用作私有地址的范围仅限以下这些
 
10.0.0.0 10.255.255.255
172.16.0.0 172.31.255.255
192.168.0.0 192.168.255.255
 
     在制定私有地址规则时这些地址属于公有地址中还没有分配的范围。换句话说,私有地址本身并没有什么特别的结构只不过是将公有地址中没分配的一部分拿出来规定只能在内网使用它们而已。这个范围中的地址和其他公司重复也没关系,所以对于这些地址不作统一管理不需要申请, 任何人都可以自由使用。当然如果在公司内部地址有重复就无法传输网络包了,因此必须避免在内网中出现重复的地址。 尽管这样的确能节省一部分地址,但仅凭这一点还无法完全解决问题。 公司内网并不是完全独立的,而是需要通过互联网和其他很多公司相连接, 所以当内网和互联网之间需要传输包的时候,问题就出现了因为如果很
多地方都出现相同的地址包就无法正确传输了于是,当公司内网和互联网连接的时候,需要采用图这样的结构,即将公司内网分成两个部分,一部分是对互联网开放的服务器,另一部分是公司内部设备其中对互联网开放的部分分配公有地址可以和互联网直接进行通信,这一部分和之前介绍的内容是一样的相对地内网部分则分配私有地址,内网中的设备不能和互联网直接收发网络包而是通过一种特别的机制进行连接,这个机制就叫地址转换
 
 

 

地址转换原理

 

     地址转换的基本原理是在转发网络包时对 IP 头部中的 IP 地址和端口号进行改写具体的过程我们来看一个实际的例子。
 
     假设现在要访问Web 服务器看看包是如何传输的。 首先,TCP 连接操作的第一个包被转发到互联网时,会像图这样,将发送方 IP 地址从私有地址改写成公有地址。这里使用的公有地址是地址转换设备的互联网接入端口的地址与此同时,端口号也需要进行改写,地址转换设备会随机选择一个空闲的端口
 
    然后,改写前的私有地址和端口号,以及改写后的公有地址和端口号,会作为一组相对应的记录保存在地址转换设备内部的一张表中改写发送方 IP 地址和端口号之后包就被发往互联网最终到达服务然后服务器会返回一个包服务器返回的包的接收包是原始包的发送因此返回的包的接收方就是改写后的公有地址和端口号这个公有地址其实是地址转换设备的地址因此这个返回包就会到达地址转换设备
 
   接下来地址转换设备会从地址对应表中通过公有地址和端口号找到相对应的私有地址和端口号并改写接收方信息然后将包发给公司内网这样包就能够到达原始的发送方了在后面的包收发过程中地址转换设备需要根据对应表查找私有地址和公有地址的对应关系再改写地址和端口号之后进行转发当数据收发结束进入断开阶段访问互联网的操作全部完成后对应表中的记录就会被删除。 通过这样的机制,具有私有地址的设备就也可以访问互联网了从互联网一端来看,实际的通信对象是地址转换设备这里指的是路由器)。 上面是以公司内网为例来进行介绍的,家庭网络中的工作过程也是完全相同的,只是规模不同而已。
 
 

 

 

改写端口的原因

 

      现在我们使用的地址转换机制是同时改写地址和端口号的,但早期的地址转换机制是只改写地址,不改写端口号的用这种方法也可以让公司内网和互联网进行通信,而且这种方法更简单但是,使用这种方法的前提是私有地址和公有地址必须一一对应,也就是说,有多少台设备要上互联网,就需要多少个公有地址当然访问动作结束后可以删除对应表中的记录,这时同一个公有地址可以分配给其他设备使用,因此只要让公有地址的数量等于同时访问互联网的设备数量就可以了。然而公司人数一多同时访问互联网的人数也会增加一个几千人的公司里,有几百人同时访问互联网是很正常的这样就需要几百个公有地址。改写端口号正是为了解决这个问题。客户端一方的端口号本来就是从空闲端口中随机选择的,因此改写了也不会有问题端口号是一个 16 比特的数值,总共可以分配出几万个端口,因此如果用公有地址加上端口的组合对应一个私有地址,一个公有地址就可以对应几万个私有地址,这种方法提高了公有地址的利用率
 
 
 

从互联网访问公司内网

 
     对于从公司内网访问互联网的包,即便其发送方私有地址和端口号没有保存在对应表中也是可以正常转发的,因为用来改写的公有地址就是地址转换设备自身的地址,而端口号只要随便选一个空闲的端口就可以了, 这些都可以由地址转换设备自行判断。
 
    然而对于从互联网访问公司内网的包,如果在对应表中没有记录就无法正常转发因为如果对应表中没有记录,就意味着地址转换设备无法判断公有地址与私有地址之间的对应关系。 换个角度来看,这意味着对于没有在访问互联网的内网设备是无法从互联网向其发送网络包的。而且即便是正在访问的设备也只能向和互联网通信中使用的那个端口发送网络包,无法向其他端口发送包也就是说,除非公司主动允许,否则是无法从互联网向公司内网发送网络包的。这种机制具有防止非法入侵的效果
不过有时候我们希望能够从互联网访问公司内网这需要进行一些设置才能实现。之所以无法从互联网访问内网,是因为对应表里没有相应的记录,那么我们只要事先手动添加这样的记录就可以了一般来说,用于外网访问的服务器可以放在地址转换设备的外面并为它分配一个公有地址,也可以将服务器的私有地址手动添加到地址转换设备中这样就可以从互联网访问到这台具有私有地址的服务器了。
 

 

路由器的包过滤功能

 
     下面来介绍一下包过滤功能包过滤也是路由器的一个重要附加功能, 刚才的地址转换看起来有点复杂,不过包过滤的机制并不复杂包过滤就是在对包进行转发时,根据 MAC 头部、IP 头部、TCP 头部的内容,按照事先设置好的规则决定是转发这个包,还是丢弃这个包。
 
     我们通常说的防火墙设备或软件,大多数都是利用这一机制来防止非法入侵的 。包过滤的原理非常简单,但要想设置一套恰当的规则来区分非法访问和正常访问,只阻止非法入侵而不影响正常访问是非常不容易的举个例子,为了防止从互联网非法入侵内网我们可以将来自互联网的所有包都屏蔽掉,但是这会造成什么结果呢网络包是双向传输的如果简单地阻止来自互联网的全部包,那么从内网访问互联网的操作也会无法正常进行。 这个话题其实非常有趣,在接下来的文章中我会讲到防火墙的规则以及包过滤是如何实现的。
 
 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!