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

「网络原理」IP 协议

🎇个人主页:Ice_Sugar_7
🎇所属专栏:计网
🎇欢迎点赞收藏加关注哦!

IP 协议

  • 🍉报头结构
  • 🍉地址管理
    • 🍌动态分配 IP 地址
    • 🍌NAT 机制(网络地址映射)
    • 🍌IPv6
  • 路由选择

🍉报头结构

TCP/IP 协议族是整个网络体系中最核心的协议,类似于 TCP,IP 所包含的内容也很复杂
IP 协议主要完成两方面的工作

  1. 地址管理:使用一套地址体系来描述互联网上每个设备所处的位置
  2. 路由选择:为一个数据包规划如何从网络中某个地址传输到另一个地址

先来认识一下 IP 协议报头

在这里插入图片描述

“16 位总长度” 描述了一个 IP 数据报的长度(包括报头和载荷),虽然 IP 自身有长度限制,但是 IP 也提供了拆包和组包这样的操作,所以载荷很大也没关系,因为在 IP 这一层会自动拆成多个 IP 数据报,每个数据报携带一部分载荷

拆包后该如何组包呢?这就涉及到下面三个属性

在这里插入图片描述

在这里插入图片描述


🍉地址管理

设定 IP 地址的目的就是为了区分网络上不同的设备。但是 IP 地址本质是一个 32 位整数,由于网络设备越来越多,IP 地址不够用就成了上世纪 90 年代一个非常严峻的问题
对于这个问题,有三种解决方案

🍌动态分配 IP 地址

因为全世界的设备不是同时上网,所以就只给正在上网的设备分配一个 IP 地址就 ok 了。不过这并没有从根本解决问题

🍌NAT 机制(网络地址映射)

IP 地址分为两类

  1. 私网 IP / 局域网 IP
    形如 10.,172.16-172.31.,192.168.* 的地址都是私网 IP
  2. 公网 IP / 广域网 IP
    不是局域网的 IP 就是公网 IP

公网上的设备对应的公网 IP 都必须是唯一的;但是私网上 / 局域网上的设备,它们使用私网 IP,只要保证在当前局域网内部的 IP 不重复就 ok 了,不同局域网之间的 IP 是允许重复的
这个设定就会带来一些限制:

  • 公网设备可以直接访问其他公网设备
  • 同一局域网中的不同设备之间可以相互访问
  • 不同局域网中的设备之间不能访问
  • 局域网设备如果要访问公网设备,那就需要先对局域网 IP 进行转换
  • 公网设备不能主动访问局域网设备

这里第四点需要单独拎出来说一下
为了方便解释,这里就只考虑主机经过一个路由器之后就可以把数据转入公网,最终到达服务器,如下图:

在这里插入图片描述

所以发送数据报的流程如下:

在这里插入图片描述

上述的替换过程,本质上是让一个公网 IP 能够对应到多个设备,从而节省 IP 地址

路由器在 NAT 的时候会把这次通信的相关信息记录下来,比如源 IP、目的 IP。
如果局域网各个设备访问的服务器互不相同,那么路由器就可以通过服务器 IP 来区分是哪个设备,只需通过查表就可以把目的 IP 还原为之前的局域网 IP
如果访问的是同个服务器,可以通过端口号来区分,如下图,目的 IP 都是 5.6.7.8:

在这里插入图片描述

端口号可以用来区分同一主机的不同进程,也可以区分不同主机的不同进程,因为客户端的端口号是系统随机分配的,两台主机之间的端口大概率不同。路由器收到响应之后就可以查询传输层中的目的端口,看这里的端口是 2000 还是 3000,从而确定要把响应转发给哪个客户端
不过也有巧合,比如局域网中两台设备的端口恰好相同,那么此时路由器就会对端口号进行映射

在这里插入图片描述
比如对于第一个客户端:

在这里插入图片描述


🍌IPv6

IPv4 使用 4 个字节表示 IP 地址,取值范围为 0 - 2^32;而 IPv6 使用 16 个字节表示,范围为 0 - 2^128。通过增加 IP 地址的个数,从根本上解决问题。但是 IPv6 的报头结构和 IPv4 不兼容,引入 IPv6 就意味着当前的网络设备(路由器等)就需要更换为支持 IPv6 的设备


路由选择

路由选择就是路线规划,但是由于网络结构很复杂,每个路由器都无法掌握全局的信息,只了解一部分局部信息,因此路由器规划出来的路线,只是一个局部的最优解(听起来类似贪心)
每个路由器对网络环境(与它相邻的设备情况)有一定的了解,这样它就可以根据数据报中的目的 IP,告诉数据报下一步应该往哪个方向走
其中的原理为:路由器内部有一个数据结构——路由表,它记录目的 IP 的网段对应的网络接口(就是从路由器哪个口出),但由于路由器只了解局部的情况,所以数据报的目的 IP 在路由表中很可能不存在,此时路由表中的特殊表项(又称下一跳)就发挥了作用,它指向一个默认的网络接口,这个接口通常指向更上层的路由器

相关文章:

「网络原理」IP 协议

🎇个人主页:Ice_Sugar_7 🎇所属专栏:计网 🎇欢迎点赞收藏加关注哦! IP 协议 🍉报头结构🍉地址管理🍌动态分配 IP 地址🍌NAT 机制(网络地址映射&am…...

电商平台生活用品销售数据分析与应用

摘 要 在当前互联网飞速发展的时代,计算机应用给我们的工作生活带来了极大的便利。如今我们的生活离不开电商平台,其随之而来的是各种各样的销售数据与消费者信息,这些数据和信息的分析应用成为了当前互联网领域研究的重要部分。 本论文以基…...

FastAdmin数据库设计规范

FastAdmin数据库设计规范,官方文档上也有,仅仅是为了我自己做一次笔记增加记忆强度 表名和字段名全小写,只允许出现a-z和_这几种字符,且不能有拼音,只能为英文单词存储引擎统一使用innodb引擎字符集统一使用utf8mb4,排序规则使用…...

基于MATLAB仿真LFM线性调频信号

基于MATLAB仿真LFM线性调频信号 目录 前言 一、LFM信号简介 二、LFM信号基本原理 三、LFM信号仿真 四、代码 总结 前言 仿真中的接收信号,有时为了简单会直接用一个正弦波代替,但实际中接收到的信号极少是点频信号,一般都是PSK信号、OF…...

互联网的盈利模式

1. 广告收入 展示广告:通过在网站或应用上展示横幅广告、视频广告等,按点击次数(CPC)或展示次数(CPM)收费。搜索广告:通过搜索引擎上的关键词竞价广告,按点击次数收费。社交媒体广告…...

什么是距离选通型水下三维激光扫描仪?(下)

距离选通激光水下成像的发展 距离选通激光成像技术始于上世纪60年代,受制于高性能脉冲激光器和选通成像器件发展的制约,激光距离选通成像技术在随后的二十年发展缓慢,直到20世纪90年代,随着硬件技术的不断成熟,该技术…...

计算机网络(谢希仁第六版)| 课后习题与答案 | 物理层 | 题目知识点详细分析

计算机网络(谢希仁第六版)课后习题与答案 物理层 博客只对老师给的重点进行整理,完整的课后习题答案见Gitee下载:《计算机网络教程(第6版)(微课版)》习题答案 2-5 请画出数据流1 0 1…...

安卓安装linux + .net环境

安装Termux 到下面地址获取apk安装包 https://github.com/termux/termux-app 安装ssh ~ $ pkg install openssl ~ $ pkg install openssh查看用户名 ~ $ whoami ssh u0_a390修改当前用户密码 passwd 启动ssh sshd 安装 proot-distro pkg install proot-distro 列出能装的lin…...

ES6 新增Set 和 Map 两种数据结构

ES6 新增了 Set 和 Map 这两种数据结构,它们为 JavaScript 提供了更强大和灵活的数据处理能力。下面详细介绍一下 Set 和 Map 的特性和用法: Set Set 是一种类似于数组的数据结构,但是成员的值都是唯一的,没有重复的值。 特性&…...

【学一点儿前端】单页面点击前进或后退按钮导致的内存泄露问题(history.listen监听器清除)

今天测试分配了一个比较奇怪的问题,在单页面应用中,反复点击“上一步”和“下一步”按钮时,界面表现出逐渐变得卡顿。为分析这一问题,我用Chrome的性能监控工具进行了浏览器性能录制。结果显示,每次点击“上一步”按钮…...

vue跳转页面 如果登录了直接跳转 没有登录登录完以后直接跳转,使用vuex管理登录状态

在Vue.js中,如果你需要在用户登录后重定向到他们原本想要访问的页面,你可以使用Vue Router的beforeEach守卫来实现这个功能。以下是实现这一需求的步骤: 存储目标路由:在用户被重定向到登录页面之前,存储他们想要访问的…...

渗透测试-若依框架的杀猪交易所系统管理后台

前言 这次是带着摸鱼的情况下简单的写一篇文章,由于我喜欢探究黑灰产业,所以偶尔机遇下找到了一个加密H币的交易所S猪盘,我记得印象是上年的时候就打过这一个同样的站,然后我是通过指纹查找其它的一些站,那个站已经关…...

【免费】中国电子学会2024年03月份青少年软件编程Python等级考试试卷一级真题(含答案)

2024-03 Python一级真题 分数:100 题数:37 测试时长:60min 一、单选题(共25题,共50分) 1. 下列哪个命令,可以将2024转换成2024 呢?( A)(2分) A.str(2024) B.int(2024) C.fl…...

深入了解RTMP推流技术:视频汇聚EasyCVR低延迟与高稳定性分析

RTMP(Real Time Messaging Protocol)视频推流技术,作为音视频传输领域的关键技术之一,已经在直播、视频会议、在线教育等多个场景中得到了广泛应用。RTMP以其独特的优势,为实时音视频传输提供了高效、稳定的解决方案。…...

containerd手动配置容器网络

containerd手动配置容器网络 机器详情nerdctl启动一个不带网络的容器获取容器ID、PID与network namespace路径准备bridge插件的执行配置文件通过下面的命令调用bridge插件准备tuning插件文件执行下面的命令调用tuning插件准备portmap插件文件执行下面的命令调用portmap插件删除…...

数据迁移到 Django 模型表:详尽指南

数据迁移是许多应用程序开发过程中必不可少的一部分。在这篇文章中,我们将详细分析和总结如何通过一个定制的 Django 管理命令,将数据从 MySQL 数据库迁移到 Django 模型表中。这种方法可以确保数据在多个数据库之间有效且安全地迁移,同时避免…...

代码随想三刷二叉树篇4

代码随想三刷二叉树篇4 617. 合并二叉树题目代码 700. 二叉搜索树中的搜索题目代码 98. 验证二叉搜索树题目代码 530. 二叉搜索树的最小绝对差题目代码 501. 二叉搜索树中的众数题目代码 236. 二叉树的最近公共祖先题目代码 617. 合并二叉树 题目 链接 代码 /*** Definitio…...

『大模型笔记』如何让小型语言模型发挥作用!

如何让小型语言模型发挥作用! 文章目录 一. 如何让小型语言模型发挥作用!不可能的可能性小模型的潜力创新方法与突破实践与验证过滤系统与数据质量小模型的逐步改进信息理论蒸馏方法(新工作InfoSum)总结与展望Infini-Gram与N-gram模型的新时代后缀数组与高速计算二. 参考文献…...

jnp.diag

jnp.diag 是 JAX 库中用于创建对角矩阵或提取对角线元素的函数。具体功能取决于输入的形状: 当输入是一维数组时,jnp.diag 创建一个以该数组为对角线元素的对角矩阵。当输入是二维数组时,jnp.diag 提取并返回对角线元素。 函数签名 jnp.di…...

bert文本分类微调笔记

Bert实现文本分类微调Demo import random from collections import namedtuple 有四种文本需要做分类,请使用bert处理这个分类问题 # 使用namedtuple定义一个类别(Category),包含两个字段:名称(name)和样例(samples) Category namedtuple(Ca…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子&#xff08…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage)&#xff1a…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...