网络层

来源:互联网 发布:淘宝争议处理规范2016 编辑:程序博客网 时间:2024/05/21 17:20

目的:

网络层将不同的网段连接起来,确保端到端的正常通信。与此相对,数据链路层只是将同一网段中的节点连接起来起来而已。

假如我们要连接国外的web服务器,由于网段不同,在数据链路层这个层面是根本无法连接起来的,

而网络层却能将数据链路层中的一个个小网段拼接成一个大网络。


网络层是如何将不同的网段连接起来的呢?其中重要的一点就是加了”IP地址“。如何利用IP地址把网络连接起来,稍后讲。

网络层要为报文(就是传输的数据)加IP报头。这种添加IP报头的处理叫作”分组化处理“(国内教材称作”IP封装“),

经过报文分组处理得到的数据叫作IP数据包。

有一句话说的好:网络层是因IP地址存在的层



IP报头:

IP报头是在网络层对数据进行分组化处理(也叫IP封装)时,加入到数据中的。

IP报头格式如下:

讲解一下IP报头中几个重要的部分:

1,源/目的IP地址

IP地址分为:IPV4和IPV6两种地址。现在主要用的是IPV4地址,所以主要讲IPV4地址。

IP地址的长度为32位,一般会用xxx.xxx.xxx.xxx的十进制来表示。例如:192.168.120.11

源IP地址代表发送方的IP地址,目的IP地址代表接收方的IP地址。就像现实世界中的门牌号一样。

2,标识符

标识符是生成数据包时被随机分配的数据包ID,他要16位。当IP数据包因总长度超过MTU而被分片时,目的主机分根据这个ID对数据包进行重组。

(MTU:数据链路层对数据帧的长度都有一个限制,也就是链路层所能承受的最大数据长度,这个值称为最大传输单元,即MTU。

    以以太网为例,这个值通常是1500字节。关于MTU和分片的文章:http://www.voidcn.com/blog/YLMF_yyz/article/p-3749109.html)

(IP数据包总长度:在IP包头中,以16位来描述IP包的长度,也就是说,一个IP包,最长可能是65535字节。)

3,标志

标志的长度为3位。前1位不用;第2位叫作DF(禁止分片位),表示是否允许分片,0代表允许,1代表不允许;第3位叫作MF位(后继分片位),表示分片之后的数据包是否仍有后续,0代表没有,1代表有。如果在PPPoE环境中将MTU设置错误,数据包就会丢失,特定的网页就会消失,这种现象和标志字段有关。

4,分片偏移量

分片偏移量表示分片之后的数据包位于原始数据包的哪个位置(从原始数据包的开始处算起),以8字节为单位。分片之后的第一个数据包的值为0,后面的数据包则会写入表示其位置的值。主机收到数据包后会根据这些值去安排数据包的顺序。

标识符,标志和分片偏移量这3个字段都和数据包的分片(报文分片)有关,它们表示了数据包是如何被分片的。

5,TTL

表示数据包的寿命。每经过一台运行于网络或网络层上的设备时,这个数值就会减1。当到0时,就会被丢弃。

它的主要目的是防止路由循环。

6,协议编号

表示灵气遵循哪一种协议。例如:1:ICMP,2:IGMP,6:TCP,17:UDP等等



在数据链路层用VLAN可以划分网段,在网络层能不能划分网段呢?

也是可以的,在网络层划分网段就要用到非常重要的一项:子网掩码。


子网掩码:

子网掩码的主要功能是用来划分网络(或称网段)和主机。子网掩码的格式和IPv4地址的格式一样,一般会用xxx.xxx.xxx.xxx的十进制来表示。

它是和IP地址进行成对存在的。举一个子网掩码划分网段的例子:

    节点1

   IP地址:   192.168.120.2

   子网掩码:255.255.255.0

   节点2

   IP地址:   192.168.120.3

   子网掩码:255.255.255.0

   节点3

   IP地址:   192.168.121.2

   子网掩码:255.255.255.0

上面的节点1和节点2是同一网段的,可以通信;节点3和其它两个节点不是同一网段,不能通信。


下面具体说说子网掩码和IP地址:

IP地址可分为网络部分和主机部分。网络部分表示网段本身,也就是说它既是广播域,也是VLAN,同时还是报文段。

(在数据链路层里,划分VLAN后,节点发的广播只能在本VLAN中广播,结果和上面说的网段一样。)

(报文段:是传输层中TCP交换数据的形式,就是数据链路层的帧,和网络层的IP数据包)

主机部分则表示与该网段相连接的节点。子网掩码就是将这两上部分分隔开的标记,子网掩码码中的1(二进制)代表网段地址,0代表主机地址。

和I地址一样,设置子网掩码时,每3位数(用二进制来表示的话是每8位)就要用一个小数点隔开,最后分成4个部分,并换算成十进制。

举个例子,假如针对IP地址172.16.1.1设置的子网掩码是255.255.0.0,那么秩闵能矢管是网络176.16的主机1.1。


是不是所有网络的所有IP地址才最能使用呢?

不是,有些IP地址已经被系统占用。不能使用的地址有3种:

(1)网络地址:是指主机部分的IP地址者阳0的IP地址,代表了网络本身。例如:如果针对IP地址192.168.1.1设置的子网掩码是255.255.255.0,那么192.168.1.0就是网络地址。

(2)广播地址:是指主机部分的IP地址都是1的IP地址,代表了同一网段中的所有节点。例如:如果针对IP地址192.168.1.1设置的子网掩码是255.255.255.0,那么192.168.1.255就是网络地址。

广播地址分3种:

  1)本地广播地址:是指广播地址指本机所属网段的广播地址。上面的例子中的192.168.1.255就是本地广播地址。

  2)直接广播地址:是指非本机所属网段的广播地址(非机所所属网段的广播地址为什么叫直接广播地址??)。例如:192.168.1.1/24节点属于192.168.1.0/24网段,所以像192.168.2.255/24,192.168.3.255/24这样的地址就是非192.168.1.255的广播地址,也就是直接广播地址。直接广播用于远程开机(Wake-on-LAN,局域网唤醒)。

(192.168.1.1/24后面的24,是子网掩码的意思,是指32位子网掩码中的前24位都是1,翻译成十进制也就是:255.255.255.0)

  3)有限广播地址:只有一种,就是255.255.255.255。向255.255.255.255发送报文时,同一网段中的所有节点都会收到报文,这一点和本地广播地址一样。不过,有限广播地址用于不知道本机IP地址或网络的情况,也用于DHCP报文发送。

(3)环回地址:表示设备本身的IP地址,它的第一个8位字节是127。只要第一个8位字节是127,所面无论是多少都没有关系,但人们一般会使用127.0.0.1/32。在Windows和Mac中,除了用户自己设置的IP外,该IP地址都被自动设置成了127.0.0.1/32。



路由和L3交换机原理:

L2交换机的作用是根据数据链路层中的MAC地址信息转发帧。与此相似,路由器和L3层中的IP地址信息转发数据包。对数据包的转发目的地址进行切换的过程叫作路由选择。

L2层交换使用的是“MAC地址表”,L3层使用的是“路由表”。路由表由“目的网段”,“下一跳”,“路由协议”和“度量值”等多种信息构成,它告诉我们将数据包转发给哪个IP地址就能抵达目的网段。其中,最 重要的信息是“目的网段”和“下一跳”,我们就先用这两项来说明路由选择的基本原理。

假设有两个节点:

  (1)节点A,IP地址:1.1.1.1,子网掩码:255.255.255.0,默认网关:R1

  (2)节点A,IP地址:3.3.3.3,子网掩码:255.255.255.0,默认网关:R2

路由表和网络关系如下:

流程如下:

  1,节点A向节点B发送信息,由于两个节点不在同一网段,所以不能直接通信,所以数据会被发给预先设置好的网关R1。

  2,R1收到数据包后,在路由表中查找目的IP。发现目的IP的网段,符合3.3.3.0/24这个项,它的下一跳是R2,于是就把数据发送给R2。如果R1在路由表中找不到目的网段,就会丢弃数据。  (注意:路由器进行匹配时,比较的是IP地址的“网络部分”)

  3,R2收到数据后,查看它的路由表,发现节点B的3.3.3.3这个IP地址所对应的是3.3.3.0/24这个项,而且是直连。于是用ARP去查询这个IP地址所对应的MAC地址,然后把数据传给了节点B。

  4,节点B收到数据后,断定数据是给自己的,于是生成一个回应数据包,发给节点A。发给节点A的过程和从节点A发到节点B的过程一样。


了解路由表:

介绍一下上面的几个要素。最前面的1~2个字母表示路由学买方法,C代表直连,O代表已经通过动态路由选择OSPF学习过,110/2分别代表AD(管理距离)值和度量值,这几个将在下一节中详细说明。最后还有一个接口ID,它表示下一跳位于哪个接口。


MAC地址和IP地址是通过ARP协议协作,共同发挥作用的。MAC地址是物理地址,公在同一网段中有效,因此每当要跨网段--也就是需要跨路由时--都必须更换MAC地址才行,ARP能解决这个目的MAC地址的更换问题。与此相对,IP地址是逻辑地址,能够跨网段使用,因此从源节点到目的节点始终只持不变。

就像上面的例子,数据从节点A到节点B过程中,源/目的IP地址始终不变,但MAC地址,在从节点A到路由器R1过程时,源MAC地址是节点A,目的IP地址是路由器R1。

当从路由器R1到路由器R2过程中,源MAC地址就是R1的MAC地址,目的MAC地址就是R2的MAC地址。


路由表的构成

a -- 路由信息的来源(origin)

也就是路由机制,表示该路由信息是怎样学习到的。学习方法主要有三种:直连的网络、静态路由、某种动态路由协议。

b -- 目的网络地址(destination)
也就是目的地逻辑网络或子网络地址。每个路由表入口的两个核心元素就是目的网络地址和将数据包转发出去的本地接口。有时候一个路由条目只列出目的网络和下一跳地址而没有本地接口。没有本地接口是无法将数据包转发出去的,因为交换网板不知道该接通哪个“开关”。这种情况下,必须执行第二次循环查找,用下一跳地址作为目的地址去路由表中查找到一个匹配条目,找到一个本地接口。

c -- 管理距离(administrative distance)
标识一种路由学习机制可信赖程度的一个尺度。管理距离决定了来自不同路由表源端的路由信息的优先权。不同的路由来源,其管理距离是不同的。管理距离小的路由协议优先权高。缺省情况下,直连路由优先权最高,静态路由次之,BGP优先于OSPF,OSPF优先于RIP。

d -- 度量值(metric)
度量一条路径总“开销”的尺度,由具体路由选择协议而定义。当一个路由协议提供了多条到达某目的网络的路由时,必须选择一条最佳的路由放在路由表中。度量值用于表示每条可能路由的代价,度量值最小的路由就是最佳路由。

e -- 下一跳网关地址(next hop)
为使IP包到达目的地,需要将该IP包转发到该网关上。路由器不知道到达目的地址的整个路径,只将数据传给下一个路由器,通过“接力”的形式将数据传送到目的网路。下一跳地址就是与之相连的路由器的端口地址。

f -- 计时(age)
也就是路由信息的新旧程度,表示路由条目存在的时间。距离向量协议定时更新该计时,所以该时间值不会超过某个时间值,超出后就进入“保持”状态,一定时间内仍未更新路由条目就被删除。其它路由协议(如OSPF、BGP)对此时间不作处理。

g -- 发送的物理端口(local interface)
也就是与要去往目的地网络相关联的接口。学习到该路由条目的接口,也是数据包离开路由器去往目的地将经过的接口。交换结构单元就是根据该值来选择恰当的“开关”使入口与出口之间建立通道。



路由表的建立

路由表决定着路由选择,而如何建立路由表就是网络层的关键所在。

路由表分为静态路由表和动态路由表,静态路由入口由网络管理员手工配置的静态路由组成,动态路由入口由路由协议交换的路由表信息组成。执行路由操作所需要的信息被包含在路由器的路由表中,它们由一个或多个路由选择协议进程生成。路由表的内容被限制为只含有到所有目的地的最佳路由。如果存在多条等佳路径,那么所有这些路径都将被列入路由表。


一般而言,在同一个路由域中所有路由器的每个路由协议都有一个“收敛”(convergence)状态或过程。当所有路由器达到一个稳定、准确、一致的网络拓扑状态时,就会获得“收敛”状态。网络拓扑的变化会使路由器重新进行“收敛”。路由器如何获得收敛状态是由它的具体配置和路由协议所决定的。

每个路由协议处理路由更新时,选择到目的地址的最佳路由,并试图安装到路由表中。如果只有多个动态路由协议运行,存在争先安装路由的问题。必须有机制来管理路由的安装。该机制就是根据各个路由协议的优先级来决定安装过程。每个路由协议都有缺省的管理距离值,值愈小其优先级愈高。


动态路由和静态路由相比有什么区别呢?主要区别是:

1.静态路由表条目是人工添加的,动态路由是根据不同的动态路由协议自动学习的

2.静态不占用路由器的CPU和带宽,动态要占用

3.静态适合小型网络和特殊环境,配置简单维护复杂,动态反之

总之静态路由适合小型局域网,或IP地址相对固定的网络,大型网络中还是需要动态路由。

动态路由协议可以按工作原理,工作范围,是否携带掩码来划分。

1.按工作原理可以分为:距离矢量协议,链路状态协议

距离矢量协议:路由器依赖自己相邻的路由器学习路由。如RIP,EIGRP

链路状态协议:把路由器分成区域,收集区域内所有路由器的链路状态生成网络拓扑图,每个路由器根据拓扑结构计算出路由,如OSPF

2.按工作范围可以分为:内部网关协议IGP,外部网关协议EGP

IGP(Interior Gateway Protocol):同一自治系统(使用相同路由协议的网络集合)内部交换路由信息,如OSPF

EGP(Exterior Gateway Protocol):不同自治系统间交换路由信息,如BGP

3.按路由更新时是否携带子网掩码可以分为:有类路由协议,无类路由协议

有类路由协议已被淘汰,如RIPv1,即宣告时不支持可变长子网掩码,只使用默认的ABC三类IP的默认掩码,忘了它吧,现在都是无类路由协议

无类路由协议即宣告时支持可变长子网掩码,现在都是无类路由协议



路由表的整理

建立后路由表后,假如有一个IP符合路由表中的几项,到底匹配哪一项,也就是说按照哪一项的下一跳去跳转呢?

有3个原则:

(1)最长匹配原则:当有多条符合目的IP地址条件的路径存在时,它会选择子网掩码最长的那条路径。

例如:有3条路径:192.168.0.0/16,192.168.1.0/24,192.1681.1.0/26,目的IP为192.168.1.1,每条路径都符合条件,路由器会选择192.168.1.0/26这一条路径。

为什么为选子网掩码最长的,我想可能是因为子网掩码越长,主机数越少,查找起来越快吧。

(2)路由总汇:将多条路径汇集起来的做法叫作路由汇总。它将下一跳相同的所有路径的网络地址转换成位,再将共同的位转移到子网掩码中去。

例如:总汇之前的路径有4条:

    a.目的网段:192.168.0.0.0/24,下一跳:1.1.1.1

    b.目的网段:192.168.1.0.0/24,下一跳:1.1.1.1

    c.目的网段:192.168.2.0.0/24,下一跳:1.1.1.1

    d.目的网段:192.168.3.0.0/24,下一跳:1.1.1.1

将上面的网段转换成位后,前22位都是一样的,因此可以把它们汇总到192.168.0.0/22中去。这样当路由器收到IP数据包时只需要查询一次路由表就可以了。

(3)比较AD值:如果网段相同,就要比较AD(距离管理)值了。这个值类似于针对每个路由协议制定的优先等级,值越小优先的等级就越高。

通过不同的路由协议或静态路由协议学到的完全相同的路径,是无法用最长匹配原则去判断和选择的,遇到这种情况时,我们就要用到AD值。路由器会比较这些路由协议的AD值,从中选出AD值更小的,也就是优先等级更高的路径并将其写入路由表,发送时也会优先采用该路径。



NAT技术

NAT:叫作转换数据包IP地址的技术。有广义和狭义之分,广义的NAT指转换IP地址的整套技术,所指范围太广,不好理解。我们介绍3套常用的NAT

他们分别是:静态NAT,NAPT,TwiceNAT

静态NAT:可以对内网和外网IP地址进行一对一的映射和转换,又称一对一NAT。也就是说,一个内网地址对应一个外网地址,有多少个内网地址要想公开,就要有多少个外网地址和它配对才行。在服务器端我们有时候会遇到这样的情况,某客户端一定要以某个指定的IP地址出现在互联网上,或者某台服务器一定要以某个指定的IP地址在互联网上公开,这时候我们就要用到静态NAT了。

NAPT:可以对内网和外网的IP地址进行多对一的映射和转换,又称IP伪装或PAT(Port Address Translation),叫法不同,但意思都一样。由内网访问外网时,NAPT会将源IP地址和源端口一起转换。因为是根据客户端和端口号的对应关系(哪个客户端使用哪个端口号)来分配数据包的,所以能实现多对一的转换。我们家里经常使用的宽带路由就是通过NAPT将客户端和互联网连接到一起的。在服务器端,由内网访问外网的通信大多都会使用NAPT。

TwiceNAT:静态NAT和NAPT只是转换源或目的地址中的其中一方,双重NAT则是将源和目的地址一起转换。


NAT表和代理ARP是支持NAT的两大要素

NAT表记录着转换之前和转换之后的IP地址或端口号。它的原理十分简单,收到需要进行转换处理的数据包后将数据包的IP地址或端口号转换一下,仅此而已。如果是NART,那么NAT表中还需要记录端口号信息。NAT表中记录的信息会发生动态变化,因此,当表中的信息不再使用并到达一定的时限之后,NAPT就会将其删除。

关于代理ARP。用于NAT的IP地址(内部的节点地址)和路由器的接口IP地址(外网的IP地址)是不一样的,因此对于前者发出的ARP请求,路由器必须作为代理给出回复。路由器以代理身份作出回复并接收前者发来的IP数据包,然后根据NAT表中的映射信息进行转换处理。也就是客户端要访问内网节点时,肯定访问的是这个内网节点所对应的外网IP。访问这个IP时,路由要作为代理,要对这种ARP进行回应的意思。


私网IP

在可供分配的IPv4地址中,有一些地址不会被用来分配,这些地址被用来做为内网使用,这些地址不会出现在互联网上。

私网IP分为3类:

  A类:起始地址10.0.0.0    结束地址:10.255.255.255  子网掩码:255.0.0.0  最大可分配节点数量:1677214

  B类:起始地址172.16.0.0    结束地址:172.31.255.255  子网掩码:255.240.0.0  最大可分配节点数量:1048574

  C类:起始地址192.168.0.0    结束地址:192.168.255.255  子网掩码:255.255.0.0 最大可分配节点数量:65534

这些IP地址可以被用在内网中,就像NAPT中的内网一样。




http://www.cnblogs.com/zszmhd/archive/2012/05/08/2490078.html

http://blog.csdn.net/zqixiao_09/article/details/51064530

http://blog.csdn.net/hongse_zxl/article/details/50083101








0 0
原创粉丝点击