网络式怎样连接的-IP分片|内网外网|ADSL

292 阅读15分钟

IP传输-分片

传输的最大包长度也不同,因此输出端口的最大包长度可能会小于输入端口。

一旦转发的包长度超过了输出端口能传输的最大长度,就无法直接发送这个包了。

可以使用IP协议中定义的分片功能对包进行拆分,缩短每个包的长度。

这里说的分片和TCP对数据进行拆分的机制是不同的。TCP拆分数据的操作是在将数据装到包里之前进行的,换句话说,拆分好的一个数据块正好装进一个包里。从IP分片的角度来看,这样一个包其实是一个未拆分的整体,也就是说,分片是对一个完整的包再进行拆分的过程。

首先,我们需要知道输出端口的MTU,看看这个包能不能不分片直接发送。最大包长度是由端口类型决定的,用这个最大长度减掉头部的长度就是MTU,将MTU与要转发的包长度进行比较。如果输出端口的MTU足够大,那么就可以不分片直接发送;如果输出端口的MTU太小,那么就需要将包按照这个MTU进行分片,但在此之前还需要看一下IP头部中的标志字段,确认是否可以分片。

如果查询标志字段发现不能分片,那么就只能丢弃这个包,并通过ICMP消息通知发送方。

在分片中,TCP头部及其后面的部分都是可分片的数据,尽管TCP头部不属于用户数据,但从IP来看也是TCP请求传输的数据的一部分。数据被拆分后,每一份数据前面会加上IP头部,其大部分内容都和原本的IP头部一模一样,但其中有部分字段需要更新,这些字段用于记录分片相关的信息。

1623158252909.jpg

IP协议本身没有传输包的功能,因此包的实际传输要委托以太网来进行。

简单来说,IP(路由器)负责将包发送给通信对象这一整体过程,而其中将包传输到下一个路由器的过程则是由以太网(交换机)来负责的。

IP本身不负责包的传输,而是委托各种通信技术将包传输到下一个路由器,这样的设计是有重要意义的,即可以根据需要灵活运用各种通信技术,这也是IP的最大特点。

内网|外网

为了解决网络地址不够分配的问题,出现了外网内网的区别,外网连接到互联网,需要申请唯一的地址。内网因为不和其他内网沟通,所以可以用任何地址,只要一个内网内地址不重复就好。

就算是公司内网,也不是可以随便分配地址的,因此需要设置一定的规则,规定某些地址是用于内网的,这些地址叫作私有地址,而原来的固定地址则叫作公有地址

1623158252908.jpg

在内网中可用作私有地址的范围仅限以下这些。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地址和端口号进行改写。

TCP连接操作的第一个包被转发到互联网时将发送方IP地址从私有地址改写成公有地址。这里使用的公有地址是地址转换设备的互联网接入端口的地址。与此同时,端口号也需要进行改写,地址转换设备会随机选择一个空闲的端口。然后,改写前的私有地址和端口号,以及改写后的公有地址和端口号,会作为一组相对应的记录保存在地址转换设备内部的一张表中。

1623158252907.jpg

在对外只能使用一个公有地址的情况下,可以用不同的端口号来区别内网中的不同终端。

服务器返回的包的接收包是原始包的发送方,因此返回的包的接收方就是改写后的公有地址和端口号。

这个公有地址其实是地址转换设备的地址,因此这个返回包就会到达地址转换设备。

地址转换设备会从地址对应表中通过公有地址和端口号找到相对应的私有地址和端口号,并改写接收方信息,然后将包发给公司内网,这样包就能够到达原始的发送方了。

当数据收发结束,进入断开阶段,访问互联网的操作全部完成后,对应表中的记录就会被删除。

在进行地址转换的时候修改了端口号,因为如果不修改端口号,那私有地址和公有地址就要一一对应,人越多,公有地址也要越多才能满足同时上网。一个人上完网后,这个共有地址才可以绑定其他私有地址。如果是用端口号,一个共有地址可以分配给几万个私有地址。那就节约了很多公有地址。

对于从互联网访问公司内网的包,如果在对应表中没有记录就无法正常转发。因为如果对应表中没有记录,就意味着地址转换设备无法判断公有地址与私有地址之间的对应关系。

这意味着对于没有在访问互联网的内网设备,是无法从互联网向其发送网络包的。

而且即便是正在访问的设备,也只能向和互联网通信中使用的那个端口发送网络包,无法向其他端口发送包。

除非公司主动允许,否则是无法从互联网向公司内网发送网络包的。这种机制具有防止非法入侵的效果。

之所以无法从互联网访问内网,是因为对应表里没有相应的记录,那么我们只要事先手动添加这样的记录就可以了。一般来说,用于外网访问的服务器可以放在地址转换设备的外面并为它分配一个公有地址,也可以将服务器的私有地址手动添加到地址转换设备中,这样就可以从互联网访问到这台具有私有地址的服务器了。

1623158252906.jpg

1623158252905.jpg

ADSL

包过滤就是在对包进行转发时,根据MAC头部、IP头部、TCP头部的内容,按照事先设置好的规则决定是转发这个包,还是丢弃这个包。我们通常说的防火墙设备或软件,大多数都是利用这一机制来防止非法入侵的

距离的不同和路由的维护方式,就是互联网与家庭、公司网络之间最主要的两个不同点。

用户端路由器发出的网络包通过ADSL Modem和电话线到达电话局,然后到达ADSL的网络运营商(即ISP,互联网服务提供商),将网络包拆分成信元之后,接下来就要将这些信元转换成信号了。

1623158252904.jpg

1623158252903.jpg

ADSL采用的方法要复杂一些。其中有两个原因,一个原因是方波信号的波形容易失真,随着距离的延长错误率也会提高;另一个原因是方波信号覆盖了从低频到高频的宽广频段,信号频率越高,辐射出来的电磁噪声就越强,因此信号频谱太宽就难以控制噪声。

ADSL Modem采用了一种用圆滑波形(正弦波)对信号进行合成来表示0和1的技术,这种技术称为调制。调制有很多方式,ADSL采用的调制方式是振幅调制(ASK)和相位调制(PSK)相结合的正交振幅调制(QAM)方式。

1623158252900.jpg

振幅调制是用信号的强弱,也就是信号振幅的大小来对应0和1的方式。振幅小的信号为0,振幅大的信号为1,这是一种最简单的对应关系。

振幅大小只有两个级别,如果增加振幅变化的级别,就可以对应更多的比特。例如,如果将振幅增加到4个级别,则振幅从小到大可分别对应00、01、10和11,这样就可以表示两个比特了。这样做可以将单位时间内传输的数据量加倍,也就能够提高速率。

不过,信号会在传输过程中发生衰减,也会受到噪声影响而失真,如果振幅级别太多,接收方对信号的识别就容易出错,因此振幅级别也不能太多。

另一个组成要素是相位调制,这是一种根据信号的相位来对应0和1的方式。

Modem产生的信号是以一定周期振动的波,振动的起始位置不同,波的形状也就不同。

如果将波的一个振动周期理解为一个圆,则起始位置就可以用0度到360度的角度来表示,这个角度就是相位,用角度来对应0和1的方式就叫作相位调制。例如,从0度开始的波为0,从180度开始的波为1,这是一种最简单的对应关系。

1623158252899.jpg

和振幅调制一样,相位调制也可以通过将角度划分为更细的级别来增加对应的比特数量,从而提高速率。但是,角度太接近的时候也容易产生误判,因此这样提升速率还是有限度。

ADSL使用的正交振幅调制就是将前面这两种方式组合起来实现的。

实际上信号不一定要限制在一个频率。不同频率的波可以合成,也可以用滤波器从合成的波中分离出某个特定频率的波。因此,我们可以使用多个频率合成的波来传输信号,这样一来,能够表示的比特数就可以成倍提高了。

ADSL就是利用了这一性质,通过多个波增加能表示的比特数来提高速率的。

ADSL使用间隔为4.3125 kHz的上百个不同频率的波进行合成,每个波都采用正交振幅调制,而且,根据噪声等条件的不同,每个波表示的比特数是可变的。

ADSL技术中,上行方向(用户到互联网)和下行方向(互联网到用户)的传输速率是不同的,原因也在这里。如果上行使用26个频段,下行则可以使用95个或者223个频段,波的数量不同,导致了上下行速率不同。

1623158252898.jpg

噪声和衰减等影响线路质量的因素在每条线路上都不同,而且会随着时间发生变化。因此,ADSL会持续检查线路质量,动态判断使用的频段数量,以及每个频段分配到的比特数。具体来说,当Modem通电后,会发送测试信号,并根据信号的接收情况判断使用的频段数量和每个频段的比特数,这个过程称为训练(握手),需要几秒到几十秒的时间。

ADSL Modem将信元转换为电信号之后,信号会进入一个叫作分离器的设备,然后ADSL信号会和电话的语音信号混合起来一起从电话线传输出去。

分离器的作用其实在相反的方向,也就是信号从电话线传入的时候。这时,分离器需要负责将电话和ADSL的信号进行分离。电话线传入的信号是电话的语音信号和ADSL信号混合在一起的,如果这个混合信号直接进入电话机,ADSL信号就会变成噪音,导致电话难以听清。为了避免这样的问题,就需要通过分离器将传入的信号分离,以确保ADSL信号不会传入电话机。

分离器的功能是将一定频率以上的信号过滤掉,也就是过滤掉了ADSL使用的高频信号,这样一来,只有电话信号才会传入电话机,但对于另一头的ADSL Modem,则是传输原本的混合信号给它。

1623158252896.jpg

ADSL Modem内部已经具备将ADSL频率外的信号过滤掉的功能,因此不需要在分离器进行过滤。分离器的功能而实际上它还可以防止电话对ADSL产生干扰。

当放下听筒时,电话机的电路和电话线是断开的,当拿起听筒时电话机就和电话线相连,电话机的信号就会传到电话线上。这两种状态的差异会导致噪声等线路状态的改变,如果ADSL通信过程中拿起话筒导致线路状态改变,就需要重新训练(握手),这就会导致几十秒的通信中断,分离器可以防止发生这样的问题。当然,也有一种技术能够快速重新握手,即便没有分离器也不会影响ADSL通信,G.992.2的ADSL规格就包含这种技术,但ADSL信号还是会影响电话,因此G.992.2的ADSL规格中一般还是需要使用分离器。

从分离器出来,就是插电话线的接口,信号从这里出来之后,会通过室内电话线,然后到达大楼的IDF和MDF,外面的电话线在这里和大楼内部的室内电话线相连接。如果是独栋住宅,就可以将室外线和室内线直接连起来。通过配线盘之后,信号会到达保安器。保安器是为了防止雷电等情况下电话线中产生过大电流的一种保护装置,内部有保险丝。

接下来,信号会进入电线杆上架设的电话电缆。

1623158252895.jpg

由于电话线必须进入很多住宅和大楼,所以电话局附近就会集结数量庞大的电缆,这么多电缆要通过电线杆引入电话局是非常不现实的,电话局周围得密密麻麻地立满了电线杆,而且电线杆上架设过多的电缆,还会产生防灾方面的问题。因此,在电话局附近,电话线都是埋在地下的。由于电话局附近的地下电缆很多,集中埋设电缆的地方就形成了一条地道,这部分称为电缆隧道。通过电缆隧道进入电话局后,电缆会逐根连接到电话局的MDF上。

1623158307071.jpg

电话线原本的设计并没有考虑到传输ADSL这样的高频信号,从这个角度上可以说它比以太网双绞线更容易受到噪声的干扰。

ADSL信号受到干扰后并不会立即造成错误。ADSL信号分布在多个频段上,只有和噪声频率相同的信号会受到影响而无法读取,即可用的信号数量减少,结果导致速率下降。

信号通过电话线到达电话局之后,会经过配线盘、分离器到达DSLAM。在这里,电信号会被还原成数字信息——信元。

电话局使用了DSLAM设备,它是一种将相当于很多个ADSL Modem的功能集中在一个外壳里的设备。可以把电信号转为数字信号。

DSLAM和用户端ADSL Modem相比还是有一个不同的地方。用户端ADSL Modem具备以太网接口,可以与用户端的路由器和计算机交互,收发以太网包,而DSLAM一般不用以太网接口,而是用ATM接口,和后方路由器收发数据时使用的是原始网络包拆分后的ATM信元形式。

信元从DSLAM出来之后,会到达一个叫作BAS的包转发设备。BAS和DSLAM一样,都具有ATM接口,可以接收ATM信元,还可以将接收到的ATM信元还原成原始的包。

接下来,它会将收到的包前面的MAC头部和PPPoE头部丢弃,取出PPP头部以及后面的数据。

MAC头部和PPPoE头部的作用是将包送达BAS的接口,当接口完成接收工作后,它们就完成了使命,可以被丢弃了,接下来,BAS会在包的前面加上隧道专用头部,并发送到隧道的出口。

网络包会到达隧道出口的隧道专用路由器,在这里隧道头部会被去掉,IP包会被取出,并被转发到互联网内部。 1623158252903.jpg

BAS负责将ATM信元还原成网络包并转发到互联网内部