【计算机网络】网络层协议——IP协议基础教程详解!干货满满

2023-10-29

【计算机网络】网络层——IP协议详解

网络层的主要的工作是:

地址管理,

路由选择

IP协议的格式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lydtQFzv-1654179136576)(C:\Users\19625\AppData\Roaming\Typora\typora-user-images\image-20220601140321825.png)]

4位版本号

4为的版本号0~15,但是目前我们只有2个版本,一个是IPV4,一个是IPV6

4位首部长度

首部长度指的是IP协议报头的长度,范围是0~15,但是单位是4个字节,也就是最大的60字节,

但是这个和TCP的首部长度一样,都是可变的,在选项那里可以增加长度

8位的服务类型

ip协议可以有不同种的类型:目前有4种类型的IP协议

最小延时,最大吞吐量,最高可靠性,最小成本

指定不同的服务类型,就可以实现不同的效果.

和我们的电脑的均衡模式,野兽模式,安静模式一样,侧重的方向不同

16位总长度

这个16位的总长度描述的是整个的ip协议的长度一共是多少.

这个长度的范围是0~64K,如果IP的协议长度大于这个数的话,就得分成多个ip协议了,分包传输然后再组包了

分包组包

因为一个协议太长了,所以我们不可避免的得分成多份.所以为了清楚的描述这些小包是哪一个大包的,我们还需要下面的一些属性:

标识

属于同一个ip的包使用同一个标识,表示它们原来都是同一条协议的

片移量

片移量表示包的前后顺序,也就是在原来的IP协议的位置.

在组包的时候,就按照片移量的大小来组装包的顺序的

标志

标志如果是0表示不是最后一个包,如果是1表示是最后一个包是结束标志

过程实例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qfo3C3Dr-1654179136577)(C:\Users\19625\AppData\Roaming\Typora\typora-user-images\image-20220601144322944.png)]

  1. 对于长度过于长的IP协议,进行分包
  2. 使用上面3种属性将大的ip协议,分成一个个的小ip协议
  3. 将接收到的3个ip协议组成一个大的包

8位生存时间

这个生存时间不是正常的时间,是此ip协议可以被路由器或交换机所转发的次数

一般是64或者128次,

每次经过一个路由器,次数就减一,当等于0了,这个ip协议就会被删除.

为什么要设置这样的次数呢?

因为有的IP地址是不存在的,是永远都找不到的,所以这个在转发就没有任何意义了,就需要将它抹杀掉

8位协议

8位协议指的就是传输层的协议是TCP还是UDP

16位首部校验和

这个就是校验的,检验有没有发生什么错误的信息.

源IP地址和目的IP地址

对于ipv4来说,ip地址的字节数是32位,我们一般都是使用点分十进制,将32位点分位8位.

然后使用10进制表示,这个为了方便给人看的,但是在电脑内部还是使用二进制来使用的.

IP地址管理

网络号+主机号

ip地址是由两部分组成的,一个是网络号,一个是主机号。

网络号是当前局域网的信息,处于同一个局域网中的设备的网络号都是一样的

主机号是当前设备的号码,在同一个局域网中的主机号互不相同.

在同一个局域网中,任意两个ip地址都不可以相同.

但是在不同的局域网中,任意两个地址可以相同.

子网掩码

那我们是怎么可以确定网络号占多少位,主机号占多少位的呢?

就是使用子网掩码来进行标识.

子网掩码也是32位的二进制数字,它的左边都是连续的1,右边都是连续的0

为1的部分就是表示网络号,为0的部分表示是主机号.

所以ip地址和子网掩码都是一般同时出现的,

可以让我们清楚的知道那些部分是网络号,那些部分是主机号

一般一个局域网中的设备不会超过255个,但是如果超过的话,子网掩码就可以变为255.255.0.0 后两位都可以表示主机号

特殊的IP

  1. 主机号全0

    表示是一个网络号,因为正常的局域网中的设备的主机号是不可以为0的

  2. 主机号为全1

    表示是一个广播地址,向广播地址发送的数据,在该局域网中的任何地址都可以收到

  3. 环回地址127开头

    只有是127开头的,后面无论是什么地址都是环回地址

  4. 局域网地址

    只要看到是以192.168开头,10开头,172.16~172.31开头的都是局域网中的地址

内网和外网

内网即局域网,LAN网(local area network)

内网是指在同一个区域内部的网,比如说家里的网,学校的校园网,都是接上同一个路由器等等,这个就是内网

外网是广域网,WAN网( wai area network)

这个外网包括的范围就广了,覆盖面积是多个城市,国家.可以达到国际性的通信

上面的就是我家里里面的网络

主要有两个局域网,对于以光猫为主的局域网来说,它的一个LAN口的IP地址是192.168.0.1

连在这个lan口上面的ip地址有路由器的wan口,服务器1 和服务器2

这几个设备构成了一个局域网,它们的IP地址都是以192.168.0开头的.

只有LAN口的IP地址以1结尾,其他的设备都不可以以1结尾


对于路由器来说,它的WAN口接的是光猫的LAN口.

对于它的LAN来说,它和它的连接是第二个局域网

路由器的LAN口连接着三个设备:台式机,笔记本,电话

只有LAN口的IP地址是1结尾,其他的设备都不可以以1结尾

另外,IP地址的倒数第二个值和光猫局域网的数字是不同的

NAT机制

现在我们来探讨一下怎么来分配一下ip地址.

我们现在使用的ip协议一般都是ipv4,也就是使用32位的二进制来表示ip地址,但是这样表示的ip地址是有限个的,最多只有2^32个,所以如果想要所有的设备都可以上网交流的话,这样是远远不够的.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RpVrxi8F-1654179136582)(C:\Users\19625\AppData\Roaming\Typora\typora-user-images\image-20220602185544862.png)]

所以我们就采用NAT机制,

在向别的外网通信的时候,不使用局域网中的IP地址,而是使用它的外网地址.

所有处于同一个局域网中的设备,在和外部进行交流的时候,都是使用的外网地址.

对于我上面的例子来说,如果我的笔记本192.168.1.3想要和外网交流,那么不会直接使用此时的地址,而是要使用我们的供应商提供的外网地址103.57.12.60

也就是说,192.168.1.3这个IP地址是人人家里的设备都有可能是这个地址.但是这个只是在局域网内部有效的.这些IP地址只适用于局域网内部来进行交流,别的局域网是不可以进入此局域网交流的

在不同的局域网之间,IP地址可以相同,但是在同一个局域网内,IP地址不可以相同

另外,外网之间可以任意的进行交流,局域网只有其内部可以互相交流

那我们是怎么得到这样的103.57.12.60的外网地址呢?又是怎么保证同一个局域网内的不同的设备使用同一个外网地址却返回不同的消息呢?

使用的是运营商的带有NAT机制的路由器,

消息从局域网中的特定的设备到达NAT路由器之后,

NAT路由器将会记录并保存经过此路由器的IP地址,并且为它指定一个端口号,这个端口号是不同的,通过这个端口号可以确定这个局域网中的每一个设备,这样就可以保证将指定的信息发送到指定的设备中

另外,还有一个问题,我们的局域网中的设备想要互相交流怎么办呢?

局域网中的设备不可以直接交流,而是需要通过一个外部设备来进行中转交流.

设备A发送到QQ,设备B从QQ取消息,就是使用到了QQ的服务器来进行交流

IPV6

使用上面的IPV4+NAT机制可以解决IP地址的重复问题,但是使用IPV6可以更加的彻底一点.

IPv6的长度是16个字节,也就是128个比特位,这样算起来的话就是可以表示2^128个IP地址

这个数据是非常的大了,号称可以表示地球上的每一个沙子,所以使用IPv6可以覆盖所有的设备

ipv6真正的解决了IP地址不够用的问题

格式:

两个字节为一组,使用冒号进行分隔.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xb1oVQAA-1654179136583)(C:\Users\19625\AppData\Roaming\Typora\typora-user-images\image-20220602201141893.png)]

路由选择

还有一个就是路由选择的问题,就是从源IP到目的IP之间选一条合适的路由路径.

首先我们先来看一下要实现规划路径,路由器需要有什么必要的东西:

路由器里面需要维护一个数据结构:路由表

路由表里面就记录了每一个网络号和它对应的接口号

比如说:

网络号 接口

192.168.1 LAN1 表示这个网络号在LAN1口,我们就可以走这条路

192.168.1 WAN 表示这个网络号在WAN口,我们就可以走这条路

默认 下一跳 表示没有找到这个网络号,但是可以向下一条走一走看一下别的路由 器认不认识这个网络号

对于这个目的地址,如果路由器的路由表中可以找到一个接口,那么就走到这个接口在向后走,直到到达目的地为止

有时候,可能这个路由器可以给出多个路径,那么我们就可以找一个更合适的路了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【计算机网络】网络层协议——IP协议基础教程详解!干货满满 的相关文章

  • vue实现搜索功能

    通过列表里面的月份来进行搜索 需要用到日期选择器和filter方法
  • nginx集群报错“upstream”directive is not allow here 错误

    nginx集群报错 upstream directive is not allow here 错误 搭建了一个服务器 采用的是nginx apache 多个 php mysql 两个 多个apache负载均衡及后端mysql读写分离的服务器
  • 看了这篇文章,别再说你不会制作纹理逼真的法线贴图了

    下图是一只恐龙的低模布线 细心的朋友估计会看到恐龙头部的布线密度是要远远高于身体和四肢的 这种布线的好处就是可以在你需要着重刻画的部位经过细分后生成的模型面数会远远高于那些次要部分 会使你的细节刻画更方便 精度更高 如果想更多了解游戏建模可
  • 小程序路由跳转

    1 在小程序中路由跳转分为两种方式 声明式导航和编程式导航 路由导航就是我们在进行路由跳转的时候选择的方式 2 小程序中的声明式导航 概念 通过小程序提供的组件navigator 进行路由跳转 想要了解更多关于小程序navigator组件用
  • Setup&Hold互卡问题和Useful Skew的影响

    setup与hold timing互卡 conflict 现象的成因主要有哪些 如何解决 成因上来说 setup hold互卡主要有几种因素的影响 a 不同PVT条件下的cell delay variation较大 b 某些cell的lib

随机推荐

  • 小程序数据请求的方式和注意事项

    1 小程序中网络数据请求的限制 出于安全性方面的考虑 小程序官方对数据接口的请求做出了如下两个限制 只能请求HTTPS类型的接口 必须将接口的域名添加到信任列表中 2 配置request合法域名 假设要在自己的微信小程序中 希望请求某一域名
  • 怎么在网页或其他应用中打开你的app

    转载自 有改动 https segmentfault com a 1190000005967865 前言 对于一个完备的互联网产品而言需要有app端与web端两个不同前端 对于产品而言很多都希望能够将wap页上的用户引向native app
  • AndroidX设计架构MVVM之ViewModel生命周期分析

    本文基于ViewModel 2 1 0 先来一张ViewModel生命周期图 原文 AndroidX设计架构MVVM之ViewModel创建流程原理分析 AndroidX设计架构MVVM之ViewModel生命周期分析 AndroidX设计
  • ISCC SSTI

    先找参数吧 通过信息搜集 参数是xiaodouni 就是小豆泥的英文 这个是暹罗猫的一个名字吧 然后直接放两个payload的吧 看不懂的可以看一下我以前的文章CTFshow ssti里面讲了思路 这里就不再解释了 set pp dict
  • QT下配置Boost库

    QT下配置Boost库 前言 当使用别人的QT工程 复制到自己机器上 发现报如下错误 从QtCreator报错来看是找不到Boost相关文件和库 问题解决 首先去官网下载Boost库 编译boost库 下载boost源码 大家可以在boos
  • Ubuntu 18.04.6 单系统深度学习环境搭建(pytorch)

    1 系统安装 网上有很多这类教程 U盘制作 系统安装 2 显卡驱动安装 其他安装方法 ubuntu18 04安装显卡驱动 四种方式 我的安装方法 首先换清华源 选择一个附加驱动 然后应用更改 如果安装后重启黑屏 再尝试另外一个驱动 我是四个
  • R语言——方差分析

    一 方差分析的基本概念 方差分析是在20世纪20年代发展起来的一种统计方法 它是由英国统计学家费希尔在进行实验设计时为解释实验数据而首先引入的 从形式上看 方差分析是比较多个总体的均值是否相等 但是其本质上是研究变量之间的相互关系 方差分析
  • vue中使用echarts-liquidfill实现水球图

    先看效果图 echarts liquidfill查看官方文档 安装 npm install echarts save npm install echarts liquidfill save vue main js 中注册 import ec
  • postgresql从入门到菜鸟(十)initdb流程分析-环境设定

    分析完了参数解析 接下来分析环境设置 首先设定的是认证方式 static void check authmethod unspecified const char authmethod if authmethod NULL strlen a
  • 第三章网络传输介质

    一 信息 1 信号灯组成和类型 1 信号的组成 信息 定义数据类型 数据 描述事物的度量值 信号 信号时信息传输媒介 2 信息类型 数字信号 模拟信号 2 数字信号和模拟信号特点 1 数字信息 计算机通信使用 传输距离远 抗干扰能力强 通过
  • 如何定位CodeMirror插件

    CodeMirror插件不是普通的input textarea输入 无法使用selenium的input方法输入值 需要触发插件的事件才能真正实现值的更改 如何查看改插件有哪些事件 调用js触发setValue事件即可 document e
  • HDFS--读写测试

    读写测试 1 写测试 2 读测试 3 删除测试文件 1 写测试 cd export servers hadoop 2 6 0 cdh5 14 0 yarn jar share hadoop mapreduce hadoop mapreduc
  • 开发板BMP图片显示(6818开发板)

    BMP图片的前54个字节保存图片信息 不保存像素点 确认图片是不是BMP类型 读取整个图片大 pragma pack 1 typedef struct tagBITMAPFILEHEADER unsigned short bfType 2B
  • HR筛选简历内幕全解析

    我们已经把你的简历放进了公司的 人才库 在准备简历素材 挑选简历格式 着手创作简历的过程中 有一句话 可以用来作为戒条 Your resume is scanned not r ead YRIS 为什么让求职者以此为鉴呢 因为招聘者就是这样
  • 进程和线程的区别

    进程和线程的区别 1 进程和线程的关系和区别 2 线程的状态 3 进程的状态 4 多线程的实现方法 5 使用多线程的优缺点 6 线程的 run 和 start 有什么区别 7 什么是单线程和多线程 前两天面试 被问到进程和线程的区别 由于是
  • STM32F103 TFTLCD显示实验(一)

    文章内容 本文将介绍有关TFTLCD的有关知识 包括几个部分 分别如下 TFTLCD简介 相关指令 配置步骤 FSMC简介 由于篇幅过长 因此 代码讲解放到下一章中 链接如下 STM32F103 TFTLCD显示实验 二 https blo
  • 跑通官方的yolov7-tiny实验记录(yolov7-tiny可作为yolov5s的对比实验网络)

    目录 1 一些可用的参考链接 2 开始训练yolov7 2 1 weights 2 2 cfg 2 3 data 2 4 hyp 2 5 epochs 2 6 batch size 2 7 workers 2 8 name 1 一些可用的参
  • STM8中断的设置(ST Visual Develop和IAR环境下)

    以下以stm8s103为例介绍在ST Visual Develop和IAR环境下的中断设置 这两种只是环境不同其实中断向量是不会变的 先看一下数据手册 再结合芯片手册中中断向量映像表 如下图所示 结合起来的话我们就能够理解的 在用ST Vi
  • this.setState的详细用法

    1 为什么不要直接对state进行赋值 如果直接对this state复制是不会去更新视图的 this setState的原理是同一个队列来实现state的更新的 将需要更新的state放入到状态队列中 在一定时间段之后 合并并更新stat
  • 【计算机网络】网络层协议——IP协议基础教程详解!干货满满

    文章目录 计算机网络 网络层 IP协议详解 IP协议的格式 4位版本号 4位首部长度 8位的服务类型 16位总长度 分包组包 标识 片移量 标志 过程实例 8位生存时间 8位协议 16位首部校验和 源IP地址和目的IP地址 IP地址管理 网