4.1、网络层提供的两种服务
网络层关注的是如何将分组从源端沿着网络路径送达目的端。
在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接” 和 “无连接”)曾引起长期的争论。
争论焦点的实质是:在计算机通信中,可靠交付是由谁来负责,是网络,还是端系统?
两种服务:网络层应该向运输层提供怎样的服务?
- 虚电路服务
- 数据报服务
虚电路服务
这种观点认为,应借助于电信网的成功经验,让网络负责可靠交付,计算机网络应模仿电信网络,使用面向连接的通信方式。
通信之前先建立虚电路 (Virtual Circuit),以保证双方通信所需的一切网络资源。
如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点,不丢失、不重复。
- 虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接。
- 请注意,电路交换的电话通信是先建立了一条真正的连接。
- 因此分组交换的虚连接和电路交换的连接只是类似,但并不完全一样。
数据报服务(目前因特网使用的)
互联网的先驱者提出了一种崭新的网络设计思路。
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
网络在发送分组时不需要先建立连接。每一个分组(即 IP 数据报)独立发送,与其前后的分组无关(不进行编号)。
网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。
尽最大努力交付:
- 由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)。
- 如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责可靠交付(包括差错处理、流量控制等) 。
- 采用这种设计思路的好处是:网络的造价大大降低,运行方式灵活,能够适应多种应用。
- 互连网能够发展到今日的规模,充分证明了当初采用这种设计思路的正确性。
虚电路服务与数据报服务的对比
对比的方面 | 虚电路服务 | 数据报服务 |
---|---|---|
思路 | 可靠通信应当由网络来保证 | 可靠通信应当由用户主机(端系统)来保证 |
连接的建立 | 必须有 | 不需要 |
终点地址 | 仅在连接建立阶段使用,每个分组使用短的虚电路号 | 每个分组都有终点的完整地址 |
分组的转发 | 属于同一条虚电路的分组均按照同一路由进行转发 | 每个分组独立选择路由进行转发 |
当结点出故障时 | 所有通过出故障的结点的虚电路均不能工作 | 出故障的结点可能会丢失分组,一些路由可能会发生变化 |
分组的顺序 | 总是按发送顺序到达终点 | 到达终点时不一定按发送顺序 |
端到端的差错处理和流量控制 | 可以由网络负责,也可以由用户主机负责 | 由用户主机负责 |
4.2、虚拟互联网
网络互连的设备
中间设备又称为中间系统或中继(relay)系统
-
物理层中继系统:集线器(hub)
-
数据链路层中继系统:网桥(bridge)或交换机(switch)
-
网络层中继系统:路由器(router)
-
(严格意义上的网关)网络层以上的中继系统:网关(gateway)
现在说的 网关 指的是路由器的接口地址。
当中继系统是 集线器或网桥是,一般并不称之为网络互连,因为这仅仅是将一个网络扩大了,本质上还是一个网络。互联网都是指用路由器进行互连的网络。
由于历史原因,许多有关 TCP/IP 的文献将网络层使用的路由器称为网关。
网关
网关也就是路由器接口地址。路由器接口使用的地址可以是本网段中任何一个地址,不过通常使用该网段的第一个可用(1)的地址或最后一个可用(254)的地址,这是为了尽可能避免和网络中的计算机地址冲突。
如果一间教室里的人是数据包的话,网关就相当于是教室的门。
网关就是到其他网段的路由器接口
不配置网关无法访问到其他网段,也就无法上网,但可以访问本网段的计算机通信
一般情况下,路由器的不同接口必须配置成不同网段的地址
虚拟互连网络的意义:
所谓的虚拟互连网络也就是逻辑互连网络,意思是互连起来的各种物理网络的异构性本来是客观存在的,当时我们利用 IP 协议就可以使这些性能各异的网络从用户角度开起来好像是一个统一的网络。
使用 IP 协议的虚拟互连网可简称为 IP 网。
使用虚拟互连网的好处是:当互联网上的主机进行通信时,就好像是在一个网络上通信一样,而看不见互连的各具体的网络异构细节。
网络层协议 IP 是 TCP/IP 体系中最主要的协议之一。
与 IP 协议配合使用的还有四个协议:
- 地址解析协议 ARP(Address Resolution Protocol)
- 逆地址解析协议 RARP(Reverse Address Resolution Protocol)
- Internet 控制报文协议 ICMP(Internet Control Message Protocol)
- Internet 组管理协议 IGMP(Internet Group Management Protocol)
ARP 协议负责解析 MAC 地址,ICMP 协议负责报告网络故障,比如 ping 一个地址不通的原因
4.3、IP 地址(重点)
4.3.1、学习 IP 地址的预备知识
二进制 | 十进制 | 二进制 | 十进制 |
---|---|---|---|
1 | 1 | 10000000 | 128 |
10 | 2 | 11000000 | 196 |
100 | 4 | 11100000 | 224 |
1000 | 8 | 11110000 | 240 |
10000 | 16 | 11111000 | 248 |
100000 | 32 | 11111100 | 252 |
1000000 | 64 | 11111110 | 254 |
10000000 | 128 | 11111111 | 255 |
4.3.2、MAC 地址
举例:A 主机要和 F 主机进行通信
数据包的目标 IP 地址决定了数据包最终到达哪一个计算机,而目标 MAC 地址决定了该数据包下一跳要给谁,不一定是终点。
- 交换机是基于数据帧的 MAC 地址转发数据帧,路由器是基于数据包的 IP 地址转发数据包;
- IP 数据包在传输过程中不变,而经过网络设备的数据帧要用新的 MAC 地址重新封装;
- MAC 地址决定了数据帧下一跳给哪个设备接收,而 IP 地址决定了数据包的起点和终点;
一个应用
在本网段可以使用基于 MAC 地址控制代理服务器来上网
当主机 C、B 给主机 A 发送上网请求时,会携带源 MAC 地址,此时可以控制上网的 MAC 地址;
但当控制其他网段上网时,例如主机 E 给主机 A 发送上网请求,发送给 A 的源 MAC 地址为:M1,也就是路由器接口的地址,无法使用 MAC 地址来控制其他网段的计算机上网请求。
基于 MAC 地址控制代理服务器只能控制本网段的计算机;
要想控制其他网段的需要基于 IP 地址控制代理服务器;
4.3.3、IPV4 地址的组成
32 位的二进制作为 IPV4 地址,其分为两部分,网络部分和主机部分。就像电话号码有区号和电话号一样。
- 计算机的IP地址也有两部分组成
- 一部分为网络标识(Network ID),一部分为主机标识(Host ID),同一网段的计算机网络部分相同;
- 路由器连接不同网段,负责不同网段之间的数据转发;
- 交换机连接的是同一网段的计算机。
- 计算机在和其他计算机通信之前,首先要判断目标IP地址和自己的IP地址是否在一个网段,这决定了数据链层的目标MAC地址是目标计算机的还是路由器接口的MAC地址。
4.3.4、IPV4 地址格式
- IPV4 地址用 32 位二进制来表示,也就是 32 比特,换算成字节,就是 4 个字节。
- 这些位通常被分割为 4 个部分,每一部分8位二进制,中间使用符号“.”分开,分成4部分的二进制地址
- 10101100.00010000.00011110.00111000, IP地址经常被写成十进制的形式,于是,上面的IP地址可以表示为“172.16.30.56”。
- IP地址的这种表示法叫做“点分十进制表示法”。
4.3.5、IPV4 地址的分类
IP 地址分为:网络部分和主机部分;
主机部分不能全为 0 或 1(二进制),主机部分全为 0 代表这是一个网段,全为 1 代表这是一个广播地址,发的数据包都能收到
因此,对此 C 类地址而言,主机部分可用的地址的范围为:1~254
类型 | IP 地址 | 子网掩码 |
---|---|---|
A | 1 - 127 | 255.0.0.0 |
B | 128 - 191 | 255.255.0.0 |
C | 192 - 223 | 255.255.255.0 |
D | 224 - 239 | 无子网掩码 |
E | 240 - 254 | 无子网掩码 |
4.3.6、公网地址和私网地址
公网地址
-
公有地址分配和管理由Inter NIC(Internet Network Information Center 因特网信息中心)负责。各级ISP使用的公网地址都需要向Inter NIC提出申请,有Inter NIC统一发放,这样就能确保地址块不冲突。
-
公网地址全球统一规划,网段不能冲突和叠加。
私网地址
-
创建 IP 寻址方案的人也创建了私网IP地址。这些地址可以被用于私有网络,在Internet没有这些IP地址,Internet上的路由器也没有到私有网络的路由表。
-
私网地址访问 Internet 需要 NAT 或 PAT
4.3.7、保留的地址
网络号 | 主机号 | 源地址使用 | 目的地址使用 | 代表的意思 |
---|---|---|---|---|
0 | 0 | 可以 | 不可 | 在本网络上的本主机(见 6.6 节 DHCP 协议) |
0 | host-id | 可以 | 不可 | 在本网络上的某台主机 host-id |
全 1 | 全 1 | 不可 | 可以 | 只在本网络上进行广播(各路由器均不转发) |
net-id | 全 1 | 不可 | 可以 | 对 net-id 上的所有主机进行广播 |
几个特殊的 IP地址
# 本地环回地址,访问改地址不会产生网络流量
127.0.0.1
# 回送地址(127.x.x.x)是本机回送地址(Loopback Address),即主机IP堆栈内部的IP地址。
# Windos系统把地址设置成自动分配以后,而没有给它分配地址,自己产生的凑合用的IP地址,不能访问其他网段,无法上网
169.254.0.0:169.254.0.0-169.254.255.255
# 保留的私网地址:在互联网上,这些地址没有给服务器来用,可以让企业、政府、学校来用
# private address
# 1个A类网络
10.0.0.0——10.255.255.255
# 16个B类网络
172.16.0.0 —— 172.31.255.255
# 256个C类网络
192.168.0.0 —— 192.168.255.255
# 如果计算机的IP地址和网络中的其他计算机地址冲突,使用ipconfig命令看到的就是0.0.0.0,子网掩码也是0.0.0.0
0.0.0.0
4.3.8、子网掩码的作用
子网掩码(Subnet Mask)又叫网络掩码、地址掩码,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网以及哪些位标识的是主机的位掩码。
子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。
也就是说通过 IP 地址和 子网掩码 做按位与运算,来判断 IP 地址在哪个网段;
如果 源地址 和 目的地址 在同一个网段,把数据包直接给目的地,解析对方的 MAC 地址;否则的话,给路由器,用路由器的 MAC 地址来封装,让路由器转。
- A类地址默认子网掩码:255.0.0.0
- B类地址默认子网掩码:255.255.0.0
- C类地址默认子网掩码:255.255.255.0
使用自己的子网掩码计算机自己所在的网段。
子网掩码和 IP 地址做二进制与运算的结果是:主机位归零,只留下网络号
同一个网段的中的计算机子网掩码相同,计算机的网关对于本网段的计算机就相当于是出口,对于其他网段的计算机就相当于是入口。
4.3.9、子网掩码另一种表示方法——CIDR
- 等长子网划分和变长子网划分,打破了IP地址“类”的概念,子网掩码也打破了字节的限制,这种子网掩码被称为VLSM(Variable Length Subnet Masking,可变长子网掩码)
- 这种方式的也可以使得Internet上的路由器路由表大大精简,被称为CIDR(无类域间路由,Classless Inter-Domain Routing),子网掩码中1的个数被称为CIDR值。
二进制子网掩码 | 子网掩码 | CIDR值 |
---|---|---|
11111111. 00000000. 00000000.00000000 | 255.0.0.0 | /8 |
11111111. 10000000. 00000000.00000000 | 255.128.0.0 | /9 |
11111111. 11111111. 10000000.00000000 | 255.255.128.0 | /17 |
11111111. 11111111. 11000000.00000000 | 255.255.192.0 | /18 |
使用 CIDR 时,路由表中的每个项目有 “网络前缀” 和 “下一跳地址” 组成。
在查找路由表时可能会得到不止一个匹配结果。
应该先判断子网掩码最长的那个路由 ——最长前缀匹配(最长匹配,最佳匹配)
因为网络部分越长,主机部分越短,路由也就越具体(more specific)
CIDR 地址块
- 128.14.32.0/20 表示的地址块共有 212 个地址块(因为
斜线后面的 20 是网络前缀的位数
,所以这个地址的主机号是 12 位) - 这个地址块的起始地址是:128.14.32.0
- 在不需要指出地址块的起始地址时2,也可将这样的地址块简称为:“
/20 地址块
” - 128.14.32.0/20 地址块的最小地址:128.14.32.0
- 128.14.32.0/20 地址块的最大地址:128.14.47.255
4.3.10、IP 数据包(报)格式
-
IP 数据包首部的格式能够说明 IP 协议都具有什么功能。
-
一个 IP 数据报由首部和数据两部分组成。
-
首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。
-
在首部的固定部分的后面是一些可选字段,其长度是可变的。
IP 数据包的固定部分
- 版本(Version)——占 4 位,指 IP 协议的版本。
- 目前的 IP 协议版本号为 4 (即 IPv4)。
- 首部长度(Header Length)——占4位,可表示的最大十进制数值是15。请注意,这个字段所表示数的单位是32位二进制数(即一个单位4个字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。
- 区分服务(Differentiated Services)——配置计算机给特定应用程序的数据包添加一个标志,然后再配置网络中的路由器优先转发这些带标志的数据包,在网络带宽比较紧张的情况下,也能确保这种应用的带宽有保障,这就是区分服务,为这种服务确保服务质量(Quality of Service,QoS)。
- 在一般的情况下都不使用这个字段,默认值:0x00
- 总长度(Total Length)——指 IP 首部和数据之和的长度,也就是数据包的长度,单位为字节。总长度字段为16 位,因此数据包的最大长度为216-1=65535 字节。实际上传输这样长的数据包在现实中是极少遇到的。
- 总长度必须不超过最大传送单元 MTU。
- 标识(Identification) ——占 16 位。IP 软件在存储器中维持一个计数器,每产生一个数据包,计数器就加 1,并将此值赋给标识字段。但这个“标识”并不是序号,因为 IP 是无连接服务,数据包不存在按序接收的问题。当数据包由于长度超过网络的 MTU 而必须分片时,同一个数据包被分成多个片,这些片的标识都一样,也就是数据包这个标识字段的值就被复制到所有的数据包分片的标识字段中。相同的标识字段的值使分片后的各数据包片最后能正确地重装成为原来的数据包。
- 标志(Flags) ——用来告诉后面的数据部分是不是分片。占3位,但目前只有两位有意义。标志字段中的最低位记为 MF(More Fragment)。MF = 1 即表示后面“还有分片”的数据包。MF = 0 表示这己是若干数据包片中的最后一个。标志字段中间的一位记为 DF(Don’t Fragment),意思是“不能分片”。只有当 DF = 0 时才允许分片。
- 片偏移(Fragment offset)——占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍。
举例:
- 一数据报的总长度为 3820 字节,其数据部分的长度为 3800 字节(使用固定首部),需要分片为长度不超过 1420 字节的数据报片。
- 因固定首部长度为 20 字节,因此每个数据报片的数据部分长度不能超过 1400 字节。
- 于是分为 3 个数据报片,其数据部分的长度分别为 1400、1400 和 1000 字节。
- 原始数据报首部被复制为各数据报片的首部,但必须修改有关字段的值。
- 生存时间(Time to live, TTL)——占 8 位,Ping ip 或者网址,经过每个路由器都至少要把 TTL 值减一,TTL 通常表示包在被丢弃前最多能经过的路由器个数。当记数到 0 时,路由器决定丢弃该包,并发送一个 ICMP报文给最初的发送者。
# 一直ping,直到指定的主机停机
ping www.baidu.com -t
# 指定数据包经过几个路由器
ping www.baidu.com -i TTL
- 协议(Protocol)——占 8 位,就是一个数字,用来指出此数据报携带的数据使用何种协议,以便目的主机的网络层知道应将数据部分上交给那个处理过程。
- 首部校验和(Header checksum)——占16位,这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。
- 源地址(Source)
- 目的地址(Destination)
IP 数据包的可变部分
- IP 首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。
- 选项字段的长度可变,从 1 个字节到 40 个字节不等,取决于所选择的项目。
- 增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。
- 实际上这些选项很少被使用。
4.4、子网划分(重点)
4.4.1、子网简介
子网划分,就是借用现有网段的主机位做子网位,划分出多个子网。
子网划分时,子网地址范围不可重叠。
子网划分分为:
- 等长子网划分
- 变长子网划分
子网划分的2个任务:
- 确定子网的开始部分和结束部分,也就是确定子网的地址范围
- 确定子网掩码,进行移位操作,也就是确定子网掩码的长度
等长子网划分的时候,子网掩码都一样;变长子网划分的时候,子网掩码不一样;
等长子网划分就是将一个网段等分成多个网段,也就是等分成多个子网。
以下这 2 个地址不能分配给计算机:
-
每个子网的第一个地址——本子网的网段地址
-
每个子网的最后一个地址——本子网的广播地址
4.4.2、等长子网划分
将一个 C 类网络(192.168.0.X)等分两个子网
- A 和 B 两个子网的子网掩码都为 255.255.255.128。
- A 子网的可用地址范围为:192.168.0.1 ~ 192.168.0.126
- 192.168.0.0:A 子网网段地址
- 192.168.0.127:A 子网广播地址
- A 子网的广播地址:
- B 子网的可用地址范围为:192.168.0.129 ~ 192.168.0.254
- 192.168.0.128:B 子网网段地址
- 192.168.0.255:B 子网广播地址
将一个 C 类网络等分四个子网
要想分成4个子网,你需要将子网掩码往右移动两位,这样第1位和第2位就变为网络位。你就可以分成4个子网,第1位和第2位为00是A子网,01是B子网,10是C子网,11是D子网。
- ABCD 子网的子网掩码为:255.255.255.192
-
A 子网的可用地址范围为:192.168.0.1 ~ 192.168.0.62
- 192.168.0.0:A 子网网段地址
- 192.168.0.63:A 子网广播地址
-
B 子网的可用地址范围为:192.168.0.65 ~ 192.168.0.126
- 192.168.0.4:B 子网网段地址
- 192.168.0.127:B 子网广播地址
-
C 子网的可用地址范围为:192.168.0.129 ~ 192.168.0.190
- 192.168.0.128:C 子网网段地址
- 192.168.0.191:C 子网广播地址
-
D 子网的可用地址范围为:192.168.0.193 ~ 192.168.0.254
- 192.168.0.192:A 子网网段地址
- 192.168.0.255:A 子网广播地址
将一个 C 类网络等分八个子网
把一个 C 类网络等分成 8 个子网,子网掩码需要往右移 3 位。才能划分出 8 个子网,第 1 位、第 2 位和第 3 位都变成网络位。
子网掩码为:255.255.225.224
点到点网络的子网掩码最好是 252
D 网段可用地址范围为:192.168.0.1 ~ 192.168.0.3
D 网段进行了 6 次移位操作,因此子网掩码向后移动 6 位。
128 --> 192 –> 224 –> 240 –> 248 –> 252
点到点网络的十进制子网掩码是:255.255.255.252
点到点网络的二进制子网掩码是 30 位(子网掩码的最大长度)
划分子网的规律:遵循除 2 的规律,除一次 2,子网掩码增加一位 1
4.4.3、变长子网划分
- 每个子网的子网掩码取决于该地址块是除了几次 2 得到的。
- 除一次 2,子网掩码增加一位 1。
规律:如果一个子网地址块是原来网段的 12n12n,子网掩码就在原网段的基础上后移 nn 位,不等长子网,子网掩码也不同。
变长子网的练习:
解答草图:
将一个 B 类网络等分成两个子网
和对 C 类网络的划分方法一致!
4.4.4、判断IP地址所属的网段
- IP地址中主机位归 0 就是该主机所在的网段
判断 192.168.0.101/26 所属的子网?
判断 192.168.0.101/27 所属的子网?
判断一个地址属于哪个网段:
4.5、超网合并网段
4.5.1、合并两个网段
某企业有一个网段,该网段有 200 台计算机,使用 192.168.0.0 255.255.255.0 网段,后来计算机数量增加到 400 台。
有没有更好的办法,让这两个 C 类网段的计算机认为在一个网段?
这就需要将 192.168.0.0/24 和 192.168.1.0/24 两个 C 类网络合并。
合并之后,IP 地址例如 192.168.0.255/23 就可以给计算机使用。
规律:子网掩码往左移1位,能够合并两个连续的网段,但不是任何连续的网段都能合并。
不是任何连续的网段都能合并
192.168.1.0/24 和 192.168.2.0/24 两个网段就不能通过向前移动一位子网掩码而合并。
移动两位能够合并成一个网段,实际上合并了 4 个网段。
哪些连续的网段能够合并
判断两个子网是否能够合并。
结论:判断连续的 2 个网段是否能够合并,只要第一个网络号能被 2 整除,就能够通过左移 1 位子网掩码合并。
4.5.2、合并四个网段
判断4个网段是否能合并
结论:判断连续的 4 个网段是否能够合并,只要第一个网络号能被 4 整除,就能够通过左移 2 位子网掩码合并将这 4 个网段合并。
依次类推,要想判断连续的 8 个网段是否能够合并,只要第一个网络号能被 8 整除,这 8 个连续的网段就能够通过左移 3 位子网掩码合并。
4.5.3、网段合并的规律
网段合并的规律,子网掩码左移 1 位能够将能够合并两个网段,左移 2 位,能够合并四个网段,左移 3 位,能够合并 8 个网段。
4.5.4、判断一个网段是超网还是子网
- 通过左移子网掩码合并多个网段,右移子网掩码将一个网段划分成多个子网,使得IP地址打破了传统的 A 类、B 类、C 类的界限。
- 判断一个网段到底是子网还是超网,就要看该网段是 A 类网络、还是 B 类网络、还是 C 类网络,默认A类子网掩码 /8,B 类子网掩码是 /16,C 类子网掩码是 /24。
- 如果该网段的子网掩码比默认子网掩码长,就是子网,如果该网段的子网掩码比默认子网掩码短,则是超网。
4.6、ARP 协议
4.6.1、ARP & RARP 简介
ARP:将以太网中的计算机的 IP 地址解析成 MAC 地址,靠广播,存在安全性隐患
RARP:计算机的 IP 地址默认是自动获得的,计算机请求 IP 地址的过程(地址请求)就是用自己的 MAC 地址来请求一个 IP 地址,叫做逆向 ARP
点到点链路使用PPP协议,不需要ARP协议。
4.6.2、ARP 欺骗
ARP 协议是建立在网络中各个主机互相信任的基础上的,计算机 A 发送 ARP 广播帧解析计算机 C 的 MAC 地址,同一个网段中的计算机都能够收到这个 ARP 请求消息,任何一个主机都可以给计算机 A 发送 ARP 应答消息,可以告诉计算机 A 一个错误的 MAC 地址,计算机A收到 ARP 应答报文时并不会检测该报文的真实性,就会将其记入本机 ARP 缓存,这就存在一个安全隐患 -- ARP 欺骗。
4.6.3、ARP 欺骗的应用
软件:P2P终结者
功能:P2P终结者可以控制本局域网内的上传或下载的流量,也就是控制带宽大小。
举例:主要使用通过欺骗 ARP 协议来完成,当主机 A 上传或下载或者浏览网页时,会解析路由器的 IP 地址 –> MAC 地址,此时 C 主机会把它的 MAC 地址发送给 A,替换掉路由器的 MAC 地址,A 所发送的数据包都会经过 C 主机,再由 C 主机发送给统一的网关,这是所有的流量都会经过 C 主机,就可以控制主机 A 的流量大小,也就是带宽的大小。
软件:网络执法官
功能:网络执法官这个软件可以在局域网内控制:谁和谁可以通信、谁和谁不可以通信、谁可以上网,谁不可以上网。
举例:主要使用通过欺骗 ARP 协议来完成,当主机 A 想上网时,解析路由器的 IP 地址为 MAC 地址时,主机 C 上装有的网络执法官可以给主机 A 一个不存在的 MAC 地址,将路由器的 MAC 地址替换掉,当 A 目标 MAC 发送到交换机时,交换表上无此 MAC 地址,会先广播几次查找该 MAC 地址,但该 MAC 不存在,最后发送的数据包会被丢弃掉,导致无法上网或者和本局域网内的谁通信。
# 查看电脑已缓存的 MAC 地址
arp -a
arp 防火墙:把一开始接受到的 路由器 MAC 地址固定住,不允许再修改。
4.7、网络畅通的条件 & 静态路由
4.7.1、概述
数据包能去能回,网络通;不能去、去了回不来,网络不通;
数据路由:路由器在不同网段转发数据包。
跨网段通信的都叫路由
网络畅通的条件:数据包能去能回
去:沿途的路由器必须知道到目标网络的下一跳给哪个接口
回:沿途的路由器必须知道到源网络的下一跳给哪个接口
如果网络管理员添加路由表时,需要告诉路由器它没有直连的所有的网段怎么走,这叫静态路由。
可以通过指定静态路由来实现网络负载均衡
还有一点就是:路由器关心的是网段(网络),而不是具体的 IP 地址!
4.7.2、route 命令
使用背景
需要接入两个网络,一个是部署环境所在内网环境,这个环境是上不了外网, 外网环境很可能是一个无线网络。如果两者都连接上,很可能导致有一方不能起作用,即外网或内网上不了,常常需要使用繁琐的“禁用网络连接”、“启用网络连接”的操作来进行内外网的切换,甚是麻烦。
为了解决这个问题,可以使用 route 命令来使得同时内外网都可用。
route 命令是在本地 IP 路由表中显示和修改条目的网络命令
Windows 系统的网关就是一个默认路由!
# 查看 Windows 系统的路由表
route print [或 netstat -r ]
# 向路由表中添加默认路由
route add 0.0.0.0 mask 0.0.0.0 192.168.2.1
# 向路由表中删除默认路由
route delete 0.0.0.0 mask 0.0.0.0
# 查看 route 的更多命令
route /?
在计算机中添加路由表的意义:
如果一台计算机 PC1 有两个网关,网关 G1 指向 Internet,网关 G2 指向交换机,当互联网上的另一台计算机 PC2 ping PC1 时,会出现时而通时而不通的规律现象。
这是因为 PC2 发送给 PC1 的数据包,但 PC1返回给 PC2 时,因为网关是本网段的一个出口(换句话说就是到其他网段的一个入口),有两个网关,所以有两条路径可走,考虑到计算机的负载均衡,所以返回给 PC2 的数据包有一半会走网关 G2,网关 G2 连接的交换机收到包后,查找交换表,根据 ARP 协议解析,发现没有走向这个网段的接口,就丢包!
解决的办法是,给一台计算机只添加一个网关,这个网关通向 Internet,而通向局域网的那个网关不设置成默认网关,修改为默认路由。只有当发送给局域网网段计算机时才会走默认路由,其余都会走默认网关。
也就是一台计算机上最好只有一个网关!
4.7.3、网络排错
-
检查症状
-
方向:从底层 --> 高层
-
网线连接是否正常
-
查看本地连接是否有收到和发送的数据包
- 重做网线
- 重新安装网卡驱动
-
MAC 地址冲突
-
检查 IP 地址 ipconfig
-
查看计算机的子网掩码、网关、DNS
-
ping www.baidu.com 测试域名解析是否成功
-
telnet www.baidu.com 80 测试是否能够访问 Web 服务
-
如果打不开个别网站,需要检查 C:\Windows\System32\drivers\etc\hosts 文件中的记录
-
不能获得 IP 地址,命令提示符查看服务 services.msc DHCPclient 服务必须启动
4.7.4、全球最大的网段
- 如果想让一个网段包括全部的 IP 地址,这就要求子网掩码短到极限,最短就是 0,子网掩码变成了 0.0.0.0,这就意味着该网段的 32 位二进制的 IP 地址都是主机位,任何一个地址都属于该网段。因此 0.0.0.0 子网掩码 0.0.0.0网段包括了全球所有 IPv4 地址,也就是全球最大的网段,换一种写法就是 0.0.0.0/0。
- 在路由器上添加添加到 0.0.0.0 mask 0.0.0.0 网段的路由,就是默认路由。
- 任何一个目标地址都与默认路由匹配,根据前面讲的“最长前缀匹配”算法,默认路由是在路由器没有为数据包找到更为精确匹配的路由,最后匹配的一条路由。
4.8、ICMP 协议
4.8.1、ICMP 协议简介
- 为了提高 IP 数据包交付成功的机会,在网际(络)层使用了网际控制报文协议。
- ICMP——Internet Control Message Protocol。
- ICMP 允许主机或路由器报告差错情况和提高有关异常情况的报告。
- ICMP 不是高层协议,而是 IP 层的协议。
- ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。
- ICMP 报文是在IP数据报内部被传输的,它封装在IP数据报内。
- ICMP 协议是用于在 IP 主机、路由器之间传递控制消息。
- 控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
- ICMP 报文通常被IP层或更层协议(TCP 或 UDP)使用。一些 ICMP 报文把差错报文返回给用户进程。
4.8.2、ICMP 报文的种类
ICMP 报文的种类分为 2 种:
- ICMP 询问报文
- 回送请求和回答报文
- 时间戳请求和回答报文
- ICMP差错报告报文
- 终点不可达
- 源点抑制(Source quench)
- 时间超过
- 参数问题
- 改变路由(重定向,Redirect)
ICMP报文类型和代码
(1)终点不可到达:当路由器或主机没有到达目标地址的路由时,就丢弃该数据包,给源点发送终点不可到达报文。
(2)源点抑制:当路由器或主机由于拥塞而丢弃数据包时,就会向源点发送源点抑制报文,使源点知道应当降低数据包的发送速率。
(3)时间超时:当路由器收到生存时间为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把己收到的数据报片都丢弃,并向源点发送时间超过报文。
(4)参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
(5)改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。
4.8.3、ICMP 报文的格式
ICMP 报文由 首部 和 数据部分 组成。首部为定长的 8 个字节,前 4 个字节是统一的格式,共有三个字段:即类型(Type)、代码(Code)和检验和(Checksum)。后 4 个字节随报文类型的不同有所差异。
ICMP 报文 的一般格式如图所示
ICMP报文的前4个字节是统一的格式,共有三个字段:即类型、代码和检验和。接着4个字节的内容与ICMP的类型有关。
ICMP 差错报告报文的数据字段的内容,也就是 ICMP 协议与 IP 协议的封装关系:
ICMP 差错报告报文 - TTL 过期
ICMP 差错报告报文 - 目标主机不可到达
ICMP 差错报告报文 - 路由重定向
ICMP 差错报告报文 - 给程序返回错误消息
4.8.4、tracert & pathping 命令
-
ping:用来检测目标主机的连通性并报告不连通的原因
-
确认你想要去的地方是否可达
- 可达:显示丢包率和网络延迟
- 不可达:原因是什么?
-
tracert:用来显示数据包到达目标主机所经过的路径,并显示到达每个节点的时间
- 即了解你想去的地方如何走,也就是经过了哪些路由?
-
pathping:用来跟踪在源和目标之间的中间跃点处网络滞后和网络丢失的详细信息
- 确认你想要去的地方是否可达?
- 可达:显示丢包率和网络延迟
- 不可达:原因是什么?
- 如果可达,那么所走的路径是什么,也就是经过了哪些路由?
- 确认你想要去的地方是否可达?
使用 ping 能够判断网络通还是不通,比如请求超时,但不能判断什么位置出现的网络故障造成的请求超时。
tracert(路由跟踪) 命令原理
tracert 程序的设计是利用 ICMP 及 IP header 的 TTL(Time To Live)字段。
-
首先,tracert 送出一个 TTL 是 1 的 IP datagram(其实,每次送出的为 3 个 92 字节的包,包括源地址,目的地址和包发出的时间标签)到目的地,当路径上的第一个路由器(router)收到这个 datagram 时,它将 TTL -1。
-
此时,TTL 变为 0 了,所以该路由器会将此 datagram 丢掉,并送回一个「ICMP time exceeded」消息(包括发 IP 包的源地址,IP包的所有内容及路由器的 IP 地址),tracert 收到这个消息后,便知道这个路由器存在于这个路径上。
-
接着 tracert 再送出另一个 TTL 是 2 的 datagram,发现第 2 个路由器...... tracert 每次将送出的 datagram 的TTL 加 1 来发现另一个路由器,这个重复的动作一直持续到某个datagram 抵达目的地。当 datagram 到达目的地后,该主机并不会送回 ICMP time exceeded 消息,因为它已是目的地了。
tracert 192.168.2.1
pathping
pathping(探路) 是一个基于 TCP/IP 的命令行工具,该命令可以跟踪数据包从源主机到目标主机所经过的路径,能够查出故障点,并且能够计算路由器转发丢包率和链路丢包率以及网络延迟,据此能够判断出网络拥塞情况。
pathping 跟踪数据包路径的原理和 tracert 命令基本一样,但 pathping 每次会发送一个请求数据包。
pathping www.baidu.com
4.9、动态路由协议
-
动态路由协议能够动态选择最佳路径
-
动态路由协议会随着网络的变化重新生成到各个网络的路由,当最佳路径没有了,就会从备用路径中重新选择一个最佳路径
-
IP 协议组成:RIP 协议、OSPF 协议、BGP 协议
4.9.1、RIP 协议简介
RIP 协议 最早 周期广播 每隔 30 秒 根据跳数选择 最远 15 跳 超过 15 跳就认为不可达
- 路由信息协议(RIP,Routing Information Protocol)是一个真正的距离矢量路由选择协议。
- 内部网关协议
- 它每隔 30 秒就送出自己完整的路由表到所有激活的接口。
- RIP 协议选择最佳路径的标准就是跳数,认为到达目标网络经过的路由器最少的路径就是最佳路径。
- 默认它所允许的最大跳数为15 跳,也就是说16 跳的距离将被认为是不可达的。
- 在小型网络中,RIP 会运转良好,但是对于使用慢速 WAN 连接的大型网络或者安装有大量路由器的网络来说,它的效率就很低了。
工作原理
4.9.2、OSPF 协议简介
-
开放式最短路径优先(OSPF,Open Shortest Path First)
-
内部网关协议
-
开放式动态路由协议
- “开放”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。
-
度量值:带宽大小
- 支持多区域,触发式更新(宕机、添加新的网段……)
- 如果不划分区域,全国的路由器都交换链路状态,很大。
- 和 IP 地址的规划息息相关
- 支持二级区域,不支持三级区域
- 三个表
- 邻居表,局域网每隔 2s(互联网每隔 10s) 会发送一个小的 hello 包,来确认邻居是否还存活;
- 链路状态表,实际上是交换邻居表,每个路由器获得所有的邻居表;
- 路由表,计算,不会产生回路;
三个要点:
- 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。
- 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。
- “链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量” (metric)。
- 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。
OSPF 的一些特点:
- OSPF 不用 UDP 而是直接用 IP 数据报传送。
- 支持可变长度的子网划分和无分类编址 CIDR。
反转掩码:0 --> 1,1 --> 0
信任程度:静态路由(管理员告诉的)> OSPF > RIP
4.9.3、BGP 协议(了解)
- 边界网关协议(BGP,Border Gateway Protocol)
- 外部网关协议
- 自制系统之间选择路径 BGP 协议,每个自制系统指定 BGP 发言人(路由器),通过到某个网络需要通过哪些自制系统。
BGP 协议的特点:
- BGP 协议交换路由信息数量不是很多
- BGP 发言人数目不多,路由选择相对简单
- BGP 协议支持 CIDR(变长子网掩码)
- BGP 建立时,交换整个路由表,但之后之交换变化部分
4.10、VPN 技术
4.10.1、VPN 简介
解决的问题:如何在外网去处理只有在内网可以处理的事情。
- 虚拟专用网络(VPN,Virtual Private Network)可以通过特殊的加密的通讯协议在连接在 Internet 上的位于不同地方的两个或多个企业内部网之间建立一条专用的通讯线路,其核心就是利用公用网络建立虚拟私有网;
- 如远程访问数据包封装示意图所示,远程用户可以通过 Internet 建立到企业内部网络的 VPN 连接,这样该用户就可以像是在内网一样访问企业内部网络的任意计算机。
- RAS:remote access server,远程访问服务器,也就是 VPN 服务器
远程访问 VPN 示意图:
VPN 拨号拨通了相当于把计算机搬到内网去了!
本地地址——仅在机构内部使用的 IP 地址,可以由本机构自行分配,而不需要向互联网的管理机构申请。
全球地址——全球唯一的 IP 地址,必须向互联网的管理机构申请。
问题:在内部使用的本地地址就有可能和互联网中某个 IP 地址重合,这样就会出现地址的二义性问题。
4.10.2、站点间 VPN
用隧道技术实现虚拟专用网
4.11、NAT & PAT 技术
网络地址转换(NAT,Network Address Translation)
- 优点
- 节省公网 IP 地址
- 内网安全
- 缺点
- 比路由慢
端口地址转换(PAT,Port Address Translation)
使用 NAT 技术内网可以访问外网,但外网无法访问内网。
假设局域网中有 10 台计算机,通过 NAT 要访问外网,公网地址必须要 10 个公网地址,才能进行一对一的替换,但再加上 PAT,把源端口进行替换,就可以使 10 台计算机通过一个公网地址,不同的多个端口去访问外网!
PAT 可以看做是 NAT 的一部分。
PAT 理论上可以同时支持(65535 - 1024)= 64511 个连接会话。但实际使用中由于设备性能和物理连接特性是不能达到的,CISCO 的路由器 NAT 功能中每个 Public IP 最多能有效地支持大约 4000 个会话。
互联网上的路由器不知道到私网地址怎么走
Windows 系统是可以做路由器的,也可以做地址转换
端口映射:允许 Internet 上的计算机访问企业内网的某个服务。
# 查看目标端口和源端口建立的会话
netstat -n
4.12、IGMP 协议
互联网组管理协议(IGMP,Internet Group Management Protocol)
组播 = 多播
- 点到点通信
- 广播
- 多播
IGMP 协议作用:在路由器接口上配置,用来扫描本网段是否还有计算机属于某个多播组。