前置说明:本系列笔记跟腾讯课堂网络协议从入门到底层原理-MJ大神新课的教学视频的pdf课件一一对应,本篇文章对应的课件是《02_MAC地址_IP地址.pdf》。
MAC地址
什么是MAC地址,MAC地址就是网卡的地址。什么是网卡,网卡是计算机连接网络的大门,它负责发送计算机的数据到互联网和从互联网接收数据到计算机。网卡和计算机的关系如下图所示:
现在知道了,MAC地址就是网卡的地址,而且每个网卡的MAC地址是全球唯一的(但可以通过某些手段修改发送数据包的源MAC地址来欺骗路由器)。然后网卡地址的组成如下图所示:
MAC地址由6个字节组成,前3个字节为“组织统一标识符”部分;后3个字节为“网络接口标识符”部分。
其中“组织统一标识符”部分是由IEEE的注册管理结构分配给网卡的生产厂商的,比如:“组织统一标识符”为F4-BD-9E都是Cisco生产的网卡;“组织统一标识符”为10-32-7E都是华为生产的网卡。所以我们想知道一块网卡的生产厂商是谁可以通过看它的网卡地址的组织唯一标识符。
MAC地址 组织唯一标识符查询
http://standards-oui.ieee.org/oui/oui.txt
https://mac.bmcx.com/
MAC地址的标识格式
- windows
40-55-82-0A-8C-6D - Linux、Android、Mac、iOS
40:55:82:0A:8C:6D - Packet Tracer
4055.820A.8C6D
当48位全为1时,代表广播地址
FF-FF-FF-FF-FF-FF
windows上查看网卡的MAC地址
命令:ipconfig /all
由下图可以看到,一个电脑是有多个网卡的,比如我电脑接网线上网的网卡的地址是:00-0E-C6-7B-2F-F6;如果是用WIFI上网的网卡的地址是:58-A0-23-51-E7-EE
MAC 地址的获取
根据网络协议上课笔记(一)所说的,计算机真正发数据包之前都要知道目标MAC地址。所以如果一开始只知道目标的IP地址,计算机要通过某些手段来获取目标的MAC地址后,在真正发数据包给对方。
当不知道对方主机的MAC地址时,可以通过发送ARP广播获取对方的MAC地址
获取成功后,会缓存IP地址、MAC地址的映射信息,俗称:ARP缓存
通过ARP广播获取的MAC地址,属于动态(dynamic)缓存。动态缓存存储时间比较短(默认是2分钟),过期了就自动删除
ARP
-
ARP(Address Resolution Protocol ),译为:地址解析协议
作用:通过IP地址获取MAC地址
实现:计算机携带“源MAC地址、目标IP地址”发送ARP广播,询问其他网络设备或者计算机是否知道该IP地址对应MAC地址。当其他设备收到ARP时,如果不知道该IP对应的MAC地址,就会将ARP包丢掉;如果有设备知道该IP的MAC地址,就会做出响应。 -
RARP(Reverse Address Resolution Protocol ),译为:逆向地址解析协议
作用:与ARP作用相反,通过MAC地址获取IP地址。但RARP后来被DHCP、BOOTP取代了。
ICMP
- ICMP(Internet Control Message Protocal),译为:互联网控制消息协议
作用:主要用来检测网络通信故障和实现链路追踪,最典型的应用就是ping和tracerooute。- ping:通过发送请求报文和回送响应报文来检测源主机到目标主机的链路是否有问题,目标地址是否可达,以及通信的延迟情况。当网卡发送请求报文前如果不知道目标MAC地址,会先发送一次ARP广播来获取目标MAC地址。
- traceroute:通过发送多次ping,然后ttl从1开始不断+1,来获取与目标主机的链路上所有路由器的IP地址。
IP地址
IP地址 由 IP(Internet Protocol,译为:互联网协议)所规定。
- IPv4
IPv4是互联网协议(Internet Protocol,IP)的第四版,IPv4规定IP地址由4个字节组成,共32位。2019年11月25日,全球的IP地址已经用完,所以推出了后面的IPv6。
- IPv6
IPv4是互联网协议(Internet Protocol,IP)的第六版,IPv4规定IP地址由16个字节组成,共128位。
IP地址的组成
IP地址由2部分组成:网络标识(网段)、主机标识(主机ID)
通过子网掩码可以计算得到网段、主机ID。
网段 = 子网掩码 & IP地址
主机ID = IP - 网段部分。
比如主机IP是192.168.1.1,子网掩码是255.255.255.0
那么该主机所处的网段就是:192.168.1.1 & 255.255.255.0 = 192.168.1.0
该主机的主机标识为:1
计算机与其他计算机通信前,会先判断目标主机和自己是否在同一网段(将自己的子网掩码与目标IP相与,计算出目标主机的网段,在用自己的网段与目标主机的网段比较得出 目标主机和自己是否在同一网段)
- 同一网段:不需要由路由器进行转换
- 不同网段:交给路由器进行转发
IP地址的分类
TODO
CIDR表示法
比如以前我们是这么描述一个计算机的网络地址的:IP地址192.168.1.10,子网掩码:255.255.255.0,由于这种描述太长了,不好看,所以有了CIDR表示法,下面的示例是等价的。
192.168.1.10/24 (表示子网掩码前24位都为1)<==> IP地址192.168.1.10,子网掩码:255.255.255.0
123.21.100.200/16(表示子网掩码前16位都为1) <==> IP地址123.21.100.200,子网掩码:255.255.0.0
子网划分
为什么要进行子网划分
- 如果需要让200台主机在同一个网段内,但分配一个C类网段,比如192.168.1.0/24
- 共254个可用IP地址:192.168.1.1~192.168.1.254
- 多出54个空闲的IP地址,好比一栋楼,最多能住进254个人,但是现在住进了200个人,这种情况并不算浪费资源。
- 如果需要让500台主机在同一个网段内,但分配一个B类网段,比如191.100.0.0/16
- 共65534个可用IP地址:191.100.0.1~191.100.255.254
- 多出65034个空闲的IP地址,好比一栋楼,最多能住进65534个人,但是现在只住进了500个人,这种情况属于极大的浪费资源。
- 如何尽量避免浪费IP地址资源?
- 合理进行子网划分
子网划分
TODO
超网划分
TODO
总结
当你进行 子网划分 和 超网划分,你就像一个商品楼的空间设计师。整个网络的空间就这么大,如果你用子网划分,就类似于香港的劏房,设计出更多的房间(即网段),但每个房间塞下的人并不多(网段能容纳的节点数量);如果你用超网划分,就类似于要设计收容所,设计出更少的房间(即网段),但每个房间能塞下的人很多(网段能容纳的节点数量)。
子网划分 和 超网划分 的最终目的都是当空间有限,人很多的时候,提升整个网络空间的利用率,不要浪费太多的空间。至于使用子网划分 和 超网划分,这取决于你当时的业务,比如你是要设计香港的房子还是要设计收容所,两者没有对错之分。
当然,如果是你家住大别墅,而且只有几个人的时候,你怎么设计都是可以的,毕竟有钱就可以浪(狗头保命)。
子网:每个网段容纳的节点数量 (↓)<=>网段数量 (↑)
随着缩减每个网段能容纳节点的数量,整个网络的网段数量会上升。每个网段容纳的节点数量 跟 网段数量 是相互制约的,毕竟整个网络的空间就这么大。