之前的那篇文章中的作业
部门 | 人数 | 地址 |
---|---|---|
项目部 | 58 | |
研发部 | 100 | |
市场部 | 27 | |
财务部 | 15 |
可分配的地址: 194.2.3.0/24
研发部: 100人 — 该子网下满足 100人 — 需
≥100(102-2)
个地址。(2^x-2≥100) x=主机位,需要使用7个主机位,借1位
此时划分为俩个子网:194.2.3.0 000 0000/25 -> 194.2.3.0/25 网络地址: 194.2.3.0 000 0000/25 -> 194.2.3.0/25 广播地址: 194.2.3.0 111 1111/25 -> 194.2.3.127/25 之后可分配地址 194.2.3.1 000 0000/25 -> 194.2.3.128/25
把小的网段
194.2.3.0/25
给研发部用
之后可分为地址194.2.3.128/25
项目部: 58人 — 该子网下满足58人 — 需
≥58(60-2)
个地址。(2^x-2≥58) x=主机位,需要使用6个主机位,在研发部基础上再借1位
此时划分为俩个子网:194.2.3.1 0 00 0000/26 -> 194.2.3.128/26 网络地址: 194.2.3.1 000 0000/26 -> 194.2.3.128/26 广播地址: 194.2.3.1 011 1111/26 -> 194.2.3.191/26 之后可分配地址 194.2.3.1 1 00 0000/26 -> 194.2.3.192/26
市场部: 27人 — 该子网下满足27人 — 需
≥27(29-2)
个地址。(2^x-2≥27) x=主机位,需要使用5个主机位,在项目部基础上再借1位
此时划分为俩个子网:194.2.3.1 1 0 0 0000/27 -> 194.2.3.192/27 网络地址: 194.2.3.110 0 0000 -> 194.2.3.192/27 广播地址: 194.2.3.110 1 1111 -> 194.2.3.223/27 之后可分配地址 194.2.3.1 1 1 0 0000/27 -> 194.2.3.224/27
财务部: 15人 — 该子网下满足15人 — 需
≥15(29-2)
个地址。(2^x-2≥15) x=主机位,需要使用5个主机位,无需借位194.2.3.1 1 1 0 0000/27 -> 194.2.3.224/27 网络地址: 194.2.3.1 1 1 0 0000/27 -> 194.2.3.224/27 广播地址:194.2.3.1 1 1 1 1111/27 -> 194.2.3.255/27
总结: 每个部门在不同的网段下可以使用VLSM(可变掩码)技术
部门 | 人数 | 地址 |
---|---|---|
项目部 | 58 | 194.2.3.128/26 |
研发部 | 100 | 194.2.3.0/25 |
市场部 | 27 | 194.2.3.192/27 |
财务部 | 15 | 194.2.3.224/27 |
注意: 网络地址不是网关
我们所说的网络地址,它其实只是出现在未来你会在路由表中看到它,作为我们未来去往目的网段的一种标识存在;而网关它指的是是我们未来进行跨网段数据访问的时候,你的数据首先要到达的一个目的地址,需要让网关帮你去进行转发
CIDR — 无类域间路由/超网
跟VLSM逻辑相反的技术,VLSM是由网络位向主机位借位,它可以把一个大网段分成多个不同的子网。
以后数据进行转发的时候会根据不同的子网来进行不同的目的地址的转发 一条数据进来如果借了6位有2^6=64
个网段进行查询,转发速度会比较慢。面向子网数量非常多的情况下,它其实对我们的数据转发会更慢
优点: 子网的数量越多,它会节约我们的IP地址,在足够的IP地址的情况下我们又能可以划分成不同网段
缺点: 转发效率慢
CIDR: 它可以将我们多个小的网络对外界通告的时候以一个大的地址范围把它概括掉,以此优化我们未来向运营商通告的时候我们表项的数量。概括就是:将多个小的子网,用一个相对更大的地址范围进行概括,以此实现表项的优化。
有一条路由在我查询表项的时候匹配到设备,你告诉你能,我就把数据发给你,但数据到你这你却不知道怎么去往目的地那么此时就会丢包
10.24.0.0/22 -- 地址范围
0000 1010.0001 1000.0000 0000.0000 0000
子网掩码: 1111 1111.1111 1111.1111 1100.0000 0000
网络地址: 0000 1010.0001 1000.0000 0000.0000 0000 (10.24.0.0)
广播地址: 0000 1010.0001 1000.0000 0011.1111 1111 (10.24.3.255)
可用地址范围: 10.24.0.1 ~ 10.24.3.254
10.1.0.0/24
10.1.1.0/24
10.1.2.0/24
10.1.3.0/24
- 将子网转换成2进制:
0000 1010.0000 0001.0000 0000.0000 0000 -- 10.1.0.0/24
0000 1010.0000 0001.0000 0001.0000 0000 -- 10.1.1.0/24
0000 1010.0000 0001.0000 0010.0000 0000 -- 10.1.2.0/24
0000 1010.0000 0001.0000 0011.0000 0000 -- 10.1.3.0/24
- 自高向低进行对比,位数相同原封不动进行取值,一旦不同立即停止比对行为,后方全部取值为0(即便是后方还有相同位数)
0000 1010.0000 0001.0000 0000.0000 0000 -- 10.1.0.0/24
0000 1010.0000 0001.0000 0001.0000 0000 -- 10.1.1.0/24
0000 1010.0000 0001.0000 0010.0000 0000 -- 10.1.2.0/24
0000 1010.0000 0001.0000 0011.0000 0000 -- 10.1.3.0/24
相等位置0000 1010.0000 0001.0000 00
- 将相同的位数取值完毕,转换成十进制,将相同的位数取值为掩码的缩写前缀
0000 1010.0000 0001.0000 0000.0000 0000 -> 10.1.0.0/22 -- 255.255.252.0
CIDR
比如说
10.1.0.0/24
10.1.1.0/24
10.1.2.0/24
10.1.3.0/24
10.1.4.0/24
0000 1010.0000 0001.0000 0000.0000 0000 -> 10.1.0.0
0000 1010.0000 0001.0000 0001.0000 0000 -> 10.1.1.0
0000 1010.0000 0001.0000 0010.0000 0000 -> 10.1.2.0
0000 1010.0000 0001.0000 0011.0000 0000 -> 10.1.3.0
0000 1010.0000 0001.0000 0100.0000 0000 -> 10.1.4.0
则它的网络地址是0000 1010.0000 0001.0000 0 000.0000 0000 — 10.1.0.0/21
广播地址是0000 1010.0000 0001.0000 0111.1111 1111
— 10.1.7.255
地址范围:10.1.0.1~10.1.7.254
我们发现来了10.1.4.0
之后我们就没办法聚合
最优解通告
10.1.1.0/22
– 上面四条
10.1.4.0/24
– 独立出来
CIDR原则:救多不救少
CIDR的效果
之前是10.1.0.0/24
24位掩码
现在是10.1.0.0/22
22位掩码
总结
- VLSM是向右借位(公司内部组网居多,网段会少:一个地址段你要划分不同的子网)
- CIDR是向左借位(路由器上居多,它是用来减少我们路由器的表向数量,优化地址转发)
俩者可以结合使用。VLSM这样的技术是为了你在内网中节省IP地址用的;CIDR这样的技术是为了未来去优化我们广域网下设备的表向用的
ICMP
- 同网段是可以直接通讯的
- 跨网段在通讯时是不可以直接通讯的
同网段的设备怎么判断俩个设备在同一个网段下?
使用
ping
指令查看
一台设备(PC1)是IP = 192.168.1.1 子网掩码=255.255.255.128
另一台设备(PC2)是
IP = 192.168.1.2 子网掩码=255.255.255.192
在PC1上pingPC2
ping 192.168.1.2
发现在华为的模拟器ensp中可以通。通过实验现象能发现俩个地址虽然子网掩码不同但是可以进行通讯。这就涉及到通讯的时候如何去衡量俩个地址是否在同一网段(用掩码来计算),对设备来说它不知道对端的子网掩码,所谓ping就是发送一个报文进行检查的意思PC1不知道PC2的掩码,但只是知道IP地址(ping之后知道的)
- 通信时,发送端的主机会使用对方的IP+自己的掩码,进行计算,算出对方的网络地址
- 计算之后,将对方的网络地址和自己的网络地址进行对比,如果俩个网段认为相同,则认为在同一网段;不同,则认为不在同一网段
对于PC1来说网络地址
192.168.1.0/25 -- 认为的网段
对方的网络地址
192.168.1.2
0000 0010
1000 0000
最终算出来的值
192.168.1.0/25
对于PC2也是同理
PC2收到了以后也是要通过计算给PC1进行回复
数据通信讲究的就是有来有回。(数据发过去,并得到回复,才能算一次数据通讯)
对于PC2来说网络地址
.0000 0010
1100 0000
192.168.1.0/26 -- 认为的网段
对方的网络地址
192.168.1.0
0000 0001
1100 0000
最终算出来的值
192.168.1.0/26
对于PC2中认为PC1在自己的网段里
Request Timeout
在不同网段间进行通讯就会导致这个结果
192.168.1.1
255.255.255.128
192.168.1.5
255.255.255.128
PC1认为的网段192.168.1.0/25
PC2认为的网段
自己的网段:
0000 0101
1111 1100
192.168.1.4/30
对方的网段:
0000 0001
1111 1100
192.168.1.0/30
网关
按照上述案例我们知道在不同网段下,不能相互进行通讯;但是不代表以后就不通信了;我们怎么进行在不同网段下进行通讯,则需要借助网关
跨网段的数据访问就要借助网关
需要找到网关,将数据发送到网关上;网关接收到数据后转发到目的网段;目的网段姐收到请求后响应回复由于不在同一网段下不能通,所以将信息先回复到网关,由设备再次进行转发。这个就是跨网段通讯
中间的设备(网关)得有几个基本的功能:
- 至少要知道目的的网段怎么走
- 连接的主机地址需要跟它同网段(发送主机的网段和中间设备的网段需要在同网段下)毕竟不在同网段下就与不同网段下不能通讯一个道理
- 我们所说的网关地址通常都是配置在接口上的一个IP地址
这是它的一些基本概念,对于网关来说目前的这个文章学习来说只是告诉你网关这个角色是用来转发不同网段之间的数据包
重点:网关与ping的发送请求端得是同一网段
其次网关也是未来我们想离开一个网段的出口
以后跨网段进行通讯你都会先找到网关的这么一个角色,那么未来我们进行配置的时候2层的端口(注:在HCIA中不会涉及到二层端口的配置,学习VLAN的时候会用到一些,目前HCIA不会考虑到交换机上面的问题,学习路由的时候会使用到交换机,我们只需要使用交换机就行)
总结
网关:gateway
- 网关设备上连接本地网段的接口地址即为该网段的网关地址
- 网关地址是一个配置在某个设备接口上
我们会称路由器为网关其实是网关设备这个设备充当了网关;但网关严格意义上来讲是网关地址,是在一个设备的接口上的地址
网关是默认配置的还是自己配置?
未来会学到动态主机配置协议(DHCP)这个协议会自动下发我们一系列的上网参数包括网关的地址。未来我们学习的时候会接触到静态配置这个时候网关的配置就需要自己手动画配置(包括IP和子网掩码)
问题(以后会学到)
- PC怎么找到网关?
- 1.1如何与2.1进行通讯?—— 路由表 的概念
- mac地址如何封装?
Ping
ping是检测链路通断 到目的地设备的连通性
使用方式:ping+空格+目的地址
如何实现的?使用到的就是ICMP协议
ICMP
ICMP(Internet Control Message Protocol)它叫做Internet控制消息协议;它是用来检测各种差错信息检测我们网络故障诊断。是一个网络层的一个重要协议
我们发现ICMP协议在IP报头之上
IP是网络层的封装,它是3层
Ethernet II(数据链路层的封装)是2层
ICMP我们会说它是3.5层协议(它会基于网络层进行封装,IP里面会有一个字段叫做
协议字段
来标识上层用的是什么协议,ICMP就是协议号为1的,ICMP不具备传输层的功能,ICMP只不过是在数据封装时封装在了IP层之上而已,但它也属于IP层又由于它IP上层封装所以会叫它是3.5层协议)
ping功能其实是在ICMP上进行演变的;当我们ping这样的一个数据(ping地址后敲下回车)你的设备就自动完成了一套基于ICMP的封装,一ping就本地产生一个报文就开始发,目标收到就会发回复报文,最终在命令行看到ping通的现象,其实就是协议报文互相通讯的结果
所以PING就是一个检测的小工具,数据发送到目的接口通不通
报文格式
在ping的时候使用了ICMP的俩种报文
type
:类型code
:标识checksum
:校验和。目的是为了对数据的好坏进行校验,就是一个检验功能
ICMP消息类型和编码类型
类型(type) | 编码(code) | 描述 |
---|---|---|
0 | 0 | Echo Reply(回声发送) |
3 | 0 | 网络不可达 |
3 | 1 | 主机不可达 |
3 | 2 | 协议不可达 |
3 | 3 | 端口不可达 |
5 | 0 | 重定向 |
8 | 0 | Echo Request(回声请求) |
11 | 0 | ttl超时 |
ping用到的俩种一个是
8,0
,一个是0,0
如果ping80端口没有回复时,1.检查是否端口开启 2.很多不能回复的报文实际上是很多设备是不给你开启回复的
本机192.168.1.1
发送目标地址192.168.1.2
ping 192.168.1.2
出现的协议是
NO | Time | Sources | Destination | Protool | Leaght | Info |
---|---|---|---|---|---|---|
3 | 0.000000 | 192.168.1.1 | 192.168.1.2 | ICMP | 74 | Echo(ping) Request id=… |
4 | 0.000000 | 192.168.1.2 | 192.168.1.1 | ICMP | 74 | Echo(ping) Reply id=… |
5 | 0.000000 | 192.168.1.1 | 192.168.1.2 | ICMP | 74 | Echo(ping) Request id=… |
6 | 0.000000 | 192.168.1.2 | 192.168.1.1 | ICMP | 74 | Echo(ping) Reply id=… |
7 | 0.000000 | 192.168.1.1 | 192.168.1.2 | ICMP | 74 | Echo(ping) Request id=… |
8 | 0.000000 | 192.168.1.2 | 192.168.1.1 | ICMP | 74 | Echo(ping) Reply id=… |
9 | 0.000000 | 192.168.1.1 | 192.168.1.2 | ICMP | 74 | Echo(ping) Request id=… |
10 | 0.000000 | 192.168.1.2 | 192.168.1.1 | ICMP | 74 | Echo(ping) Reply id=… |
11 | 0.000000 | 192.168.1.1 | 192.168.1.2 | ICMP | 74 | Echo(ping) Request id=… |
12 | 0.000000 | 192.168.1.2 | 192.168.1.1 | ICMP | 74 | Echo(ping) Reply id=… |
- 其中
id
为标识,一次ping
发了五组
Tracert:路由追踪
对于
ping
来说是检测目的地的去往通讯的;但对于tracert
来说它能检测沿途的设备(HCIP会用到)
tracert ip地址
每经过一个设备我们的
ttl-1
注:ttl
用于避免路由环路
ttl=0
的时候数据会选择丢包并向源端发送TTL超时的信息
tracert -q number
可以修改多路径报文数量
二层查看
对于二层来说我们TTL是三层概念,按tracert这条命令来说
- 它基于了
ICMP
的封装,封装在网络层之上- TTL是三层,不存在二层能查看这个概念的,因为二层只能看到mac相关信息
ICMP不可达
网络通讯并不是一帆风顺的,未必我们发出去的数据能够到达目的地,但是我们可以根据ICMP给我们回复的不同的消息的错误信息来得知究竟是啥原因没到达目的地。
网络不可达
- 相当于我
ping
了一个报文,这个报文到达了转发设备(网关)上;但遗憾的是这个设备它也不知道去往目的地的路由,此时相当于这个目的地的网络就是网络不可达
主机不可达
-
当我们去
ping
的时候(比方目的地址是1.1.1.1)到转发设备后转发设备知道怎么走(找到设备了)但是目的的这台设备它可能不在线能转发不能回应的我们称这种为主机不可达 -
我们主机通过网络去找目的地址把数据发出去,最终找到了目的IP地址的设备但是由于未来我们会对目的主机会做一些策略(处于安全考虑,可能可以是不希望源地址ping通目标地址,我们俗称这种为禁ping。包括未来可以限制访问)
注:第一代防火钱用的是ACL;现在我们的设备都可以做安全策略,并非要防火墙
协议不可达
-
基于网络层之上会有不同的协议,像是TCP,UDP
-
我们可以通过我们本机的某项服务访问对端的某项服务;我希望发起了一个请求,但后可能我们对方压根没有开启这个协议。,网络可达,主机可达,但由于目的主机没有开启协议你去访问对端的协议失败,目的地址主机会回复协议不可达
-
对于TCP也好UDP也罢,他们都默认安装在我们设备的网卡上了
端口不可达
层层递进,越来越精确的
- TCP/IP协议栈的时候传输层会有个端口信息的概念;对于端口来说它可以去标识我们本地的某种服务
比方说一台
http 80
端口的协议去访问另一台设备的tcp 80
端口的设备;http设备服务去访问tcp设备服务,访问成功,但是tcp设备的80端口并没有对外开放,tcp设备就会回复http设备一个协议不可达;但是tcp设备对外提供了一个443端口(加密的https端口),如果去访问会给你回复一个端口不可达
总结
当你的数据发送到对端设备上(或者找到对端设备之前)如果由于网络中的种种不可达的原因导致你的数据没有发送到目的设备(或者目的设备未给你进行回复)那么此时对端设备会给你回复各种不可达报文
注意:通常对于网络设备来说,它是静止发送ICMP不可达的回复报文的。所以能难找到不可达
ttl超时
- 在讲TTL超时,每经过三层设备转发一次数据TTL值会减1,直到某一天设备收到了TTL值为1,本地值为0说明数据不能往外发了,但要向源端发送一个TTL超时的报文,这个报文也是ICMP的封装,使用的是
type值为11,code值为0
的这样的封装,它的描述就是ttl超时
重定向
- 重定向要结合路由去分析才容易明白
- 左边是公司的内部网络右边是外部网络
- 左边是公司的服务器,有着公司的应用,服务器有自己的地址;左右边分别有一台路由器,右边路由器接入了运营商的Internet也就是公司上个网都是往右边走右边回来;访问内部数据的时候会走左边
- 未来我们主机A要访问
8.8.8.8
的IP时会走右边,因为左边就只有10和20网段的地址,按理会走右边去访问Internet广域网 - 通讯是在不同网段下通讯首先主机会去找网关,图中主机默认网关是
10.0.0.100
所以我们会走右边 - 若是以10网段访问20网段,他是跨网段通讯,从图中的配置来看主机还是会走右边因为网关是跨网段处理的转发作用,但是与发送请求的本机必须要处于同一网段下,但是即便走了右边,数据到了右边的网关,网关这查我的路由表,有20网段通过10网关发出去之后就到了20的路由再访问
我们将这种路径称之为次优路径(不是最优的)
当然我们要走20路由这块才是最优,所以上图我们得避免,这就是我们ICMP重定向的作用 - 对我们数据而言先通过网关查表发现未来我想去往服务器A数据还要再从接收数据的接口还要再发,那么此时会触发ICMP重定向
- ICMP重定向,它也是报文封装的一种类型,RTB会发报文给主机A
- 当主机A接收到RTB发送的重定向的报文时报文里会告诉你你的下一次发送报文的目的地。ICMP重定向报文它是动态的有时效,重启设备就没有报文数据了,但可以在设备上主动绑定一条静态,它就会永久存在
- 未来会学到路由表,里面存的就是最优路径