菜鸟笔记
提升您的技术认知

网络层协议

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地址

IP地址

含义:电子设备(计算机)在互联网中的唯一标识,也称逻辑地址。(网络号+主机号)

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(子网掩码左移一位)

合并网段的规律

注意:一定要清楚网段的含义

ARP协议

前言

含义:(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以这种技术实现了监听功能

网络层IP协议

前言:

  • 网络层传输的数据为数据包(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,能够推测出对方的操作系统、中间经过了多少个路由器

ICMP协议

前言

含义: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 主机重定向