3.网络层
网络层概述:网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送(解决的是主机和主机的问题)。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和包进行传送。在 TCP / IP 体系结构中,由于网络层使用 IP 协议,因此分组也叫 IP 数据报,简称数据报。
一、网络层提供的两种服务
网络层应该怎样向运输层提供怎样的服务?争论的实质就是:在计算机通信中,可靠交付应当由谁来负责,网络还是端系统?
二、网际协议IP
(与IP协议配套使用的协议:地址解析协议ARP、网际控制报文协议ICMP、网际组管理协议IGMP)
1.IP地址分类
IP 地址是指互联网协议地址,是 IP 协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
A类:1.0.0.0-126.0.0.0
B类:128.0.0.0-191.255.0.0
C类:192.0.0.0-223.255.255.0
D类:多播地址 网络号:224-239
E类:保留地址 网络号:240-255
特殊IP地址:10.0.0.0、172.16.0.0-172.31.0.0、 192.168.0.0-192.168.255.0 =>保留的私网地址,内网
2.子网掩码
子网掩码又叫做网络编码、地址编码,它是一种用来指明IP地址的哪些位标识的是主机所在的子网,哪些位标识的是主机的位掩码。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。
子网划分:①等分成两个子网:每个子网是原来的1/2,子网掩码向后移动一位;
②等分成四个子网:每个子网是原来的1/4,子网掩码向后移动两位;
③等分成八个子网:每个子网是原来的1/8,子网掩码向后移动三位;
3.IP地址与MAC硬件地址
区别:从层次角度来看,物理地址是数据链路层和物理层使用的地址,IP地址是网络层和以上各层使用的地址,是一种逻辑地址(软件实现的)。IP地址存放在IP数据报的首部,物理地址存放在MAC帧的首部。MAC地址决定下一跳给谁,IP地址决定最终目标地址。
交换机基于数据帧的MAC地址转发数据帧,路由器基于数据包的IP地址转发数据帧。
4.地址解析协议ARP
工作原理:Address Resolution Protocol
网络层的 ARP 协议完成了 IP 地址与物理地址的映射。首先,每台主机都会在自己的 ARP 缓冲区中建立一个 ARP 列表,以表示 IP 地址和 MAC 地址的对应关系。当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP 列表中是否存在该 IP 地址对应的 MAC 地址:如果有,就直接将数据包发送到这个 MAC 地址;如果没有,就向本地网段发起一个 ARP 请求的广播包,查询此目的主机对应的 MAC 地址。
此 ARP 请求数据包里包括源主机的 IP 地址、硬件地址、以及目的主机的 IP 地址。网络中所有的主机收到这个 ARP 请求后,会检查数据包中的目的 IP 是否和自己的 IP 地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的 MAC 地址和 IP 地址添加到自己的 ARP 列表中,如果 ARP 表中已经存在该 IP 的信息,则将其覆盖,然后给源主机发送一个 ARP 响应数据包,告诉对方自己是它需要查找的 MAC 地址;源主机收到这个 ARP 响应数据包后,将得到的目的主机的 IP 地址和 MAC 地址添加到自己的 ARP 列表中,并利用此信息开始数据的传输。如果源主机一直没有收到 ARP 响应数据包,表示 ARP 查询失败。
工作情况:
①发送方是主机(H1),要把IP数据报发送到同一网络的另一个主机(H2)。这时H1发送ARP请求分组(在网1上广播),找到目的地址H2的硬件地址。
②发送方是主机(H1),要把IP数据报发送给另一个网络的一个主机(H3/H4)。这时H1发送ARP请求分组(在网1上广播),找到网1上的一个路由器R1的硬件地址。剩下的工作由路由器R1完成。
③发送方是路由器(R1),要把IP数据报转发到与R1连接在同一个网络(网2)的主机(H3)。这时R1发送ARP请求分组(在网2上广播),找到目的主机(H3)的硬件地址。
④发送方是路由器(R1),要把IP数据报转发到网3上的一个主机(H4).H4和R1不在同一个网络上。这时R1发送ARP请求分组(在网2上广播),找到与网2连接的一个路由器R2的硬件地址。剩下的工作由路由器R2完成。
5.IP数据包格式
版本:IP协议版本 IPv4/IPv6。
首部长度(4位):
区分服务:告诉网络此数据报是否着急(优先)。
总长度:首部长度+数据长度。
标识:用来产生数据报的标识,不是序号,每产生一个数据包就增加1。
片偏移:某数据报片在原分组中的相对位置(字节单位)。
生存时间(TTL):表明数据报在网络中的寿命,防止无法交付的数据包无限制地在因特网中兜圈子。没经过一个路由器,TTL值减一,减至0时,路由器便会丢弃这个数据包报。
协议:指出数据包携带的数据是使用的何种协议,以便目的主机的IP层知道将数据部分上交给那个处理过程。
首部检验和:只检验数据报首部是否出错(不包含数据部分)。
源地址、目的地址:
可选字段:长度可变;支持排错、测量以及安全措施;
三、网际控制报文协议ICMP
ICMP允许主机或者路由器报告差错情况和提供异常情况的报告,更有效的转发IP数据报和提高交付的机会。ICMP报文作为IP层数据报的数据,加上IP数据报的首部,组成IP数据包发送出去。ICMP报文格式如下所示:
ICMP报文类型:差错控制报文、询问报文。具体如下所示:
ICMP差错报告报文格式:
ICMP应用:
①分组网间探测PING,用来测试两个主机之间的连通性。PING使用了ICMP回送请求和回送回答报文,没有通过运输层的TCP或者UDP。
②Traceroute/Tracert用来跟踪一个分组从源点到终点的路径。
四、路由选择协议
使用分层次的路由选择方法,可将因特网路由选择协议分为内部网关协议IGP(RIP、OSPF…)和外部网关协议EGP(BGP)
1.路由信息协议RIP
RIP是一种基于距离向量的路由选择协议,实现简单,允许一条路径最多只能包含15个路由器,适用于小型网络(类似于WSN节点定位)。RIP选择一条具有最少路由器的路由(跳数最少),即最短路由(并不是最快路由,有时延)。并且当网络出现故障时,需要长时间才能将此消息传送到所有的路由器。
RIP协议特点:
①仅和相邻路由器交换信息;
②交换的信息是当前本路由器的全部信息,即自己的路由表;
③按固定时间间隔交换路由信息;
RIP协议使用运输层的用户数据报UDP进行传送(UDP端口号520)。
RIP协议报文格式:首部+路由部分
2.开放最短路径优先OSPF
2.1 OSPF基本特点:“开放”是指不受某一家厂商控制,“最短路径”是指使用了迪杰斯特拉提出的最短路径算法SPF。最主要特征是使用了分布式的链路状态协议。
2.2 与RIP不同点
①向自治系统中的所有路由器发送信息。这里使用的是洪泛法;
②发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息;
③只有当链路状态发生改变时,路由器才向所有路由器用洪泛法发送信息;
2.3 其他特点
①OSPF不用UDP而是直接使用IP数据报传送;
②所有在OSPF路由器之间交换的分组都具有鉴别的功能;
2.4 OSPF报文结构
3.边界网关协议BGP
BGP是不同自治系统AS的路由器之间交换路由信息的协议。BDP只是寻找一条能够到达目的网络且比较好的路由(不能兜圈子)而不是寻找最佳路由,采用了路径向量选择协议。每个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP代言人”,往往是BGP边界路由器。
BGP协议特点:
①BGP协议交换的路由信息数量不是很多;
②发言人数目不是很多,路由选择较简单;
③支持CIDR;
④BGP建立时,交换整个路由表,但之后酯交换变化部分;
五、网络地址转换NAT
通过NAT路由器将内网专用地址转换成外部全球IP地址。通过NAT路由器的通信必须由专用网内的主机发起。
六、虚拟专用网VPN
假定在一个机构内部的计算机通信采用TCP/IP协议,那么从原则上讲,对于这些仅在内部使用的计算机就可以自行分配其IP地址,也就是说,让这些计算机使用仅在本机构有效的IP地址(本地地址)而不需要向因特网的管理机构申请全球唯一IP地址,以此来节约全球地址资源。
有时内部主机会和因特网相连,本地地址会和全球地址重合,为了解决此问题,引用了机构内部专用地址。在因特网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。
专用IP地址(可重用地址):
10.0.0.0-10.255.255.255 或 10.0.0.0/8
172.16.0.0-172.31.255.255 或 172.16.9.9/12
192.168.0.0-192.169.255.255 或192.168.0.0/16
专用网和专用网之间通信方式:
①电信公司专用通信线路-贵!
②利用共用因特网作为通信载体,这种专用网又称为虚拟专用网。所有通过因特网传送的数据都要加密。
七、路由器
路由器是一种具有多个输入/输出端口的专用计算机,其任务是转发分组。
路由选择:根据所选定的路由选择协议构造出路由表,同时经常或定期的和相邻路由表交换路由信息或跟新维护路由表。
分组转发:根据转发表(由路由表得来)对分组进行转发,若收到RIP/OSDF分组等,则将分组送至路由选择处理机;若收到数据分组则查找转发表并输出;
若路由器处理分组效率小于分组进入队列的速率,则队列的存储空间最终减少至0,这使得后面的分组没有存储空间只能丢弃。
=》路由器的输入输出队列产生溢出是分组丢失的重要原因。
能否隔离冲突域 | 能否隔离广播域 | ||
路由器 | 互连两个不同网络层协议的网段 | √ | √ |
网桥/交换机 | 互连两个物理层和数据链路层的网段 | √ | × |
集线器/中继器 | 不能互连两个物理层的网段 | × | × |
路由表:根据路由选择算法得出的,主要用于路由选择。(目的网络掩码、子网掩码、下一跳IP地址、接口)
转发表:由路由表得来,可以用软件或特殊的硬件实现。转发表必须包含转发功能所必需的信息,每一行必须包含从目的网络到输出端口的某些MAC地址的映射。
八、IP报文经过路由器的转发过程及变化转载
IP报文经过路由器的转发过程及变化
1. 防火墙收到数据包后,解封以太网帧头部,提取目的MAC地址,查看目的MAC地址是不是自己本身的MAC地址。
2. 如果不是自己的MAC地址则丢弃。
3. 如果是自己的MAC地址,上传到上层解析,解析IP层。
4. 假设是自己的MAC地址,解析IP层,提取目的IP地址,判断目的IP地址是不是指向本机,
5. 如果是指向本机,则上传到上层,有上层解析
6. 如果不是指向自己而是转发,则去查路由表,匹配出接口。
7. 假设数据包是转发,则根据路由的最长匹配原则,匹配路由表,找到出接口。
8. 如果匹配的路由是直连路由(与路由器直接连接,中间没有其他设备)则使用目的地址查ARP表。
9. 如果匹配的路由不是直连路由则使用下一跳的IP地址查ARP表。
10. 假设数据包不是直连路由,去ARP表中查下一跳的IP地址对应的MAC地址。
11. 如果查到了下一跳的IP地址对应的MAC地址,则把MAC地址封装到帧的目的MAC中,然后封装物理层发送出去
12. 如果没查到就发ARP请求,查找IP地址对应的MAC地址
13. 假设没有查到下一跳的IP地址对应的MAC地址,发送ARP请求报文获取IP对应的MAC地址。
14. 发送ARP请求后,如果没收到ARP响应则丢弃数据包。
15. 发送ARP请求后,如果收到ARP响应,提取ARP响应中的源MAC地址存放到ARP表中形成映射关系。
16. 假设收到的ARP响应,把下一跳的MAC地址放到目的MAC地址中,封装,发送。
PS:数据包经过防火墙转发时,在不做任何策略的情况下,只有目的MAC地址会发生变化。