mac地址
前言
含义:也称物理地址或硬件地址,由网络制造商生产时写在硬件的内部,其写在电脑的网卡里面。
mac地址由48个二进制/12个16进制数字组成(6字节);前3个字节oui组织唯一标识符(由ieee的注册管理机构分配给厂商) ;后三个字节网络接口标识符(由厂商自行分配)
注意:
- mac地址具有全球唯一性,其固化在了网卡的rom中,由ieee802标准规定
- 当mac地址48位全为1时,代表广播地址(ff-ff-ff-ff-ff-ff)
- 当不知道对方主机的mac地址时,可以通过发送arp广播获取对方的mac地址,获取成功后,会缓存ip地址、mac地址的映射信息,俗称arp缓存
- 通过arp广播获取的mac地址属于动态缓存,存储时间较段(默认是2分钟)过期了自动删除
相关命令
查询mac地址:ipconfig/all
查询arp缓存:arp -a [主机地址]
删除arp缓存:arp -d [主机地址]
增加静态arp缓存:arp -s 主机地址 mac地址
含义:电子设备(计算机)在互联网中的唯一标识,也称逻辑地址。(网络号 主机号)
ipv4与ipv6
- ipv4:ipv4地址表示点分十进制格式,32位地址分成4个8位分组,每个8位以10进制显示,中间用点来分割。
- ipv6:ipv6采用16进制格式,即128位地址采用每16位为一个分组(共8组),每个16位分组写成4个16进制数,中间用冒号来分16进制格式。
ipv6出现的原因:ipv4地址枯竭,同时它也在其他方面对于ipv4有所改进
ipv6注意事项
- 每组前面连续的0可以省略
- 可以用"::"表示一组或多组连续的0,但只能出现1次
- ::1(0:0:0:0:0:0:0:1)是本地环回地址
ipv4
ipv4的10进制形式转化为2进制
使用方法:
eg:255.255.255.132
因为255=128 64 32 16 8 4 2 1
132=128 0 0 0 0 4 0 0
推算:11111111.11111111.11111111.10000100
ip地址的组成
- 网络部分:用于标识网络的范围(网络id)
- 主机部分:用于标识网络范围中的一个节点(主机id)
网段:两个ip地址的网络号相同就说明他们处于同一个网段。
子网掩码
含义:ip地址由网络位和主机位组成,子网掩码主要用于区分网络位与主机位。
使用ip地址和子网掩码进行按位&运算得出网络位(1&1=1)
使用子网掩码来得出网络部分与主机部分,在本网络的第一个地址就是网络地址,本网络的最后一个地址就是广播地址
网络地址与广播地址
- 网络地址(网段):其是主机地址全为0的地址,是编码中比较特殊的一部分,它用来表明一个网段,不能分配给主机
- 广播地址:其是主机地址全为1的地址,其是专门用来向特定网段发送广播的地址,也不能分配给主机;当发出一个目标地址为10.1.1.255(广播地址)的分组封包时,他将被分发给该网段上所有的计算机
子网掩码的cidr的表示方法
cidr(classless inter-domain routing):无类别域间路由
例子
- 192.168.1.100/24,代表子网掩码有24个1,也就是255.255.255.0
- 123.210.100.200/16,代表子网掩码有16个1,也就是255.255.0.0
子网掩码的使用
eg:192.168.0.2/30 (说明前面30位二进制数为网络位)
因此子网掩码为:255.255.255.252
网络地址为:192.168.0.0
广播地址为:192.168.0.3
注意:
- 同一网段的计算机,网络id相同
- 可以通过子网掩码来计算出网络id
- 子网掩码越长代表网络部分越长,网络范围越小,反之网络范围越大
- 网络地址代表一个范围,不能给主机使用
- 广播地址代表本网段的所有地址,也是不能够给主机使用
- 当一台计算机ping另外一个计算机的ip地址时,会拿自己的子网掩码按位&来计算对方网段,然后对比和自己是否属于同一个网段
ip地址的分类(ipv4为例)
前言:ip地址分为a、b、c、d、e五类
a类:确定前8位为网络位(默认),后24位为主机位并且以0开头(子网掩码:255.0.0.0)
注意:第一个8位组范围:0——127,由于0代表本地网络,127开头的地址一般用于回路检测,最终范围:0——126(ping 127.0.0.1相当于ping自己的主机)
b类:确定前16位为网络位(默认),后16位为主机位,并且以10开头(子网掩码:255.255.0.0)
c类:确定前24位为网络位(默认),后面8位为主机位,并且以110开头(子网掩码:255.255.255.0)
d类:是多播地址。该类ip地址的最前面为“1110”,所以地址的网络号取值于224~239之间。一般用于多路广播用户 。(没有子网掩码)
e类:是保留地址。该类ip地址的最前面为“1111”,所以地址的网络号取值于240~255之间。
注意:
- 只有a、b、c类地址可以分配给主机
- 地址的类别与子网掩码无关,主要看的是前8位组的范围来划分
公有地址与私有地址
前言:
- 在internet上的路由器中只有到达公网的路由表,没有到达私网的路由表
- 公网ip由因特网信息中心(inter nic)统一分配和管理
- isp需要向inter nic申请公网ip
- 除去私有ip范围的地址就是公有ip范围的地址
在ip地址3种主要类型里,各保留了3个区域作为私有地址,其地址范围如下:
- a类地址:10.0.0.0~10.255.255.255
- b类地址:172.16.0.0~172.31.255.255
- c类地址:192.168.0.0~192.168.255.255
子网划分
前言:为了方便进行网络管理,这时候就需要将一个大的网络分割成多个小网络
含义:借用主机位作为子网位,划分多个子网
子网划分的原因
- 从公网层面来讲a类地址总共有126个网络,假设一个a类网络给某一个企业或者一个机构使用,由于a类地址在主机部分范围比较广,造成这个企业或机构无法全部用完,造成ip地址的浪费(节省ip地址)
- 实现网络的层次性
- 满足不同网络对ip地址的需求
子网划分分类
- 等长子网划分:将一个网段分成多个子网,每个子网的可用ip地址数量是一样的
- 变长子网划分:将一个网段分成多个子网,每个子网的可用ip地址数量是不一样的
理解:
等长子网划分:191.100.0.0/16分为2个相等的191.100.0.0/17和191.100.128.0/17
变长子网划分:191.100.0.0/16分为191.100.0.0/17和191.100.128.0/18和191.100.192.0/18
总结:变长子网划分相对于等长子网划分,就是他划分的子网可以不等长。
需求案例
若需要让100台主机在同一网段内,那么就分配一个c类网段,比如192.168.0.0/24
分配100台——能用256-2=254(浪费!)
192.168.0.0/24分为
192.168.0.0/25和192.168.0.128/25两个网段
这样每个网段能用的主机数为128-2=126台
超网
含义:跟子网反过来,他是将多个连续的网段合并成一个更大的网段
需求案例
原有200台计算机使用192.168.0.0/24网段,现在希望增加200台设备到同一个网段(前提有192.168.0.0和192.168.1.0)
因为总共需要400台主机位,我们可以将200台放在192.168.0.0/24网段,200台放在192.168.1.0/24网段,我们可以将这两个网段合成一个超网192.168.0.0/23(子网掩码左移一位)
合并网段的规律
注意:一定要清楚网段的含义
前言
含义:(address resolution protocol)地址解析协议,ip地址与mac地址相比,只是个抽象的产物,将复杂的mac地址进行了封装,让你以为实际是使用ip地址直接转发的。所以与dns一样,还需要将ip地址转换为mac地址来实现转发。这个协议就是arp协议。
总结:在计算机网络中发送信息,我们只需要填写内容和对方的ip地址操作系统会根据目标ip自动查询arp表来获取对方的mac地址补齐这封信,从网卡发出。
注意:arp协议是一个三层协议,但是工作在二层
执行过程
当计算机a想向计算机b发送消息时,操作系统并不会立即发出,其会发送一包arp广播报文出去,询问此ip地址的mac地址是多少此时该网段中的所有设备都收到了这个请求报文除了此ip地址以外的设备都会丢弃这个报文只有此ip的设备会回复自己的mac地址是多少,计算机a收到计算机b的mac地址后会先将计算机b的mac地址缓存到arp表(mac地址与ip地址的映射表)中,以便下次使用其后会将这封信补全从网卡发送出去,交换机根据目标mac地址找到计算机b所在的端口从此端口发送出去,计算机b便收到了数据。
arp协议报文格式
实施arp欺骗攻击
- 环境:kial linux
- 被攻击主机:win 10
欺骗网关步骤
1.安装好kail与win 10虚拟机
2.在kail里面配置源
vim /etc/apt/sources.list
3.kail内更新刚刚配置好的源
apt-get update
4.kail内安装arpspoof工具(该工具集成在dsniff这个工具里面)
apt-get install dsniff
5.查看win 10的ip地址和网关(ipconfig/all)
6.kail内实施arp攻击
arpspoof -i 本机的网卡名 -t 攻击的目标主机的ip地址 目标主机的网关地址
阅读:不断向目标主机(0:c:29:db:1f:97)应答192.168.13.2(目标主机的网关)的mac地址为(0:c:29:3d:89:72)
7.在win 10内打开wireshark工具
点击捕获-》选项-》自己使用的网卡-》捕获过滤器输入arp后点击开始进行分析
阅读:来自mac地址为3d_8972(kail)向db:1f:97(win 10)的arp协议消息,消息内容为192.168.13.2(目标主机的网关)的mac地址为(0:c:29:3d:89:72)
8.用win 10来进行上网,发现win10上网失败
9.kail开启ip转发功能(向文件内写入1)
echo 1 >> /proc/sys/net/ipv4/ip_forward
10.win10再次联网,发现联网成功
总结:win10把kail当成了网关,若kail开启转发功能则win10就可以上网,kail以这种技术实现了监听功能
前言:
- 网络层传输的数据为数据包(packet),数据包由首部、数据两部分组成
- 网络层的数据一般都是由传输层传递下来的数据段
- 网络层数据的首部至少是20字节、最长60字节,整个数据包大小不超过65535字节
数据包的理解:
- 版本:占4位,网络版本(ipv4/ipv6)
- 首部长度:数据包首部所占用的空间,占4位,二进制最终乘4才是最终长度(决定了首部最长60字节)
- 区分服务:占8位,其可以提高网络的服务质量(优先级)
- 总长度:占16位(2字节)代表数据包整体的长度,最大长度为2^16=65535字节
- 标识:占16位, 数据包的id,当数据包过大进行分片时,同一个数据包所有的片标识都是一样的(有一个计数器专门管理数据包的id,每发出一个数据包,id就加1;一旦数据包超过2^16那么id又会从0开始算起)
- 标志:占3位,第一位(保留位)第二位(是否允许分片)第三位(1代表不是最后一片,0代表最后一片)
- 片偏移:占13位(片偏移×8就等于字节偏移——每一片的长度一定是8字节的整数倍),字节偏移就是分片后数据头部的起始位置
- 生存时间:占8位,每个路由器在转发之前会将ttl减1,一旦发现ttl减去后为0,路由器就会显示错误报告
- 协议:占8位,表明所封装的数据使用了什么协议(封装所用的协议以数字进行表示)
- 首部检验和:占16位,将网络包首部进行一个计算,计算出一个值
理解片偏移
前言:因为网络层的数据需要传递给数据链路层,数据链路层的数据需要转换成以太网帧,而帧的数据部分不能超过1500字节,而数据包的最大长度为65535字节,已经超过1500字节;此时就需要将数据包进行分片,并且将分片好的数据传递给数据链路层,每片数据都是一个独立的以太网帧,都有自己的网络层首部,总长度都不会超过1500字节
例子:ping ke.qq.com -l 4000
注意:通过分片的标识可以知道那些帧都共同属于之前的网络包,通过片偏移可以知道每个帧都属于之前网络包的那个位置
生存时间存在的意义
我们的路由器都有路由表,用来决定路由器之间的传递规则,很多路由器都会设置默认路由(就是目标地址不确定就会走默认路由器),若发的数据包在所选的路由器都不可达,那么数据包就有可能在默认路由器之间来回穿梭,这样就长时间占用了带宽,设置了ttl就会防止数据包在信道中无穷无尽的传递
注意:观察使用ping命令后的ttl,能够推测出对方的操作系统、中间经过了多少个路由器
前言
含义:internet控制报文协议,用于在ip主机、路由器之间传递控制消息,控制消息指网络通不通,主机是否可达,路由是否可用等等。
注意:icmp协议主要是通过ping这个工具实现的
- 字节=32:ping数据的大小为32字节
- 时间:icmp数据包从源到目的,然后从目的再返回源所花费的时间
- ttl:time to live,生存周期
注意:每经过一台三层设备ttl会减一,当ttl减少到0时,三层设备就会丢弃该数据包,ttl存在的意义就是防止一个数据包在网络当中永无止境的传递
icmp报文
type与code
类型 | 代码 | 说明 |
8 | 0 | 请求 |
0 | 0 | 回显应答(比较正常的应答) |
3 | 1 | 目标不可达(主机不可达) |
11 | 0 | 超时(传输期间生存时间为0) |
3 | 3 | 目标不可达(端口不可达) |
3 | 2 | 协议不可达 |
5 | 0 | 重定向(网络重定向) |
5 | 1 | 主机重定向 |