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

个人主页:兜里有颗棉花糖
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
收录于专栏【网络编程】
本专栏旨在分享学习计算机网络的一点学习心得,欢迎大家在评论区交流讨论💌

目录

  • 🐱一、IP协议介绍
    • 🐟IP协议报文结构
    • 🐟NAT机制
  • 🐱二、IPv6
  • 🐱三、IP地址组成
  • 🐱四、特殊的ip地址
  • 🐱五、子网掩码
  • 🐱六、路由转发

🐱一、IP协议介绍

🐟IP协议报文结构

在这里插入图片描述

  • 四位版本号:用来表示IP协议的版本,现有的IP协议只有两个版本,一个是IPv4,另一个是IPv6。
  • 四位首部长度:告诉接收方在IP数据报中如何找到数据部分的起始点。通过首部长度字段,接收方可以确定数据部分在IP数据报中的位置,从而正确解析和处理IP数据报。IP报头是可变长的,同时也是IP报头是有选项的
  • 八位服务类型(TOS):八位服务类型其实只有4位是有效。支持模式切换(或称为状态切换的)。下面是使用的4种齐爱。
  • 最小延时:传输一个数据报的时间要尽可能短
  • 最大吞吐量:一定时间内传输的数据要多。
  • 最高可靠性:在传输过程中最不容易发生丢包。
  • 最低成本:在传输过程中消耗的硬件资源最低。
    四种形态种只能切换到一种前台
  • 16位总长度

注意这里的关系:这里的16位总长度 = IP报头 + 载荷的长度总长度 - IP报头长度 = 载荷长度(此载荷长度就是TCP报文总长度)TCP报文总长度 - TCP报头长度 = TCP载荷长度

IP协议支持拆包组包的机制,16位总长度(即64kb)针对的是一个数据报,如果是携带的是较长的数据的话,IP协议就会自动地把一个数据包拆分成多个数据报,接收方在进行分用的时候也会把多个数据报合并成一个数据报。

IP协议报文中的16位标识、3位标志位、13位片偏移共同描述了整个IP数据报的拆包组包的过程。
当需要传输的数据超过了网络的最大传输单元(Maximum Transmission Unit,MTU)时,就会触发拆包操作。MTU是指在网络中一次可传输的最大数据包大小。如果需要传输的数据超过了MTU,就需要将数据拆分成多个较小的IP数据报进行传输。
每个IP数据报都有自己的IP报头,包含了源IP地址、目标IP地址、协议类型等信息。而数据报的负载部分(即携带的实际数据)可能属于其他协议,例如TCP或UDP。
对于TCP协议,它会将需要传输的数据进行分段(Segmentation)的操作。TCP会将较长的数据分割成多个较小的TCP数据段(TCP segment),每个TCP数据段都包含TCP报头和对应的数据部分。
这样,当一个较长的TCP数据报需要在IP网络中传输时,它会被分成多个较小的IP数据报,每个IP数据报携带一个TCP数据段。这些小的IP数据报独立传输,通过IP协议的机制在网络中按顺序重新组合,最终将数据传输到目标设备的TCP协议中进行再次组装,以还原原始的较长TCP数据报。
需要注意的是,拆包和重组操作是由网络设备(如路由器)负责的,IP协议只负责将数据报进行传输,并不负责分段和重组的具体操作。

在这里插入图片描述

  • 16位标识:拆除的这多个包的16位标识是相同的。
  • 13位片偏移:拆除的这多个包的13位片偏移是不同的,前一个包的片偏移更小,后一个反之更大,通过片偏移就可以区分包的先后顺序。
  • 3位标志位:其中有一位标志位是不变的;有一位表示是否允许拆包,其实这里已经拆包了,所以此位标志位都是1;最后一个标志位表示结束标记,表示当前的包是否是最后一个,标志位是零表示是此包是最后一个包。
  • 8位生存时间(TTL):单位是,初始情况下TTL有一个初始数值(32/64/128),数据没经过一个路由器转发TTL就会-1,正常来说TTL足以支持数据报到达网路的任意一个位置,但是如果TTL真的变成0了,此时基本上就可以认为目标IP不可达了。
  • 8位协议:描述了上层,即传输层,使用了哪种协议
  • 16位首部校验和:检验数据是否正确的,这里只需要校验数据报首部即可,因为载荷部分要么是UDP要么是TCP,而TCP、UDP已经校验过自己本身了。
  • 32位源ip地址:32位源IP地址其实就是一个32位的整数(即4字节)。使用点分十进制的方式来进行表示(使用三个.把32位分为4个部分,每个部分都是8位(即1字节),每个字节的范围都是0-255,不带符号)。

这里有一个问题:既然32位源地址ip的数据量非常有限的,大体是42亿九千万,但是实际上全世界能够上网的设备不仅仅只有这些数字。那么IP地址不够用了该如何应对呢?
方式一:DHCP是动态主机配置协议的简称,是一种自动分配IP地址的网络协议。设备如果需要上网的话就需要分配ip,不需要上网就不需要分配ip。使用该方式只能够缓解,但是不能够根治。
方式二:NAT机制(网络地址转换)
另外,IP地址分为两大类:一类是内网ip(对于不同的局域网内的设备ip地址可以重复,对于相同的局域网ip地址不可以重复);另一类是外网ip(外网ip不可以重复)。内网ip一般有三种表示形式:10.*172.16。*-172.31.*192.168.*

🐟NAT机制

  • 情况一:如果是同一个局域网内部的设备之间进行通信,这种情况是没有问题的(因为同一个局域网内的内网ip是唯一的)。

  • 情况二:A局域网中的设备想和B局域网中的设备进行通信,由于这是两个不同的局域网中的不同设备,所以这两个设备的ip很有可能是相同的,这种情况是不允许的,会被直接禁止掉。两个局域网内部的设备是没法进行通信的

  • 虽然两个局域网内部的设备没法直接进行通信,但是可以间接进行通信,这个时候需要局域网内部的设备访问带有外网ip的设备。举个例子:我们平常使用的手机、平板都是在局域网内部去进行使用,它们都有一个自己的内网ip;还有一类设备就是服务器,服务器的话可以有外网ip,这样的话就涉及到NAT的工作过程了。

我们通过画图来进行举例:
在这里插入图片描述
在这里插入图片描述
上述的操作我们可以简单理解为借花献佛,意义何在呢?NAT机制下,一个外网ip代表的不一定是一个设备,也有可能是很多个设备。
接下QQ服务器要返回响应,返回的响应依旧是一个IP数据报:
在这里插入图片描述
接下来QQ服务器开始返回响应(返回的响应依旧是应给IP数据报):
在这里插入图片描述
此时,电信路由器和电脑之间就属于是局域网内部之间的通信了。

好了,上述的NAT过程是一个简化版本的,实际上,数据每经过一个路由器转发都可能会触发NAT机制(这和路由器的配置有关,有的模式下就会触发,有的模式就不会触发),比如说数据经过学校路由器就会触发NAT机制,经过光猫路由器就会触发NAT机制。

在这里插入图片描述

NAT机制的缺点:效率低、使用起来非常繁琐,还有一点就是不方便直接访问局域网内的设备。但是尽管这个NAT机制有如上的缺点,但是整个互联网世界其实就是利用NAT机制构建出来的。NAT机制可以提高IP地址的利用率,但是没有从根本上解决IP地址数量上的问题(即ip地址不够用)。NAT机制最大的优点就是NAT机制是一个纯软件实现的一个方案,

🐱二、IPv6

IPv6从根本上可以解决IP地址不够的问题。

IPv4是4个字节,即32位来表示ip地址。
IPv6是16个字节,即128位来表示ip地址。
所以,IPv6从根本上解决了ip地址不够使用的问题。

我们要知道,IPv6和IPv4是不兼容的,要想升级IPv6的话就需要更换路由器设备,然而升级IPv6之后其实并不会提高网速,也不会提高流畅性。
相比于IPv6,NAT机制只需要路由器开发商开发出新版本的软件(路由器固件),升级软件之后即可直接支持(同时成本也低)。所以ipv4目前发展的比ipv6要好(至少从目前来看的话,ipv4的普及程度要远远高于ipv6),而ipv6大规模普及的话还需要一定的时间。

🐱三、IP地址组成

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

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

在这里插入图片描述

作为开发者的话,在日常开发中我们不需要知道IP地址是怎么来的,这不是我们该操心的地方,ip地址可以是自动分配的(比如家里的网络环境比较简单),也可以是手动进行分配的(比如说企业的设备,网络环境比较复杂,这个时候就需要网管来进行配置)。

🐱四、特殊的ip地址

  • 网络地址:将ip地址中的主机地址全部设置为0,在通常的网络设置中,将主机地址全部设置为0被称为网络地址。而网络地址用于表示一个网络中的所有设备。例如,如果网络的IP地址范围是192.168.1.0/24,则192.168.1.0被用作网络地址,代表的是整个网络。通常情况下,网络地址不能作为设备的IP地址,因为该地址是用于标识整个网络的。我们不能给具体的设备分配这种ip(ip地址中的主机地址全部设置为0的ip)
  • 广播地址:将ip地址中的主机地址全部设置为1,用于给同一个链路中的所有主机发送数据包。

比如说:192.168.0.255,如果向这个ip上发送数据包,那么这个数据就会被转发给局域网中的所有设备。

在传输层协议中,TCP协议通常不支持广播或多播传输,因为TCP是一种面向连接的协议(TCP无法针对广播地址进行三次握手建立连接的操作),它在建立连接时需要明确的目的地址。而广播或多播是以一组地址为目的地址的通信方式,并不适用于TCP的连接模式。

相反,UDP协议可以用于广播或多播传输,因为UDP是一种无连接的协议,它不需要具体的目的地址。UDP协议的传输方式与广播或多播通信方式是相容的,可以一次性向一组目标地址发送数据。

  • 环回ip:被用于在本地主机中进行通信。环回IP地址被分配为127.0.0.1,也被称为本地回环地址

🐱五、子网掩码

一个ip地址,我们要想分清楚哪一部分是网络号、哪一部分是主机号,这是通过子网掩码(32位二进制位,通常用10进制来进行表示)来进行识别的。子网掩码和ip地址都是4字节,即32位比特位的整数。规定子网掩码左侧必须是连续的1,右侧必须是连续的0

举个例子:一个IP地址为192.168.1.100,子网掩码为255.255.255.0的情况。
子网掩码255.255.255.0对应的32位二进制:11111111.11111111.11111111.00000000,即代表着前24位是网络位,后8位是主机位。
ip地址192.168.1.100对应的32位二进制:11000000.10101000.00000001.01100100
可以确定192.168.1.100的网络位为11000000.10101000.00000001(192.168.1),而主机位为01100100(100)。

🐱六、路由转发

IP协议还有路由转发的功能。在互联网中,数据包通过IP协议进行数据的传输,同时根据目标的IP地址来进行路由的选择。

这里只简单介绍一下什么是路由转发:

每个路由器内部都有一个数据结构即路由表,数据到达路由器的时候就需要查询路由表(目的是询问该数据要到哪里去,从而选择一个方向进行数据的传输)。如果从这个路由表中查询到了,那么就按照这个方向继续传输数据;如果没有查到的话就会按照路由器默认的方向进行数据的转发。

至于说路由器中的路由表是如何生成的,以及路由表是如何来查询数据究竟要往哪个方向走,这里就不做过多的介绍了。

本文到这里就结束了,希望友友们可以支持一下一键三连哈。嗯,就到这里吧,再见啦!!!

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

.Net Core 使用 AspNetCoreRateLimit 实现限流

上一篇文章介绍过ASP.NET Core 的 Web Api 实现限流 中间件-CSDN博客 使用.NET 7 自带的中间件 Microsoft.AspNetCore.RateLimiting 可以实现简单的Api限流,但是这个.NET 7以后才集成的中间件,如果你使用的是早期版本的.NET,可以使用第三方库…

腊八蒜怎么腌制才能又脆又绿 把这招记在备忘录一步步制作

过了腊八就是年,这句话像是一个温暖的预告,告诉我们新年即将到来。而在我家的年味里,总少不了一瓶瓶翠绿的腊八蒜。每当亲朋好友围坐在一起,那独特的蒜香总能为我们的欢聚时光增添几分风味。 腌制腊八蒜是个技术活,很…

Git Merge、Rebase 和 Squash 之间的区别

文章目录 Git MergeGit RebaseGit Squash结论 作为一名开发人员,您可能使用过 Git 和 GitHub,掌握了版本控制的要点。通常通过拉取请求将分支的更改集成到主分支中是一项常见任务。许多人的默认选择是“合并”功能。 然而,版本控制领域提供了…

论文笔记:信息融合的门控多模态单元(GMU)

整理了GMU(ICLR2017 GATED MULTIMODAL UNITS FOR INFORMATION FUSION)论文的阅读笔记 背景模型实验 论文地址: GMU 背景 多模态指的是同一个现实世界的概念可以用不同的视图或数据类型来描述。比如维基百科有时会用音频的混合来描述一个名人…

项目解决方案:“ZL铁路轨行车辆”实时视频监控系统

目 录 一、建设背景 1.1 政策背景 1.2 现状 二、建设目标 三、建设依据 四、建设原则 4.1经济高效性 4.2系统开放性 4.3系统继承性 4.4系统扩展性 4.5系统经济性 4.6系统安全性 五、系统架构 5.1系统架构图 5.2技术架构 1、DVS 2、中心管理服务…

测试的基本概念

1、什么是需求? 在企业中主要分为两类:用户需求和软件需求 用户需求:甲方的需求,或者终端用户使用产品时必须要完成的任务(比较简略)。 软件需求:或者叫功能需求,该需求会详细描述开…

Qt单个字符判断

1.相关说明 字符的Unicode编码、单个字符的判断 2.界面绘制 3.相关主要代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui;…

数学建模常见算法的通俗理解(更新中)

目录 1.层次分析法(结合某些属性及个人倾向,做出某种决定) 1.1 粗浅理解 1.2 算法过程 1.2.1 构造判断矩阵 1.2.2 计算权重向量 1.2.3 计算最大特征根 1.2.4 计算C.I.值 1.2.5 求解C.R.值 1.2.6 判断一致性 1.2.7 计算总得分 2 神经…

MySQL 多版本并发控制 MVCC

MVCC出现背景 事务的4个隔离级别以及对应的三种异常 读未提交(Read uncommitted) 读已提交(Read committed):脏读 可重复读(Repeatable read):不可重复读 串行化(Se…

pygame学习(三)——支持多种类型的事件

大家好!我是码银🥰 欢迎关注🥰: CSDN:码银 公众号:码银学编程 实时事件循环 为了保证程序的持续刷新、保持打开的状态,我们会创建一个无限循环,通常使用的是while语句,w…

嵌出式学习又一天

关于485通讯 485属于串口通信,属于物理层的,规定为2线,半双工的多点通信标准,它的电气特性不一样,用缆线两端电压差值来表示传递信号,rs485仅仅规定了接收端和发送端的电气特性,没有规定任何数据…

esp32-idf Eclipse Log日志打印demo

Log日志打印demo 1、代码例程 esp32-S2 芯片 / Eclipse软件 开发环境 #include <stdio.h> #include "sdkconfig.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "esp_system.h" #include "esp_…

数据分析求职-知识脑图

今天和大家聊聊数据分析求职常见面试题&#xff0c;这是这个系列的第一篇文章&#xff0c;但是我不想开始就直接罗列题目&#xff0c;因为这样的文章实在太多了&#xff0c;同学们的兴趣程度肯定一般。所以&#xff0c;我想先和大家聊聊在准备面试题时候通常遇到的困扰&#xf…

7.5 MySQL对数据的增改删操作(❤❤❤)

7.5 MySQL对数据的基本操作 1. 提要2. 数据添加2.1 insert语法2.2 insert 子查询2.3 ignore关键字 3. 数据修改3.1 update语句3.2 update表连接 4. 数据删除4.1 delete语句4.2 delete表连接4.3 快速删除数据表全部数据 1. 提要 2. 数据添加 2.1 insert语法 2.2 insert 子查询 …

为什么 macOS 比 Windows 稳定?

在计算机操作系统领域&#xff0c;macOS 和 Windows 分别是苹果公司和微软公司的主打产品。尽管两者都拥有大量的用户群体&#xff0c;但在稳定性和用户体验方面&#xff0c;macOS 常常被认为优于 Windows。那么&#xff0c;为什么 macOS 比 Windows 更稳定呢&#xff1f; 我们…

大创项目推荐 深度学习的智能中文对话问答机器人

文章目录 0 简介1 项目架构2 项目的主要过程2.1 数据清洗、预处理2.2 分桶2.3 训练 3 项目的整体结构4 重要的API4.1 LSTM cells部分&#xff1a;4.2 损失函数&#xff1a;4.3 搭建seq2seq框架&#xff1a;4.4 测试部分&#xff1a;4.5 评价NLP测试效果&#xff1a;4.6 梯度截断…

Mimic-III 数据库挖掘尝试——连续性肾脏替代治疗(CRRT)

Mimic-III 数据库挖掘探索——连续性肾脏替代治疗&#xff08;CRRT&#xff09; 前言 上个月建库成功&#xff0c;至今一个月过去了。 因为没有服务器&#xff0c;在本地电脑反复建了几次&#xff0c;linux系统/windows系统一应俱全[苦涩]。原始库和衍生库都建好了&#xff…

Three.js 学习笔记之模型(学习中1.17更新)

文章目录 模型 几何体 材质模型点模型Points - 用于显示点线模型Line | LineLoop | LineSegments网格模型mesh - 三角形 几何体BufferGeometry缓冲类型几何体BufferGeometry - 没有任何形状的空几何体创建几何体的方式BufferAttribute Types定义顶点法线 geometry.attributes…

MedSegDiff-V2: Diffusion based Medical Image Segmentation with Transformer

MedSegDiff-V2:基于变压器的扩散医学图像分割 摘要 扩散概率模型(Diffusion Probabilistic Model, DPM)最近在计算机视觉领域获得了广泛的应用&#xff0c;这要归功于它的图像生成应用&#xff0c;如Imagen、Latent Diffusion Models和Stable Diffusion&#xff0c;这些应用已…