《网络协议》笔记-IP地址

**IP 地址是一个网卡在网络世界的通讯地址,**相当于我们现实世界的门牌号码。既然是门牌号码,不能大家都一样,不然就会起冲突。比方说,假如大家都叫六单元 1001 号,那快递就找不到地方了。所以,有时候咱们的电脑弹出网络地址冲突,出现上不去网的情况,多半是 IP 地址冲突了。

如10.100.122.2 就是一个 IP 地址。这个地址被点分隔为四个部分,每个部分一个字节( 8 个 bit),所以 IP 地址总共是 32 位。这样产生的 IP 地址的数量很快就不够用了。因为当时设计 IP 地址的时候,并不知道今天会有这么多的计算机!

本来 32 位的 IP 地址就不够,还被分成了 5 类。现在想想,当时分配地址的时候,真是太。。。
在这里插入图片描述
在网络地址中,至少在当时设计的时候,对于 A、B、 C 类主要分两部分,前面一部分是网络号,后面一部分是主机号。这很好理解,大家都是六单元 1001 号,我是小区 A 的六单元 1001 号,而你是小区 B 的六单元 1001 号。

下面这个表格,详细地展示了 A、B、C 三类地址所能包含的主机的数量。
在这里插入图片描述
这里面有个尴尬的事情,就是 C 类地址能包含的最大主机数量实在太少了,只有 254 个。现在估计一个网吧都不够用吧。而 B 类地址能包含的最大主机数量又太多了。6 万多台机器放在一个网络下面,一般的企业基本达不到这个规模,闲着的地址就是浪费。


无类型域间选路 Classless Inter-Domain Routing(CIDR)

于是有了一个折中的方式叫作无类型域间选路,简称 CIDR。这种方式打破了原来设计的几类地址的做法,将 32 位的 IP 地址一分为二,前面是网络号,后面是主机号。从哪里分呢?

如10.100.122.2/24中追加 /24。 24 表示在32 位中,前 24 位是网络号,后 8 位是主机号。

伴随着 CIDR 存在的,一个是广播地址,10.100.122.255。如果发送这个地址,所有 10.100.122 网络里面的机器都可以收到。另一个是子网掩码,255.255.255.0。

将子网掩码和 IP 地址进行 AND 计算。前面三个 255,转成二进制都是 1。1 和任何数值取 AND,都是原来数值,因而前三个数不变,为 10.100.122。

后面一个 0,转换成二进制是 0,0 和任何数值取 AND,都是 0,因而最后一个数变为 0,合起来就是 10.100.122.0。这就是网络号。将子网掩码和 IP 地址按位计算 AND,就可得到网络号。

在日常的工作中,几乎不用划分 A 类、B 类或者 C 类,所以时间长了,很多人就忘记了这个分类,而只记得 CIDR。但是有一点还是要注意的,就是公有 IP 地址和私有 IP 地址。

平时我们看到的数据中心里,办公室、家里或学校的 IP 地址,一般都是私有 IP 地址段。因为这些地址允许组织内部的 IT 人员自己管理、自己分配,而且可以重复。因此,不同公有IP间的私有IP是可以是一样的。某市内东风路32号小区有1栋3号,建设路46号小区也可以有1栋3号。但是不能两个小区都叫东风路32号。

公有 IP 地址有个组织统一分配,你需要去买。

表格中的 192.168.0.x 是最常用的私有 IP 地址。家用 Wi-Fi,对应就会有一个 IP 地址。一般家用网设备也不会超过 256 个,所以 /24 基本就够了。有时候我们也能见到 /16 的 CIDR,这两种是最常见的,也是最容易理解的。

不需要将十进制转换为二进制 32 位,就能明显看出 192.168.0 是网络号,后面是主机号。而整个网络里面的第一个地址 192.168.0.1,往往就是你这个私有网络的出口地址。例如,你家里的电脑连接 Wi-Fi,Wi-Fi 路由器的地址就是 192.168.0.1,而 192.168.0.255 就是广播地址。一旦发送这个地址,整个 192.168.0 网络里面的所有机器都能收到。
(网络地址:主机位置零; 子网掩码:主机位置零,网络号置一; 广播地址:主机位置一;)
但是也不总都是这样的情况。因此,其他情况往往就会很难理解,还容易出错。

举例:一个容易“犯错”的 CIDR

我们来看 16.158.165.91/22 这个 CIDR。求一下这个网络的第一个地址、子网掩码和广播地址。

你要是上来就写 16.158.165.1,那就大错特错了。

/22 不是 8 的整数倍,不好办,只能先变成二进制来看。16.158 的部分不会动,它占了前 16 位。中间的 165,变为二进制为‭10100101‬。除了前面的 16 位,还剩 6 位。所以,这 8 位中前 6 位是网络号,16.158.<101001>,而 <01>.91 是机器号。

第一个地址是 16.158.<101001><00>.1,即 16.158.164.1。子网掩码是 255.255.<111111><00>.0,即 255.255.252.0。广播地址为 16.158.<101001><11>.255,即 16.158.167.255。

D 类是组播地址。使用这一类地址,属于某个组的机器都能收到。

MAC地址出厂唯一,直接用MAC地址通信不行吗?当然不行!一个网络包要从一个地方传到另一个地方,除了要有确定的地址,还需要有定位功能。 而有门牌号码属性的 IP 地址,才是有远程定位功能的。

MAC 地址更像是身份证,是一个唯一的标识。它的唯一性设计是为了组网的时候,不同的网卡放在一个网络里面的时候,可以不用担心冲突。从硬件角度,保证不同的网卡有不同的标识。

MAC 地址是有一定定位功能的,只不过范围非常有限。你可以根据 IP 地址,找到北京市海淀大街 599 号 B 楼 6 层,但是依然找不到我,你就可以靠吼了,大声喊身份证 XXXX 的是哪位?我听到了,我就会站起来说,是我啊。但是如果你在伦敦,到处喊身份证 XXXX 的是哪位,就不会有回答了。

MAC 地址的通信范围比较小,局限在一个子网里面。例如,从 192.168.0.2/24 访问 192.168.0.3/24 是可以用 MAC 地址的。一旦跨子网,即从 192.168.0.2/24 到 192.168.1.2/24,MAC 地址就不行了,需要 IP 地址起作用了。

总结:

  • 面试考点:
  1. ip addr → 不知道基本没有用Linux
  2. ifconfig 和 ip addr 的区别吗?
  3. CIDR
  4. 共有IP和私有IP
  5. MAC地址
  6. 网络设备的状态标识

  • 知识点:

核心

  1. IP设计时犯的错误?

    低估了未来网络的发展,32位地址不够用。于是有了现在IPv6(128位)
    分类错误。分成了5类。C类太少,B类太多。C类254个,网络都不够;D类6万多,给企业都太多。

  2. 那后来者如何弥补IP设计者犯的错误呢?

    CIDR,无类型域间选路。
    打破原来几类地址设计的做法,将32位IP地址一分二,前者网络号,后者主机号。
    如何分呢?
    栗子:10.100.122.2/24
    24 = 前24位是网络号,那么后8位就是主机号。
    那如何用?
    如发送行信息给 10.100.122.255
    所有以 10.100.122… 开头的机器都能收到。
    于是有了两个概念:
    广播地址:10.100.122.255
    子网掩码:255.255.255.0 -> AND 得到网络号。

  3. 每一个城市都有人民广场,IP设计是如何解决的?

    公有IP地址和私有IP地址。
    搭建世界人民都可以访问的网站,需要共有IP地址
    搭建只有学校同学使用饿的网站,只要私有IP地址
    例子1: Wi-Fi
    192.168.0.x 是最常用的私有 IP 地址
    192.168.0 是网络号
    192.168.0.1,往往就是你这个私有网络的出口地址
    192.168.0.255 就是广播地址。一旦发送这个地址,整个 192.168.0 网络里面的所有机器都能收到。

    例子2: 16.158.165.91/22

  4. 如何理解MAC地址?

    如果说IP是地址,有定位功能。那Mac就是身份证,唯一识别。


琐碎:

  1. 讲了ABC,那是D类是什么?

    D 类是组播地址。使用这一类地址,属于某个组的机器都能收到。这有点类似在公司里面大家都加入了一个邮件组。发送邮件,加入这个组的都能收到。组播地址在后面讲述 VXLAN 协议的时候会提到。

  2. IP地址scope是什么意思?

    对于 eth0 这张网卡来讲,是 global,说明这张网卡是可以对外的,可以接收来自各个地方的包。对于 lo 来讲,是 host,说明这张网卡仅仅可以供本机相互通信。

  3. 那lo是什么意思?

    lo 全称是loopback,又称环回接口,往往会被分配到 127.0.0.1 这个地址。这个地址用于本机通信,经过内核处理后直接返回,不会在任何网络中出现。

  4. < BROADCAST,MULTICAST,UP,LOWER_UP > 是干什么的?

    net_device flags,网络设备的状态标识。
    UP 表示网卡处于启动的状态;
    BROADCAST 表示这个网卡有广播地址,可以发送广播包;
    MULTICAST 表示网卡可以发送多播包;
    LOWER_UP 表示 L1 是启动的,也即网线插着呢。

  5. MTU1500 是指什么意思呢?是哪一层的概念?

    最大传输单元 MTU 为 1500,这是以太网的默认值。
    MTU 是二层 MAC 层的概念。MAC 层有 MAC 的头,以太网规定连 MAC 头带正文合起来,不允许超过 1500 个字节。

  6. qdisc pfifo_fast 是什么意思呢?

    排队规则。规定数据包如何进出的。有pfifo, pfifo_fast.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值