JavaEE: 探索网络世界的核心-IP协议

news2024/9/28 18:54:38

文章目录

  • IP 协议
    • 协议头格式
    • IP 地址
      • IP地址的数量限制
      • 解决IP不够用的问题
    • IP 地址的网段划分
      • 子网掩码
      • ABCDE五类网络
    • 特殊的 IP 地址


IP 协议

协议头格式

在这里插入图片描述

  • 4位版本号: 只有两个取值,4(IPv4)和6(IPv6).

    IPv2,IPv5这些在实际中是没有的,可能是理论上/实验室中存在~

  • 4位首部长度: IP头部的长度是多少个32bit,也就是length*4的字节数.4bit表示最大的数字是15,因此IP头部最大长度是60字节.

  • 8位服务类型: IP协议以哪种模式进行工作.

  • 16位总长度: IP数据报整体占多少个字节.

  • 16位标识: 一个大的数据,拆成多个IP数据报传输,此时这多个IP的数据报的16位标识,就是相同的值.

  • 3位位标志字段: 一位保留(现在不用,但是说不定以后要用到).1位表示当前是否是拆包/组包.1位表示当前包是否是组包中的最后一个.

  • 13位分片偏移: 是分片相对于原始IP报文开始处的偏移.其实就是在表示当前分片在原报文中处在哪个位置.实际偏移的字节数是这个值 * 8 得到的.因此,除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了).

  • 8位生存时间(TTL): 描述了一个数据报在网络中最多存活多长时间.TTL的单位不是 s 或者 min ,而是 “次数”(经过路由器转发的次数,一般是64).这个字段主要是用来防止出现路由循环.

    发送一个IP数据报的时候,会有一个初识的TTL的值(32,64,128…)
    数据报每次经过一个路由器转发,TTL就会 -1 (经过交换机,不减).
    一旦TTL减到0了,此时这个数据包就会被当前的路由器直接丢弃掉.

  • 8位协议: 描述了IP数据报中,携带的载荷,是哪种传输层协议的数据报.

    通过这里不同的数值,来表示接下来要把数据交给TCP解析,还是UDP解析,还是其他协议解析.
    有点类似于TCP/UDP报头中的"端口号".

  • 16位首部校验和: 验证数据在传输中是否出错(只是针对首部,IP报头).

    载荷部分TCP/UDP都有自己的校验和~

  • 32位源地址和31位目标地址: IP数据报中的最关键的信息,描述了数据报从哪里来,要到哪里去~

  • 选项字段: 略.

IP 地址

IP地址,用来标识网络上的一个设备.

IP地址的数量限制

我们知道,IP地址(IPv4)是一个4字节32位的正整数,那么一共只有2的32次方个IP地址,大概是42亿九千万左右.而TCP/IP协议规定,每一个主机都需要有一个IP地址.

这意味着,一共只有42亿九千万主机能接入网络吗?

实际上,由于一些特殊IP地址的存在,IP地址的数量远不足42亿九千万.另外IP地址并非是按照主机台数来配置的,而是每一个网卡都需要配置一个或多个IP地址.

解决IP不够用的问题

方案一: 动态分配IP地址.一个设备上网就分配IP,不上网就先不分配IP.(只是一个权宜之计)

方案二: NAT网络地址转换.以一当千,使用一个IP代表一大波设备.

  • NAT把IP地址分成两大类:
    1. 内网IP / 私网IP
    2. 外网IP / 公网IP

    要求公网IP必须是唯一的.但是私网IP是允许重复的(在不同的局域网中是允许重复的)

NAT 网络地址转换:

  • 一个设备在进行上网的时候,IP数据报中的IP地址,就会被NAT设备(通常是路由器)自动修改.
    1. 同一个局域网内,主机 A 访问主机 B ,不会涉及到 NAT 机制.
    2. 公网上的设备 A ,访问公网上的设备 B ,不会涉及到 NAT .
    3. 一个局域网中的主机 A 访问另一个局域网的主机 B ,这在 NAT 机制中,是不允许的.
    4. 局域网内部的设备 A ,访问公网上的设备 B ,NAT机制生效.

在这里插入图片描述

但凡是搭建一个服务器给别人使用,都是需要公网IP的.

NAT 机制的缺点:

  • 在这个机制之下,网络环境太复杂了.
  • 替换过程中,每一层路由器都需要维护映射关系,每次转发数据,都要查询映射关系…(都是开销).

方案二是一个办法,但是不太优雅.别急,还有一个办法.

方案三: IPv6 .

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

  • IPv4 使用 32 位 4 个字节表示 IP 地址.
  • IPv6 使用 128 位 16个 字节来表示 IP 地址.

IPv6 的地址空间非常巨大,大到可以给地球上的每一粒沙子都分配一个唯一的 IPv6 地址.

关于 IPv6 可以看看这个视频 电子监听、全国断网,棱镜门背后,中国如何从末路狂奔到世界之巅

IP 地址的网段划分

IP 地址分为两个部分,网络号和主机号.

网络中规定:

  • 同一个局域网中的设备,网络号必须相同,主机号必须不同.
  • 两个相邻的局域网,网络号必须不同.

子网掩码

网络号和主机号如何区分呢?
答: 通过子网掩码来区分.

子网掩码:

  • 子网掩码是一个 32 位的正整数,通常用一串 “0” 来结尾.
  • 子网掩码中的连续的 1 表示网络号的部分,连续的 0 表示主机号的部分。
  • 将 IP 地址和子网掩码进行 “按位与” 操作,得到的结果就是网络号.
    举个例子:
    在这里插入图片描述

ABCDE五类网络

除了子网掩码的方案,还有一种方案,ABCDE五类网络.
在这里插入图片描述

这是上古时期的网络划分方式,现在已经看不到了.但是仍然存在于教科书上,期末网络考试一般会有一道题靠这个.

特殊的 IP 地址

  1. 将 IP 地址中的主机地址全部设为 0 (二进制),就成为了网络号,代表这个局域网.

    因此,给局域网中的某个设备,分配 IP 地址的时候,不能把主机号设为全 0.

  2. 将 IP 地址中的主机地址全部设为 1 (二进制),就成了广播地址,用于给同一个链路中相互连接的所有主机发送数据包.
  3. 127.* 的 IP 地址用于本机环回测试,通常是 127.0.0.1

    自发自收,给这个 IP 发一个数据,设备就会从这个 IP 上再收到同一个数据,自己发给自己~


本文到这里就结束啦~

在这里插入图片描述

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

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

相关文章

Adobe PR与AE的区别与联系(附网盘地址)

从事视频后期制作的小伙伴,对于PR(Premiere)和AE(After Effects)应该不会陌生。随着短视频的兴起,就连我们普通用户,拍摄完视频,都会去糟取精的剪辑一下,而PR正是一款功能…

【ESP32】Arduino开发 | I2C控制器+I2C主从收发例程

有关I2C控制器的详细介绍放在了IDF开发的文章中,跳转栏目目录可以找到对应的文章。 1. API Arduino启动时就已经实例化了两个I2C设备类,分别对应Wire和Wire1对象。 1.1 初始化 bool begin(int sda, int scl, uint32_t frequency0); // returns true, i…

安全教育培训小程序系统开发制作方案

安全教育培训小程序系统是为了提高公众的安全意识,普及安全知识,通过微信小程序的方式提供安全教育培训服务,帮助用户了解并掌握必要的安全防范措施。 一、目标用户 企业员工:各岗位员工,特别是IT部门、财务、行政等对…

08-Registry搭建docker私仓

08-Registry搭建docker私仓 Docker Registry Docker Registry是官方提供的工具,用于构建私有镜像仓库。 环境搭建 Docker Registry也是Docker Hub提供的一个镜像,可以直接拉取运行。 步骤: 拉取镜像 docker pull registry启动Docker R…

Html 转为 MarkDown

在 RAG 中,通常需要将 HTML 转为 Markdown,有很多第三方 API 都支持 HTML 的转换,本文使用一个代码文档的例子 https://www.joinquant.com/help/api/help#name:Stock,将聚宽 API 转为 Markdown。本文通过两种方式进行实现,使用收费和开源的解决方案。聚宽 API 格式转为 Ma…

接口自动化测试数据怎么来?涉及资金的接口如何在线上回归?

最近,有一位小伙伴提出一个问题: 目前在用pytest做接口自动化,因为一开始就想要把这套接口自动化用到生产环境,所以考虑的问题比较多一点点。 请问: 1.在做接口自动化的过程中,参数的数据应该从哪里来比较…

【virtuous】ron与rout的区别

ron:直流阻抗,大信号电阻 rout:交流阻抗,,小信号电阻

钰泰-ETA1611 升压IC

描述 ETA1611是一款高效升压转换器,内部集成了22V电源MOSEFT。它以的 1MHz 频率运行,允许使用小型外部组件,同时仍能提供效率。它可以驱动高达 2A 的输出电流。通过 EN 引脚集成的真正 PWM 调光功能可以进一步以数字方式设置更低的输出电压。…

SNIDA

saliency mask M n _n n​ obtained from SOD is pasted onto the background mask to obtain the mask M I ( s ) _{I(s)} I(s)​ of the input image I as a prior 辅助信息 作者未提供代码

Python体素化脑信息图混淆矩阵相似性指标评估

🎯要点 使用相似性度量等算法类别学习评估大脑神经相似性。使用混淆矩阵分类器评估相似性,使用斯皮尔曼相关性关联相似度矩阵与混淆矩阵。特征化体素选择,优化相似性度量矩阵,用分类器近似大脑状态信息。将先验分布建模为二项分布…

FastAPI前置知识及快速入门

FastAPI fastapi,一个用于构建 API 的现代、快速(高性能)的web框架。 fastapi是建立在Starlette和Pydantic基础上的,Pydantic是一个基于Python类型提示来定义数据验证、序列化和文档的库。Starlette是一种轻量级的ASGI框架/工具包…

MyBatis——Plus——入门

常用注解 MyBatis——Plus怎么知道他是访问哪张表 常用配置

Codeforces Round 975 (Div. 2)

传送门:https://codeforces.com/contest/2019 B. All Pairs Segments 题意: 首先样例解释一下: 一共有:[1,2],[1,3],[1,5],[1,6],[1,7],[2,3],[2,5],[2,6],[2,7],[3,5],[3,6],[3,7],[5,6],[5,7],[6,7] 点 1,7 在5个…

Android SQLite的基本使用、生成Excel文件保存到本地

1. Android SQLite的基本使用 1.1. SQLiteOpenHelper Android 底层已经通过一个SQLiteOpenHelper的抽象类将数据库的创建,以及修改,更新等都放在了里面。 要使用它必须实现它的OnCreate(SQLiteDatabase db),onUpgrade(SQLiteDatabase db, int…

一些硬件知识(二十五)

cadence设置led颜色: 切换到Current propeties才会有颜色选选项,点击红色就可以选择其他的颜色: 手机字库是维修人员对FLASH MEMORY的俗称,其真实名字是闪速存储器,简称闪存,相当于手机的“硬盘”&#xff…

【Linux网络】详解TCP协议(3)

🎉博主首页: 有趣的中国人 🎉专栏首页: Linux网络 🎉其它专栏: C初阶 | C进阶 | 初阶数据结构 小伙伴们大家好,本片文章将会讲解 TCP的流量控制和滑动窗口 的相关内容。 如果看到最后您觉得这篇…

VB.net读写NDEF标签URI智能海报WIFI蓝牙连接

本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 Public Class Form1Dim oldpicckey(0 To 5) As Byte 卡片旧密码Dim newpicckey(0 To 5) As Byte 卡片新密码Function GetTagUID() As StringDim status As ByteDim myctrlword As …

Android手机投屏方案实现方式对比

文章目录 1.概述2.术语解释2.1 miracast2.2 scrcpy2.4 Wifi Direct2.5 app_process 3.技术实现对比3.1 Miracast3.1.1 Miracast介绍3.1.2 Miracast原理3.1.3 Miracast优缺点分析 3.2 Scrcpy3.2.1 scrcpy 介绍3.2.2 scrcpy的实现原理3.2.3 scrcpy的优缺点分析 3.3 Google cast3.…

Nisshinbo日清纺pvs1114太阳模拟器手测

Nisshinbo日清纺pvs1114太阳模拟器手测

影响上证50股指期货价格的因素有哪些?

上证50股指期货,作为反映上海证券交易所最具代表性50只股票整体表现的期货合约,其价格同样受到一系列复杂因素的驱动。以下是对影响上证50股指期货价格的主要因素进行的详细分析。 因素一、期货合约的供求关系 股指期货市场是一个由多头和空头双方共同…