谈谈网络协议 – 基础知识

基本概念

互联网 (internet)

互联网就是各种终端通过转发设备(交换机,路由器)进行环型的连接形成一个图的结构,使之每个设备都能够互相连通,如下图:

计算机之间的连接方式

  • 同台电脑直连
  • 同轴电缆(Coaxial)
  • 集线器(hub)
  • 网桥(Bridge)
  • 交换机(Swtch)
  • 路由器(Router)

上面的设备都是用于连接终端设备的,发展使也是从上往下

RJ45接口 与 网线

image-20210310164101034

直通线与交叉线

  • 直通线:接口两端同样的颜色会对应同一个接口位

  • 交叉线:有些线的位置需要调整,如下图

同台电脑直连

直接使用网线将两台PC连接,需要使用 直通线

同轴电缆(Coaxial)

image-20210310164452383

image-20210310164510323

特点

  • 半双工通信(发送和接收不能同时进行)
  • 容易冲突
  • 不安全
  • 中间断了,整个网络都瘫痪

集线器(hub)

image-20210310164707989

用于连接多台PC终端,所有PC都需要在同一网段

特点

  • 半双工通信(发送和接收不能同时进行)
  • 容易冲突
  • 不安全
  • 和同轴电缆一样:没有智商

网桥(Bridge)

image-20210310164822638

主要用于隔绝冲突域,连接2边的集线器,能够通过自学习得到每个接口那侧的MAC地址

所以它会缓存两边的PC的MAC地址,当发起ARP(Address Resolution Protocol 地址解析协议)的时候就不需要再去广播了,所以说它是有智商的

交换机(Switch)

image-20210310165952084

image-20210310165957917

特点

  • 相当于接口更多的网桥
  • 全双工通信(可以同时接和收)
  • 比集线器安全
  • 智能

路由器(Router)

image-20210310170242616

特点

  • 隔绝广播域
  • 可以在不同网段之间转发数据
  • 路由器两端也必须是不同网段

网线直连、同轴电缆、集线器、网桥、交换机

  • 连接的设备必需在同一网段

  • 连接的设备处在同一广播域(广播是针对同一网段的)

MAC地址、IP地址

MAC地址

image-20210310171346300

  • 每个网卡都有一个唯一6字节(48bit)的MAC地址(Media Access Control Address
  • 全球唯一,固化在网卡的ROM中,由IEEE802标准规定
  • 前3字节:OUI(Orgnaizationally Unique Identifier),组织唯一标识符,由IEEEE的注册管理机构分析给厂商
  • 后3字节:网络接口标识符,由厂商自行分配

OUI查询

http://standards-oui.ieee.org/oui/oui.txt

https://mac.bmcx.com/

MAC地址表示格式

  • Windows
    • 60-38-78-10-8C-34
  • Linux、Android、Mac、iOS
    • 60:38:78:10:8C:34
  • Packet Tracer
    • 6038.7810.8C34
  • 当48位全为1时,代表广播地址
    • FF-FF-FF-FF-FF-FF

MAC地址操作

  • 查看MAC地址
    • windows: ipconfig /all
    • linux: ifconfig
  • 修改MAC地址
    • 更改适配器选项 -> 属性 -> 配置 -> 高级 -> 网络地址
    • 填写时需要把减号(-)去掉

image-20210310171940142

MAC地址的获取

  • 当不知道对方主机的MAC地址时,可以通过发送ARP广播获取对方的MAC地址
    • 获取成功后,会缓存IP地址、MAC地址的映射信息,俗称:ARP缓存
    • 通过ARP广播获取的MAC地址,属于动态(dynamic)缓存
      • 存储时间比较短(默认是2分钟),过期后自动删除
  • 相关命令
    • arp -a [主机地址]: 查询当前设备或指定IP的ARP缓存
    • arp -d [主机地址]: 删除AR缓存
    • arps -s 主机地址 MAC地址: 手动增加一条ARP缓存,属于静态缓存,不同系统存储时长不同

ARP欺骗

ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击

image-20210310172943204

攻击主机PC2发送ARP应答包给被攻击主机PC1和网关,分别修改它们的ARP缓存表, 将它们的ip地址所对应的MAC地址,全修改为攻击主机PC2的MAC地址,这样它们之间数据都被攻击主机PC2截获

简单描述:

我是PC2,PC1是被攻击者,我通过ARP包告诉网关我是PC1,告诉PC1我是网关,这样他们发送的数据就都会发给我,从而实现数据拦截(可以实现对目标进行限速等操作)

IP地址

image-20210310173526602

  • IP地址(Internet Protocol Address):互联网上的每一个主机都有一个IP地址

    • 最初是IPv4版本,32bit(4字节),2019年11月25日,全球的IP地址已经用完

    • 后面推出了IPv6版本,128bit(16字节),目前使用的还是IPv4,特殊地方才用IP6

IP地址的组成

  • IP地址由2部分组成:网络标识(网络ID)、主机标识(主机ID)
    • 通过子网掩码(subnet mask)可以得到网络ID、主机ID
  • 主机所在的网段:子网掩码 & IP地址
  • 计算机再与其它计算机通信前,会先判断是否在同一网段
    • 同一网段:不需要路由器进行转发
    • 不同网段:需要路由器进行转发

网段计算

image-20210310174638246

上面的IP地址与子网掩码计算的网段为:192.168.1.0

&操作

只有当两个都为1的时候才为1,其它为0

IP地址的分类

  • A类地址:子网掩码默认是255.0.0.0

    image-20210310174957316

  • B类地址:子网掩码默认是255.255.0.0

    image-20210310175048913

  • C类地址:子网掩码默认是255.255.255.0

    image-20210310175110430

  • D类地址:以1110开头,多播地址

  • E类地址:以1111开头,保留为今后使用

  • 只有A\B\C类地址才能分配给主机
    • 主机ID为全0,表示主机所在的网段
    • 主机ID为全1 ,表示主机所在的网段所有主 要(用于广播)
    • 使用ping广播地址可以实现获取当前网段内的所有在线主机

A类地址

image-20210310175719428

  • 网络ID
    • 0不能用,127作为保留网段。其中 127.0.0.1 是本地环回地址(Loopback),代表本地地址
    • 1~126 为可以分配给主机用
  • 主机ID
    • 第2、3、4部分的取值范围:0~255
    • A类网络最大能容纳主机数:256 * 256* 256 - 2 = 2的24次方 - 2 = 16777214
      • 减2原因:0不能用,网段不能用

B类地址

image-20210310180255567

  • 网络ID
    • 可分配给主机的
      • 第1部分:128~191
      • 第2部分:0~255
  • 主机ID
    • 第3、4部分的取值范围:0~255
    • B类网络最大能容纳主机数:256 * 256 - 2 = 2的16次方 - 2 = 65534

C类地址

image-20210310180512081

  • 网络ID
    • 可分配给主机的
      • 第1部分:192~223
      • 第2、3部分:0~255
  • 主机ID
    • 第4部分的取值范围:255
    • B类网络最大能容纳主机数:256 - 2 = 254

D类地址

image-20210310180755259

  • 没有子网掩码,用于多播(组播)地址
  • 第1部分取值范围:224~239

E类地址

image-20210310180829985

  • 没有子网掩码,用于多播(组播)地址

  • 第1部分取值范围:240~255

子网掩码的CIDR表示方法

  • CIDR (Classless Inter-Domain Routing):无类别域间路由
  • 子网掩码的CIDR表示方法
    • 192.168.1.100/24,代表子网掩码为 24个1,也就是 255.255.255.0
    • 123.210.100.200/16,代表子网掩码为 16个1,也就是 255.255.0.0
  • 计算工具

子网划分

为什么要进行子网划分

  • 200台主机在同一网段,分配一个C类网段,如:192.168.1.0/24

    • 共254个可用IP地址:192.168.1.1~192.168.1.254
    • 多出54个空闲的IP地址,这到不算浪费
  • 如果 500台主机在同一网段,分配一个B类网段,如:191.100.0.0/16

    • 共65534个可用IP地址:191.100.0.1~191.100.255.254
    • 多出65034个空闲的IP地址,这种情况属于极大的浪费资源
  • 为了避免浪费IP地址资源,就需要进行子网划分

如何子网划分

  • 借用主机位做子网位,划分出多个子网
  • 2种划分方式
    • 等长子网划分:将一个子网划分成多个子网,并且每个子网可用IP地址数一样
    • 变长子网划分:划分成多个可用IP地址不一样的子网
  • 子网在线划分器:http://www.ab126.com/web/3552.html
  • 子网划分步骤:
    • 确定子网的子网掩码长度
    • 确定子网中第1个、最后1个主机可用IP地址

等长子网划分

等分成2个子网

image-20210311100004364

上图是将 192.168.0.0/24 C类网段划分成两个子网

  • A子网

    • 可用IP地址:192.168.0.1 ~ 192.168.0.126 (0 和 127 不能用,0是网段,127是广播地址)
  • B子网

    • 可用IP地址:192.168.0.129 ~ 192.168.0.254(128 和 255 不能用,128是网段,255是广播地址)
  • 2个网段的子网掩码都是:255.255.255.128/25,每个网段可用主机数为:126

算法解析

如上图,将网络位往主机部借1位时,主机部分可用的位数就只有7位,此时网络部分可分为 :

  • A子网:192.168.0|0
  • B子网:192.168.0|1

主机部分全0和全1是不能做为可用IP地址的,全0是网段,全1就是广播地址

  • A子网的主机部分可用IP就是 0|0000001 ~ 0|1111110 (1~126)
  • B子网的主机部分可用IP就是 1|0000001 ~ 1|1111110 (129~254)
  • 注:虽然向主机位借位,但计算主机IP个数时还是按之前的8位来算,需要加上被借的那1位
等分成4个子网

image-20210311101559349

  • A子网:192.168.0.1 ~ 192.168.0.62
  • B子网:192.168.0.65 ~ 192.168.0.126
  • C子网:192.168.0.129 ~ 192.168.0.190
  • D子网:192.168.0.193 ~ 192.168.0.254
  • 4个子网的子网掩码都是:255.255.255.192/26,每个网段可用主机数:62
等分成8个子网

image-20210311101851062

  • A子网:192.168.0.1~192.168.0.30

  • B子网:192.168.0.33~192.168.0.62

  • C子网:192.168.0.65~192.168.0.94

  • D子网:192.168.0.97~192.168.0.126

  • E子网:192.168.0.129~192.168.0.158

  • F子网:192.168.0.161~192.168.0.190

  • G子网:192.168.0.193~192.168.0.222

  • H子网:192.168.0.225~192.168.0.254

  • 8个子网的子网掩码都是:255.255.255.224/27,每个网段可用主机数:30

规律

如果一个子网是是原来网络2/1,子网掩码往后移1位就行,如果是4/1,移2位,是8/1,移3位,简单点就是 移几位就是2的几次方

  • 1位 = 2^1 = 2

  • 2位 = 2^2 = 4

  • 3位 = 2^3 = 8

变长子网划分

  • 等长子网划分是每个子网都使用 **相同 **的子网掩码
  • 变长子网划分是每个子网都使用 **不同 **的子网掩码

例子

对 192.168.100.0/24 网段进行变长子网划分,需要主机数分别为 A: 80,B: 50,C: 24,D: 10 不同数量的网段,如果使用等长子网划分,划分成4个网段,那样每个网段的主机数只有 62个,不满足 80 个主机的要求,此时就可以使用变长子网划分

步骤:

  • 满足A:先将 192.168.100.0/24 往后移一位,划分出 192.168.100.0/25 与 192.168.100.128/25 两个网段,将 192.168.100.0/25 网段的 126 个地址分配给 A 用
  • 满足B:再将剩余的 192.168.100.128/25 网段再往后移一位,划分出 192.168.100.128/26 与 192.168.100.192/26 两个网段,将 192.168.100.128/26 网段的 62个地址分配给B用
  • 满足C:再将 192.168.100.192/26 再往后移一位,划分出 192.168.100.192/27 与 192.168.100.224/27 两个网段,将 192.168.100.192/27 网段的 30个地址分配给C用
  • 满足D:再将 192.168.100.224/27 再往后移一位,划分出 192.168.100.224/28 与 192.168.100.240/28 两个网段,将 192.168.100.224/28 网段的 13个地址分配给D用

image-20210311113313094

思考问题

【PC1】 192.168.0.10/24 与 【PC2】192.168.10.10/16 能进行通信吗?

思路:先将两台PC的网段算出来,看是不是同一网段

  • PC1:192.168.0.0/24
  • PC2:192.168.0.0/16

看上去好像两个是同一网段,实际是不能进行通信的,为什么呢?当一台设备与另一台设备进行通信之前是怎么处理的?首先它并不知道目标设备的子网掩码,只知道目标设备的IP地址,所以它要判断该设备是否和自己是同一网段,它是直接拿自己的子网掩码去和目标IP进行&运算得到网段,网段一样才会通讯,计算如下:

【PC1=>PC2】 192.168.10.10/24 = 192.168.10.0 与自己的网段 192.168.0.0 不一样,所以无法通讯

【PC2=>PC1】 192.168.0.10/16 = 192.168.0.0 与自己的网段 192.168.0.0 一样,可以通讯

注意:PC1 不能发给 PC2,但 PC2 能发给 PC1,只有两同设备都能够互相通信,才能真正通讯

超网

  • 它和子网是反过来,将多个连续的网段合并成一个更大的网段
  • 比如原来有200台设备使用192.168.0.0/24网段,现在想再增加 200台设备到同一网段
    • 200台在 192.168.0.0/24网段,另外200台在 192.168.1.0/24网段
    • 合并 192.168.0.0/24 与 192.168.1.0/24 网段为 192.168.0.0/23 网段(子网掩码往左移动1位)
合并2个子网

image-20210311170558783

合并4个子网

image-20210311171017984

思考:下面这2个网段向左移一位能合并吗?

image-20210311171137710

答案是不可以的,为什么呢?因为如果只向左移一位的话,它们的网段还是不相同的,当然就不是同一网段了,所以至少移2位才可以

判断一个网段是子网还是超网

  • 首页判断IP地址的类型,是A类、B类、C类?
  • A类子网掩码是8位,就是 255.0.0.0,如果 当前IP地址是A类,再看子网掩码是往左移位还是往右移位,往左移位就是超网,往右移位就是子网
  • B类是16位
  • C类是24位
posted @ 2021-05-21 11:16  悠悠清风~  阅读(1231)  评论(0编辑  收藏  举报