快速理解网络协议(一) IP 地址、MAC 地址

IP 地址

IP 地址中的 "IP" 代表Internet Protocol(互联网协议),IP 地址是在 IP 协议下使用的地址,IP 地址有三个主要功能:标识设备或网络、定位和选择路由。由于 IPv4 是第一个架构中的主要版本,所以在没有特殊说明的时候,IP 地址一般指的是 IPv4 地址。

IPv4 地址

一个 IPv4 地址被 "." 分割成 4 个部分,每个部分 8 个 bit,总共 32 位,使用十进制表示。在设计之初,IPv4 地址被分成 5 类,如下图所示,我们平时接触到的基本是 ABC 三类。一个 IPv4 地址被分为两部分,网络号 + 主机号,这种地址分类的方式叫做分类网络

在分类网络中,A、B、C 三类的 IPv4 地址的数量分割一点都不合理,范围跨度太大了。随着互联网的快速发展,CIDR 取代了分类网络。

CIDR (Classless Inter-Domain Routing )无类别域间路由,旨在重新划分地址空间,将地址块可以较为自由合理的分配给用户。

  • CIDR("/" 后带着数字这种表示形式,"/" 后)将 32 位的 IP 地址一分为二,网络号 + 主机号,例如 100.100.100.2/24,前 24 位是网络号,后 8 位是主机号

  • 网络号全为 1 的就是子网掩码,主机号全为 1 的就是广播地址

  • 将子网掩码和 IP 地址按位计算 AND,可以得到网络号,可用于判断一个 IP 地址是不是在当前子网内

    示例: 100.100.100.2/24

    • 子网掩码:255.255.255.0
    • 广播地址:100.100.100.255,所有 100.100.100 网络里面的机器都可以收到
    • 100.100.100.20 与子网掩码做按位与运算,得到 100.100.100.0,即为网络号
      易错计算: 求 16.158.165.91/22 的网络号、第一个地址、子网掩码和广播地址
    • 16.158.165.91/22 → 16.158. 101001/01. 01011011
    • 网络号:16.158. 101001/00.0 → 16.158.164.0
    • 第一个地址:16.158.164.1
    • 子网掩码:255.255.252.0
    • 广播地址:16.158.167.255

特殊 IPv4 地址

  • 127.0.0.1 表示本机地址
  • 0.0.0.0 有两种含义,默认路由地址和通配符地址。默认路由地址我们之后再说。通配符地址指的是,若进程监听了通配符地址,那么进程监听了本机上的所有 IP 地址

IPv6 地址

由于互联网的快速兴起, IPv4 地址很快就不够用了,于是出现了 IPv6 地址。一个 IPv6 地址被 ":" 分为 8 个部分,每个部分以 4 位十六进制方式表示,总共 128 位。比如:2001:0db8:85a3:08d3:1319:8a2e:0370:734。

IPv6 地址和 IPv4 地址相似,也使用网络号 + 主机号的形式划分。一个 IPv4地址可以很容易的转换成一个 IPv6 地址,如果一个地址是 IPv4 地址,可以直接表示成::ffff:IPv4地址,比如 ::ffff:192.168.89.9,这种格式叫做IPv4映射地址 。而::1类似于 IPv4 中的 127.0.0.1

IP 地址的功能

  1. 标识设备或网络、定位,提供设备在网络中的位置信息
  2. 选择路由,在网络传输中,通过 IP 地址选择路由

MAC 地址

和 IP 地址相似,由于此地址作用于 MAC 层,所以称之为 MAC 地址。MAC 地址是指网络设备的硬件地址,是由网络设备的制造商烧录在设备的网卡中的一个全球唯一的地址。类比现实生活的话,IP 地址更像是精确到门牌号的地址信息,而 MAC 地址则是拥有唯一身份证号的"人"。

IP 地址 和 MAC 地址的区别

区别 IP地址 MAC地址
地址类型 逻辑地址 物理地址
分配方式 由运营商分配 由设备制造商烧录到设备的网卡中
作用范围 全球互联网上的通信 局域网内通信
主要功能 标识设备和选择路由 唯一标识设备

查看 IP 地址、MAC 地址

Linux 下使用 ip addr 或 ifconfig,Windows 下使用 ipconfig

  • "1" 表示 MAC 地址,是一个网卡的物理地址,使用十六进制,6个byte表示
  • "2" 表示 net_device flags,网络设备的状态标识
    • BROADCAST 表示此网卡有广播地址,可以发送广播包
    • MULTICAST 表示此网卡可以发送多播包
    • UP 表示此网卡处于启动状态
    • LOWER_UP 表示 L1 启动,即网线已插入
    • mtu 1500 表示最大传输单元 MTU 为 1500,是以太网的默认值,即正文部分不允许超过 1500 个字节
    • qdisc 表示 queueing discipline 排队规则,内核通过网络接口发送数据包时,需要按照 qdisc 配置的规则把数据包加入队列
      • mq:是一个虚拟 qdisc,目的是为网络设备的每个硬件队列创建一个 pfifo_fast 队列
      • pfifo:不对数据包做任何处理,先入先出
      • pfifo_fast:数据包按照服务类型 TOS Type Of Service( IP 头中的一个字段)分配到不同的波段中,每个波段对应的优先级不同

小测验

  1. 如何判断一个 IP 地址是否在子网内?
  2. IP 地址是逻辑地址还是物理地址?它在网络中的作用是什么?
  3. IP 地址和 MAC 地址的区别?
  4. MAC 地址是逻辑地址还是物理地址?它在网络中的作用是什么?
相关推荐
美好的事情能不能发生在我身上4 分钟前
苍穹外卖Day11代码解析以及深入思考
java·spring boot·后端·spring·架构
不良手残41 分钟前
Redisson + Lettuce 在 Spring Boot 中的最佳实践方案
java·spring boot·redis·后端
一线大码1 小时前
SpringBoot 和 MySQL 的事务隔离级别关系
spring boot·后端·mysql
罗政2 小时前
基于 SpringBoot + Vue 在线点餐系统(前后端分离)
vue.js·spring boot·后端
曼岛_2 小时前
[架构之美]深入优化Spring Boot WebFlux应用
spring boot·后端·架构
雨果talk2 小时前
【一文看懂Spring循环依赖】Spring循环依赖:从陷阱破局到架构涅槃
java·spring boot·后端·spring·架构
游戏开发爱好者82 小时前
iOS App上线前的安全防线:项目后期如何用Ipa Guard与其他工具完成高效混淆部署
websocket·网络协议·tcp/ip·http·网络安全·https·udp
Amy.Wang2 小时前
常见的网络协议有哪些
网络·网络协议
想躺平的咸鱼干3 小时前
Elasticsearch 的自动补全以及RestAPI的使用
java·后端·elasticsearch·中间件·intellij-idea
bobz9653 小时前
k8s 内存预留
后端