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

【网络层】IP报文解析和网段划分

文章目录

  • 网络层的作用
  • IP协议
    • 协议报头格式
    • 网段划分
      • DHCP
      • CIDR划分方案
    • IP地址的数量限制
    • 私有IP地址和公网IP地址
      • LAN和WAN
  • 路由

网络层的作用

前面学习了应用层和传输层,应用层的作用是为用户和应用程序提供网络服务,传输层的作用是提供端口到端口的通信服务。而网络层呢,其作用就是为了在复杂的网络环境中确定一个合适的路径,也就是在网络世界中找到目标主机。下面逐步介绍如何通过一个IP地址找到一台目标主机。

IP协议

在这里插入图片描述

协议报头格式

在这里插入图片描述

  • 4位版本号:指定IP协议的版本,4表示的是IPv4
  • 4位首部长度:IP头部的长度,单位是4字节,4个比特位表示的最大数为15,所以IP报头的最大长度为15*4=60个字节,最小为5*4=20字节。加粗样式
  • 8位服务类型:3位优先权字段(已经弃用),4位TOS字段和1 位保留字段(必须置为 0)。4 位 TOS 分别表示: 最小延时, 最大吞吐量, 最高可靠性, 最小成本. 这四者相互冲突, 只能选择一个.
  • 16 位总长度:数据报整体占多少个字节
  • 16位标识唯一标识主机发送的报文,也就是说每一次发送的报文的标识符都唯一。如果IP报文在数据链路层被分片了,那么每一个片里的标识符都是相同的,标识它们属于同一个报文。
  • 3位标志字段:第一位保留。第二位置1表示禁止分片,此时如果报文长度超过MTU,IP模块就会丢弃报文。第三位置1表示有更多分片,如果分片,最后一个分片置为 0, 其他是 1. 类似于一个结束标记
  • 13位片偏移:表示数据包分片在原始数据包中的位置,以8字节为单位。是分片相对于原始 IP 报文开始处的偏移. 其实就是在表示当前分片在原报文中处在哪个位置。接收方收到被分片的IP报文后,按照13位偏移量就可以将所有的分片排序,这样得到的整个报文就是正确的顺序。
  • 8位生存时间:数据到达目的地后的最大报文跳数,一般是64。每经过一个路由器,TTL值减1,直到到达目的地或变为0时丢弃数据包。 主要用于防止出现路由循环。
  • 8位协议:表示传输层使用的协议类型,例如,ICMP为1,TCP为6,UDP为17。
  • 16位校验和:使用 CRC 进行校验, 来鉴别头部是否损坏.
  • 32 位源地址和 32 位目标地址: 表示发送主机和接收主机.
  • 选项字段(不定长, 最多 40 字节)。

网段划分

IP地址分为两个部分:网络号和主机号

  • 网络号:保证相互连接的两个网段具有不同的标识
  • 主机号:同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号
    在这里插入图片描述
  • 不同的子网其实就是把网络号相同的主机放到一起.
  • 如果在子网中新增一台主机, 则这台主机的网络号和这个子网的网络号一致, 但是主机号必须不能和子网中的其他主机重复
  • 网络号用来标识网络中的某一个子网,主机号则是用来标识该子网中的某一台主机。更简单的,网络号指的是的一段范围,主机号指的是这段范围内的某台主机。

通过合理设置主机号和网络号, 就可以保证在相互连接的网络中, 每台主机的 IP 地址都不相同

DHCP

DHCP技术通过服务器与客户端之间的交互,实现了IP地址和其他网络配置信息的动态分配。
工作原理:
DHCP的工作原理通常包含四个步骤:发现、提供、请求、确认。

  • 发现:当设备(手机或者电脑)加入网络时,它会广播一条DHCP发现消息,寻找可用的DHCP服务器。
  • 提供:DHCP服务器收到发现消息之后,会准备一个包含可用IP地址和其它网络配置如子网掩码等的DHCP提供消息,并将这个消息发送给请求的设备
  • 请求:设备可能收到多个提供消息,会从中选择一个,并发送一个DHCP请求消息给对应的DHCP服务器,确认接受该服务器提供的IP地址等信息。
  • 确认:DHCP服务器收到上面的请求后,再发送一个DHCP确认消息给你的手机,正式分配IP地址,设备收到后就可以正式连接网络了

简单来说就是,DHCP,能够自动的给子网内新增主机节点分配 IP 地址。一般的路由器都带有 DHCP 功能. 因此路由器也可以看做一个 DHCP 服务器.

过去曾经提出一种划分网络号和主机号的方案, 把所有 IP 地址分为五类, 如下图所示
在这里插入图片描述
随着 Internet 的飞速发展,这种划分方案的局限性很快显现出来,大多数组织都申请 B 类网络地址, 导致 B 类地址很快就分配完了, 而 A 类却浪费了大量地址;显然,这种分类方式不太灵活。

针对这种情况提出了新的划分方案, 称为CIDR

CIDR划分方案

  • 引入一个额外的子网掩码(subnet mask)来区分网络号和主机号;
  • 子网掩码也是一个 32 位的正整数. 通常用一串 “0” 来结尾;
  • 将 IP 地址和子网掩码进行 “按位与” 操作, 得到的结果就是网络号;
  • 网络号和主机号的划分与这个 IP 地址是 A 类、B 类还是 C 类无关

在这里插入图片描述
其中,IP地址中的主机地址全0表示的就是这个局域网本身,全1就表示广播地址,用于给同一个链路中相互连接的所有主机发送数据包。

此外, 127.*的 IP 地址用于本机环回(loop back)测试,通常是 127.0.0.1

  • 关于本地环回地址:
    主要用于本地网络接口的测试和诊断。其实就是自己发送数据给自己,中间并没有经过局域网和其他网络

在这里插入图片描述
CIDR 在一定程度上缓解了 IP 地址不够用的问题:提高了利用率, 减少了浪费(可以根据主机数量来增加主机号的位数)

IP地址的数量限制

IPv4下的IP地址只有32位,大概就是43亿左右。假设每台主机都要有一个唯一的IP地址,那么就意味着一共只有 43 亿台主机能接入网络?事实上,由于一些特殊的 IP 地址的存在, 数量远不足 43 亿; 另外 IP 地址并非是按照主机台数来配置的, 而是每一个网卡都需要配置一个或多个 IP 地址.
CIDR 虽然在一定程度上缓解了 IP 地址不够用的问题,但仍然不够用. 这时候有三种方式来解决:

  • 动态分配 IP 地址: 只给接入网络的设备分配 IP 地址. 因此同一个 MAC 地址的设备, 每次接入互联网中, 得到的 IP 地址不一定是相同的;
  • NAT 技术:通过允许多个内部设备共享一个或多个公共IP地址来访问互联网,从而节省了公网IP地址的使用。也就是说,不同的局域网中IP地址可以是一样的
  • IPv6: IPv6 并不是 IPv4 的简单升级版. 这是互不相干的两个协议, 彼此并不兼容; IPv6 用 16 字节 128 位来表示一个 IP 地址; 但是目前 IPv6 还没有普及

私有IP地址和公网IP地址

如果一个组织内部组建局域网,IP 地址只用于局域网内的通信,而不直接连到 Internet (公网)上, 理论上 使用任意的 IP 地址都可以,但是 RFC 1918 规定了用于组建局域网的私有 IP 地址

  • 10.*,前 8 位是网络号,共 16,777,216 个地址
  • 172.16.到 172.31.,前 12 位是网络号,共 1,048,576 个地址
  • 192.168.*,前 16 位是网络号,共 65,536 个地址

包含在这个范围中的, 都成为私有 IP, 其余的则称为全局 IP(或公网 IP);

在这里插入图片描述
上图中的WAN口IP就是路由器所在网络的地址

  • 一个路由器可以配置两个 IP 地址, 一个是 WAN 口 IP, 一个是 LAN 口 IP(子网IP).
  • 路由器 LAN 口连接的主机, 都从属于当前这个路由器的子网中.
  • 不同的路由器, 子网 IP 可以是一样的(通常都是 192.168.1.1). 子网内的主机
  • 每一个家用路由器, 其实又作为运营商路由器的子网中的一个节点. 这样的运营商路由器可能会有很多级, 最外层的运营商路由器, WAN 口 IP 就是一个公网 IP 了.
  • 家用路由器的WAN口地址通常是运营商的子网IP地址,运营商的WAN口地址通常就是公网。
  • 子网内的主机需要和外网进行通信时, 路由器将 IP 首部中的 IP 地址进行替换(替换成 WAN 口 IP), 这样逐级替换, 最终数据包中的 IP 地址成为一个公网 IP. 这种技术称为 NAT(Network Address Translation,网络地址转换).
  • 如果希望我们自己实现的服务器程序, 能够在公网上被访问到, 就需要把程序部署在一台具有外网 IP 的服务器上. 这样的服务器可以在阿里云/腾讯云上进行购买.

LAN和WAN

LAN口地址和WAN口地址在路由器中扮演着不同的角色,分别用于局域网(LAN)和广域网(WAN)的连接与通信。注意,局域网和广域网的概念是相对的,我们认为一个路由器的子网可以是称为一个局域网,路由器“外面”的网络可以称为广域网,但路由器又可能处于运营商路由器的子网构建的局域网中。
LAN口地址通常用于局域网内部的设备之间的通信,WAN口地址,即广域网接口地址,是路由器从互联网服务提供商(ISP)处获得的公网IP地址。这个地址用于路由器与外部网络(如互联网)之间的通信。

路由

路由其实就是利用目的IP在复杂的网络中找到目标主机,这个过程类似于问路
通常,路由的过程会经过多个路由器,我们把在以太网中指从源 MAC 地址到目的MAC 地址之间的帧传输称为"一跳"。

在这里插入图片描述
当IP数据包到达路由器时,路由器会先查看目的IP。路由器维护了一张路由表,表中有着与该路由器所处同一个网络中的其它路由器的IP地址以及子网掩码。如果目的IP与该表中的某个子网掩码与上之后恰好等于其对应的网络号,那么说明这个IP数据报下一跳就去该路由器的子网中继续找。如下图所示。
在这里插入图片描述

  • 在linux中,路由表可以使用route指令查看
    在这里插入图片描述
    如果目的 IP 命中了路由表, 就直接转发即可,路由表中的最后一行即default,主要由下一跳地址和发送接口两部分组成,当目的地址与路由表中其它行都不匹配时,就按缺省路由条目规定的接口发送到下一跳地址。

相关文章:

【网络层】IP报文解析和网段划分

文章目录 网络层的作用IP协议协议报头格式网段划分DHCPCIDR划分方案 IP地址的数量限制私有IP地址和公网IP地址LAN和WAN 路由 网络层的作用 前面学习了应用层和传输层,应用层的作用是为用户和应用程序提供网络服务,传输层的作用是提供端口到端口的通信服…...

[GXYCTF2019]禁止套娃1

打开题目 进行常规的检测漏洞&#xff0c;扫描目录发现存在.git文件夹下的文件存在 <?php include "flag.php"; echo "flag在哪里呢&#xff1f;<br>"; if(isset($_GET[exp])) { if (!preg_match(/data:\/\/|filter:\/\/|php:\/\/|phar:\/\…...

人工智能时代,数字化工厂如何改革?提升竞争力?

在人工智能时代&#xff0c;数字化工厂通过数据驱动的决策、智能制造、柔性生产、物联网整合以及人机协作&#xff0c;实现生产效率和产品质量的全面提升&#xff0c;并不断创新以保持竞争力。 --题记 在人工智能时代&#xff0c;数字化工厂的改革…...

气膜建筑的抗风与防火性能:保障仓储的安全—轻空间

气膜建筑以其独特的结构和材料优势&#xff0c;为仓储设施提供了可靠的安全保障。在应对自然灾害特别是强风和火灾时&#xff0c;气膜建筑展示了优异的抗风和防火性能。轻空间将详细探讨这些性能及其在实际应用中的表现。 气膜建筑的抗风能力源于其特殊的结构设计和高性能材料。…...

【秋招笔试】2024-08-07-YT游戏(研发岗)-三语言题解(CPP/Python/Java)

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 本次的题目比较典,…...

【Python知识】m.inplace = inplace 《==》是否执行原地操作

# 如果激活层模块有 inplace 属性&#xff0c;则设置该属性 if hasattr(m, inplace): m.inplace inplace inplace 属性是什么&#xff1f; 在 PyTorch 中&#xff0c;inplace 属性是一个布尔值&#xff0c;用于指示某个操作是否可以以原地&#xff08;in-place&#xff09;模式…...

Go语言fmt包中print相关方法

Go语言的fmt包提供了多种打印相关的函数&#xff0c;主要用于在控制台或其他输出目标上格式化并输出数据。下面是一些常用的print相关方法的用途和区别&#xff1a; 1.fmt.Print() 功能: fmt.Print() 将参数的内容按默认格式输出到标准输出&#xff08;通常是控制台&#xff…...

图片转为pdf怎么弄?亲测有效的8个pdf转换方法安利

图片转PDF怎么弄&#xff1f;在日常的办公生活中&#xff0c;我们经常会需要处理一些文档格式转换难题&#xff0c;图片转成PDF格式就是其中一个&#xff0c;图片转换成PDF格式的话&#xff0c;方便我们传输分享&#xff0c;毕竟现在PDF格式凭借着自身的稳定性和可移植性已经成…...

贪吃蛇(使用QT)

贪吃蛇小游戏 一.项目介绍**[贪吃蛇项目地址](https://gitee.com/strandingzy/QT/tree/zyy/snake)**界面一&#xff1a;游戏大厅界面二&#xff1a;关卡选择界面界面三&#xff1a;游戏界面 二.项目实现2.1 游戏大厅2.2关卡选择界面2.3 游戏房间2.3.1 封装贪吃蛇数据结构2.3.2 …...

【案例40】Apache中mod_proxy模块的使用

NC中间件 应用场景&#xff1a;配置了apache的情况&#xff0c;包括uap集群&#xff0c;配置https等场景下均适用&#xff1b;如果是单机&#xff08;NC单结点情况不存在问题&#xff0c;则不用配置这项; was环境也不用配置此项。&#xff09; 解决方案&#xff1a;按如下两…...

简单安装Android Studio并使用

在Windows上安装Android Studio的步骤如下&#xff1a; ### 1. 检查系统要求 确保你的计算机符合Android Studio的系统要求&#xff0c;通常包括&#xff1a; - Windows 8/10/11 - 64位处理器 - 最少4 GB RAM&#xff08;推荐8 GB&#xff09; - 最少2 GB可用硬盘空间&#xff…...

在Python中,模块(Module)和包(Package)

在Python中&#xff0c;模块&#xff08;Module&#xff09;和包&#xff08;Package&#xff09;是组织代码、提高代码复用性、促进代码维护的两种重要机制。它们各自扮演着不同的角色&#xff0c;但又紧密相连&#xff0c;共同构成了Python程序架构的基础。以下将详细阐述Pyt…...

Node版本管理工具

一、nvm 安装 二、常用命令 nvm v //查看nvm 版本号nvm install latest // 下载最新的 node 版本 nvm install 版本号 //安装node对应的版本nvm uninstall 版本号 //卸载对应的版本nvm list // 查看下载的所有版本的nodenvm use 版本号 // 只有引入了才能使用…...

创建并发布NPM模块

创建模块项目 $ mkdir my-npm-package $ cd my-npm-package $ npm init添加模块代码 创建新文件 index.js&#xff0c;内容如下 function helloworld() {console.log(Hello World!); }module.exports helloworld;测试模块 在模块目录&#xff08;my-npm-package&#xff0…...

20240807软考架构-------软考31-35答案解析

每日打卡题31-35答案 31、【2015年真题】 难度&#xff1a;一般 对于遗留系统的评价框架如下图所示&#xff0c;那么处于“高水平、低价值”区的遗留系统适合于采用的演化策略为 &#xff08; )。 A&#xff0e;淘汰B&#xff0e;继承C&#xff0e;改造D&#xff0e;集成 答案…...

简单实现二叉树(链表实现)

接着上一节。我们接着学习二叉树&#xff0c;学习使用链表建立二叉树时&#xff0c;最好把每个子程序的递归展开图&#xff0c;都画一下 前言 在学习二叉树的基本结构前&#xff0c;需先要创建一颗二叉树&#xff0c;然后才能学习其相关的基本操作&#xff0c;由于现在大家二…...

搭建 Web 群集Haproxy

案例概述 Haproxy 是目前比较流行的一种群集调度工具&#xff0c;同类群集调度工具有很多&#xff0c;如 LVS 和Nginx。相比较而言&#xff0c;LVS 性能最好&#xff0c;但是搭建相对复杂;Nginx 的upstream模块支持群集功能&#xff0c;但是对群集节点健康检查功能不强&#xf…...

PDF隐写思路

文章目录 使用工具技术细节小结 使用工具 工具&#xff1a;WPS、010Editor、WbStego 技术细节 步骤&#xff1a; 使用 WPS 查看文件&#xff0c;看是否能打开。 若不能打开则使用 010Editor 查看是否少了头文件等。 正常的 PDF 缺少头文件的 PDF 如果缺少头文件则使用 010…...

Pycharm 常用快捷键

快捷键作用描述Ctrl Space基本的代码自动完成Ctrl Shift Space选择代码自动完成Ctrl D复制当前行或符号Ctrl X剪切当前行或符号Ctrl C复制当前行或符号Ctrl V粘贴剪贴板内容Ctrl Y删除当前行Ctrl A全选当前文件内容Ctrl Z撤销操作Ctrl Shift Z重做操作Ctrl F查找文…...

android音频录音,(一)MediaRecorder简介

1.MediaRecorder概述 Android 多媒体框架支持捕获和编码各种常见的音频和视频格式&#xff0c;简要介绍音频录音。 2.MediaRecorder 源码路径&#xff1a;frameworks/base/media/java/android/media/MediaRecorder.java 源码接口&#xff1a; setAudioSource(MediaRecorde…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...