1. 今日内容


文章目录

  • 1. 今日内容
  • 2. 网络层提供的两种服务
  • 2.1 虚电路服务
  • 2.2 数据报(分组)服务
  • 2.3 虚电路服务与数据报服务的对比
  • 3. 网际协议IP
  • 3.1 前置知识
  • 3.1.1 中间设备以及网关的说明
  • 3.1.2 虚拟互联网
  • 3.2 IP地址
  • 3.2.1 网络层的四个协议
  • 3.2.2 IP地址组成及分类
  • 3.2.3 特殊网络和IP
  • 3.2.4 子网掩码
  • 3.3 IP地址与MAC地址
  • 3.3.1 转发过程中的MAC地址和IP地址
  • 3.3.2 基于MAC地址控制的代理服务器只能控制本网段(局域网)的计算机
  • 3.3.3 IP多播到MAC地址映射关系
  • 3.4 IP数据报格式
  • 3.4.1 IP数据报的组成
  • 3.4.2 IP数据报首部固定部分的各字段
  • 3.5 IP转发分组的流程
  • 3.5.1 路由器转发数据流程
  • 3.5.2 网络畅通流程:能去能回
  • 3.6 Windows上默认的路由和网关
  • 3.7 IPv6
  • 4. 划分子网与构造超网
  • 4.1 划分子网
  • 4.1.1 等长子网划分
  • 4.1.2 变长子网划分
  • 4.2 构造超网(CIDR)
  • 5 ARP协议
  • 5.1 ARP协议说明及其过程
  • 5.2 ARP欺骗原理
  • 5.2.1 路由器arp高速缓存的欺骗
  • 5.2.2 对内网电脑arp高速缓存的欺骗
  • 5.3 命令行查看/更改arp高速缓存内容
  • 6. 网际控制报文协议ICMP
  • 6.1 差错报告报文字段内容
  • 6.2 ping命令
  • 7. 静态路由和动态路由
  • 7.1 配置静态路由
  • 7.2 配置动态路由
  • 7.2.1 使用rip协议配置动态路由
  • 7.2.2 使用OSPF协议配置动态路由
  • 8. 动态路由协议选择
  • 8.1 自治系统的路由协议 IGP
  • 8.1.1 rip协议
  • 8.1.1.1 正常情况下rip协议执行过程
  • 8.1.1.2 异常情况下rip协议执行过程
  • 8.1.2 OSPF协议
  • 8.1.2.1 OSPF协议执行过程
  • 8.1.2.2 OSPF支持多区域
  • 8.2 自治系统之间的路由协议 BGP
  • 8.2.1 BGP协议(了解)
  • 8.3 小结
  • 9. 虚拟专用网V/P/N
  • 9.1 VPN原理图解:
  • 9.2 实际操作VPN步骤
  • 10. 网络地址转换 NAT
  • 11. 补充
  • 11.1 IP组播
  • 11.2 路由器


2. 网络层提供的两种服务

网络层关注的是如何将分组的数据从源端沿着网络路径到达目的端。在早期的计算机领域中,网络层应该提供怎样的服务引起了长期的争论。到底是“面向连接”还是“无连接”?实质就是:可靠性应该由谁负责?是网络还是端系统?

面向连接->可靠性由网络负责->虚电路服务
无连接->可靠性由端系统负责->数据报服务

2.1 虚电路服务

虚电路:模仿电话面向连接的经验,建立可靠连接。指在数据发送之前与目标建立逻辑上的连接,分组的数据都顺序沿这条逻辑连接传输,如果该连接中断,则无法继续发送数据。

注意:由于建立了连接,虚电路服务传输的分组数据不包含目的主机地址,包含的是虚电路编号,这就使得每个路由器间数据必须无差错,如果有差错,所有到达数据再重新发,由此通过网络保证了数据的可靠性。

stanford CoreNLP 依存句法分析 network location awareness依存关系_数据

2.2 数据报(分组)服务

数据报(分组)服务:指网络在发送分组的数据(IP数据报)时不需要建立连接,每一组都是独立发送的,与其前后分组无关,每个数据报的传输路径由中间的网络设备联合决定(一般是采用最小生成树算法确定)。

数据报服务默认网络层不提供服务质量的承若,即所传送的IP数据报可能出错、丢失、重复和失序,当然也不保证分组传送的时限。就像我们网上购物一样,如果我们网上下单后,没有收到物品,我们不会找快递公司,而是去找卖家,即端对端的可靠服务。
简而言之,就是可靠性由端系统负责,而不是网络。

强调一下:静态路由和动态路由都是建立的数据报的基础上实现的。

现在的互联网都是采用的数据报服务,其好处主要如下(了解一下):

stanford CoreNLP 依存句法分析 network location awareness依存关系_首部_02


stanford CoreNLP 依存句法分析 network location awareness依存关系_IP_03

2.3 虚电路服务与数据报服务的对比

stanford CoreNLP 依存句法分析 network location awareness依存关系_数据_04

3. 网际协议IP

3.1 前置知识

3.1.1 中间设备以及网关的说明

1. 中间设备/中继系统
	1. 物理层中继系统:转发器(repeater),比如集线器
		* 一般用来加强电信号
	2. 数据链路层中继系统:网桥或桥接器(bridge)(交换机)
	3. 网络层中继系统:路由器(router)
	4. 网络层以上的中继系统统称网关。
	
	* 注意:
		1. 中间设备又叫中继系统。
		2. 当中继系统是转发器或网桥时,不是网络互连设备,因为这只是扩大了网络,仍属于一个网络。网络层的路由器是网络互连设备
		3. 互联网都是指用路由器进行互连的网络。

2. 网关
	* 关于网关的说明:
		1. 网关本指网络层以上的中继系统,但是由于历史原因,现在基本上将网络层使用的路由器叫网关,有时候也把路由器的端口叫做网关。
		2. 计算机上配置的网关是指路由器的一个接口的地址。
		3. 一个计算机可以指定多个网关或IP,如果计算机不设置网关,则只能访问同一局域网下的设备。比如:用集线器连接的PC,PC间可相互通信。

网关示意图:

stanford CoreNLP 依存句法分析 network location awareness依存关系_数据_05

注意:路由器用于连接异构网络,而异构网络指:物理层链路层网络层的协议可以不同,但是网络层以上的高层协议必须相同

3.1.2 虚拟互联网

* 虚拟互联网
	* 说明:
		1. 虚拟网络就是逻辑互连网络,他的意思是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用IP协议
	       就可以使这些性能各异的网络从用户看起来好像是一个统一的网络。相当于是实际互联网络的抽象。
		2. 使用IP协议的虚拟互连网络简称为IP网
	* 好处:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节。

虚拟互连网示意图:

stanford CoreNLP 依存句法分析 network location awareness依存关系_首部_06

3.2 IP地址

3.2.1 网络层的四个协议

网际协议IPTCP/IP体系中的一个。与IP协议配用的协议有三个(算上RARP有四个):地址解析协议ARP、网际控制报文协议ICMP、网际组管理协议IGMP.其关系如下:

stanford CoreNLP 依存句法分析 network location awareness依存关系_首部_07

注意:ICMP和IGMP都是属于IP层协议,他们作为IP数据报的数据部分,加上IP数据报的首部,组成IP数据报发送出去。

stanford CoreNLP 依存句法分析 network location awareness依存关系_首部_08

3.2.2 IP地址组成及分类

1. IP地址有32位,由两个字段组成:网络号(地址) + 主机号(地址)
	* 注意:主机号全为0或者全为1不能分配给主机,因为全为0是用来表示网段的,全为1是给广播使用的。

2. 网络地址:唯一指定了每个网络。同一网络中的计算机有相同的网络地址。

3. 分类:
	1. A类地址:最高位为 0 ,即最高8位的十进展为 1-126
		* 127为环回地址但是也是属于A类地址,因为其最高位为0。但是其不可使用。
		* A类地址的网络号为高8位
	2. B类地址:高2位为 10 ,即最高8位的十进展为 128-191
		* B类地址的网络号为高16位
	3. C类地址:高3位为 110 ,即最高8位的十进展为 192-223
		* C类地址的网络号为高24位
	4. D类地址:高4位为 1110 ,即最高8位的十进展为 224-239
		* D类地址为组播地址,无主机号
	5. E类地址:高4位为 1111 ,即最高8位的十进展为 240-255
		* 保留为今后用

IP地址分类示意图:

stanford CoreNLP 依存句法分析 network location awareness依存关系_首部_09


由上述的知识可以知道,处于同一个局域网中的终端IP的网络号是一样的,只是主机号不一样,表示在同一个网段/局域网。路由器是将多个局域网连接起来,所以其每个接口的网关(GATEWAY)或IP是不一样的。

同时注意:路由器的每一个接口都占其局域网中的一个IP地址,等价于一台设备。特别是在做实验的时候需要注意

注意:若一台主机有两个IP,那么这两个IP一定在不同的网段。就像路由器一样。

stanford CoreNLP 依存句法分析 network location awareness依存关系_网络层_10

3.2.3 特殊网络和IP

事实上并不是所有的A、B、C类网络都是可以使用的,有一些特殊的网络是不能使用的:

  1. 0, 128.0, 192.0.0网络号不可以使用,也就是 0.x.x.x128.0.x.x192.0.0.xIP不能使用。这些用来标识本网段,只能作为源地址,而不能做为目标地址。(现在最新消息可以使用了,如果做题还是当作不可使用处理)。

解释:因为,网络号中除了A,B,C类网络的标识位外,其余网络位全为0表示A,B,C类网段。
A、B、C类网络的标志分别是010, 110,其剩下的网络位为零来分别表示是整个A、B、C类网络。这样仅仅用来表示网络分类,显得浪费,特别是现在IPV4紧缺的情况下,所以,现在将这些网络划分给了一些公司,节省资源。

参考连接:B类地址第一个可分派的网络号为什么不是128.0? - tckidd的回答 - 知乎
https://www.zhihu.com/question/37927675/answer/82062124

0.0.0.0是一个特殊的IP地址,表示以本网络的身份。在主机第一次向DHCP以广播的形式发起获取动态IP的请求时,源IP地址就是0.0.0.0, 目的地址就是255.255.255.255

stanford CoreNLP 依存句法分析 network location awareness依存关系_数据_11

  1. 127是本机回环地址,不可以使用。
  2. 网络号 + 主机号全为0不可分配给主机。主机号全为0表示网络号代表的网段。
  3. 网络号 + 主机号全为1该IP可以使用,但是不可分配给主机,因为他是广播专用的。
  4. wifi默认网关是192.168.1.1,这个IP可以使用。

A,B,C类网络中可用的网络如下图所示:

stanford CoreNLP 依存句法分析 network location awareness依存关系_数据_12

注意:当我们想在该网段广播一个IP数据报时,将将目的IP设置成该网段+主机号全为1, 即该网段的广播地址。

stanford CoreNLP 依存句法分析 network location awareness依存关系_网络层_13

注意:链路层广播不同于IP广播。链路层广播是广播给同一个局域网的所有主机,而IP广播是广播给一个网段的所有主机。

3.2.4 子网掩码

1. 作用:标识IP的网络位数,用来判断网段。具体用来判断目标地址和自己是不是同一个网关,很重要,如果配置错误会造成计算机通信故障。

2. 如何确定子网掩码:
	1. A类网络缺省子网掩码:255.0.0.0
	2. B类网络缺省子网掩码:255.255.0.0
	3. C类网络缺省子网掩码:255.255.255.0
	* 注意:上面缺省了子网掩码,子网就是将一个IP再划分为几个小的局域网,如果一个IP划分了子网,那么每个子网的网关不一样。

3. 计算机通信时利用子网掩码的过程:
	1. 将自己的IP地址于自己的子网掩码做与运算,主机号清零,得到自己所属的网段。
	2. 再用自己的子网掩码与目标地址做与运算,主机号清零,得到目标地址所属网段。
	3. 如果自己与目标不在一个网段,则使用网关的MAC地址封装数据帧,再将数据帧发送给路由器(网关)。如果在同一个网段,则直接使用目标的MAC地址封装数据帧,直接把数据帧发送给目标地址。

4. 子网掩码的两种表达:假如有一个C类网段,IP:192.168.60.0
	1. IP:192.168.60.0    mask:255.255.255.0     的这种形式
	2. 192.168.60.0/24     的这种形式, 24表示网络位为前24位

stanford CoreNLP 依存句法分析 network location awareness依存关系_数据_14

3.3 IP地址与MAC地址

3.3.1 转发过程中的MAC地址和IP地址

stanford CoreNLP 依存句法分析 network location awareness依存关系_网络层_15


数据包在网络中是怎么传输的吗?是靠什么来传输的吗?也许你会说是靠IP地址,但从下图可以知道:数据的传输所依懒的是MAC地址而非IP地址。IP地址只是指引了方向,具体的数据传输是利用MAC地址实现的。

stanford CoreNLP 依存句法分析 network location awareness依存关系_网络层_16

注意:IP数据报经过多个网络和路由器,在不考虑NAT的情况下,其IP数据报头部的源地址和目的地址不变。但是MAC地址一般会变。

思考:交换机(局域网的中间设备)虽然通过MAC地址来转发数据的,那么源端封装数据时,能不能从传输层直接到数据链路层,也就是不经过网络层的IP封装??也就是不携带IP,只携带MAC地址。

  • 解答:不可以,原因简单来说就是统一。
    因为现在的操作系统都是在网络通信方面都是七层架构,已经固定。层与层之间相互依赖,解析数据时只有通过下一层的协议才可以进行上一层的协议;封装数据时,数据只有经过该层协议封装数据后才能让下一层的协议将数据再封装。也就是说,对方能将消息发出去,则一定用了网络层的协议,如果自己没有网络层的arp协议就不能解析出数据,自然就无法通信了。
    如果要强行这样通信,可以单独的设计操作系统,不设计网络层,因为现在基本上都是网络通信,只能在局域网内通信就显得本末倒置了。

3.3.2 基于MAC地址控制的代理服务器只能控制本网段(局域网)的计算机

stanford CoreNLP 依存句法分析 network location awareness依存关系_首部_17

3.3.3 IP多播到MAC地址映射关系

为了支持IP 多播,以太网的大佬们已经为 Ethernet和Fiber Distributed Data Interface (FDDI)的MAC地址保留了一个多播地址区间:01-00-5E-00-00-00 到 01-00-5E-7F-FF-FF。 正如下图所示48位的MAC地址中的高25位是固定的,低23位是可变的。

stanford CoreNLP 依存句法分析 network location awareness依存关系_数据_18


为了映射一个IP 多播地址到MAC层的多播地址,IP多播地址的底23位可以直接映射为MAC层多播地址的底23位。

例如:多播地址224.192.16.1可以映射为01-00-5E-40-10-01。(IP去掉高9位 = 8 + 1)

IP多播地址的范围是:224.0.0.0–239.255.255.255,其中:
1)224.0.0.0–224.0.0.255 本地保留,ttl=1,其中224.0.0.1是本网所有主机接收
2)224.0.0.2是本网所有路由器接收
3)239.0.0.0–239.255.255.255 私有组播地址
4)232.0.0.0–232.255.255.255 特定源多播
5)224.0.1.0–238.255.255.255 全球

3.4 IP数据报格式

3.4.1 IP数据报的组成

一个IP数据报由首部和数据两部分组成。首部的前一部分是固定长度,该固定长度共20B,是所有IP数据报必须有的。

stanford CoreNLP 依存句法分析 network location awareness依存关系_数据_19

3.4.2 IP数据报首部固定部分的各字段

stanford CoreNLP 依存句法分析 network location awareness依存关系_网络层_20

stanford CoreNLP 依存句法分析 network location awareness依存关系_首部_21

注意:

  1. IP数据报首部的最大长度为60字节。 解释:IP数据报首部中有一个首部长度字段,4 位长,可表示的最大十进制数字是15。因此首部长度的最大值是15个4字节长的字,即60字节。但是,典型的IP数据报不使用首部中的选项,因此典型的IP数据报首部长度是20字节。
  2. IP数据报的最大长度为2^16-1 = 65535个字节。
  3. IP分组中检验字段检查范围是仅检查分组首部。该字段叫首部检验和
  4. 首部长度,总长度,片偏移的单位分别是4B, 1B, 8B, 占位分别是4b, 16b, 13b

上面我们在首部的标志中提到了对分组进行分片的概念,下面详细说明一下:

stanford CoreNLP 依存句法分析 network location awareness依存关系_首部_22

注意:

  1. 分组能够被发送方中间路由器分片,但是只能由目的主机重组分片。
  2. IP首部字段中,与分片有关的字段有"标识、标志、片偏移"
  3. 当IP数据报在中途被丢弃时,必须用ICMP差错报文向源主机汇报原因。
  1. 分片时,每个片的数据部分必须是8B的整数倍。若不是,则向下取整

在“ 首部校验和”中提到了校验首部信息是否出错,那么它是如何判断的呢?下图是判断的过程:

stanford CoreNLP 依存句法分析 network location awareness依存关系_IP_23

3.5 IP转发分组的流程

stanford CoreNLP 依存句法分析 network location awareness依存关系_数据_24

注意:在对比路由表时,是逐个对比每个表项,最后取最长前缀匹配。

stanford CoreNLP 依存句法分析 network location awareness依存关系_IP_25

3.5.1 路由器转发数据流程

假如有如下网络:

stanford CoreNLP 依存句法分析 network location awareness依存关系_IP_26


则上述结构中,路由器Router0的路由表会是如下情况:

地址掩码

目标地址

下一跳地址

路由器端口地址

/24

192.0.1.0


m0

/24

192.0.2.0


m1

/16

128.1.0.0

192.0.2.2

m1

注意:路由表中没有下一跳的路由项,说明该目标地址其是该路由器的直通网段。

PC0向网段128.1.0.0/16中的一个计算机128.1.0.64/16发送消息的流程如下:

  1. PC0向128.1.0.64/16发送消息 XXX
  2. 由于端口m0和其在一个局域网,且m0也有IP(相当于一台计算机)所以,端口m0能够收到消息XXX。(同一局域网通过MAC地址将消息发送给目标计算机)
  3. Router0收到数据后,按照路由表项逐个对比,判断转发给谁。
    3.1 路由表第一项:128.1.0.64255.255.255.0做与运算为128.1.0.0,与路由项目的地址192.0.1.0不一样,说明不是发往该目标地址的,接着向下匹配。
    3.2 路由表第二项:128.1.0.64255.255.255.0做与运算为128.1.0.0,与路由项目的地址192.0.2.0不一样,说明不是发往该目标地址的,接着向下匹配。
    3.2 路由表第三项:128.1.0.64255.255.255.0做与运算为128.1.0.0,与路由项目的地址128.1.0.0一样,说明是发往该目标地址的,匹配成功。
  4. 匹配到的路由表项的端口是m1,下一跳是192.0.2.2,所以消息XXX通过端口m1发送给目标192.0.2.2。(由于其在同一个局域网,能够收到消息)

以上就是一个路由器转发一个数据的流程。

3.5.2 网络畅通流程:能去能回

stanford CoreNLP 依存句法分析 network location awareness依存关系_网络层_27

记住,分析网络能不能通的时候一定要去和来的时候都要一步步的分析,不要受惯性思维的影响。比如下面这幅图,图上标准的IP, MASK, GATEWAY等信息都是已经配置好的:

stanford CoreNLP 依存句法分析 network location awareness依存关系_网络层_28


不通的原因分析:

  1. 发送数据:
    PC0发消息给IP:192.168.1.2,由于arp协议根据其IP查不到MAC地址,会将数据发送给网关IP:192.168.0.1,由于IP:192.168.1.2属于网段192.168.1.0IP:192.168.0.1属于网段192.168.0.0,这两个网段被Router0直通,数据被发到IP182.168.1.2,即Router1
  2. 返回数据:
    Router1返回数据时,目标IP:192.168.0.2属于网段192.168.0.0,而Router1直通网段是192.168.1.0,不是直通网段,由于没有设置路由,所以该路由器不知道往哪里发数据,于是将数据丢弃。

3.6 Windows上默认的路由和网关

我们知道,给路由器加路由,信息最终会加到路由表中。windows虽然不是路由器,但是他也有路由表,且路由表中默认路由是设置的网关,因为给计算机网卡配置网关就是添加默认路由(一个网卡只能配置一个网关),默认路由的网段都是0.0.0.0,相当于没有网段。由下图可见:

stanford CoreNLP 依存句法分析 network location awareness依存关系_首部_29

  1. 在windows的doc下输入:route print或者netset -r可以看见计算机上的路由表。
  2. 在doc下输入:routeadd 目标网段 mask 目标网段掩码 网关 命令可以添加路由到路由表中。
    使用route /?可以所有的route命令

需要注意的是,如果计算机装了两个网卡,且每个网卡设置了网关,即该计算机有两个默认路由。如果没有指定静态/动态路由,计算机会轮流的使用这两个默认路由,使得过这个路由器的通信时通时不通。如下面这个例子:

stanford CoreNLP 依存句法分析 network location awareness依存关系_数据_30

小结:计算机如果有多个网卡,只为一个网卡配置网关。

3.7 IPv6

(1)解决IPv4短缺的3种方法:

stanford CoreNLP 依存句法分析 network location awareness依存关系_首部_31


(2)IPv6的特点:

stanford CoreNLP 依存句法分析 network location awareness依存关系_首部_32


(3)IPv6的格式:

stanford CoreNLP 依存句法分析 network location awareness依存关系_网络层_33


(4)IPv6的几个注意点:

  1. IPv6 减少了头部字段的个数,其中首部校验和就被删除了,加快了路由器处理数据报的速度。
  1. IPv6的首部长度是固定不变的,因此不需要首部长度字段。
  2. IPv6中,路由器不能够分片

4. 划分子网与构造超网

4.1 划分子网

1. 划分子网的作用:把一个IP划分成多个局域网,合理规划IP的主机数,提高IP地址的利用率,因为IPv4的地址现在已经快不够用了。

2.优点:
	1. 减少广播域数量
	2. 提高IP利用率
	3. 减轻网络故障排查的负担 

3. 分类:
	1. 等长子网划分
	2. 变长子网划分

4. 如何划分?
	1. 根据实际情况,将IP地址的主机号的部分高位让给网络号。
	2. 其子网掩码也对应变化
	* 把握住这两点,无论A类、B类还是C类IP划分,以及后面的等长子网和变长子网如何划分就很简单

5. 举例:IP:192.168.60.0,将这个网段划分为两个子网。
	* 两个子网需要用1位二进制表示,所以,将该IP的主机号的最高的1位让给网络号,于是,产生了两个子网IP
	  -->192.168.60.0
	  -->192.168.60.128
	* 由于这是一个C类地址,且网络号多了一位,所以,这两个的子网掩码都是:255.255.255.128

该例子的图如下:

stanford CoreNLP 依存句法分析 network location awareness依存关系_首部_34

注意:

  1. 划分子网并不会增加网络数量。因为网络指的是全球IP个数,这个是不变的。

4.1.1 等长子网划分

如果划分一个IP地址,要求子网分别能容纳A,B,C…台主机,如果2k-1<A+2<2k,2k-1<B+2<2k,2k-1<C+2<2k…,(k相同),则采用等长子网划分,将主机号高N-k位给网络号,如果是C类IP则N=8,如果是B类IP则N=16,如果是A类IP则N=24.

等长子网划分的例子

4.1.2 变长子网划分

以一个C类IP为例,如果划分一个IP地址,要求子网分别能容纳A,B,C…台主机,如果2k-1<A+2<2k,2k-1<B+2<2k,2n-1<C+2<2n…,(n!=k),若有范围不相等的都可以边长子网划分,比如这里的C和A、B不等,则A、B、C都可以采用边长子网划分。

下面是一个思科考试的例子,在下面黑色的网关位置从左边选出合适的IP及mask:

stanford CoreNLP 依存句法分析 network location awareness依存关系_IP_35

注意:如果是自己划分不等长子网,一般将主机数由大到小依次分配子网。

stanford CoreNLP 依存句法分析 network location awareness依存关系_网络层_36

4.2 构造超网(CIDR)

构造超网是子网划分的逆过程,用于将几个IP合并为一个大IP。

合并两个子网的例子:

stanford CoreNLP 依存句法分析 network location awareness依存关系_数据_37


是不是任何两个IP都只用1位就可以合并成一个超网??? 答案是否定的,比如192.168.1.0192.168.2.0就不行,因为其网络号的最后两位分别是0110,至少需要两位才可以合并。构造超网有如下规律:

stanford CoreNLP 依存句法分析 network location awareness依存关系_数据_38

5 ARP协议

5.1 ARP协议说明及其过程

ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成下一跳目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,动态映射出目标设备的MAC地址,以保证通信的顺利进行。

通过上面的知识,我们知道,计算机通信时发送的数据帧携带下一跳的MAC地址(跨局域网的),而MAC地址是通过MAC协议“动态映射”出来的,这个“动态映射”可以理解为一张表,表中存放着IP对应的MAC地址。那么计算机中的这张表是如何得到的????

任何时候,当主机需要找出这个网络中的另一个主机的物理地址(MAC地址)时,它就可以发送一个ARP请求报文,这个报文包好了发送方的MAC地址、IP地址和接受方的IP。这个报文包是以广播的形式发送的。(广播的范围是所在局域网的所有设备,不能跨局域网,会被网关拦截), 接受方接受到数据报后,记录对方的MAC地址和IP地址,然后再将自己的IP和MAC地址封装后返回此计算机,这样计算机就得到了邻居计算机的MAC地址。

其过程可以用下面一张图描述:

stanford CoreNLP 依存句法分析 network location awareness依存关系_数据_39

然后,你可能又会问,发送方如何知道接受方的IP???其实也是类似的方法,用广播的发送数据报:自己ip + 询问对方ip,对方接受后记录发送方的ip并返回数据报:自己的ip

注意:

  1. 启动ARP的时机:主机需要发送信息,但ARP表中没有目的IP地址与MAC地址的映射关系。
  2. 由于不知道目的地址在哪里,所以ARP请求必须使用广播方式,且第一次广播的目的地址为ff-ff-ff-ff-ff-ff。但是ARP请求中包含有发送方的MAC地址,故ARP响应单播方式
  3. stanford CoreNLP 依存句法分析 network location awareness依存关系_数据_40

ARP协议负责将IP数据包映射为MAC数据包,而RARP协议是根据MAC地址映射IP地址。其关系如下图所示。但是如果要将数据发送给另一个局域网的IP,此时arp高速缓存中没有该IP和MAC地址的映射关系,会统一用网关的MAC地址,发送给网关,剩下的事情由路由器完成。

stanford CoreNLP 依存句法分析 network location awareness依存关系_首部_41


stanford CoreNLP 依存句法分析 network location awareness依存关系_IP_42

5.2 ARP欺骗原理

ARP欺骗原理:arp协议不管是否发送了arp请求,都会根据收到的任何arp应答数据包对本地的arp高速缓存(用来存放映射关系表)进行更新,将应答数据包中的IP地址和MAC地址存储在arp高速缓存中。这正是实现arp欺骗的关键。可以通过编程的方式构建arp应答数据包,然后发送给被欺骗者,用假的IP地址与MAC地址的映射来更新被欺骗者的arp高速缓存,实现对被欺骗者的arp欺骗。

有两种arp欺骗:

  1. 一种是对路由器arp高速缓存的欺骗;
  2. 另一种是对内网电脑arp高速缓存的欺骗。

5.2.1 路由器arp高速缓存的欺骗

比如,实际生活中的“P2P终结者”软件:

stanford CoreNLP 依存句法分析 network location awareness依存关系_网络层_43

5.2.2 对内网电脑arp高速缓存的欺骗

比如,实际中“网络执法者”软件:

stanford CoreNLP 依存句法分析 network location awareness依存关系_网络层_44

5.3 命令行查看/更改arp高速缓存内容

stanford CoreNLP 依存句法分析 network location awareness依存关系_数据_45

6. 网际控制报文协议ICMP

1. ICMP:为了提高IP数据报交付成功的机会,在网际层使用了网际控制报文协议ICMP(Internet Control Message Prorocol)。
	用大白话来说,就是检测报文在网络传输的过程中在哪里出了什么错误。

2. 特点:
	1. ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。
	2. ICMP不是高层协议,而是网络层的协议。
	3. ICMP报文作为IP层数据报的数据,加上IP数据报的首部,组成IP数据报发送出来。

3. 类型:
	1. ICMP差错报告报文(Reply/Response):用于目标主机或中间路由器向源主机报告差错和异常情况。
		* 类型:
			1. 终点不可到达:当路由器或主机不能交付数据时,就向原点发送终点不可达报文
			2. 源点抑制:
				1. 当一个系统(路由器或主机)接收数据报的速度比其处理速度快时,可能产生这个差错,告诉源点发送慢一点。
				2. 当路由器或主机由于拥塞而丢弃数据报时,向源主机发送源点抑制报文,使源点发送速度慢一点。
			4. 时间超过:TTL为0时,除了丢弃该数据报外,还需要向源点发送超时报文。
			5. 参数问题:当路由器或主机检测到数据报首部中有字段值不对时,就丢弃该数据报,并向源点发送参数问题报文。
			6. 改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由。
	2. ICMP询问报文(Request):
		* 类型
			1. 回送请求和回答报文
			2. 时间戳请求和回答报文
			3. 掩码地址请求和回答请求
			4. 路由器询问和通告报文

4. ICMP应用举例
	1. ping用来测试两个主机之间的连通性
	2. ping使用了ICMP询问报文,具体是ICMP回送请求与回答报文
	3. ping是应用层直接使用网络层ICMP的例子,他未使用传输层的的TCP或UDP。
	4. pathping
	5. tracert:能够看到目标网段途径的网段
		语法:tracert 目标IP

stanford CoreNLP 依存句法分析 network location awareness依存关系_网络层_46

注意:

  1. 由于IP协议不能够进行差错控制,所以需要ICMP差错报文向源主机报告错误原因。
    由于IP协议缺乏主机和网络管理查询机制,所以需要ICMP询问报文用于查询。
  1. ping命令使用的是ICMP询问报文,而不是ICMP差错报文
  2. 当数据报发生错误时,或要丢失时,需要向源主机发送ICMP差错报文汇报情况

6.1 差错报告报文字段内容

差错报告报文的数据字段内容:

stanford CoreNLP 依存句法分析 network location awareness依存关系_网络层_47

6.2 ping命令

ping发送一个ICMP回声请求消息给目的地并报告是否收到所希望的ICMP回声应答。

stanford CoreNLP 依存句法分析 network location awareness依存关系_数据_48


stanford CoreNLP 依存句法分析 network location awareness依存关系_网络层_49


stanford CoreNLP 依存句法分析 network location awareness依存关系_IP_50


使用ping能够判断网络通还是不通,比如请求超时,你就不能判断位置出现的网络故障造成的请求超时。

使用pathping命令能够跟踪数据包的路径,能够查出故障点,并且能够计算路由器转发丢包率和链路丢包率以及延迟,据此能够判断出网络拥堵情况。

7. 静态路由和动态路由

1. 静态路由:手动的指定路由表中的路由网段和网关,除非网络管理员进行干预,否则静态路由表不会发生变化。
	1. 优点:简单、高效、可靠、网络安全、转发效率高。
	2. 缺点:不能灵活的适应网络的动态变化。
	3. 使用场景:网络规模不大,拓扑结构固定的网络中。

2. 动态路由:指路由器能够自动地建立自己的路由表,并且能够根据实际情况的变化适时地进行调整。
	1. 优点:灵活,能够适时适应网络结构的变化,无需管理员手工维护,减轻了管理员的工作负担。
	2. 缺点:占用网络带宽(用于传输路由更新信息)
	3. 使用场景:网络规模大,网络拓扑机构复杂的网络。

路由器能够在网络中转发数据,主要是根据路由器中的路由表去查看往哪里转。而静态路由和动态路由都是往路由表中加路由项,也就是填充路由表的内容。比如,有下面这个路由表:

stanford CoreNLP 依存句法分析 network location awareness依存关系_首部_51


地址掩码是目标网络地址的掩码。

没有下一跳地址的路由项,说明是本路由器的端口,且目的网络是该路由器的直通网络。

由此可知,直通网段也放在路由表中

7.1 配置静态路由

常用配置静态路由步骤:

Router>enable
Router#config t
Router(config)#ip route 目标网段 目标网段的掩码 下一跳的IP
Router(config)#end
Router#show ip route

含静态路由配置的一个案例

7.2 配置动态路由

7.2.1 使用rip协议配置动态路由

配置动态路由步骤:
	1. 开启rip协议
		* 语法:
			* route rip
	2. 设置每个路由器的动态路由。
	   * 如何设置??
	   		* 抓住一点,这个掩码不用输入,根据你输入的网段,自动生成A/B/C类网段掩码。如果路由器所有直通网
	   		  在一个A/B/C类网段,则只用设置一个,否则设置多个。如果不怕麻烦,保险起见,有多少个设置多少个。
	   * 语法:network 网段 

		* 例如:
			1. 一个路由器直通网有:192.168. 1.0, 192.168. 2.0,192.168. 3.0,则需要设置三次:
				Router(config)#net 192.168. 1.0
				Router(config)#net 192.168. 2.0
				Router(config)#net 192.168. 3.0
			2. 一个路由器直通网有:192.168. 1.1, 192.168. 1.2,192.168. 2.1,则需要设置两次:
				Router(config)#net 192.168. 1.0
				Router(config)#net 192.168. 2.0

常见配置步骤:

Router>enable
Router#config t
Router(config)#route rip
Router(config)#net 172.16.0.0
Router(config)#net 172.16.1.0
Router(config)#end
Router#show ip route

show ip route后的例图:

stanford CoreNLP 依存句法分析 network location awareness依存关系_首部_52

7.2.2 使用OSPF协议配置动态路由

配置动态路由步骤:
	1. 开启ospf协议
		* 语法:
			* route ospf 进程号
	2. 设置每个路由器的动态路由。
	   		   * 如何设置??
	   		* 可以像rip协议一样设置的是A/B/C类网络,也可以自定义,因为其输入反转掩码, 能在同一个大网段的直连网段。
	   * 语法:network/net 网段 该网段的反转掩码 area 区域号

		* 例如:一个路由器直通网有:172.18.0.0/16, 192.168.0.8/30,192.168.0.16/30
				1. 设置二次:
					Router(config)#net 172.18.0.0 0.0.255.255 area 0
					Router(config)#net 192.168. 0.0 0.0.0.255 area 0
				2. 设置三次:
					Router(config)#net 172.18.0.0 0.0.255.255 area 0
					Router(config)#net 192.168. 0.8 0.0.0.3 area 0
					Router(config)#net 192.168. 0.16 0.0.0.3 area 0

常见配置步骤:

Router>enable
Router#config t
Router(config)#route ospf 1
Router(config)#net 172.18.0.0 0.0.255.255 area 0
Router(config)#net 192.168. 0.0 0.0.0.255 area 0
Router(config)#end
Router#show ip route

stanford CoreNLP 依存句法分析 network location awareness依存关系_首部_53


show ip route后的例图:

stanford CoreNLP 依存句法分析 network location awareness依存关系_网络层_54

8. 动态路由协议选择

动态路由协议分类:

	1. 自治系统(AS)内的(IGP,Interior Gateway Protocol)的路由协议。
		1. rip协议
		2. ospf协议
	2. 自治系统之间(EGP,External Gateway Protocol)的路由协议。
		1. bgp协议

8.1 自治系统的路由协议 IGP

* IGP
	1. 距离矢量协议
		1 rip
		2.XNS RIP
		 ...等等
	2. 链路状态路由协议
		1. 最短路径优先(OSPF)
		2. 中间系统到中间系统(IS-IS)
		* 注意:这两个协议都采用Dijkstra最短路径算法。

注意:距离-矢量协议中“好消息传的快,坏消息传的慢”,使得变化未能及时的被所有路由器知道,可能导致路由回环的问题。

8.1.1 rip协议

  • RIP协议
  • 特点:
  1. 采用广播的形式通信,且每30秒与所有相邻路由器【只和相邻的交换】交换整个路由表信息
  2. 最大距离(两主机间包括自己的最多的路由器个数)是15, 16表示不可到达
  3. 度量值:中间路由器的个数。取最小的。
  • 优点:实现简单,开销较小。
  • 缺点:
  1. 路由器之间交换的路由信息是路由器中的完整路由表(即路由表的所有项)。每30秒广播发送一次。非常的占流量,且随着网络规模的扩大,开销将会急速增加。
  2. 收敛速度慢。 当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器。
    收敛:网络设备的路由表与网络拓扑结构保持一致
  3. 限制了网络的规模,它能使用的最大距离为15个路由器。(16表示不可达)
  4. 度量值与实际不符。
  • 格式:<目的网络N,距离d,下一跳路由器X>

注意:

  1. RIP应用层协议,他使用UDP传送数据。
  2. RIP选择的不一定是时间最短的,但一定是具有最少路由器的路径。
8.1.1.1 正常情况下rip协议执行过程

stanford CoreNLP 依存句法分析 network location awareness依存关系_IP_55

图解描述如下:

stanford CoreNLP 依存句法分析 network location awareness依存关系_网络层_56


stanford CoreNLP 依存句法分析 network location awareness依存关系_数据_57


stanford CoreNLP 依存句法分析 network location awareness依存关系_IP_58

8.1.1.2 异常情况下rip协议执行过程

stanford CoreNLP 依存句法分析 network location awareness依存关系_数据_59


stanford CoreNLP 依存句法分析 network location awareness依存关系_IP_60


stanford CoreNLP 依存句法分析 network location awareness依存关系_首部_61


stanford CoreNLP 依存句法分析 network location awareness依存关系_数据_62

注意:练习:

stanford CoreNLP 依存句法分析 network location awareness依存关系_数据_63

8.1.2 OSPF协议

  • OSPF协议:随着网络规模的扩大,RIP协议的缺点导致用户体验越来越差【因为路由表越来越大,时间开销越来越大】。OSPF就是为了解决这种大规模动态路由产生的。
  • 特点:
  1. 度量值:带宽。 弥补了rip的不足,不一定距离越短就越快,应该以带宽来衡量。
  2. 适合大型网络区域,比如:移动、联通、电信,比他们更大的比如还有国家电网。
  3. 支持多区域
  4. 无路由环, 由于采用Dijkstra最短路径算法。
  5. 触发式更新:每个结点只有添加邻居路由器或者邻居路由器坏掉时才会触发更新其路由表的操作,否则路由表不变。比arp每30秒广播一次要好。【通过发送hello包知道链路状态,当链路状态变化时,使用LSU(链路状态更新)实现路由器表更新】
  6. OSPF更新路由表时采用洪泛法本自治系统中的所有路由器发送部分信息, 即链路状态信息。
  • 优点:
  1. OSPF 适合在大范围的网络:OSPF 协议当中对于路由的跳数,它是没有限制的。
  2. 组播触发式更新:OSPF 协议在收敛完成后,会以触发方式发送拓扑变化的信息给自治系统中所有的路由器,这样就可以减少网络宽带的利用率;同时,可以减小干扰,特别是在使用组播网络结构,对外发出信息时,它对其他设备不构成其他影响
  3. 以开销作为度量值:OSPF 协议在设计时,就考虑到了链路带宽对路由度量值的影响。OSPF 协议是以开销值作为标准,而链路开销和链路带宽,正好形成了反比的关系,带宽越是高,开销就会越小,这样一来,OSPF 选路主要基于带宽因素。
  4. OSPF 协议的设计是为了避免路由环路:在使用最短路径的算法下,收到路由中的链路状态,然后生成路径,这样不会产生环路。
  5. 收敛速度快。
  • 使用:一般是小范围内用rip协议,中范围用ospf协议,大范围再用ospf协议

注意:

  1. OSPF协议是网络层协议,它不使用UDP或TCP,而直接使用IP数据报传送。而RIP应用层协议,使用UDP发送消息。
8.1.2.1 OSPF协议执行过程
  1. 了解自身链路
    每台路由器了解其自身的链路,即与其直连的网络。
  2. 寻找邻居,构成邻居表
    不同于RIP,OSPF协议运行后,并不立即向网络广播路由信息,而是通过发送Hello报文(很小,以广播形式10秒一次,局域网内2秒一次),从而寻找到邻居路由器,记录于邻居表中,也记录于链路状态表中。
  3. 创建链路状态数据包
    路由器一旦建立了邻居关系,就可以创建链路状态数据包,将自己链路状态表中的内容发给邻居。
  4. 链路状态信息传递,构成链路状态表
    路由器将描述链路状态的LSA泛洪到邻居,邻居将收到的信息放入自己的链路状态表中,最终形成包含网络完整链路状态信息的链路状态数据库,即每个路由器的链路状态表都包含区域内所有路由器状态。
  5. 计算路由
    路由区域内的每台路由器都可以使用SPF算法(最短路径优先算法)来计算到目标的最优路径。

OSPF协议执行过程示意图:

stanford CoreNLP 依存句法分析 network location awareness依存关系_IP_64


stanford CoreNLP 依存句法分析 network location awareness依存关系_首部_65

8.1.2.2 OSPF支持多区域

OSPF可以将一个自治系统再划分为若干个更小的范围,称为区域。

而在一个区域内部的路由器只知道本区域的网络拓扑,而不知道其他区域的网络拓扑。

stanford CoreNLP 依存句法分析 network location awareness依存关系_IP_66

  • 通常用Area0表示主区域,其他表示子区域。
  • 只有一个主干区域,可以有多个子区域。
  • 每个子区域内的链路状态表由该区域内的所有路由器构成,没有其他子区域的路由器。所以子区域间不影响。
  • 每个子区域相当于主干区的一个路由器。节省了空间。

注意:

  1. 连接主区域和其他下层区域的路由器称为区域边界路由器
  2. 在主区域内的路由器称为主干路由器
  3. 主干路由器可以兼做区域边界路由器

8.2 自治系统之间的路由协议 BGP

8.2.1 BGP协议(了解)

* 特点:
	1. BGP协议交换路由信息数量不是很多
	2. BGP发言人数目不多,路由选择相对简单
	3. BGP协议支持CIDR
	4. BGP建立时,交换整个路由表但之后只交换变化部分

注意:

  1. BGP协议是应用层协议,是基于TCP的。

stanford CoreNLP 依存句法分析 network location awareness依存关系_首部_67

8.3 小结

stanford CoreNLP 依存句法分析 network location awareness依存关系_网络层_68

9. 虚拟专用网V/P/N

stanford CoreNLP 依存句法分析 network location awareness依存关系_首部_69

这些专用地址常用来做内网(专用网),且不同的网段都可以用这些专用地址来构造自己的内网,所以专用地址具有可重用性。这样也极大的减少了IPV4资源不足的问题。

这样,理论上,外网是无法访问内网的,但是通过VPN技术可以实现访问。

stanford CoreNLP 依存句法分析 network location awareness依存关系_数据_70

注意:建立了虚拟专用网,就等价于把计算机移到了内网。

9.1 VPN原理图解:

stanford CoreNLP 依存句法分析 network location awareness依存关系_首部_71


stanford CoreNLP 依存句法分析 network location awareness依存关系_首部_72


stanford CoreNLP 依存句法分析 network location awareness依存关系_IP_73


stanford CoreNLP 依存句法分析 network location awareness依存关系_网络层_74


数据返回的过程与上面的类似,我就不做解释了。

9.2 实际操作VPN步骤

stanford CoreNLP 依存句法分析 network location awareness依存关系_首部_75


stanford CoreNLP 依存句法分析 network location awareness依存关系_IP_76


stanford CoreNLP 依存句法分析 network location awareness依存关系_网络层_77


stanford CoreNLP 依存句法分析 network location awareness依存关系_数据_78


stanford CoreNLP 依存句法分析 network location awareness依存关系_网络层_79

10. 网络地址转换 NAT

stanford CoreNLP 依存句法分析 network location awareness依存关系_IP_80


stanford CoreNLP 依存句法分析 network location awareness依存关系_数据_81

注意:内网理应不能够访问外网的,因为其能去,但是不能回来。解释如下:

stanford CoreNLP 依存句法分析 network location awareness依存关系_IP_82

NAT路由器的工作原理:

stanford CoreNLP 依存句法分析 network location awareness依存关系_网络层_83


其实核心就是NAT路由器有多个全球IP地址,NAT路由器将源IP地址替换成一个其连接的全球IP地址,并记录与表中。下面是一张例子表:

stanford CoreNLP 依存句法分析 network location awareness依存关系_IP_84


由此可见,当NAT路由器具有n个全球IP地址时,专用网络最多可以同时有n主机接入到互联网,这样专用网可以用更多的主机,轮流使用NAT路由器有效数量的全球IP地址。可能你也想到了,轮流替换在内网主机量特变大的时候效果不好,那么我们有没有更加好的方法???其实,我们把传输层的端口也用上就可以了。建立{本地IP地址:端口}{全球IP地址:端口}。那么,这样内网的多个主机可以用NAT路由器连接的1个全球IP地址,只是端口号不一样,比如下图:

stanford CoreNLP 依存句法分析 network location awareness依存关系_网络层_85

注意:NAT的表项需要管理员手动添加,NAT路由器不会自动添加。

stanford CoreNLP 依存句法分析 network location awareness依存关系_首部_86

stanford CoreNLP 依存句法分析 network location awareness依存关系_IP_87

而将端口号也做映射的NAT就NAPT(Natwork Address Port Translation)

stanford CoreNLP 依存句法分析 network location awareness依存关系_网络层_88

11. 补充

11.1 IP组播

stanford CoreNLP 依存句法分析 network location awareness依存关系_网络层_89

11.2 路由器

(1)定义:

stanford CoreNLP 依存句法分析 network location awareness依存关系_IP_90


故路由器的核心功能是: 路由选择 与 分组转发

注意:路由器只能根据IP地址进行转发,不能根据物理地址进行转发。

stanford CoreNLP 依存句法分析 network location awareness依存关系_网络层_91

(2)工作过程:

stanford CoreNLP 依存句法分析 network location awareness依存关系_IP_92


(3)路由选择:

stanford CoreNLP 依存句法分析 network location awareness依存关系_IP_93

(4)分组转发:

stanford CoreNLP 依存句法分析 network location awareness依存关系_数据_94

注意:

  1. 网络中发生拥塞:指随着通信子网负载的增加,吞吐量反而降低。
  2. 路由器连接的异构网络:指物理层、链路层、网络层的协议可以不同,但是网络层以上的高层协议必须相同。
  3. 路由选择有直接交付和间接交付两种。
    * 直接交付:指目的和源主机在同一个网段
    * 间接交付:指目的和源主机不在同一个网段
    * 联系:间接交付涉及直接交付,在间接交付的最后一步一定是直接交付。
    直接交付不涉及间接交付
  4. DHCP是传输层的协议,基于UDP
    * 工作方式:使用C/S方式,广播
    * 作用:其能动态为主机分配IP
    * 注意:在主机第一次向DHCP以广播的形式发起获取动态IP的请求时,源IP地址就是0.0.0.0, 目的地址就是255.255.255.255
  5. 广播风暴指的是IP广播,需要隔离广播域,所以是路由器。
  6. MAC帧的MAC地址会随着发往不同网段而改变。比如通过交换机就不改变。
    IP数据报的IP地址只有从私网通过NAT才改变。
  1. 域名服务器的子网掩码必为255.255.255.255
  1. 是否能分片,还需要看DF标志位。DF=1,则不能分片;DF=0,则允许分片。
  1. 重要例题:
  1. 如果题目说连接Internet,但是没有说具体的IP,则就是要我们添加默认路由。