网络层重要协议 --- IP协议

news2024/11/26 15:37:40

小王学习录

  • 今日摘录
  • IP数据报
    • 数据报首部
    • IPv4的局限及解决方法
  • 地址管理
  • 路由选择
  • 扩展:NAT和NAPT的结合使用

今日摘录

关山难越,谁悲失路之人。萍水相逢,尽是他乡之客。
在这里插入图片描述

网络层的职责是地址管理路由选择,在网络层中最重要的协议是ip协议。下面先介绍一下ip数据报,再聊地址管理和路由选择。

IP数据报

先看看IP数据报结构:

在这里插入图片描述

数据报首部

  • 4位版本:IPv4或IPv6。(中国IPv6是一项伟大的创举)
  • 4位首部长度:与TCP报头一样,单位为4个字节
  • 8位服务类型:实际有效位为4位,其余有3位优先权字段,一位保留位。这四位有效位只能有一位值为1,代表了ip协议的四种形态,分别是最小延迟、最大吞吐量、最高可靠性、最小成本
  • 16位总长度:报头+数据。单位为字节,意味着一个ip数据报最大为64kb,如果大于64kb,在网络层会自动拆分组装。拆分和组装时要依靠下一行字段。
  • 16位标识:用于标识不同的传输层报文,一个报文拆分成多个ip数据报,来自同一报文的标识值相同。
  • 3位标志:用于标识当前数据报是否为所属报文的最后一个数据报。
  • 13位片偏移:用于给属于同一报文的数据报排序,保证接收方组装数据报时是有序的。
  • 8位生存时间(TTL):数据报在网络传输过程中的最大生存时间,注意这里的时间单位并不是秒和毫秒,而是经过路由器的个数,准确来说是向每一个路由器寻址的次数(每经过一个路由器进行一次寻址)。每个TTL都有一个初始值,不同操作系统的TTL值不同(32,64),每经过一个路由器TTL值减一,当TTL值为0时,认为目的ip地址不存在,将数据报丢弃
  • 8位协议:用于标识上层,即传输层的协议(TCP或UDP)。
  • 16位首部校验和:这个校验和只是首部的校验和,因为载荷的校验和在传输层进行计算(TCP和UDP的校验和字段)。
  • 32位源ip:ip数据报发送方的ip地址。在计算机中用32位二进制标识,平时表示时将32位分成4份,对每一份用点分十进制表示。
  • 32位目的ip地址:ip数据报接收方的ip地址。
  • 选项字段:与TCP的选项字段一样,长度不定。

IPv4的局限及解决方法

在IPv4体系中,ip地址用32位二进制表示,这就意味着IPv4能为全球体统的ip地址数最多有42亿九千万个。每一个能上网的设备都需要一个ip地址,随着互联网的蓬勃发展,能上网的设备种类越来越多。PC、移动手机、服务器、路由器乃至于万物联网,42亿九千万这个数量已经不足以为全球的上网设备提供ip地址了。

为了解决这个问题,有了三个解决方法,实际上前两个只是缓解,第三个才是从根本上解决了IP地址不够用的问题。

    1. 动态分配ip地址
      当有一个设备要上网时就给这个设备分配一个ip地址,这个设备不上网时,这个ip地址就分配给其它要上网的设备。
      这只是提高了ip地址的利用率,并没有从根本上解决问题。
    1. NAT地址转换
      NAT地址转换实质上是实现了用一个ip地址同时代表多个设备。
  1. 在NAT中,将ip地址分为私网ip(内网ip)和公网ip(外网ip)。

  2. 私有ip有10.* 、 172.16.* - 172.31.* 、 192.168.* 。剩下的地址都是公网ip。

  3. 在不同的局域网中,私网ip可以重复使用。但公网ip只能有一个。

  4. 当一个私网ip要访问公网ip时,经过NAT设备(路由器)进行地址转换之后,就会将私网ip映射成一个公网ip,同一个内网中的设备映射的公网ip是相同的。多个同一内网的ip去访问同一个服务器(外网ip)时,在服务器方显示的源ip都是同一个,即该子网中设备映射的公网ip。看以下图解:
    在这里插入图片描述

  5. 当公网ip收到内网ip的访问时,虽然无法得知访问者的内网ip是多少,但是知道了访问者的公网ip和端口号,将响应发送给访问者的公网ip,公网ip的路由器会根据端口号来区分具体响应的是哪个主机,从而完成通信。

  6. 公网ip在没有收到内网ip的访问时,是无法直接与内网ip进行通信的。这是因为如果内网ip不访问公网ip,公网ip就不知道内网ip的端口号,也就无法与内网ip建立通信。同理两个局域网内的内网ip也无法直接通信。

NAT地址转换可以有效缓解ip地址不够用的问题,但是带来的副作用是使得网络环境更加复杂。

    1. IPv6
      IPv6从根本上解决了ip地址的数量问题
      IPv4用32位表示,可表示的ip地址有42亿九千万个。
      IPv6用128位表示,位数提高为原来的4倍,可表示的ip地址个数是42亿九千万的四次方。这个数量可以给地球上的每一粒沙子都分配一个ip地址了。
      我国一直走在IPv6研究的最前方,目前IPv6的普及程度是全球普及率最高的。大家可以查看以下自己的路由器配置是否开启了IPv6。当开启IPv6之后,网速不会变得更快,信息不会变得更多,唯一不同的是你在互联网世界所踩的每一寸土地,都将属于我们自己,历史的债将在IPv6还清

地址管理

为了方便进行地址管理(组网),将ip地址分为了网络号和主机号
网络号:保证相连的两个网段有不同的标识
主机号:用于区分同一网段中的不同主机。同一网段中的网络号相同,主机号不同。如果同一网段中有两个设备主机号相同,那么这两个设备中势必有一个不能上网。

那么问题来了,一个ip地址的哪几位是网络号,哪几位是主机号呢?这需要靠子网掩码来进行区分,以我的ip地址为例:

看下图:
在这里插入图片描述
子网掩码的左半部分全为1,右半部分全为0,子网掩码为1的位数就是网络号的位数。以我的ip地址为例的话就是网络号为10.138

  1. 如果将一个ip地址中的主机位全设为0,就成为了网络号,代表这个局域网
  2. 如果将一个ip地址中断主机位全设为1,就成了广播地址,可以为局域网内的所有设备发送数据。结合UDP的知识,我们知道如果向10.138.255.255发送UDP报文,则整个局域网内的所有设备都可以收到。
  3. 127.*的ip地址用于本机环回测试,通常是127.0.0.1。
  4. 通常将主机号为1的地址设为默认网关,这个可以自由配置

路由选择

在每一个路由器中都有一个路由表,在路由表中保存了周围设备的信息,当ip数据报经过一个路由器时,都会查看路由器的路由表,根据自己的目标ip看一下自己的下一站应该去哪个ip。如果路由表中有下一站信息,就会直接顺着路由走,如果没有会顺着路由表的默认路由走。每查看一次路由表就会使TTL值减一。如果TTL值减为0了,说明目的ip不存在,永远找不到,就会丢弃这个ip数据报。

以上简单介绍了路由选择的过程,实际上的路由选择过程十分复杂,涉及到路由表的配置,更新等一系列问题。

扩展:NAT和NAPT的结合使用

通过上面对NAT的介绍我们知道NAT可以将内部网络的私有ip地址映射为公共ip地址,而NAPT在此基础上进一步处理端口号

具体的处理过程是:将TCPUDP(注意NAPT只能对TCP和UDP的端口号进行转换)的源端口号修改为一个临时的未被占用的端口,并在映射表中记录这个映射关系。当外部网络的响应返回时,NAPT会根据映射表将目标端口号恢复到原始的内部设备的端口号,然后将数据报传递给相应的设备。这种方式允许多个内部设备共享一个公共ip地址,通过端口号的不同来区分它们的通信流量。

总而言之,NAT和NAPT结合使用来实现私有网络地址到公有地址的映射。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

程序员为啥要做副业(05)-业务解决方案缔造者

点击下方“JavaEdge”,选择“设为星标” 第一时间关注技术干货! 免责声明~ 任何文章不要过度深思! 万事万物都经不起审视,因为世上没有同样的成长环境,也没有同样的认知水平,更「没有适用于所有人的解决方案…

机器人控制——C++ HSM状态机基础知识

本章将向您介绍使用HSM的基本知识。为了简单起见,我们将在这里学习如何编写单层次(也称为平面)状态机,并在下一章中介绍层次状态机。 让我们从我们可以编写的最简单的状态机开始。 // simplest_state_machine.cpp#include "…

签名加密发送请求

本篇文章介绍下通过HMAC-SHA1加密验证,将加密之后得到的签名作为参数发送请求,假如咱们需要按照下列要求将参数加密之后传递: 咱们来逐步分析得到签名的步骤和最终发送请求需要携带的参数内容,本次实现是在node.js的环境下。 首先…

计算机系统

由计算机硬件系统和计算机软件系统组成的综合体 冯诺伊曼计算机 定义 以“存储程序”的概念为基础的各类计算机通称为冯诺伊曼机 特点 计算机由运算器、存储器、控制器、输入设备和输出设备五大部件组成指令和数据以同等地位存放于存储器内,并可按地址寻访指令和…

Python Faker批量生成测试数据

一、前言 在做自动化测试或压力测试时会需要大批量生成测试数据,简单的方式你可以写一个存储过程使用随机函数来生成记录,但这种生成数据看起来不够真实,其实有蛮多现成的工具可以完成这一任务。 二、Faker基本使用介绍 faker是一个生成伪…

Python零基础入门教程(非常详细)

目前python可以说是一门非常火爆的编程语言,应用范围也非常的广泛,工资也挺高,未来发展也极好。 Python究竟应该怎么学呢,我自己最初也是从零基础开始学习Python的,给大家分享Python的学习思路和方法。一味的买书看书…

从零开始搭建微服务(一)

构建项目父工程 添加公共核心模块 安装nacos 安装nacos nacos 文档地址: https://nacos.io/zh-cn/docs/what-is-nacos.html 本文使用版本2.2.2 下载地址:https://github.com/alibaba/nacos/archive/refs/tags/2.2.2.zip 使用nacos 我们下载是源代码 解…

轻松编写第一个油猴脚本

第一步:安装油猴 首先,我们需要安装油猴。油猴是一个免费的浏览器扩展,可让您在浏览器中运行脚本。 在 Chrome 浏览器中,可以通过以下步骤安装油猴: 在 Chrome 浏览器中打开 Chrome 网上应用店。搜索 "油猴&qu…

揭秘ChatGPT的智慧密码:向量数据库的神奇作用解析

2023年8月,亚马逊云科技推出了自己的向量引擎Amazon OpenSearch Serverless向量引擎,这被认为是其旗下大语言模型Amazon Titan超越ChatGPT的一个重要契机。 那么,这个Amazon OpenSearch Serverless向量引擎有何厉害之处?为什么能…

Elasticsearch:ES|QL 中的数据丰富

在之前的文章 “Elasticsearch:ES|QL 查询语言简介”,我有介绍 ES|QL 的 ENRICH 处理命令。ES|QL ENRICH 处理命令在查询时将来自一个或多个源索引的数据与 Elasticsearch 丰富索引中找到的字段值组合相结合。这个有点类似于关系数据库查询中所使用的 jo…

数据治理概念篇:(一)相关术语与名词

数据治理内容众多,其中与数据治理相关名词和术语也是多不胜数。下面记录一下常见的数据治理相关名词。 1.数据仓库 1.1.名词解释 Bill Inmon 将数据仓库定义为:“面向主题的、整合的、随时间变化的、相对稳定的支持管理决策的数据集合”。 Ralph Kimbal…

【python】爬取斗鱼直播照片保存到本地目录

一、导入必要的模块: 这篇博客将介绍如何使用Python编写一个爬虫程序,从斗鱼直播网站上获取图片信息并保存到本地。我们将使用requests模块发送HTTP请求和接收响应,以及os模块处理文件和目录操作。 如果出现模块报错 进入控制台输入&#xff…

APP开发:用途与未来前景|软件定制开发|网站小程序建设

APP开发:用途与未来前景|软件定制开发|网站小程序建设 APP开发已成为现代科技趋势的一部分,无论是日常生活还是商业领域,都有它的身影。通过开发APP,我们可以将想法、功能和内容转化为直观、易用的移动设备应用程序,满…

【算法| 差分 No.1】AcWing 797. 差分 AcWing 798. 差分矩阵

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮…

Spring中@Async的使用技巧

引言 在Java开发中,我们常常会遇到需要执行耗时操作的场景,例如文件上传、网络请求等。为了提高系统的响应速度和并发能力,我们可以使用异步方法来处理这些任务。本文将介绍如何在Java中使用异步方法,并探讨其中的一些注意事项。…

棋牌室电脑计时灯控,棋牌室计时灯控安装,佳易王计时计费管理系统软件

棋牌室电脑计时灯控,棋牌室计时灯控安装,佳易王计时计费管理系统软件 棋牌室的灯可以用佳易王计时计费软件来控制开关,当开始计时的时候,软件发送开灯的指令,灯打开,在结账后,软件发送关灯指令…

酷开科技 | 酷开系统里萌萌哒小维在等你!

在一片金黄淡绿的颜色中,深秋的脚步更近了,在这个气候微凉的季节里,你是不是更想拥有一种温暖的陪伴呢?酷开科技智慧AI语音功能更懂你,贴心的小维用心陪伴你的每一天。 01.全天候陪伴 在酷开系统中,只要你…

华为OD机试 - 高效的任务规划 - 逻辑分析(Java 2023 B卷 200分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷&#…

操作系统(一):进程状态与进程调度

前言 操作系统作为计算机基础的四大件,系统学习无疑是十分重要的。在这个系列的文章中,荔枝会结合操作系统的知识进行归纳梳理,总结输出博文!下面这篇文章主要介绍的是进程状态和调度,重点是几种调度算法的理解和掌握&…

基于yolov2网络的人脸识别系统matlab仿真,包括识别正脸,侧脸等

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、训练阶段 4.2、预处理阶段 4.3、识别阶段 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ........................................…