快速理解网络协议(一) 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 地址是逻辑地址还是物理地址?它在网络中的作用是什么?
相关推荐
wang_shu_mo_ran6 分钟前
网络编程(二):UDP数据报在客户端与服务端之间的传输
网络·网络协议·udp
程序员爱钓鱼13 分钟前
Rust 数据类型详解:整数、浮点数、布尔、字符、元组和数组
后端·rust
geovindu14 分钟前
go: Floyd-Warshall Algorithms
开发语言·后端·算法·golang
AC赳赳老秦18 分钟前
Excel 动态仪表盘制作:用 OpenClaw 自动处理数据、生成交互式图表并实时更新仪表盘
大数据·服务器·后端·测试用例·excel·deepseek·openclaw
CoderYanger19 分钟前
视频裁剪+缩放+自动添加水印脚本(Python版)
开发语言·后端·python·程序人生·职场和发展·音视频·学习方法
从零开始的代码生活_1 小时前
C++ 模板入门:函数模板、类模板与实例化机制
开发语言·c++·后端
mudtools1 小时前
HttpUtils:一个编译时生成的声明式 HTTP 客户端框架
网络·网络协议·http·.net
mCell10 小时前
你以为短链接只是 Hash + 301/302?
后端·算法·架构
咖啡八杯10 小时前
GoF设计模式——迭代器模式
java·后端·设计模式·迭代器模式
IT_陈寒14 小时前
SpringBoot自动配置不是你以为的那样的智能
前端·人工智能·后端