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

Linux:ip和ip协议的初步认识

文章目录

  • ip协议基本认识
  • ip协议的报头
  • 网段划分
  • ip的类型划分

ip协议基本认识

前面对于TCP的内容已经基本结束了,那么这也就意味着在传输层也已经结束了,那么下一步要进入的是的是网络层,网络层中也有很多种协议,这里主要进行解析的是ip协议

前面的TCP协议层把一大堆数据看起来是传输给了对方,那么实际上真的传输过去了吗?实际上只是把数据交给了网络层,而在网络层中也会对应的进行报头的封装等等内容

在对于网络层的认识前,要先明确一个概念,比如我们说有传递报文可靠的能力是代表确实一定能可靠传递吗?其实这两个概念并不等价,在网络协议栈中,TCP扮演的角色是提供可靠性的策略,比如说有对应的超时重传,快重传,流量控制,滑动窗口,阻塞控制等,但这些其实都是所谓的可靠性策略,对于真正进行传输的其实还是对应的网络层,ip协议,因此我们说ip的本质就是有能从主机a到主机b进行传输报文的能力,本质上来说它是一种能力,但是至于能不能传输过去也不敢保证,只是传输过去的概率比较大

那在当代网络的传输来说,ip协议能够保证以较大概率能够传递过去,而TCP又能提供可靠的策略,二者相结合,就能真正做到基本100%可靠的进行网络传输了

在这里插入图片描述
在进行传输的时候,数据包就会在路由器中进行传输,这是宏观上建立起的一个基本的认识

我们平时使用的设备,不管是任何设备,它一定是处于一个子网当中的,那这个子网和子网之间就会借助路由器来进行链接,在子网当中可能会存在很多个设备,例如有主机a和主机b,那主机a要发送数据给主机b,就意味着它一定是会借助路由器进行传输转发,说白了就是会跨越很多的子网,所以对于网络的理解,要首先理解到它是由一个一个的子网构成的,那么宏观上来讲,ip的报文就会在这个网络当中进行不断的转发,最后从源ip地址传递到了目标ip地址,凭借的就是这些很多的路由器进行转发的工作

ip协议的报头

在这里插入图片描述
对于ip协议的理解,必然要涉及到两个问题,这里先进行第一个问题:

1. 报头和有效载荷如何进行分离?

结论是固定长度和自描述字段,这个和TCP协议其实是一样的,这里就不过多进行说明了

2. 报文如何进行交付?

结论是使用8位协议,具体的使用如下所示

下面对于ip协议的协议字段进行理解

8位生存时间

这个字段是什么意思呢?下面我给出这样的一个场景:当一个ip的报文被发送出去之后,那么这个报文就会在网络当中进行转发,假如现在这个目标主机已经离线了,或者有其他原因,反正是处于不可应答的状态了,那么就会导致这个报文会被一直转发,在网络中自然是不会允许这样的情况出现的,所以就会提前设置好对应的8位生存时间这样的概念,使得最终这个报文在路由器的跳数是固定的,如果接受到一个跳数为0的报文,说明这个报文已经没用了,此时就把这个报文直接丢弃掉就可以,所以这个其实就是一个计数器

8位协议

那这个字段是做什么的呢?一句话来说,8位协议就是指的是要把报文交付给上层的哪一个协议,这个字段的作用就是用来表示要交付的协议,比如下面要发送给传输层,那么这个里面就要填写的是TCP协议,表示下一步要交付给传输层

32位源ip地址和32位目的ip地址

在进行TCP协议的学习中有源端口和目的端口,而在ip协议当中存放的是源ip地址和目标ip地址,在报文进行传输的时候是经过路由器进行传输的,而路由器的传输实际上是只会在ip层进行传输的

网段划分

下面要介绍的内容是对于网段划分的概念

在这里插入图片描述
对于路由器来说,它是工作在网络层的,所以这就意味着在原则上,路由器看不到主机上的端口号,它能看到的就是一个一个的ip地址,而在ip地址当中其实是可以分成两个部分的,一个叫做网络号,一个叫做主机号,所谓网络号就是在网络建设的过程当中,为了保证两个相互连接的网站具有不同的标识,而主机号则是在同一个网段中的主机之间具有相同的网络号,但是必须要有不同的主机号

原则上来说,路由器本质上也是一个子网的主机,所以它也是需要配置对应的ip地址的,而路由器是要进行网络传输的,这就意味着它必须要同时存在在至少两个子网当中,所以就意味着路由器起码有两个ip,那如何理解路由器有两个ip?这里可以简单理解为是路由器的内部是有多张网卡的

路由器的一般来说是子网当中的第一个设备,所以它的ip地址一般是网络号.1,而路由器的功能这里抛出一个概念,它不仅仅是用来进行报文的转发,同时它还可以进行构建子网,也就是局域网,换句话说就是子网当中的ip地址都是怎么来的?结论是由路由器进行分配的,在一个子网当中,如果出现了一个新的主机,就要构建一个新的ip地址,子网ip本质上是让路由器来帮你维护的,这样的ip一般就是我们所谓的内网ip,而之前所谈的主机a和主机b进行数据包转发的ip,这个叫做是公网ip,那至于这两个有什么区别,下面的内容会进行理解

所以至此就已经完成了对于路由器的认知,它是可以进行子网的划分的,路由器本身也是一个主机,这就意味着它的上面也有操作系统,那这个操作系统是要管理什么?在路由器上面会进行ip的分配,这就意味着它是能够进行网络的管理,如果让用户手动进行管理ip是非常马粪的一件事,所以就诞生了一种技术叫做DHCP,这种技术就是能够自动给新增的主机派生对应的ip地址,同时可以保证ip地址不重复,所以从某种意义来说,路由器也可以叫做是DHCP服务器,又能构建子网,还能进行ip地址的管理工作

ip的类型划分

下面要进行描述的是ip的划分,那这块要如何进行描述?先聊聊各种ip类型

在这里插入图片描述

ip地址是32位,换算下来最大有42亿多种方案,ip本质上来说是一个有限的资源,全世界只要需要入网的设备都是要有对应的ip资源的,所以换句话说这也可以看成是一份公共资源,每个国家都要对于这份资源进行抢占,才能有使用网络的权利

那这就意味着这块资源不能被随便的使用,要有合适的划分管理的方式,全球为了进行网络资源的管理,因此有了网络地址和主机地址进行划分的依据原则,如上图所示

但是这样的划分方法很快就出现了问题,大多数的组织都喜欢申请b类网络,因为这种网络的主机号和网络号都比较合适,用起来是最舒服的,但是问题是,即便是b类网络,也会面临主机号明显不会被使用的问题,可能申请的这个ip可以容纳很多的主机,但是实际的使用中只用了2个地址,那这就会造成大量的ip地址的浪费,那这必然是不合适的,所以就需要诞生一种新的划分方法:子网掩码

子网掩码

子网掩码可以理解为是一种新的方式来区分网络号和主机号,子网掩码就是一个32位的正整数,只不过是一串01,这个子网掩码的特点是通常把它写成二进制的话,通常是用一串0来结尾,将IP地址和子网掩码进行 “按位与” 操作,得到的结果就是网络号,网络号和主机号的划分与这个IP地址是A类、B类还是C类无关

在这里插入图片描述

可见,IP地址与子网掩码做与运算可以得到网络号,主机号从全0到全1就是子网的地址范围
IP地址和子网掩码还有一种更简洁的表示方法,例如140.252.20.68/24,表示IP地址为140.252.20.68,子网掩码的高
24位是1,也就是255.255.255.0

那问题是,这个子网掩码在报文中也并没有体现,实际上这个内容是在路由器的内部进行配置的,所以说通常你的报文在经过路由器转发的时候,要先按照目的网络进行转发,为什么这么说,其原因就是因为路由器会拿着这个目标报文和和自己内部的子网掩码,按位与就形成了网络号,而路由器的内部是可以配置多个ip的,每个路由器连接哪个子网它内部是清楚的,所以就能够把这份报文经过网络进行转发,所以就形成了整个网络世界

相关文章:

Linux:ip和ip协议的初步认识

文章目录 ip协议基本认识ip协议的报头网段划分ip的类型划分 ip协议基本认识 前面对于TCP的内容已经基本结束了,那么这也就意味着在传输层也已经结束了,那么下一步要进入的是的是网络层,网络层中也有很多种协议,这里主要进行解析的…...

Android12 简单的共享内存驱动实现 参考Ashmem

Android12 共享内存驱动实现 SOC:RK3568 system:Android12 概述: 1. 概述 Ashmem(Anonymous Shared Memory,Android 匿名共享内存),它基于 mmap 系统调用,可以让不同进程将同一段…...

物理安全和逻辑安全在信息安全中的重要作用

在信息时代,信息安全已经成为企业和个人不可或缺的重要组成部分。物理安全和逻辑安全作为信息安全的两大支柱,发挥着至关重要的作用。 什么是物理安全和逻辑安全? 物理安全是指通过技术手段,对计算机设备、网络设备、数据中心等…...

每日一题 --- 滑动窗口最大值[力扣][Go]

滑动窗口最大值 题目:239. 滑动窗口最大值 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1&#xff1…...

TensorBoard可视化+Confustion Matrix Drawing

for later~ 代码阅读 1. 加载trainset import argparse import logging import os import numpy as npimport torch from torch import distributed from torch.utils.data import DataLoader from torch.utils.tensorboard import SummaryWriterfrom backbones import get_…...

012——LED模块驱动开发(基于I.MX6uLL)

目录 一、 硬件原理图 二、 驱动程序 三、 应用程序 四、 Makefile 五、操作 一、 硬件原理图 又是非常经典的点灯环节 ,每次学新语言第一步都是hello world,拿到新板子或者学习新的操作系统,第一步就是点灯。 LED 的驱动方式&#xff0…...

基于springboot实现房屋租赁管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现房屋租赁系统演示 摘要 房屋是人类生活栖息的重要场所,随着城市中的流动人口的增多,人们对房屋租赁需求越来越高,为满足用户查询房屋、预约看房、房屋租赁的需求,特开发了本基于Spring Boot的房屋租赁系统。 …...

168.乐理基础-中古调式概述

如果到这五线谱还没记住还不认识的话去看102.五线谱-高音谱号与103.五线谱-低音谱号这两个里,这里面有五线谱对应的音名,对比着看 如果不认识调号去看112.五线谱的调号(一)、113.五线谱的调号(二)、114.快…...

【项目实战】【Docker】【Git】【Linux】部署V2rayA项目

今天着手了一个全新领域的项目,从完全没有头绪到成功运行,记录一下具体的部署流程 github项目链接V2rayA 一开始拿到以后完全没有抓手,去阅读了一下他的帮助文档 写着能用docker运行,就去下载了一个Docker配置了一下 拉取代码到…...

mac 切换 jdk

查看 mac 上都有哪些版本 /usr/libexec/java_home -V看准版本切换 按前缀切换 比如 export JAVA_HOME/usr/libexec/java_home -v 1.8这样会随机一个 1.8 的 如果想再确定一个比如 openjdk export JAVA_HOME/usr/libexec/java_home -v 1.8.0_292这个方式是临时的&#xff0c…...

MD5加密返回32位密文字符串

前言: 项目中需要调用其他系统的 api 接口,接口使用的是按一定规则生成 MD5 密文作为签名来进行身份验证,本文仅记录 32 位 MD5 密文的生成方式,仅供参考。 什么是MD5 加密? MD5 加密是一种加密算法,MD5…...

npm常用命令技巧

NPM (Node Package Manager) 是 JavaScript 的包管理工具,广泛用于管理项目中的依赖。无论是前端项目还是Node.js后端项目,NPM 都扮演着重要的角色。本文将介绍 NPM 中常用的几个命令,并提供相应的代码示例。 1. 初始化项目:npm …...

intellij idea 使用git撤销(取消)commit

git撤销(取消) 未 push的 commit Git,选择分支后,右键 Undo Commit ,会把这个 commit 撤销。 git撤销(取消) 已经 push 的 commit 备份分支内容: 选中分支, 新建 分支,避免后续因为操作不当,导…...

【计算机网络】四层负载均衡和七层负载均衡

前言 1、分层方式 首先我们知道,在计算机网络中,常用的协议分层方式:OSI和TCP/IP,以及实际生产中使用的协议划分方式。 在OSI中,各层的职责如下: 应用层:对软件提供接口以使程序能使用网络服…...

IP-guard WebServer 任意文件读取漏洞复现

0x01 产品简介 IP-guard是由溢信科技股份有限公司开发的一款终端安全管理软件,旨在帮助企业保护终端设备安全、数据安全、管理网络使用和简化IT系统管理。 0x02 漏洞概述 由于IP-guard WebServer /ipg/static/appr/lib/flexpaper/php/view.php接口处未对用户输入的数据进行严…...

【IoTDB 线上小课 01】我们聊聊“金三银四”下的开源

关于 IoTDB,关于物联网,关于时序数据库,关于开源...你是否仍有很多疑问? 除了自己钻研文档,群里与各位“大佬”的沟通,你是否还希望能够有个学习“捷径”? 天谋科技发起社区小伙伴,正…...

2024053期传足14场胜负前瞻

2024053期售止时间为4月6日(周六)21点00分,敬请留意: 本期深盘多,1.5以下赔率1场,1.5-2.0赔率8场,其他场次是平半盘、平盘。本期14场难度中等。以下为基础盘前瞻,大家可根据自身判断…...

C语言------冒泡法排序

一.前情提要 1.介绍 冒泡法排序法: 1)冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历要排序的列表,一次比较相邻的两个元素,并且如果它们的顺序错误就将它们交换过来。重复这个过程直到没有需…...

C#(C Sharp)学习笔记_Enum枚举类型【十三】

什么是枚举类型 枚举类型(Enum) 是由基础整型数值类型的一组命名常量定义的值类型。枚举包含自己的值,但不能继承或传递继承。 语法 // enum enum_name // enum_name variable enum_name.enum_value// 定义一个枚举类型——例如: enum enum_name {va…...

乐知付-如何制作html文件可双击跳转到指定页面?

标题: 乐知付-如何制作html文件可双击跳转到指定页面? 标签: [乐知付, 乐知付加密, 密码管理] 分类: [网站,html] 为了便于买家理解使用链接进行付费获取密码;现开发个小工具,将支付链接转为浏览器可识别的文件,双击打开即可跳转到…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...

【Veristand】Veristand环境安装教程-Linux RT / Windows

首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...