文章目录
1、网络层协议
1、ip协议
-
指的标识不同设备的地址,网卡的ip地址
-
实现数据包的寻址和转发,寻址就是根据目标Ip这条路来进行转发
2、ip报文格式
- ip头部,最小是20byte,最大是40byte
-
20个字节包含了以下字段
-
ip协议的版本号,4,version
-
包头长度+可选长度的总大小,header length
-
服务类型字段,type of service,做Qos用的,将报文做一个等级分类,等级高的,转发效率就快一点,等级低的,就慢一点,根据优先级来判断,网络优化
-
报文的总长度,就是ip头部,tcp头部,用户数据这些长度
- 用总长度-ip头部 = 段的大小(用户数据+tcp)
-
TTL值,生存时间,源主机到目标主机的时间,默认值64,128,255,每经过一次路由器的话,就会减1,最终为0的时候,就会丢弃,避免了带宽的占用,就是解决了环路产生之后的问题,不能防止环路,只能发生环路之后最终解决的问题
-
路由环路,就是报文在一系列路由之间进行转发,但是无法到达目的主机
-
ttl值没有到0,会一直环下去
-
正常情况下,ttl的值不会为0
-
-
protocol,协议号,这个ip报文的上层协议,tcp是6,udp是17,icmp是1,传输的时候,目标端根据这个协议号,就交给对应的协议进程进行处理
-
包头校验格,目标主机算出来的值与原值不同的话,直接进行丢弃
-
源ip地址和目的ip地址
-
-
ip分片
- 网络层中的ip,来进行分片,因为从应用层数据下来的数据太长了,所以的话,进行分片传输,在各个链路上面进行传输
- 分片流程
-
在一个链路上面规定链路层数据帧的最大长度,称为链路层MTU
-
就是ip数据包+帧头和帧尾,大于链路层的mtu的话,就将这个数据报文进行分片的操作从而进行传输,适配链路传输的大小
-
第一个分片包含了完整的传输层协议头,tcp或者udp,后面的分片包含数据部分,不会重复发送传输层的头信息
-
最后的接受者,进行重组分片的数据
-
-
identification,flags,fragment offset,这三个字段进行ip报文的分片
-
identification 标识这一组唯一的id
-
Fragment Offset 表示当前分片在原始数据包中的位置,单位是8字节,如果是值为2的话,就是2*8距离原始数据包的距离
-
flags 就是3个位的字段
-
bit0(Reserved bit) 保留未使用,必须为0
-
bit1(DF - Don’t Fragment) ,设置为1 数据包不应被分片,若无法进行传输,则丢弃数据包;0的话则代表可以分片;由上层的应用来决定的
-
bit2(MF - More Fragments) 设置1 ,后面还有更多的分片,就不是最后一个分片;如果是最后一个的话,则设置为0
-
2、ip地址介绍
1、ip地址基础
-
作用
-
用于标识一个节点,或者网络设备的接口,网卡上面有地址
-
用于ip报文在网络中寻址
-
-
计算
-
ip地址的长度为32bit,4个字节,总的长度为2^32,所以的话,不够用,每一个都有2个选择,总共有32位,
-
ipv6,2^128次方,128比特,16个字节,完全够用
-
点分十进制
-
11000000 .10101000 .00001010 .00000001 二进制
-
192.168.10.1 十进制,相乘
-
有一个非常简单计算,用于简单的计算
128 64 32 16 8 4 2 1 22转换为二进制因为16+4+2=22所以话,对应的话就为1 = 00010110 转换为10进制的话, # 上面是简单的算法,下面是常用的算法 100转换为二进制的话 # 100-128 不能减,所以为0 # 100-64=36 # 36-32=4,可以减,所以为1 # 到4才能减,所以为1 最后的结果为 01100100 # 转换为10进制的话,1*2^2+1*2^5+1*2^6等于100
-
-
ip地址取值范围
- 0.0.0.0~255.255.255.255,也就是32个0或者32个1
-
2、ip地址的构成,计算
-
网络部分和主机部分组成
-
网络部分用来标识一个网络,主机部分标识一个网络中的不同主机
-
网络号代表所属的网段,主机号代表网段里面的主机
-
对于不同的网段来说,主机号可以重复的使用
-
子网掩码就是区分ip地址的网络号,从而区分网段
-
-
子网掩码
-
子网掩码的相同,就是相同的网段
-
有连续的0和1组成
-
0代表主机位,1代表网络位
192.168.45.120/25 --- # 进行与运算 1跟1才为1,其余全为0 25 ----- 10000000 120 ---- 01111000 # 计算值 00000000 得出网络地址为192.168.45.0/25 可用地址为 2^7 - 2(广播地址和网络地址) = 126个可用地址 算出了网络地址,直接将主机位后面全部为1,就能算出广播地址 01111111 = 127 192.168.1.100/16 网络地址为192.168.0.0/16 广播地址为192.168.255.255/16 总的地址数量为2^16 可用的地址数量为2^16-1 172.16.10.80/26 网络地址为172.16.10.64/26 广播地址为172.16.10.127/26
-
-
网络地址和广播地址
-
网络地址,主机位全为0
-
广播地址,主机位全为1,网络地址算出来,就可以算出广播地址
-
只要主机位不是全0或者全1的话,其余的都可以用,192.168.1.255/16可以用,因为主机位不全是0或者不全是1,根据子网掩码进行划分
-
3、ip地址分类
-
A类地址
-
第一个bit为0,前8位是网络位
-
所以的话,A类地址的范围,0.0.0.0 ~ 127.255.255.255/0
-
全0就是最小,全1就是最大的
-
-
B类地址
-
前2个bit位10,前16位为网络位
-
范围,128.0.0.0 ~ 191.255.255.255/16
-
-
C类地址
-
前3个bit位110,前24位网络位
-
范围,192.0.0.0 ~ 233.255.255.255/24
-
-
D类地址
-
组播地址,前面4个位1110
-
一对多的通信
-
-
E类地址
- 前面4个1111
-
总结
-
ABCE类地址,是单播地址,一对一的通信
-
全部都分配完了,2011年
-
在多链路中,一个网段被分配出去了,另外一个链路就不能使用这个分段了,避免主机位重复,但是这样会造成一个原因,就是会造成大量的浪费
-
有类地址,就是根据ip的类别进行地址规划
-
无类地址,没有严格的类的概念,可变长度的子网掩码
-
ABC类单播地址中分为公网地址或者私网地址
-
公网地址必须由IANA(分配机制)进行分配,保证在互联网内唯一性
-
私网地址是由用户自行使用,可以重复使用,提高地址的利用率,缓解了公网Ipv4地址不足
-
在同一个私网网络中保证私有地址的唯一性,不同的私有网络可以重复使用私有地址
-
4、单播地址的特点
-
一对一的通信的
-
主机位全为0的主机,是代表的一个网段,不能分配给主机使用,用来区分不同网段的
-
主机位全为1的主机,是代表的一个广播地址,代表了这个网段的所有主机,所以不能分配给主机使用
-
之前访问这个广播地址,所有的主机有回应的,就会获得这些活动主机,现在的话不会进行回应,这个就是漏洞攻击;所以的话,现在就是直接进行丢弃即可
5、地址规划
-
企业内部的话,私有地址尽量不要在同一个网段,避免冲突,如果2个公司没有通信的要求的话,私网地址可以相同
-
私网地址,然后通过nat转发可以到公网,通过这个公网进行访问
6、特殊的ip地址
-
255.255.255.255 广播地址,发往该网段的所有主机,全网广播地址,代表了任意主机,但是路由器不会转发,目标ip为255.255.255.255的广播报文,有限广播地址
-
默认的情况下,路由器不转发任意的广播地址的报文,用于隔离广播域,路由器的一个接口就是一个广播域
-
子网广播地址,192.168.1.31/27 ,代表了这个网段的所有主机
-
0.0.0.0 代表了任意的主机,可以作为报文的源地址使用,但是不能作为目标地址使用
-
环回地址,127.0.0.0 ~ 127.255.255.255 用于系统内部通信使用,目标ip为127开头的所有报文,但是不会发送到链路上面,这个地址访问不了的话,就是网卡驱动出现了问题
- 所以的话,A类地址中的1.0.0.0 到 126.255.255.255 这些才能使用,127.0.0.0到127.255.255.255保留用于其他用途
-
169.254.0.0/24 当主机自动获取地址失败后,可以使用该网段中的某个地址进行临时通信,就是dhcp获取失败时,可以使用这个地址
3、子网划分
- 需求,企业获得了C类地址,192.168.1.0/24,有5个部分,每个部门获取到主机为10~28台主机
2^n -2 >=29(加上一个网关地址)
# 所以的话n=5就非常的合适,8-5=3,2^3=8个子网
# 可以划分8个子网,每个子网里面的地址为32个,可分配的地址为30个,满足29的需求
# 192.168.1.0~192.168.1.31/27
# 192.168.1.32~192.168.1.63/27 不同的网段
- 上面的子网划分被称为等长子网划分,子网相同
- 需求,A部门100台主机,B部门58台主机,C部门27台主机,D部门10台主机
- 从大的主机上面进行划分,然后依次在后面添加,192.168.1.0/24包含了192.168.1.0/25/26/27等等的网段
2^n - 2 >=100 n=7
192.168.1.0~192.168.1.127/25
2^n -2 >=58 n=6
192.168.1.128~192.168.1.191/26
- 上面被称为可变子网划分
1、点到点的链路,划分掩码
-
分配效率最高的话,2^n - 2 = 2,设置子网掩码30是最高的,255.255.255.252
-
如果在路由器上面配置1.1.1.1/31的话,在链路点到点的话,2^1=2个地址,网段地址,广播地址,可以用,那是因为ip地址不够了,所以的话就使用网络地址和广播地址
-
以太网链路上面,配置不同的网段,是不能进行通信的,也就是交换机的与其他的设备的链路上面
-
但是ppp协议的点到点可以进行通信
2、路由汇总(子网的反运算)
-
主机位相同的即可进行汇总
-
将192.168.0.0/24和192.168.1.0/24 用一个网络号来表示所有的网络
# 换算成二进制
192.168.0000 0000. 00000000
192.168.0000 0001.00000000
# 相同的地方,也就是23
192.168.0.0/23可以全部包含地址
-
路由汇总分为精确汇总和非精确汇总
-
精确的汇总:汇总的地址和被汇总的地址范围一样
-
非精确汇总:就是将汇总的和没有汇总的都包含在里面
-
# 比如
192.168.0.0/21包含了
192.168.0000 0 000 .0000 0000 192.168.0.0/24
192.168.0000 0 001 .0000 0000 192.168.1.0/24
192.168.0000 0 010 .0000 0000 192.168.2.0/24
192.168.0000 0 011 .0000 0000 192.168.3.0/24
192.168.0000 0 100 .0000 0000 192.168.4.0/24 # 还包含了其他的
- 能精确的精确汇总,不能精确汇总的话,就不汇总,直接单独划分出来
# 规律的话就是2个网段可以汇总
192.168.0.0/24
192.168.1.0/24 192.168.0.0/23
192.168.2.0/24
192.168.3.0/24 192.168.2.0/23 等等等
# 下面的子网的距离,就可以直接进行汇总
0-1 2^1 2个子网 2-3 4-5 6-7 /23
0-3 2^2 4个子网 4-7 8-11 12-15 16-19 /22
0-7 2^3 8个子网 8-15 16-23 24-31 /21
0-15 2^4 16个子网
0-31 2^5 32个子网都能汇总
# 这些子网都符合精确汇总
192.168.0.0/24到192.168.31.0/24 31-0+1=32=2^5,可以有一个网段来写出来
精确汇总的话就是192.168.0.0/19 2^5=32 所以的话,需要借5个主机位,24-5=19的网络位就代表了里面的所有地址
192.168.1.0/24~192.168.10.0/24
# 精确汇总
192.168.1.0/24
192.168.2.0/23
192.168.4.0/22
192.168.8.0/23
192.168.10.0/24
192.168.8.0/23 # 里面一共有512个地址
192.168.8.0~192.168.8.255 # 有256个地址
192.168.9.0~192.168.9.255 # 256个地址
# 可用地址的话
192.168.8.1~192.168.8.254
192.168.9.1~192.168.9.254
172.16.5.0/24到172.16.20.0/24
# 精确汇总
192.168.5.0/24
192.168.6.0/23
192.168.8.0/21 包含了 192.168.8.0 ~ 192.168.15.0
192.168.16.0/22 包含了 192.168.16.0 ~ 192.168.19.0
192.168.20.0/24
-
总结
-
精确的划分,就能避免环路,避免不良的地址规划
-
设备的lookbackup规划,采用的/32主机路由,172.16.1.0/24,是环回地址
-