IP协议总结

一、定义。

IP全称为Internet Protocol,是TCP/IP协议族中的一员,负责实现数据在网络上的传输。它是一种无连接、不可靠的数据报协议。
IP协议常用于Internet网络和局域网中,它通过将数据包进行分组并进行逐跳转发来实现数据在网络中的传输。IP协议定义了网络地址寻址方式(IPv4或IPv6),以及数据包在路由器之间传递时的处理规则。每个运行IP协议的设备都有一个唯一的IP地址,用于标识该设备在网络中的位置。
IP协议本身并不提供任何确认机制和重传机制,因此它无法保证数据传输的可靠性。在使用IP协议传输数据时,需要借助其他协议如TCP或UDP来确保数据的可靠传输。

二、IP协议在网络分层的作用。

TCP作为传输层控制协议,其保证的是数据传输的可靠性和传输效率,但TCP提供的仅仅是数据传输的策略,而真正负责数据在网络中传输的则传输层之下的网络层和链路层。
IP协议作为网络层的协议,他的作用主要涉及以下方面:

寻址和标识:IP协议为网络中的设备提供唯一的IP地址,用于标识和寻址设备。每个设备都有一个唯一的IP地址,这使得它们可以在网络上被准确地定位和识别。

路由选择:IP协议负责根据目的IP地址来选择最佳的路径,以确保数据包从源主机传输到目的主机。这包括在网络中查找路由表,以确定数据包应该通过哪个路由器传输。

数据包封装:IP协议将数据包封装为IP数据包。这个封装的过程包括在数据包中添加源IP地址和目的IP地址等信息,以确保数据包能够在网络中正确传输。

跨网络通信:IP协议允许数据包从一个网络传输到另一个网络,因为它能够跨越不同的网络边界。这使得设备可以在全球范围内进行通信,而不受物理网络拓扑的限制。

路由和数据包转发:IP协议负责路由器之间的数据包转发。路由器使用IP地址来确定数据包的下一跳路由器,并根据路由表中的信息来选择正确的路径。这确保了数据包能够沿着正确的路由路径传输。

三、传输过程。


当数据包到达了网络层之后,经过IP协议包装之后,就会选择合适的路由路径,路由器路径的选择是由IP协议决定的,而非链路层协议。
在网络协议栈中,IP协议位于网络层,负责将数据包从源主机传输到目标主机。IP协议使用IP地址来标识主机和网络,并提供了路由选择的功能。当一个数据包到达路由器时,路由器会根据数据包的目标IP地址查找路由表,并基于此选择下一跳路由器或输出接口。IP协议使用一系列路由算法和度量标准来确定最佳路径,如最短路径优先、延迟、带宽等。
而链路层协议(如以太网)主要负责将数据包从一个链路传输到下一个链路,通过物理地址(MAC地址)进行寻址和传输。链路层协议只关注相邻节点之间的数据传输,而不涉及网络范围内的路径选择。
在这个过程中,网络层和链路层是密不可分的,共同完成了在路由器的传递过程。在路由器和路由器之间的数据传输过程中,网络层和链路层会交替工作,各自负责不同的任务,以确保数据包能够从一个路由器传输到另一个路由器,最终到达目的地。

以下是它们的交替工作方式:

网络层(第三层)工作:在发送路由器(源路由器)上,网络层的主要工作是路由选择。它根据目标IP地址来确定数据包的下一跳路由器,并将数据包封装成IP数据包。这个封装过程包括添加源IP地址和目标IP地址等信息。网络层的路由选择决定了数据包的路径。

链路层(第二层)工作:一旦数据包在网络层被封装为IP数据包,它将被传递到链路层。在发送路由器上,链路层的主要工作是将IP数据包封装为适当的数据链路层帧(例如以太网帧)。这个帧包含了目标物理地址(通常是MAC地址),源物理地址,以及链路层协议需要的控制信息。链路层的工作是确保数据包能够在物理网络上传输。

传输到下一跳路由器:一旦数据链路层帧被创建,它将被发送到源路由器连接的物理网络中。这个帧将经过物理网络中的设备,例如交换机和中继器,以最终到达下一跳路由器。

下一跳路由器的处理:在下一跳路由器上,链路层将负责解封装数据链路层帧,提取出IP数据包,并将其传递到网络层。网络层然后再次执行路由选择,选择下一个跳转的路由器。这个过程在不同的路由器之间重复,直到数据包最终到达目的地。

三、IP协议的分片与组装。

在网络分层中,TCP只关心提供数据传输的可靠性,而链路层只关心封装成MAC帧以实现在两个节点之间的传递。
所以数据的分片和组装都是由IP层独立完成的,因为MAC帧的最大长度限制MYU为1500字节,所以IP协议传下来的就不能大于这个值。
在这里插入图片描述
在这里插入图片描述

四、网段。

前提背景是要将数据从一台主机发送到另一台主机时,其实不是直接将数据发送到了目标主机,而是先将数据发送到目标主机所在的网络,然后再将数据发送到目标主机。这种方式可以一次性排查很多,提高检索的效率。因此,我们对网络进行了网段划分。
在这里插入图片描述
在这里插入图片描述
网络号不同于IP地址,尽管它们通常是IP地址的一部分。

IP地址是一个用于唯一标识设备或主机的32位(IPv4)或128位(IPv6)二进制数。IP地址用于标识一个具体的网络接口或主机,以便在互联网上进行通信。例如,IPv4地址可能是192.168.1.1或者8.8.8.8。

网络号是IP地址中的一部分,它用于标识一个网络。网络号的作用是将IP地址分组为不同的网络,以便路由器能够正确地将数据包传送到正确的目标网络。网络号的范围通常是IP地址的高位部分。例如,在IPv4地址192.168.1.1中,网络号通常是192.168,用于标识所属的网络。
但是这种划分方法有很多的问题:
浪费地址空间:类别划分中每个类别都有固定的网络号和主机号划分,导致了IP地址的浪费。特别是,A类地址的主机号非常大,而B类和C类地址的主机号相对较小,因此在许多情况下,分配的地址数量远远超过实际需要。

不适应网络规模变化:类别划分没有考虑到不同网络规模的需求。大型组织可能会获得过多的IP地址,而小型组织则可能获得太少的IP地址。这种不平衡会导致地址浪费或地址不足的问题。

路由表膨胀:由于每个类别都有固定数量的网络,这导致了路由表的膨胀。路由器需要存储大量的路由表项,即使有些网络可能只有少数IP地址。

难以分配子网:在类别划分下,划分子网变得复杂和不灵活。组织难以有效地划分子网以满足其内部网络拓扑的需求。
于是引入了子网划分和子网掩码。

五、子网划分和子网掩码。

子网划分是将一个大型IP网络划分成多个更小的子网,每个子网可以包含一定数量的主机。这样做的好处是可以更有效地利用IP地址资源,在网络管理和路由控制方面提供更多的灵活性和可扩展性。

子网掩码则是用于划分子网的一个二进制数字,与IP地址结合使用,确定网络号和主机号的边界。子网掩码的作用是将一个IP地址划分为网络地址和主机地址两部分。子网掩码的长度(用“1”表示的位数)表示了网络地址的长度,其余的位数则是主机地址。例如,一个子网掩码为255.255.255.0的IP地址与子网掩码相与后,就可以得到该IP地址所在的网络地址和主机地址。

在实际应用中,通常使用CIDR(无类域间路由)表示法来表示子网掩码和IP地址。CIDR表示法使用斜线后面的数字来表示子网掩码中网络地址所占用的位数,例如,一个CIDR地址为192.168.1.0/24,代表子网掩码为255.255.255.0,网络地址为192.168.1.0,主机地址范围为192.168.1.1~192.168.1.254。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/154137.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

攻防世界题目练习——Web引导模式(一)

题目目录 1. command_execution2.xff_referer3.simple_js4.php_rce5.Web_php_include6.upload17. warmup 难度1全部写过了,这个系列里没有 指路: 攻防世界题目练习——Web难度1(一) 攻防世界题目练习——Web难度1(二&a…

【力扣2011】执行操作后的变量值

👑专栏内容:力扣刷题⛪个人主页:子夜的星的主页💕座右铭:前路未远,步履不停 目录 一、题目描述二、题目分析 一、题目描述 题目链接:执行操作后的变量值 存在一种仅支持 4 种操作和 1 个变量 …

Python 无废话-办公自动化Excel格式美化

设置字体 在使用openpyxl 处理excel 设置格式,需要导入Font类,设置Font初始化参数,常见参数如下: 关键字参数 数据类型 描述 name 字符串 字体名称,如Calibri或Times New Roman size 整型 大小点数 bold …

mysql面试题34:Hash索引和B+树区别是什么?在设计索引怎么选择?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Hash索引和B+树区别是什么?在设计索引怎么选择? 在MySQL中,Hash索引和B+树索引是两种常见的索引类型,他们有以下区别: 数据结构:Hash索引:…

【小沐学Python】Python实现Web图表功能(Dash)

文章目录 1、简介2、安装3、功能示例3.1 Hello World3.2 连接到数据3.3 可视化数据3.4 控件和回调3.5 设置应用的样式3.5.1 HTML and CSS3.5.2 Dash Design Kit (DDK)3.5.3 Dash Bootstrap Components3.5.4 Dash Mantine Components 4、更多示例4.1 Basic Dashboard4.2 Using C…

从0开始学go第六天

方法一:gin获取querystring参数 package main//querystring import ("net/http""github.com/gin-gonic/gin" )func main() {r : gin.Default()r.GET("/web", func(c *gin.Context) {//获取浏览器那边发请求携带的query String参数//…

基于 Mtcnn(人脸检测)+Hopenet(姿态检测)+拉普拉斯算子(模糊度检测) 的人脸检测服务

写在前面 工作原因,顺便整理博文内容为一个 人脸检测服务分享以打包 Docker 镜像,可以直接使用服务目前支持 http 方式该检测器主要适用低质量人脸图片处理理解不足小伙伴帮忙指正,多交流,相互学习 对每个人而言,真正的…

【Python】WebUI自动化—Selenium的下载和安装、基本用法、项目实战(16)

文章目录 一.介绍二.下载安装selenium三.安装浏览器驱动四.QuickStart—自动访问百度五.Selenium基本用法1.定位节点1.1.单个元素定位1.2.多个元素定位 2.控制浏览器2.1.设置浏览器窗口大小、位置2.2.浏览器前进、刷新、后退、关闭3.3.等待3.4.Frame3.5.多窗口3.6.元素定位不到…

为Yolov7环境安装Cuba匹配的Pytorch

1. 查看Cuba版本 方法一 nvidia-smi 找到CUDA Version 方法二 Nvidia Control Panel > 系统信息 > 组件 > 2. 安装Cuba匹配版本的PyTorch https://pytorch.org/get-started/locally/这里使用conda安装 conda install pytorch torchvision torchaudio pytorch-cu…

Oracle笔记-对ROWNUM的一次理解(简单分页)

此博文记录时间:2023-05-05,发到互联网上是2023-10-09 这个在分页里面用得比较多,在MySQL中,通常使用limit去操作,而去感觉比较简单,Oracle中无此关键字。 通过查阅资料后,要实现分页需要用到…

Lab 1: Unix utilities汇总

这个实验主要学习了常用的一些系统调用。 Lab 1: Unix utilities Boot xv6 (easy) git克隆,切换分支,qemu。根据要求进行操作即可。 $ git clone git://g.csail.mit.edu/xv6-labs-2020 $ cd xv6-labs-2020 $ git checkout util $ make qemusleep (ea…

idea将jar包deploy到本地仓库

1、pom.xml文件引入配置&#xff0c;如下参考&#xff1a; <distributionManagement><snapshotRepository><id>maven-snapshots</id><url>http://nexus1.coralglobal.cn/repository/maven-snapshots/</url></snapshotRepository><…

唐老师讲电赛

dc-dc电源布局要点

【C++】:日期类实现

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关Linux的基础知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 数…

cesium图标漂移分析与解决

漂移现象如下 什么是图标漂移&#xff1f; 随着视野改变&#xff0c;图标相对于地面发生了相对位置的变化 让人感觉到图标有飘忽不定的感觉 原因分析 图标是静止的&#xff0c;它的位置在世界坐标系中是绝对的、静止的。 漂移大部分的原因是&#xff1a; 透视关系发生了错…

增强LLM:使用搜索引擎缓解大模型幻觉问题

论文题目&#xff1a;FRESHLLMS:REFRESHING LARGE LANGUAGE MODELS WITH SEARCH ENGINE AUGMENTATION 论文地址&#xff1a;https://arxiv.org/pdf/2310.03214.pdf 论文由Google、University of Massachusetts Amherst、OpenAI联合发布。 大部分大语言模型只会训练一次&#…

gin 框架的 JSON Render

gin 框架的 JSON Render gin 框架默认提供了很多的渲染器&#xff0c;开箱即用&#xff0c;非常方便&#xff0c;特别是开发 Restful 接口。不过它提供了好多种不同的 JSON Render&#xff0c;那么它们的区别是什么呢&#xff1f; // JSON contains the given interface obje…

三、WebGPU Uniforms

三、WebGPU Uniforms Uniform有点像着色器的全局变量。你可以在执行着色器之前设置它们的值&#xff0c;着色器的每次迭代都会有这些值。你可以在下一次请求GPU执行着色器时将它们设置为其他值。我们将再次从第一篇文章中的三角形示例开始&#xff0c;并对其进行修改以使用一些…

【初识Jmeter】【接口自动化】

jmeter的使用笔记1 Jmeter介绍与下载安装介绍安装配置配置与扩展组件 jmeter的使用基本功能元素登陆请求与提取cookie其他请求接口关联Cookie-响应成功聚合报告查看 Jmeter介绍与下载安装 介绍 jmeter是apache公司基于java开发的一款开源压力测试工具&#xff0c;体积小&…

nio 文件传输

transferto方法一次只能传输2个g的数据 文件大于2个g时