当前位置: 首页 > news >正文

计算机网络笔记(二十)——4.2网际协议IP

4.2.1 虚拟互连网络

虚拟互连网络(Virtual Interconnected Network)指通过统一的网络层协议(如 IP 协议),将不同物理网络在逻辑上互联为一个整体。其目标是屏蔽底层异构网络的差异(如物理介质、数据链路层协议),使上层应用无需关心具体物理网络的细节。

核心思想

  1. 统一寻址
    • 用全局唯一的 IP 地址 替代物理网络地址(如 MAC 地址),使不同网络的设备可通过统一的逻辑地址通信。
  2. 路由器转发
    • 通过 路由器 在不同网络间转发数据包,基于 IP 地址进行路由选择。
  3. 协议封装
    • 将高层数据封装为统一的 IP 数据报,适配不同底层网络的帧格式和传输要求。

关键组件

  1. IP 协议
    • 提供统一的虚拟网络层,使跨网络通信透明化。
  2. 路由器
    • 在不同网络间转发数据包,维护路由表以确定最佳路径。
  3. IP 地址
    • 全局分配的地址,标识网络接口,如 192.168.1.1

工作流程

在这里插入图片描述

为什么要虚拟互连?

  1. 异构网络兼容
    • 不同网络的物理层和数据链路层可能完全不兼容(如以太网、Wi-Fi、卫星通信),IP 层将它们抽象为统一接口。
  2. 简化上层协议
    • 应用层和传输层无需处理底层网络的差异,专注于数据传递逻辑。

示例:跨网络通信

假设主机 A(IP: 10.1.1.2,以太网)需和主机 B(IP: 172.16.2.5,Wi-Fi)通信:

  1. 封装
    • 主机 A 将数据封装为 IP 数据报(源 IP: 10.1.1.2,目标 IP: 172.16.2.5)。
  2. 路由
    • 通过路由器查找目标网络,逐跳转发。
  3. 解封装
    • 数据最终到达主机 B,移除 IP 头并提交给传输层。

网络拓扑图

在这里插入图片描述

关键总结

  • 虚拟互连网络通过 IP 协议屏蔽物理差异,实现跨网络通信。
  • 路由器是虚拟网络的枢纽,负责根据 IP 地址选择最佳路径。
  • IP 地址是逻辑核心,确保全局可达性与统一寻址。

4.2.2 IP地址

一、IP地址基本概念

IP地址(Internet Protocol Address)是给互联网上的每个网络设备分配的逻辑地址,用于实现网络间的通信和路由选择。IPv4地址长度为32位(4字节),IPv6地址长度为128位。


┌───────────────────────────────┐
│   IPv4地址:32位二进制 → 点分十进制表示  │
│   e.g. 11000000.10101000.00000001.01100101 → 192.168.1.101  │
└───────────────────────────────┘

二、IPv4地址分类(经典分类)

50% 25% 13% 13% IPv4地址类别占比 A类(1/2) B类(1/4) C类(1/8) D&E类(1/16)
类别首字节范围结构适用场景有效网络数每网络主机数
A类1-1260+网络号(7b)+主机号(24b)超大型机构12616,777,214
B类128-19110+网络号(14b)+主机号(16b)中型企业16,38465,534
C类192-223110+网络号(21b)+主机号(8b)小型网络2,097,151254
D类224-2391110+多播地址组播通信--
E类240-2551111+保留实验用途--

三、特殊IP地址

在这里插入图片描述

四、子网划分与CIDR

在这里插入图片描述

子网掩码示例:

IP地址:192.168.1.100  
子网掩码:255.255.255.0 → /24  
网络地址:192.168.1.0  
可用主机范围:192.168.1.1 ~ 192.168.1.254  
广播地址:192.168.1.255  

五、私有地址范围

在这里插入图片描述

六、IP地址分类图(结构)

在这里插入图片描述

七、IPv6简介(对比IPv4)

+-----------------+---------------------+
| 特征             | IPv4      | IPv6      |
+-----------------+---------------------+
| 地址长度         | 32位      | 128位     |
| 地址表示         | 点分十进制 | 冒分十六进制|
| 示例            | 192.168.1.1 | 2001:db8::1 |
| 是否支持自动配置 | 需要DHCP   | 原生支持   |
+-----------------+---------------------+

4.2.3 IP地址与MAC地址

一、基础概念

  1. IP地址

    • 定义:网络层标识符(逻辑地址),用于跨网络通信
    • 版本:IPv4(32位)、IPv6(128位)
    • 结构网络号.主机号(可分层寻址)
    • 示例192.168.1.100/24
  2. MAC地址

    • 定义:数据链路层标识符(物理地址),用于局域网通信
    • 长度:48位(6字节)
    • 结构厂商OUI(24位) + 设备编号(24位)
    • 示例00:1A:2B:3C:4D:5E

二、核心区别

特征IP地址MAC地址
层次性分层结构(网络/主机)平面结构
作用范围全局唯一局域网唯一
修改性动态分配(DHCP/NAT)固化在硬件中
协议层网络层数据链路层

三、ARP协议工作流程

场景:当主机A(IP 192.168.1.2)需要与主机B(IP 192.168.1.3)通信:

在这里插入图片描述

过程解析

  1. ARP请求:广播查询目标IP的MAC地址
  2. ARP响应:目标主机单播响应携带MAC地址
  3. 缓存机制:维护ARP表(有效期15-20分钟)

四、典型案例分析

某路由器转发IP数据包时的地址变化:

在这里插入图片描述

关键要点

  • IP地址:全程保持不变(端到端)
  • MAC地址:每经过一个数据链路层就改变
  • 路由器作用:修改帧头MAC地址,转发至下一跳

五、关键问答

Q:为何需要同时使用IP与MAC地址?

A:

  1. 网络分层:IP解决跨网络路由,MAC解决链路层直连通信
  2. 地址分配:IP可动态管理,MAC永久硬件标识
  3. 工作范围:IP实现全球寻址,MAC限定本地网络通信

典型场景:访问www.example.com时先DNS解析IP地址,再通过ARP获取网关MAC地址。

六、RARP协议拓展

  • 作用:通过MAC地址反向查询IP地址(适于无盘工作站)
  • 流程:广播MAC地址→ RARP服务器分配对应IP

4.2.4 地址解析协议ARP

一、ARP 的作用

ARP 是网络层协议(工作在网络层与数据链路层之间),将已知的 IP 地址解析为对应的 MAC 地址,解决同一局域网内设备通信时的地址映射问题。

二、为什么需要 ARP?

  1. IP 与 MAC 的分工

    • IP 地址:逻辑地址(网络层),负责跨网络的端到端寻址
    • MAC 地址:物理地址(数据链路层),负责同一局域网内的直接通信
    • ARP 的价值:在网络中传输数据时,直接通信需基于 MAC 地址,而应用程序使用的是 IP 地址。
  2. 典型案例
    当主机 A 向同一子网的主机 B 发送数据时,数据链路层需要封装目标 MAC 地址,但 A 只知道 B 的 IP 地址,此时需 ARP 查询。

三、ARP 工作原理

流程图

在这里插入图片描述

分步说明

  1. ARP 请求(广播)

    • 主机 A 的 ARP 缓存表中没有 IP_B 的映射时,广播发送 ARP 请求包

    • 请求包内容

      发送方IP: IP_A  
      发送方MAC: MAC_A  
      目标IP: IP_B  
      目标MAC: FF-FF-FF-FF-FF-FF(广播地址)
      
  2. ARP 响应(单播)

    • 主机 B 收到请求,识别目标 IP 与自己一致,单播回复 ARP 响应

    • 响应包内容

      发送方IP: IP_B  
      发送方MAC: MAC_B  
      目标IP: IP_A  
      目标MAC: MAC_A
      
  3. 缓存更新

    • 主机 A 收到响应后,将 IP_B → MAC_B 的映射存入 ARP 缓存表(有效期通常为 15–20 分钟)。

四、关键机制解析

  1. ARP 缓存表(ARP Cache)

    • 作用:避免重复广播,提升效率。

    • 查看命令(Linux/Windows)

      arp -a        # 显示所有 ARP 缓存条目
      arp -d <IP>   # 删除指定条目
      
  2. 代理 ARP(Proxy ARP)

    • 场景:当目标主机位于不同子网时,路由器代替目标主机回应 ARP 请求。
    • 流程
      1. 主机 A 广播查询网关的 MAC 地址。
      2. 网关回应自己的 MAC 地址。
      3. 数据包的下一跳由网关转发。
  3. 免费 ARP(Gratuitous ARP)

    • 作用:检测 IP 地址冲突或更新其他主机的 ARP 缓存。
    • 特征:发送方的 IP 与目标 IP 字段相同。

五、ARP 报文格式

|  硬件类型  |  协议类型  | 硬件地址长度 | 协议地址长度 |   操作类型   |
|------------|------------|-------------|-------------|-------------|
|       发送方MAC地址        |        发送方IP地址         |
|       目标MAC地址          |        目标IP地址           |
  • 操作类型:1(请求)、2(响应)
  • MAC 地址字段:全0表示待解析。

六、常见攻击与防御

  1. ARP 欺骗(ARP Spoofing)
    • 攻击者伪造虚假的 IP-MAC 映射,劫持流量。
  2. 防御方法
    • 静态 ARP 绑定(手动设置关键设备的 ARP 条目)。
    • 动态 ARP 检测(DAI,网络设备自动监测异常 ARP 包)。

七、总结

ARP 通过广播查询和单播响应的方式解决 IP 到 MAC 的映射问题,是局域网通信的基础。理解 ARP 后,学习 ICMP、DHCP 等协议会更顺畅。

4.2.5 IP数据报的格式

IPv4数据报的格式由固定首部(20字节)和可变选项部分(最多40字节)组成

IPv4数据报格式

在这里插入图片描述

各字段详解

  1. 版本(Version - 4bit)
    表示IP协议版本号,IPv4固定为0100(二进制),对应十进制4

  2. 首部长度(IHL - 4bit)
    以4字节为单位标识IP首部长度,取值范围5~15(对应实际长度20~60字节)。

  3. 区分服务(TOS - 8bit)
    用于QoS(服务质量),包含优先级(3bit)、延迟、吞吐量、可靠性、代价等标记。

  4. 总长度(Total Length - 16bit)
    整个数据报的最大长度为65535字节,包含首部和数据部分。

  5. 标识(Identification - 16bit)
    分片时唯一标识同一原始数据报的分片,接收端通过此值重组报文。

  6. 标志(Flags - 3bit)

    • 第1位(保留未用)
    • 第2位(DF - Don’t Fragment):设置时禁止分片,若MTU不足则丢弃并返回ICMP错误。
    • 第3位(MF - More Fragments):除最后一个分片外,其他分片此位均置1。
  7. 片偏移(Fragment Offset - 13bit)
    以8字节为单位,标识分片在原始数据报中的位置。例如偏移值为185表示分片起始位置为185*8=1480字节。

  8. 生存时间(TTL - 8bit)
    每经过一次路由减1,TTL=0时丢弃报文,防止循环。

  9. 协议(Protocol - 8bit)
    上层协议类型:

    • TCP=6,UDP=17,ICMP=1
  10. 首部校验和(Checksum - 16bit)
    仅计算首部的错误校验,转发时每跳路由器重新计算。

  11. 源/目的IP地址(各32bit)
    32位IPv4地址。

  12. 选项和填充(Options + Padding - 可变长度)

    • 可选功能(如路由记录、时间戳)。
    • 填充确保首部长度为4字节的倍数。
  13. 数据部分(Data)
    包含上层协议数据(如TCP段或UDP数据报)。

分片示例(MTU=1500字节)

一个4000字节的原始数据报(数据部分3980字节)分片过程:

在这里插入图片描述

关键特性

  • 标识与重组:同一报文的分片具有相同标识,接收端根据片偏移重组。
  • MTU限制:若数据报超过链路MTU且DF=0,则必须分片。
  • 首部长度:固定首部20字节,选项最多40字节,总和不超过60字节。

通过学习IPv4数据报格式,可以深入理解网络分片、路由转发和协议交互机制。

http://www.xdnf.cn/news/384157.html

相关文章:

  • 滑动窗口,438找出字符串中所有字母的异位词
  • cpu缓存一致性
  • C语言模糊不清的知识
  • BC12-字符金字塔
  • 【C++贪心 位运算】B3930 烹饪问题|普及
  • RESTful API 与传统 API 设计:深度对比与完整实践指南RESTful 与 传统 API 的核心区别
  • 基于STM32的LCD信号波形和FFT频谱显示
  • Pandas 内存不足 或 UDF 执行慢
  • Python面向对象编程:初识类与对象
  • c++学习之路(3)
  • sched_fair 调度:负载权重、虚拟运行时间与最小虚拟时间
  • 安达发|制药车间生产计划准备性的关键影响因素及优化策略研究
  • 力扣刷题(第二十二天)
  • 最小生成树
  • 挪度半身复苏小安妮模型QCPR成人半身急救心肺复苏模拟人
  • Python训练营打卡DAY21
  • Yocto中的${D}解读
  • CTFd 文件上传模块解读
  • CSDN 中 LaTeX 数学公式输入方法
  • NVMe控制器之仿真平台搭建
  • 深入探究 InnoDB 的写失效问题
  • C34-递归函数编码实战
  • Profinet转CanOpen协议转换网关,破解工业设备“语言障碍”
  • 前端CSS场景题篇【持续更新】
  • Pass@1、EM、LC-winrate/winrate、CSL—— 大模型评测指标
  • Linux时间同步服务
  • Java多线程(超详细版!!)
  • 智能指针:C++内存管理的现代解决方案
  • 专业级软件卸载工具:免费使用,彻底卸载无残留!
  • 【CF】Day56——Codeforces Round 940 (Div. 2) and CodeCraft-23 BCD