网络层——IP协议

2023-05-16

  • 协议格式
  • 网段划分
  • 特殊的IP地址
  • IP地址的数量限制
  • 私有IP地址和公网IP地址

协议格式

在这里插入图片描述

  • 4位版本号:指定IP协议的版本,对于IPv4来说,就是4
  • 4位首部长度:标识IP报头的长度,最小20字节(固定报头),最大60字节(0~40的选项数据)
  • 8位服务类型:3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0)。4位TOS分别表示:最小延时、最大吞吐量、最高可靠性、最小成本。这四者相互冲突,只能选择一个
  • 16位总长度:IP数据报整体占多少个字节
  • 16位标识:唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每一个片里面的这个id都是相同的
  • 3位标志:第一位保留(0),第二位禁止分片,第三位分片标志,如果分片了的话,最后一个分片置为1,其他是0,类似于一个结束标记
  • 13位片偏移:是分片相对于原始IP报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。因此,除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了)
  • 8位生存时间:数据报到达目的地的最大报文跳数。一般是64。每次经过一个路由,TTL -= 1,一直减到0还没到达,那么就丢弃了。这个字段主要是用来防止出现路由循环
  • 8位协议:表示上层协议的类型,方便目的主机的 IP 层知道按照什么协议来处理数据部分。TCP 的协议号为 6,UDP 的协议号为 17,ICMP 的协议号为 1。
  • 16位首部校验和:使用CRC进行校验,来鉴别头部是否损坏
  • 32位源IP地址和32位目的IP地址:发送端和接收端
  • 选项:最多40个字节,不定长。

网段划分

IP地址由两部分组成,网络号和主机号

  • 网络号:保证相互连接的两个网段具有不同的标识
  • 主机号:同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号

不同的子网其实就是把网络号相同的主机放到一起。
如果在子网中新增一台主机,则这台主机的网络号和这个子网的网络号一致,但是主机号必须不能和子网中的其他主机重复
合理的设置网络号和主机号就能保证相互连接的网络中每台主机的IP都不一样。但是手动管理却很麻烦

  • DCHP技术能够自动给子网内新增的主机节点分配IP地址
  • 一般的路由器都带有DCHP功能,因此路由器也是一个DCHP服务器。

过去曾经提出一种划分网络号和主机号的方案,把所有IP 地址分为五类

  • A类 0.0.0.0到127.255.255.255
  • B类 128.0.0.0到191.255.255.255
  • C类 192.0.0.0到223.255.255.255
  • D类 224.0.0.0到239.255.255.255
  • E类 240.0.0.0到247.255.255.255
    在这里插入图片描述

但是这种方案存在缺陷,随着Internet的飞速发展,大多数组织都选择申请B类网络地址,导致B类网络地址很快就用完了,但是理论上B类的子网可以容纳6万5千多的主机,A类容纳的主机就更多了,在实际中,不会存在一个子网内有这么多的主机,导致了大量的浪费。

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

子网掩码和IP地址按位与的结果就是网络号
子网掩码取反就是当前网络最大主机号
IP地址和子网掩码还有一种更简洁的表示方法,例如140.252.20.68/24,表示IP地址为140.252.20.68,子网掩码的高24位是1,也就是255.255.255.0

特殊的IP地址

  • 将IP地址中的主机地址全部设为0,就成为了网络号,代表这个局域网
  • 将IP地址中的主机地址全部设为1,就成为了广播地址,用于给同一个链路中相互连接的所有主机发送数据包
  • 127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1

IP地址的数量限制

IP地址(IPv4)是一个4字节32位的正整数。那么一共只有2的32次方个IP地址,大概是43亿左右。而TCP/IP协议规定,每个主机都需要有一个IP地址。实际上由于一些特殊IP的存在,我们能使用的数量远不足43亿,更何况现在的人不仅有电脑,还有手机平板,这些都要分配IP,CIDR虽然在一定程度上减少了浪费,但是IP地址数量还是不够,所以有三种方式解决

  1. 动态分配IP地址:只给接入网络的设备分配IP地址。因此同一个MAC地址的设备,每次接入互联网中,得到的IP地址不一定是相同的
  2. NAT技术
  3. IPv6:IPv6并不是IPv4的简单升级版。这是互不相干的两个协议,彼此并不兼容,IPv6用16字节128位来表示一个IP地址, 但是目前IPv6还没有普及

私有IP地址和公网IP地址

10 .*,前8位是网络号,共16,777,216个地址
172.16.到172.31.,前12位是网络号,共1,048,576个地址
192.168.* ,前16位是网络号,共65,536个地址 包含在这个范围中的, 都成为私有IP,,其余的则称为全局IP(或公网IP)

  • 一个路由器可以配置两个IP地址,一个是WAN口IP,一个是LAN口IP(子网IP)
  • 路由器LAN口连接的主机,都从属于当前这个路由器的子网中
  • 不同的路由器,子网IP其实都是一样的(通常都是192.168.1.1)。子网内的主机IP地址不能重复,但是子网之间的IP地址就可以重复了
  • 每一个家用路由器,其实又作为运营商路由器的子网中的一个节点。这样的运营商路由器可能会有很多级,最外层的运营商路由器,WAN口IP就是一个公网IP了。子网内的主机需要和外网进行通信时,路由器将IP首部中的IP地址进行替换(替换成WAN口IP),这样逐级替换,最终数据包中的IP地址成为一个公网IP。这种技术称为NAT(Network Address Translation,网络地址转换)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

网络层——IP协议 的相关文章

  • xrandr命令用法

    目录 1 常用命令 2 获取其他用法 3 参数选择 1 常用命令 xrandr 作用 xff1a 显示当前显示器可以支持的分辨率 xrandr q 也可以使用 q 参数来查看屏幕目前支持的分辨率 root 64 ubuntu home sa
  • VirtualBox中Ubuntu18.04挂载添加虚拟硬盘

    在ubuntu中挂载一个虚拟硬盘存储在主机硬盘 xff0c 目的是为了防止虚拟机系统崩溃导致数据资料丢失 xff0c 在我们创建完成虚拟硬盘后 xff0c 可以将虚拟硬盘作为所有文件的存放区 想要灵活使用这个虚拟硬盘 xff0c 只需将其挂
  • virtualbox中的Ubuntu18.04版本文件映射win10(虚拟机中Ubuntu安装samba)

    samba是什么 xff1f samba是文件共享服务器 xff0c 一般应用在局域网中 xff0c 能控制共享的权限 xff0c 也能够方便的让用户在客户端和服务端都可以修改文件内容并同步提交 配置samba流程 1 进入root权限 s
  • navicat连接mysql报错1251的解决方法

    在环境变量中添加mysql路径 xff1a 找到下载mysql的文件目录 xff0c 复制并添加至环境变量Path eg C Program Files MySQL MySQL Server 8 0 bin 或者 win 43 r gt s
  • mkdir命令、chmod修改权限、利用scp 远程上传下载文件/文件夹

    一 mkdir命令 在工作目录下 xff0c 建立一个名为 AAA 的子目录 mkdir AAA 在工作目录下的 BBB 目录中 xff0c 建立一个名为 Test 的子目录 若 BBB 目录原本不存在 xff0c 则建立一个 xff08
  • 树莓派 vnc Cannot currently show the desktop

    情况一 xff1a 分辨率没有设置好 解决方案 xff1a 设置分辨率 sudo raspi config 情况二 xff1a 树莓派内存空间不够用 解决方案 xff1a 参考链接二 三 sudo apt get clean sudo ap
  • 基于51单片机的红外避障小车

    提示 xff1a 记录2022年4月做的毕设 文章目录 前言一 任务书1 1设计 研究 目标 1 2设计 研究 内容 二 代码思路三 硬件四 部分代码五 联系我们喜欢请点赞哦 xff01 企鹅号 前言 基于51单片机的红外避障小车 xff0
  • Snipaste的安装及快捷键的设置

    Snipaste的安装及快捷键的设置 关于Snipaste xff1a Snipaste 是一个简单但强大的截图工具 xff0c 也可以让你将截图贴回到屏幕上 xff01 可以将剪贴板里的文字或者颜色信息转化为图片窗口 xff0c 并且将它
  • 并发编程之深入了解CAS

    文章目录 一 什么是 CAS 二 CAS应用三 CAS源码分析三 CAS缺陷四 ABA问题及其解决方案4 1 什么是ABA问题4 2 ABA问题的解决方案 一 什么是 CAS CAS xff08 Compare And Swap xff0c
  • HDU1085 —— 生成函数入门题

    1 43 X i 最经典的生成函数 include lt iostream gt include lt cstring gt include lt algorithm gt include lt vector gt using namesp
  • HDFS每日一练1 API读取文件

    HDFS每日一练1 API读取文件 更多整理都在我的github上 xff1a Auraros欢迎大家 题目 在右侧代码编辑区中编写代码实现如下功能 xff1a 使用FSDataInputStream获取HDFS的 user hadoop
  • 谈谈Java爬虫

    说起网络爬虫 xff0c 大家想起的估计都是 Python xff0c 我在没有接触Java爬虫之前也是只听过python是为爬虫而生 不过俗话说的好 xff1a Java是世界最好的语言 于是我就在网上查询有关于Java爬虫的资料 xff
  • 桌面虚拟化(VDI)的概述

    概述 到目前为止 xff0c 每个人都听说过桌面虚拟化和 VDI 这两个术语 自 2006 年以来 xff0c 我们似乎一直受到来自 VMware Citrix 和 Microsoft 等公司关于这些技术的营销宣传的冲击 但如果桌面虚拟化这
  • 虚拟桌面基础架构 (VDI)及其工作原理

    什么是虚拟桌面基础架构 VDI xff1f 虚拟桌面基础架构 VDI 是一种虚拟化解决方案 xff0c 其使用虚拟机提供和管理虚拟桌面 VDI 将桌面环境托管在一个集中式服务器上 xff0c 并根据请求将其部署到最终用户 可以使用端点设备
  • 数据库修改和忘记密码的解决方法(附详细步骤和操作图)

    数据库修改和忘记密码的解决方法 xff08 附详细步骤和操作图 xff09 修改密码 如果能登录的话就直接修改密码 登录方式 xff1a win 43 R输入cmd 接着输入mysql uroot p xff0c 会提示输入密码 xff0c
  • 初学者如何运用VS打代码?

    1 首先进入VS xff08 我这里以VS2017为例 xff09 如图 xff1a 2 然后选择文件 gt 新建 gt 项目 3 选择Visual C 43 gt 空项目 xff0c 为自己的项目命名 xff0c 例如 xff1a 我的第
  • 2019年中南大学研究生招生夏令营机试题

    2019年中南大学研究生招生夏令营机试题 最小花费 最小花费 题目描述 在n个人中 xff0c 某些人的银行账号之间可以互相转账 这些人之间转账的手续费各不相同 给定这些人之间转账时需要从转账金额里扣除百分之几的手续费 xff0c 请问A最
  • DEBUG模式和配置文件

  • ubuntu vscode 安装插件失败问题

    出现error while fetching extensions xhr failed错误 1 改手机热点 xff0c 2 挂vpn 3 修改网络代理 4 重启vs code 完美解决
  • NVM-Nodejs多版本管理工具

    推荐 当然是我们的大名鼎鼎的 NVM x1f50e 下载点我 下载简单安装版 xff08 推荐 xff09 下载含有 setup的 除了修改位置其他都是下一步安装完成还是不能用我们先下载一个 node 版本 xff0c 使用nvm inst

随机推荐

  • BI数据可视化|可自动刷新的可视化大屏报表

    BI数据可视化大屏和其他的BI报表一样 xff0c 都是可用于日常的决策中 xff0c 因此除了要求数据可视化外 xff0c 也会有自动刷新报表的要求 那么 xff0c 我们该怎么做 xff0c 才能获得一份会自动刷新的BI数据可视化大屏报
  • STM32Min开发板四路可调PWM互补输出

    STM32Min开发板四路触屏可调PWM互补输出 在正点原子的开发例程上 xff0c 结合PWM输出实验和触摸屏实验代码进行修改 定义了几个全局变量存储定时器ARR值和占空比 xff1a u32 F1 span class token op
  • 单点登录CAS(5.2)学习笔记(二)基础配置(HTTP协议,数据库连接,启用登出service参数,密码加密)

    一 打开application properties apache tomcat cas webapps cas WEB INF classes application properties 二 进行配置 默认用户名密码配置 cas aut
  • 使用vscode的git工具进行提交或拉取无效

    使用vscode的git工具进行提交或拉取的时候 xff0c 状态一直在进行中 xff0c 无法实现拉取或提交 具体怎么解决呢 xff0c 我们使用工具的时候比如source tree的时候可以输入账户密码 xff0c 如果他们在电脑的账户
  • DPPO算法(顺便对比PG、TRPO、PPO、PPO2以及A3C算法)

    强化学习 xff08 9 xff09 xff1a TRPO PPO以及DPPO算法 xff1a https blog csdn net zuzhiang article details 103650805 DPPO深度强化学习算法实现思路
  • 你真的弄懂equals()和 == 的区别了吗???

    首先 让我们看看Object类中equals方法源代码如下 Object中的equals方法是直接判断this和obj本身的值是否相等 xff0c 即用来判断调用equals的对象和形参obj所引用的对象是否是同一对象 xff0c 所谓同一
  • conda虚拟环境中安装cuda和cudnn,再也不用头疼版本号的问题了

    文章目录 背景 xff08 为什么 xff09 具体步骤查看conda支持的cuda版本下载cuda安装cuda查看cuda对应的cudnn版本下载cudnn版本安装cudnn 测试安装是否成功安装pytorch测试cuda版本 参考链接
  • COCO数据集格式、mask两种存储格式、官方包API详解

    文章目录 前言COCO数据集格式总体组织结构 96 image对象 96 的主要属性 xff1a 96 annotation对象 96 的属性主要 xff1a pycocotools包中的COCO对象及APICOCO对象的属性COCO对象的
  • Vue3通过axios发起get、post请求以及对应的springboot后端接收方式

    题目 前言前端请求中参数的存储格式application jsonmultipart form dataapplication x www form urlencoded axios发送请求的两种方法使用axios发送get请求使用axio
  • python读取、显示、保存图片的几种方法

    目录 读取图像使用opencv读取使用PIL包读取 保存图片显示图片代码总结 读取图像 读取图像我一般采用的有两种方法 xff0c 如果想要读成numpy数组格式就用opencv方式 xff0c 想要读成Image对象格式就用PIL包读取
  • linux_磁盘挂载

    我挂window磁盘用到的 许多同学挂载后都容易遇到权限不对 xff0c 中文乱码 xff0c 无法执行的问题 我记录一下 在 etc fstab 下加入 dev sda5 home blacklaw programs vfat user
  • 使用SimpleITK读取、保存、处理nii文件

    目录 前言nii格式读取nii成numpy格式将numpy格式保存成nii什么是origin Direction Spacing xff0c 以及如何设置它们示例重采样重采样代码 参考链接 前言 nii gz格式是保存医学图像非常重要一种格
  • Cron表达式详解

    目录 基础通配符说明常用示例参考链接 基础 在编写定时任务执行时间时 xff0c 会用到cron表达式 cron表达式一共有七位 xff0c 从左到右依次为 秒 分 时 日 月 周 年 每位可填的内容如下 序号说明是否必填允许填写的值允许的
  • Python装饰器

    目录 什么是装饰器装饰器不需要传入参数装饰器需要传入参数 什么是装饰器 Python的装饰器类似于Java的注解 xff0c 可以在不侵入原有代码的基础上进行额外的操作 xff0c 比如记录日志等操作 底层的实现相当于将一个函数传入了另一个
  • python ast 详解与用法

    目录 基本概念节点类型ast Assignast Nameast Constantast Callast Attribute 结点的遍历ast源码示例 结点的修改示例 参考链接 基本概念 在 python 中 xff0c 我们可以通过自带的
  • 写写博客:Markdown生僻语法(一) 希腊字母的编辑

    写写博客 xff1a Markdown生僻语法 一 希腊字母的编辑 写博客中间 xff0c 需要用到公式的编写 xff0c 中间有好多希腊字母 xff0c 写不来 xff0c 特此做个总结 xff1a 希腊字母一览表 xff1a Markd
  • 自用向,当树莓派烧录完rikirobot的镜像后怎么把它变为纯净ros镜像

    1 rikirobot已经安装了大部分的ros包 xff0c 具体镜像可以在tb上购买 xff0c 但他是为了主从机而设定的 xff0c 第一步 xff0c 先安装gedit xff08 密码默认123456 xff09 span clas
  • 机器学习:Linear Discriminant Analysis(过程详解+实例代码MATLAB实现

    目录 LDA概念线性判别分析 xff08 LDA xff09 二分类LDA二分类过程举个例子 线性判别分析 多分类LDA多分类过程 Experiment 3 Linear Discriminant AnalysisLDA二分类讲解LDA二分
  • python编程:从入门到实践 笔记

    文章目录 第二章 变量和简单数据类型2 1 运行 hello world py 时发生的情况2 2 变量2 2 1 变量的命名和使用2 2 2 使用变量时避免命名错误 2 3 字符串2 3 1 使用方法修改字符串的大小写name title
  • 网络层——IP协议

    协议格式网段划分特殊的IP地址IP地址的数量限制私有IP地址和公网IP地址 协议格式 4位版本号 xff1a 指定IP协议的版本 xff0c 对于IPv4来说 xff0c 就是44位首部长度 xff1a 标识IP报头的长度 xff0c 最小