网络层

1.概述

把分组从源端传到目的端,传输单位是数据报
功能:

  • 路由选择与分组转发
  • 实现异构网络互连(异构网络:数据链路层和物理层协议都不同)
  • 拥塞控制(方法:开环控制-静、闭环控制-动)

2.IP数据报

ARP、IP、ICMP、IGMP协议

2.1基本格式

首部—数据部分(TCP段、UDP段)
首部:固定部分(20B)—可变部分
固定部分:以下用位(比特)表示

格式如下
0—————4—————8————-16————-19—————24————-31
|——版本—-|-首部长度-|-区分服务|——————总长度———————-|
|—————————标识—————-|—-标志—-|———-片偏移————-|
|———生存时间————|——-协议|——————首部检验和—————-|
|—————————————-源地址—————————————————-|
|—————————————目的地址—————————————————|

字段名称含义:
首部长度:单位为4B,最小为5;
区分服务:期望获得哪种类型的服务;
总长度:首部+数据,单位是1B;
生存时间(TTL):IP分组的保质期,经过一个路由器-1,变成0则丢弃;
协议:数据部分的协议,传输层协议的字段值(TCP-6,UDP-17);
首部检验和:只检验首部;
可选字段:0-40B可有可无,用来支持排错、测量及安全措施;
填充:全0,把首部补成4B的整数倍

2.2IP数据报分片

最大传送单元MTU:以太网的MTU为1500B
标识:同一数据报的分片使用同一标识。
标志:3位,只有2位有意义,
-最高位保留;
-中间位:DF ;DF=1禁止分片,DF=0允许分片
-最低位:MF;MF=1后面还有分片;MF=0代表最后一片/没分片
片偏移:指出较长分组分片后,某片在原分组中的相对位置,单位用8B表示除了最后一个分片,其余每个分片一定是8B的整数倍

3.IPV4地址&IPV6地址

3.1IPV4基础

IP地址:32位标识符,标识路由器主机接口{<网络号>,<主机号>},用点分十进制表示
A类:1-126 0(1B)网络号(1-8)主机号(8-32);127逻辑上属于A类
B类:128-191 10(2B)网络号(2-16)主机号(16-32)
C类:192-223 110(3B)网络号(3-24)主机号(24-32)
D类:224-239多播地址1110
E类:240-255保留今后使用1111

特殊IP地址

NETID网络号 HOSTID主机号 作为IP分组源地址 作为IP分组目的地址 用途
全0 全0 可以 不可以 本网范围内表示主机,路由表用于表示默认路由
全0 特定值 可以 不可以 本网某个特定主机
全1 全1 不可以 不可以 本网广播地址(路由器不转发)
特定值 全0 不可以 不可以 网络地址,表示一个网络
特定值 全1 不可以 可以 直接广播地址,对特定网络上所有主机进行广播
127 任何数(非全0/1) 可以 可以 本地软件环回测试,称为环回地址

私有IP地址
A类:10.0.0.0-10.255.255.255 1个网段
B类:172.16.0.0-172.31.255.255 16个网段
C类:192.168.0.0—192.168.255.255 256个网段

网络类别 最大可用数 第一个可用网络号 最后一个可用网络 每个网络最大主机数
A (2^7)-2 1 126 (2^24)-2
B (2^14)-1 128.1 191.255 (2^16)-2
C (2^21)-1 192.0.1 223.255.255 (2^8)-2

3.2网络地址转换NAT

路由器对目的地址是私有IP地址的数据报一律不进行转发
网络地址转换NAT:在专用网连接到英特网的路由器安装NAT,安装NAT软件的路由器叫NAT路由器,它至少有一个有效的外部全球IP地址

3.3子网划分&子网掩码

分类IP地址缺点

  • IP空间利用率有时很低
  • 两级IP地址不灵活

三级IP地址:网络号-子网号-主机号;主机号不能全0(本网络)不能全1(广播地址)
子网掩码:主机号对应全0,取余部分对应全1.
子网掩码与IP地址逐位相与
二进制与十进制简便记忆

10000000 128
11000000 192
11100000 224
11110000 240
11111000 248
11111100 252
11111110 254
11111111 255

路由器转发分组的算法:
1.提取目的IP地址
2.是否直接交付
3.特定主机路由
4.检测路由表中有无路径
5.默认路由0.0.0.0
6.丢弃,报告转发分组出错

3.4无分类编址CIDR

目前普遍使用的编制方式。
网络号+子网号=网络前缀
记法:IP地址后加上“/”,然后写上网络前缀的位数,
地址掩码:类似于子网掩码
构成超网:将多个子网聚合成一个较大的网络集合,取交集
最长前缀匹配:查找路由表可能得到几个匹配结果(跟网络掩码按位相与),应选择具有最长网络前缀的路由。前缀越长,地址块越小,路由越具体

3.5 IPV6地址

数据报格式:基本首部(40B荷(扩展首部+数据部分)
基本首部:版本(0-4),优先级(4-12),流标签(12-31),有效载荷长度(0-16),下一个首部(16-24,下一个扩展首部或上层协议首部),跳数限制(24-31,相当于TTL),源地址(128位),目的地址(128位)
IPV6与IPV4区别
1.IPV6将地址从32位(4B)扩展到128位(16B)
2.IPV6将IPV4检验和字段彻底移除,减少每跳的处理时间
3.IPV6将IPV4的可选字段移出首部,变成扩展首部,大大提高了路由器的处理效率
4.IPV6支持即插即用,动态分配IP
5.IPV6首部长度必须是8B的整数倍,IPV4必须是4B的整数倍
6.IPV6只能在主机处分片,IPV4可以在路由器和主机处分片
7.ICMPV6:附加报文类型“分组过大”
8.IPV6支持资源的预分配,支持实时视像要求
9.IPV6取消了协议字段
10.IPV6取消了总长度字段,改用有效载荷长度字段
11.IPV6取消了服务类型字段

地址表示形式:冒号16进制记法—每4位用1个16进制数表示
压缩形式:一连串0用双冒号表示,仅可出现一次
单播:一对一,可做源地址+目的地址
多播:一对多,可做目的地址
任播:一对多中的一个,可做目的地址

3.5.1 IPV6向IPV4过度

双栈协议:在一台设备上同时启用IPV4协议栈和IPV6协议栈
隧道技术:将其他协议的数据帧或包重新封装然后通过隧道发送

4.网络层协议

4.1ARP协议

ARP协议:完成主机或路由IP地址到MAC地址的映射

4.2DHCP协议

应用层协议,C/S方式,通过广播方式进行交互,基于UDP
提供即插即用联网机制,主机从服务器动态获取IP地址、子网掩码、默认网关、DNS服务器名称与IP地址,允许地址复用,支持移动用户加入网络,支持在用地址续租
方式:

  • 主机广播DHCP发现报文
  • DHCP广播DHCP提供报文
  • 主机广播DHCP请求报文
  • DHCP广播返回DHCP确认报文

4.3 ICMP协议

更加有效的转发IP数据报;支持主机或路由,差错(或异常)报告、网络探寻
数据报格式:首部+数据部分
数据部分:类型(1B)-代码(1B)-检验和(2B)-4BICMP报文类型-ICMP数据部分(收到的IP数据报首部+数据部分前8字节)

4.3.1 ICMP差错报文

1.终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文
2.源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应要减缓发送速度
3.时间超过:当路由器收到生存时间TTL=0的数据报,除了丢弃该数据报外,还要向源点发送时间超过报文。当终点在规定时间内不能收到一个完整的数据报的全部数据报片时,丢弃已收到的全部数据,并向源点发送时间超过报文
4.参数问题:当路由器或主机收到的数据报的首部中有字段的值不正确,就丢弃该数据报并向源点发送参数问题报文
5.改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器
不应发送ICMP差错报文的情况:
-对ICMP差错报告报文不再发送ICMP差错报告报文
-对第一个分片的数据报片的所有后续数据报片都不再发送ICMP差错报文
-对具有组播地址的数据报都不发送ICMP差错报告报文
-对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文

4.3.2 ICMP询问报文

1.回送请求和回答报文:主机或路由器向特定目的主机发送的询问,收到报文的主机必须给源主机或路由器发送ICMP回答报文
2.时间戳请求和回答报文:请某个主机或路由器回答当前的日期和时间
3.掩码地址请求和回答报文
4.路由器询问和通告报文

4.3.3应用

ping 测试两主机之间的连通性,使用ICMP回送请求和回答报文
traceroute 跟踪一个分组从源点到终点的路径,使用ICMP时间超过差错报告报文

5.路由算法&路由协议

5.1路由算法

路由转发表:目的网络IP地址—-子网掩码—-下一跳IP地址——接口
分类:
静态路由算法(非自适应路由算法):管理员手工配置路由信息
动态路由算法(自适应路由算法):路由器间彼此交换信息,按照路由算法优化出路由表项。路由更新快,适用大型网络
动态路由算法

  • 全局性:链路状态路由算法(OSPF)所有路由器掌握完整的网络拓扑和链路费用信息
  • 分散性:距离向量路由算法(RIP)路由器只掌握物理相连的邻居及链路费用

分层次的路由选择协议,自治系统AS
内部网关协议IGP-一个AS内部使用的RIP、OSPF
外部网关协议EGP-AS之间使用的BGP

5.2RIP协议&距离向量算法

RIP协议
要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离记录
最多只能包含15个路由器,16表示网络不可达;路由器直连的网络跳数为1(有些题目可能为0)
应用层协议,借助UDP传送

  • 仅和相邻路由器交换信息
  • 路由交换的信息是路由表
  • 每30S交换一次路由信息,然后更新路由表。若超过180s没收到邻居路由器的通告,则判定邻居没有,然后更新自己的路由表

距离向量算法

  • 修改相邻路由器发来的RIP报文中的所有表项,把“下一跳”字段中的地址改为上一个路由(X),所有距离+1
  • 对修改后的RIP报文中的每一个项目进行以下步骤;若下一跳是X,则用收到的替换原来的;若不是X,原来距离比X走的远则更新,否则不处理
  • 若180s没收到相邻路由器x的更新路由表,则把x记为不可达的路由器,即把距离设置为16
  • 返回

5.3OSPF&链路状态算法

开放最短路径优先协议,主要特征使用链路状态协议

  • 使用洪泛法向AS内所有路由器发送信息(广播)
  • 交换本路由器相邻所有路由器的链路状态(费用、距离、时延那、带宽)
  • 只有当链路状态发生变化时,路由才向所有路由器洪泛发送此信息

网络层协议,采用IP数据报
链路状态路由算法

  • 每个路由器发现它的邻居结点【HELLO问候分组】,并了解邻居结点的网络地址
  • 设置到它的每个邻居的成本度量metric
  • 构造【DD数据库描述分组】,向邻站给出自己的链路状态数据库中所有的链路状态项目的摘要信息
  • 如果DD分组中的摘要都有,则邻站不做处理;如果有的没有或是更新的,则发送[LSR链路状态请求分组]请求自己没有的或是比自己更新的信息
  • 收到邻站的LSR分组后,发送[LSU链路状态更新分组]进行更新
  • 更新完毕,邻站返回【LSACK链路状态确认分组】进行确认

只要一个路由器的链路状态发生变化

  • 泛红发送【LSU链路状态更新分组】进行更新
  • 更新完毕后,其他返回【LSACK链路状态确认分组】进行确认
  • 使用Dijkstra根据自己的链路状态数据库构造到其他节点间的最短路径

每隔30min,刷新一次数据库中的链路状态
当互联网规模很大时,OSPF更实用
OSPF不存在坏消息传的慢的问题,它的收敛速度很快

5.4BGP协议

  • 与其他AS的邻站BGP发言人交换信息
  • 交换网络可达性信息,即要到达某个网络所要经过的一系列AS
  • 要变化才更新信息
  • 交换信息包含完整的路径(路径向量)

应用层协议,借助TCP协议

BGP-4报文

  • open(打开)报文:用来与相邻的另一个BGP发言人建立关系,并认真发送方
  • UPDATE(更新)报文:通告新路径或撤销原路径
  • KEEPALIVE(保活)报文:在无UPDATE时,周期性证实邻站的连通性,也作为OPEN的确认
  • NOTIFICATION(通知)报文:报告先前报文差错;也被用于关闭连接

6.IP组播&移动IP

6.1 IP组播

三种传输方式:单播(单播IP地址、点对点方式)、广播(到同一广播域,点对多点方式)、组播/多播(点对多点方式)
IP组播地址:范围为224.0.0.0~239.255.255.255(D类地址),一个D类地址表示一个组播组。只能用作分组的目标地址,源地址总是单薄地址

  • 尽最大努力交付,不提供可靠,应用于UDP
  • 对组播数据报不产生ICMP差错报文
  • 并非所有D类地址都可以作为组播地址

硬件组播:组播MAC地址以16进制01-00-5E打头,余下的6个16进制是根据IP组播地址最后23位转换得到的
IGMP协议&组播路由选择协议
IGMP:网际组管理协议,让路由器知道是否有主机参加或退出了某个组播组
(1)工作的两个阶段:主机向组播地址发送IGMP报文,本地组播路由器收到IGMP报文后,利用组播路由选择协议把这组成员关系发给因特网上的其他组播路由器
(2)本地组播路由器周期探寻本地局域网上的主机,以确定是否还是组播组成员
组播路由选择协议:找出以源主机为根结点的组播转发树
常使用的三种算法:距离-向量、链路状态、协议无关的组播(稀疏、密集)

6.2 移动IP

移动结点:具有固定的网络ip地址
归属代理:永久居所称为归属网络,在归属网络中代表移动结点执行移动管理功能的实体叫做归属代理
永久地址:移动站点在归属网络中的原始地址
外部代理:在外部网络中帮助移动结点完成移动管理功能的实体称为外部代理
转交地址:可以是外部代理的地址或动态配置的一个地址

7.网络层设备

路由器:具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组
路由器的输入或输出队列溢出是分组丢失的重要原因