• 你了解IP协议吗?


    1.写在前面

    前面的博客,大体的介绍完了整个网络的体系,还剩下一个IP协议,今天我们来介绍这个IP协议。

    2.网络层与链路层的功能

    网络层功能

    • IP 寻址
    • 选路
    • 封装打包
    • 分片
    • 在这里插入图片描述

    数据链路层功能

    • 逻辑链路控制
    • 媒体访问控制
    • 封装链路层帧
    • MAC 寻址
    • 差错检测与处理
    • 定义物理层标准
    • 在这里插入图片描述

    细腰结构:IP 网络层的核心地位

    性能至上的 IP 层

    • 无连接
    • 非可靠
    • 无确认
    • 在这里插入图片描述

    多播:广播与组播

    • 全球作用域
    • 组织内
    • 场点内
    • 本地链路层
    • 本机作用域
    • 在这里插入图片描述

    路由器与交换机

    • 工作在网络层的路由器
      • 连接不同网络的设备
    • 工作在数据链路层的交换机
      • 同一个网络下连接不同主机的设备
    • 在这里插入图片描述

    网络传输示例

    在这里插入图片描述

    3.IPv4 分类地址

    易用性:IPv4 地址的点分十进制表示

    • 32 位二进制数
    • IP 地址空间:2^32 个
    • 在这里插入图片描述

    IP 地址的分配机构

    • 层层分配的 IP 地址
    • 在这里插入图片描述

    当互联网规律很小时,类别信息被编码进 IP 地址

    在这里插入图片描述

    分类 IP 地址的优点

    • 简单明了
    • 具有 3 个级别的灵活性
    • 选路(基于网络地址) 简单
    • 在这里插入图片描述

    分类 IP 寻址的问题

    • 缺少私有网络下的地址灵活性:同一个网络下没有地址层次
    • 3 类地址块太少,无法与现实网络很好的匹配
    • 在这里插入图片描述

    4.CIDR无分类地址

    CIDR 子网掩码

    CIDR

    • Classless Inter-Domain Routing

    表示方法

    • A.B.C.D/N,N 范围[0, 32]

    • 在这里插入图片描述

    • 在这里插入图片描述

    CIDR 子网划分示例

    • 71.94.0.0/15
      • 多级子网划分
      • 在这里插入图片描述

    208.130.29.33 的寻址历程

    • MCI 分配到了 208.128.0.0/11
    • MCI 将 208.130.28.0/22 分配给ARS
    • ARS 将 208.130.29.0/22 分配给Public Servers 使用
    • www.freesoft.org 使用了208.130.29.33 地址
    • 在这里插入图片描述

    全 0 或者全 1 的特殊含义

    在这里插入图片描述

    预留 IP 地址(RFC1918)

    在这里插入图片描述

    5.IP 地址与链路地址的转换:ARP 与 RARP 协议

    链路层 MAC 地址

    • 链路层地址 MAC(Media Access Control Address)
      • 实现本地网络设备间的直接传输
    • 网络层地址 IP(Internet Protocol address)
      • 实现大型网络间的传输
    • 查看 MAC 地址
      • Windows: ipconfig /all
      • Linux:ifconfig

    2.5 层协议 ARP:从 IP 地址寻找 MAC 地址

    • 动态地址解析协议 ARP(RFC826)
      • Address Resolution Protocol
    • 动态地址解析:广播
    • 在这里插入图片描述

    2.5 层协议:ARP

    1. 检查本地缓存

      • Windows: arp –a
      • Linux: arp –nv
      • Mac: arp -nla
    2. 广播形式的请求

    3. 单播形式的应答

      在这里插入图片描述

    ARP 报文格式:FrameType=0x0806

    • 硬件类型,如 1 表示以太网
    • 协议类型,如 0x0800 表示 IPv4
    • 硬件地址长度,如 6
    • 协议地址长度,如 4 表示 IPv4
    • 操作码,如 1 表示请求,2 表示应答
    • 发送方硬件地址
    • 发送方协议地址
    • 目标硬件地址
    • 目标协议地址
    • 在这里插入图片描述

    硬件类型与操作码

    • 硬件类型取值

    • 在这里插入图片描述

    • 操作码取值

    • 在这里插入图片描述

    2.5 层协议 RARP:从 MAC 地址中寻找 IP 地址

    动态地址解析协议 RARP(RFC903)

    • Reverse Address Resolution Protocol
    • 在这里插入图片描述

    RARP 的工作流程

    1. 广播形式的请求

    2. 单播形式的应答

      在这里插入图片描述

    RARP 报文格式:FrameType=0x8035

    • 硬件类型,如 1 表示以太网
    • 协议类型,如 0x0800 表示 IPv4
    • 硬件地址长度,如 6
    • 协议地址长度,如 4 表示 IPv4
    • 操作码,如 3 表示请求,4 表示应答
    • 发送方硬件地址
    • 发送方协议地址
    • 目标硬件地址
    • 目标协议地址
    • 在这里插入图片描述

    ARP 欺骗(ARP spoofing/poisoning)

    在这里插入图片描述

    6.NAT 地址转换与 LVS 负载均衡

    IPv4 地址短缺

    在这里插入图片描述

    少量的公网 IP VS 大量的主机

    在这里插入图片描述

    NAT(IP Network Address Translator)应用的前提

    • 内网中主要用于客户端访问互联网
    • 同一时间仅少量主机访问互联网
    • 内网中存在一个路由器负责访问外网

    单向(向外)转换 NAT:动态映射

    在这里插入图片描述

    NAPT 端口映射:Network Address Port Translation

    在这里插入图片描述

    双向(向内)NAT:IP 地址静态映射

    在这里插入图片描述

    LVS(Linux Virtual Server)/NAT 工作模式

    在这里插入图片描述

    NAT

    优点:

    • 共享公共 IP 地址,节约开支
    • 扩展主机时不涉及公共地址
    • 更换 ISP 服务商(更换公网 IP 地址),不对主机地址产生影响
    • 更好的安全性,外部服务无法主动访问内网服务
    • 更好的隔离性

    缺点:

    • 网络管理复杂
    • 性能下降
    • 重新修改校验和
    • 客户端缺乏公网 IP 导致功能缺失
    • 某些应用层协议由于传递网络层信息而功能受限

    7.IP 选路协议

    如何传输 IP 报文?

    • 直接传输
    • 本地网络间接传输
      • 内部选路协议 RIP OSPF
    • 公网间接传输
      • 外部选路协议 BGP

    在这里插入图片描述

    路由表 routing table

    在这里插入图片描述

    RIP 内部选路协议

    Routing Information Protocol

    • 特点
      • 基于跳数确定路由
      • UDP 协议向相邻路由器通知路由表
    • 问题
      • 跳数度量
      • 慢收敛
      • 选路环路
      • 在这里插入图片描述

    OSPF 内部选路协议

    Open Shortest Path First

    多级拓扑结构:同级拓扑中的每台路由器都具有最终相同的数据信息(LSDB)

    • 直接使用 IP 协议(协议号 0x06 为 TCP,0x11 为 UDP,而 0x59 为 OSPF)传递路由信息
    • 在这里插入图片描述

    OSPF 最短路径树

    • 只有路由器到达网络有开销
      • 网络到达路由器没有开销
    • RC 的最短路径树
    • 在这里插入图片描述

    RC 构造最短路径树

    1. 第一级:RC 直达设备

      • N2:3
      • N3:6
      • RB:5
    2. 第二级:间隔 1 跳设备

      • 经过 N2 到 RA:3
      • 经过 N3 到 RD:6
    3. 第三级:间隔 2 跳设备

      • 经过 N2、RA 到 N1:5
      • 经过 N3、RD 到 N4:10

      在这里插入图片描述

    BGP:Border Gateway Protocol

    • 网络间的选路协议

    • 存放网络间信息 RIB

      • Routing Information Base
      • TCP 协议传输 RIB 信息
    • E(External)BGP

      • 外部对等方传输使用
    • I(Internal)BGP

      • 内部对等方传输使用

      在这里插入图片描述

    路由跟踪工具

    • Windows: tracert
    • Linux/Mac: traceroute
    • 在这里插入图片描述

    8.MTU 与 IP 报文分片

    IP 报文格式

    • IHL:头部长度,单位字

    • TL:总长度,单位字节

    • Id:分片标识

    • Flags:分片控制

      • DF 为1:不能分片
      • MF 为1:中间分片
    • FO:分片内偏移,单位 8 字节

    • TTL:路由器跳数生存期

    • Protocol:承载协议

    • HC:校验和

      在这里插入图片描述

    MTU(Maximum Transmission Unit)分片

    • MTU 最大传输单元( RFC791 :>=576 字节)
    • ping 命令
      • -f:设置 DF 标志位为 1
      • -l:指定负载中的数据长度
    • 在这里插入图片描述

    常见网络 MTU

    在这里插入图片描述

    可能出现多次分片

    在这里插入图片描述

    IP 分片示例

    • 分片主体
      • 源主机
      • 路由器
    • 重组主体
      • 目的主机
    • 在这里插入图片描述

    9.IP 协议的助手:ICMP 协议

    ICMP:Internet Control Message Protocol

    • RFC792
    • IP 助手
      • 告知错误
      • 传递信息
    • 在这里插入图片描述

    ICMP协议格式

    承载在 IP 之上

    组成字段

    • 类型
    • 子类型
    • 校验和
    • 在这里插入图片描述

    ICMPv4 报文类型

    错误报文

    • 3:目的地不可达
    • 4:发生拥塞,要求发送方降低速率
    • 5:告诉主机更好的网络路径
    • 11:路径超出 TTL 限制
    • 12:其他问题

    信息报文

    • 0:连通性测试中的响应
    • 8:连通性测试中的请求
    • 9:路由器通告其能力
    • 10:路由器通知请求
    • 13:时间戳请求
    • 14:时间戳应答
    • 17:掩码请求
    • 18:掩码应答
    • 30:Traceroute

    目的地不可达报文:Type=3

    常用子类型 Code

    • 0:网络不可达
    • 1:主机不可达
    • 2:协议不可达
    • 3:端口不可达
    • 4:要分片但 DF 为1
    • 10:不允许向特定主机通信
    • 13:管理受禁
    • 在这里插入图片描述

    Echo 与 Echo Reply 报文

    ping 联通性测试

    在这里插入图片描述

    TTL 超限:Type=11

    traceroute/tracert

    在这里插入图片描述

    10.多播与 IGMP 协议

    广播与组播

    在这里插入图片描述

    广播地址

    • 以太网地址: ff:ff:ff:ff:ff:ff
    • IP 地址
    • 在这里插入图片描述

    组播IP地址

    预留组播地址

    • 224.0.0.1: 子网内的所有系统组

    • 224.0.0.2: 子网内的所有路由器组

    • 224.0.1.1: 用于 NTP 同步系统时钟

    • 224.0.0.9: 用于 RIP-2 协议

    • 在这里插入图片描述

    • 在这里插入图片描述

    组播以太网地址

    • 以太网地址:01:00:5e:00:00:00 到 01:00:5e:7f:ff:ff
    • 低 23 位:映射 IP 组播地址至以太网地址
      • 224.0.0.22: 11100000 00000000 00000000 00010110
      • 01:00:5e:00:00:16: 0000001 00000000 01011110 00000000 00000000 00010110
    • 在这里插入图片描述

    IGMP(Internet Group Management Protocol)协议

    Type 类型

    • 0x11 Membership Query [RFC3376]
    • 0x22 Version 3 Membership Report [RFC3376]
    • 0x12 Version 1 Membership Report [RFC-1112]
    • 0x16 Version 2 Membership Report [RFC-2236]
    • 0x17 Version 2 Leave Group [RFC-2236]

    在这里插入图片描述

    0x22 Membership Report:状态变更通知

    在这里插入图片描述

    Group Record 格式

    Record Type 类型

    • 当前状态
      • 1: MODE_IS_INCLUDE
      • 2: MODE_IS_EXCLUDE
    • 过滤模式变更(如从 INCLUDE 奕为 EXCLUDE)
      • 3: CHANGE_TO_INCLUDE
      • 4: CHANGE_TO_EXCLUDE
    • 源地址列表变更(过滤模式同时决定状态)
      • 5: ALLOW_NEW_SOURCES
      • 6: BLOCK_OLD_SOURCES
    • 在这里插入图片描述

    11.支持万物互联的 IPv6 地址

    IPv6 目的

    • 更大的地址空间:128 位长度
    • 更好的地址空间管理
    • 消除了 NAT 等寻址技术
    • 更简易的 IP 配置管理
    • 优秀的选路设计
    • 更好的多播支持
    • 安全性
    • 移动性

    IPv6 地址的冒分十六进制表示法

    • 首零去除
    • 零压缩
      • FF00:4501:0:0:0:0:0:32
        • FF00:4501::32
      • 805B:2D9D:DC28:0:0:FC57:0:0
        • 805B:2D9D:DC28::FC57:0:0
        • 805B:2D9D:DC28:0:0:FC57::
      • 环回地址0:0:0:0:0:0:0:1
        • ::1

    IPv6 地址分布

    在这里插入图片描述

    不同作用域下的多播

    Scope ID

    • 14:全局作用域

    • 8:组织作用域

    • 5:场点作用域

    • 2:本地链路作用域

    • 1:本机作用域

    • 在这里插入图片描述

    • 在这里插入图片描述

    网络地址与主机地址

    全局路由前缀:48

    • 可任意划分为多级

    子网ID:16

    • 可任意划分为多级

    接口ID:64

    • 直接映射 MAC 地址

    在这里插入图片描述

    IEEE802 48 位 MAC 地址映射主机地址(EUI-64)

    • 取 OUI(组织唯一标识)放左 24 比特

    • 中间 16 比特置为 FFFE

    • 置 OUI 第 7 位为 1 表示全局

      在这里插入图片描述

    12.IPv6 报文及分片

    IP 头部

    在这里插入图片描述

    IPv6 主首部格式

    • Version
    • Traffic Class
      • TOS
    • Flow Label:QOS 控制
    • Payload Length
      • Total Length
    • Next Header
    • HopLimit
      • TTL
    • 删除字段
      • IHL
      • Identification, Flags, Fragment Offset
      • Header Checksum

    在这里插入图片描述

    IPv6 报文格式

    • 40 字节主首部
    • 可选的扩展首部
    • 数据
    • 在这里插入图片描述

    IPv6 首部链

    在这里插入图片描述

    分片扩展首部

    • Fragment Offset
      • 单位 8 字节
    • MoreFragments
      • 0 表示最后分片
      • 1 表示非最后分片
    • identification
      • 扩展 IPv4 相同头部至 4 字节

    在这里插入图片描述

    IPv6 的分片

    • 不可分片部分
      • 主首部
    • 部分扩展首部
      • 可分片部分
    • 数据
      • 部分扩展首部

    在这里插入图片描述

    13.从 wireshark 报文统计中找规律

    搭配“显示过滤器”使用

    统计方式

    • 报文总体分布:捕获文件属性与数据包长度分布
    • 端点统计与会话统计
    • 协议分级统计
    • HTTP/HTTP2 等应用层协议统计
    • TCP 协议连接统计
    • IO 流统计与数据流统计

    报文总体分布

    捕获文件属性

    • when:何时抓包
    • where:哪个 IP 接口在抓包
    • how:捕获过滤器是什么?
    • how much:多少报文?多少字节?多快速率?

    报文长度分布:信息传输效率

    • 各种长度报文的分布

    协议分级统计(配合显示过滤器)

    • 分组数量/字节数百分比(同层)
    • 绝对分组数量/字节数
    • 速率(比特/秒)
    • 协议消息统计
      • 结束“分组”
      • 结束字节
      • 结束速率

    端点统计/会话统计

    • OSI 不同层次统计
      • 数据链路层(解析名称:MAC/IP/PORT)
        • 通讯双方/单端点、分组数、字节数、报文方向、速率、持续时间
      • 网络层
      • 传输层
        • UDP/TCP,端口统计
    • 快速应用过滤器及着色规则

    HTTP/HTTP2 统计

    • HTTP
      • 分组统计:请求方法与响应码统计
      • 请求:基于 Host 和 URI 统计
      • 负载均衡:基于 IP 与 Host 统计
      • 请求序列:对请求同一 Domain 下的 URI 统计
    • HTTP2
      • 帧类型统计

    TCP 连接信息统计

    • 基于 TCP 连接特性统计,可切换方向
      • RTT 时间
      • 吞吐量
      • 窗口大小
      • 序列号

    IO 图表与数据流统计

    • IO 图表
      • 绘制出不同颜色、各类型(折线、直方、点)图
      • 以时间作为 X 轴(可选择时间间隔)
      • 可设置过滤器下的报文信息为Y轴
      • 报文数量、字节数、统计函数
    • 数据流
      • 可选择基于显示过滤器,显示各端之间的数据流量

    专家系统

    • Error:错误信息,包括 Wireshark 解析失败信息
    • Warning:异常警告信息
      • RST 复位关闭、TCP 窗口关闭、TCP 乱序报文等
    • Note:正常通信中的异常通信报文
      • TCP 重复 ACK、TCP 重传报文、Keepalive、TLS 复用密钥、零窗口探查等
    • Chat:通信的基本信息

    14.写在最后

    本篇博客主要介绍完了IP协议,至此整个网络协议到此就介绍完了。

  • 相关阅读:
    JVM垃圾收集算法
    rabbitmq载在.net中批量消费的问题记录
    ctfshow——54命令执行,需要严格的过滤
    【Linux系列】深入解析 `kill` 命令:Linux 下的进程管理利器
    易基因|表观发育:ChIP-seq揭示精子H3K4me3可传递到胚胎并与代谢功能障碍遗传有关
    什么是Jmeter?Jmeter使用的原理步骤是什么?
    phpldapadmin This base cannot be created with PLA
    【数据结构与算法】顺序表
    C++前缀和算法的应用:得到连续 K 个 1 的最少相邻交换次数 原理源码测试用例
    Android使用Glide类加载服务器中的图片
  • 原文地址:https://blog.csdn.net/qq_36434742/article/details/125520145