网络层协议-----IP协议

目录

1.认识IP地址

2.IP地址的分类

3.子网划分

4.公网IP和私网IP

5.IP协议

6.如何解决IP地址不够用


1.认识IP地址

IP 地址(Internet Protocol Address)是指互联网协议地址。

它是分配给连接到互联网的设备(如计算机、服务器、智能手机、物联网设备等)的数字标签,用于在网络中识别和定位这些设备。就好像是每一个接入网络的设备的 “身份证号码”,通过这个号码,数据就能准确地找到要发送的目标设备或者找到数据的来源设备。

1.IP地址是给因特网上的每个主机或路由器的每个接口分配的一个标识符

2.借助IP地址,就可以在网络中找到该IP标识的主机或路由器接口

3.IP地址分为IPv4(32位/4个字节)和IPv6版本(128位/16字节)

2的32次方大概约等于42亿多,也就是说可以给42亿多台主机和路由器接口分配IP地址,在IPv4刚出来的时候,这个数量是够用的,但是随着互联网的飞速发展,当前人们拥有多部手机以及电脑,各种网络设备,这个IP地址数量就显然不够用了。

IPv6可用的地址数大概是3.4乘以10的38次方,IPv4大概是4乘以10的9次方,所以使用IPv6在我们有生之年以及后面相当长的时间里是够用的

为什么到现在IPv6的普及率还这么低呢?

大家可以观看这个视频了解相关的原因:电子监听、全国断网,棱镜门背后,中国如何从末路狂奔到世界之巅_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1i14y157YV/?spm_id_from=333.1391.0.0&vd_source=e397e08c048028924220be584c3a14f2https://www.bilibili.com/video/BV1i14y157YV/?spm_id_from=333.1391.0.0&vd_source=e397e08c048028924220be584c3a14f2

IP地址是由32比特构成的,这样的地址不方便人们阅读和记忆

IP地址为了方便记忆记录和使用采用点分十进制进行表示

每8比特转换为一个十进制,中间用  “” 分隔开

IPv4的IP地址由两部分组成:网络号和主机号

网络号

标识主机或路由器接口所连接到的网络

如果主机或路由器接口的IP地址的网络号相同,表示他们属于同一段网络/段

主机号

标识网络中的主机或路由器接口

同一网络中,不同主机或路由器接口的IP地址的主机号必须不同,以便区分各主机或路由器接口

不同网络中,不同主机或路由器接口的IP地址的主机号可以相同

1.网络号相同的主机或路由器接口处于同一网段或同一局域网中

2.局域网之间通过路由器相连,形成互联网

3.因特网是最大的互联网

2.IP地址的分类

IP地址分为下面5类:

E类地址:保留为将来用的,所以不用管他

D类地址:多播地址,对于传统的通信来说,都是一个一对一的关系,也就是给一台主机分配一个IP地址,再给另外一台主机分配一个IP地址,两台主机之间通过这两个IP地址进行通信,而多播地址是将多个主机分配到一个组里,然后再给这个组分配一个多播地址,通过这个多播地址就可以给多台主机发送同一份数据

上面两种地址了解一下就行

我们重点学习ABC三中类型的地址

1. A类IP地址的网络号占8位。它的第一个字节是网络号,范围是1 - 126(0和127有特殊用途,0表示所有网络,127用于本地软件回环测试)。例如,一个A类IP地址10.0.0.1,其中“10”就是网络号部分,后面的三个字节(0.0.1)是主机号部分。

2. B类IP地址的网络号占16位。它的前两个字节是网络号,第一个字节的范围是128 - 191。例如,一个B类IP地址130.10.0.1,其中“130.10”是网络号部分,后面的两个字节(0.1)是主机号部分。

3. C类IP地址的网络号占24位。它的前三个字节是网络号,第一个字节的范围是192 - 223。例如,一个C类IP地址192.168.1.1,其中“192.168.1”是网络号部分,最后一个字节“1”是主机号部分。

1)只有A,B,C类地址可以分配给网络中的主机或路由器接口

2)主机号全0的地址是网络地址,不能分配给主机和路由器接口

3)主机号全1的地址是广播地址,不能分配给主机或路由器接口

4)在32比特中,0开头的是A类地址,10开头的B类地址,110开头的是C类地址

列如:

IP地址为192.168.1.1,将192十进制转二进制得到11000000,是110开头,所以是C类地址,那么192.168.1为网络号,最后的1为主机号;

主机号全0或全1是指主机号对应的比特全0或全1;

主机号全0:192.168.1.0,这个地址为网络地址

主机号全1:192.168.1.255,这个地址为广播地址

5)除去网络地址和广播地址,剩下的192.168.1.1~192.168.1.254就是可以分配的地址

1.对于A类地址,网络号为8位,由于第一位固定,0和127不可分配,所以可分配的网络号数量为2^7-2,剩下的24位为主机号,网络地址和广播地址不能分配,所以可以分配的主机数量为2^24-2

2.对于B类地址,网络号为16位,由于前两位位固定,所以可分配的网络号数量为2^14,剩下的16位为主机号,网络地址和广播地址不能分配,所以可以分配的主机数量为2^16-2

3.对于C类地址,网络号为24位,由于前三位固定,所以可分配的网络号数量为2^21,剩下的8位为主机号,网络地址和广播地址不能分配,所以可以分配的主机数量为2^8-2

缺陷:对于这种ABC类型的地址,此时IP地址的网络号和主机号是固定数,就会很容易造成大量的IP地址浪费

3.子网划分

子网划分可以有效的解决地址分类造成的IP地址浪费问题

子网划分能够让IP地址的网络号和主机号位数能够根据需求变化

划分子网的方法:从主机号中借用一些比特位作为子网号来划分出不同的子网

在C类IP地址中,我们借用主机号的第一位比特来划分出子网,主机号就从原来的主机号数量减少一半了,在一定程度上缓解了IP地址浪费的问题

对于划分子网,我们就无法知道原来的主机号是多少位了,这时候我们就有了子网掩码,他就可以划分出网络号和主机号有多少位

子网掩码:左起连续的1对应IP中的网络号和子网号,之后的0对应主机号

对于上述的子网1和子网2,网络号和子网号有25位,所以对应25个1,主机号有7位,所以对应7个0,然后再将子网掩码用点分十进制表示就得到子网掩码为255.255.255.128

在cmd中输入ipconfig可以查看自己电脑的IP信息

默认子网掩码:指未划分子网的情况下使用的子网掩码

A类地址子网掩码:255.0.0.0

B类地址子网掩码:255.255.0.0

C类地址子网掩码:255.255.255.0

IP地址和子网掩码得到网络地址:将IP地址和子网掩码按位与(对应的数字都为1才为1,否则为0),就能得到IP地址所在的网络地址

对于主机号,将除去子网号的部分转化为十进制就可以得到

CIDR:使用CRID可以简化IP地址和子网掩码的表达;

格式:IP地址/子网号的位数

列如:IP:200.10.0.10

子网掩码:255.255.255.128

CIDR:200.10.0.10/25

同一网络判断

1.通信时,发送方主机用自己的IP地址和自己的子网掩码按位与

2.发送方主机再用目的主机的IP地址和自己的子网掩码按位与

3.两个按位与的结果对比,判断是否在同一网络

如果目的主机和自己在一个网络,可以直接向目的主机发送消息

如果目的主机和自己不在同一网络,需要将消息发送到网关(路由器)

4.公网IP和私网IP

主要是为了缓解IP地址不够用的问题

公网IP:用于广域网,各不相同

私网IP:用于局域网,不同网络中可以相同

私网IP:

A类:10.0.0.0/8~10.255.255.255/8

B类:172.16.0.0/16~172.31.0.0/16

C类:192.168.0.0/24~192.168.255.0/24

NAT

NAT(Network Address Translation)即网络地址转换。它是一种在 IP 网络中用于将私有 IP 地址转换为公有 IP 地址的技术。当内部网络(如企业内部局域网)中的主机要与外部网络(如互联网)通信时,NAT 设备(通常是路由器)会对数据包中的源 IP 地址进行转换。

工作原理:

私有 IP 和公有 IP

在一个局域网内,设备通常使用私有 IP 地址,这些地址是在特定范围内预留的,不会在互联网上直接路由。例如,IPv4 中私有 IP 地址范围包括 10.0.0.0 - 10.255.255.255、172.16.0.0 - 172.31.255.255 和 192.168.0.0 - 192.168.255.255。公有 IP 地址是由互联网服务提供商(ISP)分配的、在互联网上唯一可路由的 IP 地址。


 转换过程

当内部网络中的主机(假设其 IP 地址为 192.168.1.10)向外部网络发送数据包时,NAT 设备会将数据包的源 IP 地址从私有 IP(192.168.1.10)转换为公有 IP(例如由 ISP 分配的 202.10.10.10)。同时,NAT 设备会记录这个转换关系,以便当外部网络的主机回复数据包时,能够将目的 IP 地址从公有 IP 转换回私有 IP,从而使内部网络的主机能够正确接收响应

类型:

静态 NAT

在静态 NAT 中,内部网络中的每个私有 IP 地址都被映射到一个固定的公有 IP 地址。例如,内部网络中有一台服务器,其私有 IP 地址为 192.168.1.20,通过静态 NAT 将其映射到公有 IP 地址 202.10.10.20。这种方式适用于需要外部网络能够直接访问内部特定服务器的情况,如企业内部的 Web 服务器或邮件服务器。


动态 NAT

动态 NAT 会根据需要从一个公有 IP 地址池中动态地分配公有 IP 地址给内部网络的主机。当内部主机请求访问外部网络时,NAT 设备从公有 IP 地址池中选择一个可用的公有 IP 地址进行转换。这种方式能够更有效地利用公有 IP 地址,适用于内部网络中有大量主机需要临时访问外部网络的情况。


端口地址转换(PAT

这是最常用的一种 NAT 类型。PAT 也称为 NAT 重载(NAT Overload)。它不仅转换 IP 地址,还转换端口号。在 PAT 中,多个内部主机可以共享一个公有 IP 地址。例如,内部网络中有 3 台主机(IP 地址分别为 192.168.1.1、192.168.1.2 和 192.168.1.3)同时访问外部网络,NAT 设备可以将它们的源 IP 地址都转换为同一个公有 IP 地址(如 202.10.10.10),但通过不同的端口号(如 1024、1025、1026 等)来区分不同的内部主机,从而实现多个主机通过一个公有 IP 地址与外部网络通信。

优点:

节省公有 IP 资源:由于 IPv4 地址空间有限,通过 NAT 技术可以让多个内部私有 IP 地址的设备共享一个或少量的公有 IP 地址,从而大大节省了公有 IP 地址资源。这对于企业和家庭网络等内部网络规模较大,但只需少量对外访问的情况非常有利。

增强网络安全性NAT 对内部网络的 IP 地址进行隐藏,外部网络无法直接看到内部网络主机的真实 IP 地址。这使得外部攻击者难以直接访问内部网络中的设备,起到了一定的安全防护作用。例如,黑客想要攻击内部网络中的一台主机,如果没有 NAT,主机的私有 IP 地址在互联网上暴露,很容易成为攻击目标;而有了 NAT,黑客只能看到 NAT 设备的公有 IP 地址,增加了攻击的难度

5.IP协议

版本:目前主要使用的是 IPv4(版本号为 4)和 IPv6(版本号为 6)

首部长度:指示IP首部的长度,IP首部包含固定部分和可变部分,固定部分每行是4个字节,所以固定部分是20个字节,可变部分最大是40个字节如果首部长度字段的值为 5,那么首部长度就是
5*4=20字节
,正常情况下,没有可选字段时,IP 首部长度为 20 字节,此时该字段的值为 5

服务类型:不需要了解

总长度:它表示整个 IP 数据包(包括首部和数据部分)的长度,单位是字节。数据部分的长度=总长度-首部长度

标识符:用于标识从源主机发送的一个 IP 数据包所属的分组。当一个 IP 数据包过大需要分片传输时,所有属于同一个原始数据包的分片都具有相同的标识符。接收方可以通过这个标识符来判断哪些分片属于同一个原始数据包,以便进行重组

标志:标志有三个标志位,第一个标志位是保留位,不用管。第二个标志位是允不允许分片(0表示允许分片,1表示不允许分片),第三个标志位是是否是最后最后一个分片(0表示是最后一片,1表示不是最后一片)

片偏移:用于指示每个分片在原始数据包中的相对位置。它是以 8 字节为单位计数的。接收方可以根据片偏移量来确定各个分片在原始数据包中的位置,从而正确地重组分片。例如,一个原始数据包被分成 3 个分片,第一个分片的片偏移量为 0,第二个分片的片偏移量可能为某个值(取决于第一个分片的长度),第三个分片的片偏移量根据前两个分片的长度来确定,接收端根据这些偏移量将分片按顺序组合。

生存时间:定义了 IP 数据包在网络中可以经过的最大路由器跳数。每经过一个路由器,TTL 的值就会减 1。当 TTL 的值减为 0 时,路由器会丢弃该数据包,并向源主机发送一个 ICMP 超时消息。这可以防止数据包在网络中无限循环,避免网络拥塞。例如,一个数据包的 TTL 初始值为 64,经过 64 个路由器后如果还没有到达目的主机,就会被丢弃。

协议:用于指示 IP 数据包中数据部分所使用的协议类型。值为 6 表示传输层协议是 TCP,值为 17 表示传输层协议是 UDP。通过这个字段,接收方的网络层可以将数据部分正确地交给相应的传输层协议进行处理。

首部校验和:用于检查 IP 首部在传输过程中是否出现错误。它是对 IP 首部进行计算得到的校验和。发送方在发送数据包时计算首部校验和,接收方在收到数据包后重新计算校验和,并与收到的校验和进行比较。如果两者不同,就表示首部在传输过程中出现了错误,接收方可以选择丢弃该数据包。

源IP地址和目的IP地址:源IP地址用于标识发送数据包的主机的 IP 地址;目的 IP 地址用于标识接收数据包的主机的 IP 地址。

可选字段和填充:如果拥有可选字段,可选字段的长度不是4字节的倍数,就需要使用填充来使整个IP协议的首部为4字节的倍数

6.如何解决IP地址不够用

1.动态分配IP地址:只给接入网络的设备分配IP地址。因此同一个MAC地址的设备,每次接入互联网中,得到的IP地址不一定相同

2.NAT技术:在公网和私网有介绍

3.IPV6:IPv6与IPv4彼此不兼容,IPv6用16个字节128位来表示一个IP地址,现阶段全世界的普及程度还是比较低

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

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

相关文章

我国无人机新增实名登记110.3 万架,累计完成飞行2666万小时

据央视新闻从中国民航局了解到,2024 年我国全年新增通航企业 145 家、通用机场 26 个,颁发无人驾驶航空器型号合格证 6 个、新增实名登记无人机 110.3 万架,无人机运营单位总数超过 2 万家,累计完成无人机飞行 2666 万小时&#x…

【Linux】正则表达式

正则表达式是一种可供Linux工具过滤文本的自定义模板,Linux工具(如sed、gawk)会在读取数据时使用正则表达式对数据进行模式匹配。 正则表达式使用元字符来描述数据流中的一个或多个字符。它是由正则表达式引擎实现的。正则表达式引擎是一种底…

数据平台浅理解

定义 数据平台架构是指用于收集、存储、处理和分析数据的一系列组件、技术和流程的整体架构设计。它就像是一个复杂的数据生态系统的蓝图,旨在高效地管理数据从产生源头到产生价值的整个生命周期。 主要层次 数据源层 这是数据的起点,包含各种类型的数据…

Python入门10:高阶函数

一、什么是高阶函数 1.1、高阶函数的概念和作用: 高阶函数是指 接受函数作为参数 或者 返回函数 作为结果的函数。它在函数式编程中是一个重要概念(函数式编程(Functional Programming , FP )是一 种编程范式&#xf…

浅谈云计算12 | KVM虚拟化技术

KVM虚拟化技术 一、KVM虚拟化技术基础1.1 KVM虚拟化技术简介1.2 KVM虚拟化技术架构1.2.1 KVM内核模块1.2.2 用户空间工具(QEMU、Libvirt等) 二、KVM虚拟化技术原理2.1 硬件辅助虚拟化2.2 VMCS结构与工作机制 三、KVM虚拟化技术面临的挑战与应对策略3.1 性…

GO:GO程序如何处理缓存加载和大数据缓存

如果我们会在程序启动时,需要加载所有数据,最简单的方式就是程序启动,通过轮训从数据库拉取所有数据,并写入到本地缓存中。 问题:数据量较大的时候,程序加载慢,启动时间长,遇到问题不…

【优选算法篇】:分而治之--揭秘分治算法的魅力与实战应用

✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:优选算法篇–CSDN博客 文章目录 一.什么是分治算法1.分治算法的基本概念2.分治算法的三个步…

OpenAI Whisper:语音识别技术的革新者—深入架构与参数

当下语音识别技术正以前所未有的速度发展,极大地推动了人机交互的便利性和效率。OpenAI的Whisper系统无疑是这一领域的佼佼者,它凭借其卓越的性能、广泛的适用性和创新的技术架构,正在重新定义语音转文本技术的规则。今天我们一起了解一下Whi…

python+playwright自动化测试(一):安装及简单使用,截图录屏

目录 基本使用 浏览器调用 启用浏览器 创建窗口对象 访问URL 页面的刷新、返回、前进 关闭 截图、录屏、保存pdf 截图 录屏 保存为pdf 设置窗口大小 调试模式 手机模式及new_context的更多参数 手机模式 new_context的其他参数 设置语言和时区 设置和修改位置…

初识C++(二)

六、引用 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。 通俗地讲,可以理解为一个人能够拥有多个称呼,这些所有的称呼都是表示这一…

【RedisStack】Linux安装指南

【RedisStack】Linux安装指南.md 前言下载解压创建启动文件设置密码把密码设置到环境变量启动/停止相关命令测试&验证官网资料参考资料 前言 Redis Stack是使用Redis的最佳起点。我们将我们必须提供的最好的技术捆绑在一起,形成一个易于使用的软件包。Redis St…

达梦8-DMSQL程序设计学习笔记1-DMSQL程序简介

1、DMSQL程序简介 DMSQL程序是达梦数据库对标准SQL语言的扩展,是一种过程化SQL语言。在DMSQL程序中,包括一整套数据类型、条件结构、循环结构和异常处理结构等,DMSQL程序中可以执行SQL语句,SQL语句中也可以使用DMSQL函数。 DMSQ…

STM32 FreeRTOS 基础知识

多任务处理 内核是操作系统的核心组件。诸如 Linux 这样的操作系统采用的内核, 看似允许用户同时访问计算机。很明显,多个用户可以同时执行多个程序。 每个执行程序都是受操作系统控制的任务(或线程)。如果一个操作系统能够以这…

T-SQL编程

目录 1、T-SQL的元素 1.1 标识符 1. 常规标识符 2. 分隔标识符 1.2 变量 1. 全局变量 2. 局部变量 1.3 运算符 1. 算数运算符 2. 赋值运算符 3. 位运算符 4. 比较运算符 5. 逻辑运算符 6. 字符串连接运算符 7. 一元运算符 8. 运算符的优先级和结合性 1.4 批处…

js中的Object.defineProperty()详解

文章目录 一、Object.defineProperty()二、descriptor属性描述符2.1、数据描述符2.2、访问器描述符2.3、descriptor属性2.3.1、value2.3.2、writable2.3.3、enumerable (可遍历性)2.3.4、configurable (可配置性) 三、注意事项 一…

【搭建JavaEE】(2)Tomcat安装配置和第一个JavaEE程序

Tomcat–容器(Container) 下载 Apache Tomcat - Welcome! 下载完成 请求/响应 结构 测试 查看Jdk版本 改端口号localhost8080–>8099 学学人家以后牛逼了可以用自己名字当文件夹名 配置端口8099 找到server文件 用记事本打开 再打开另一个logging文件 ”乱码解决“步骤&…

centos7.6 安装nginx 1.21.3与配置ssl

1 安装依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel2 下载Nginx wget http://nginx.org/download/nginx-1.21.3.tar.gz3 安装目录 mkdir -p /data/apps/nginx4 安装 4.1 创建用户 创建用户nginx使用的nginx用户。 #添加www组 # groupa…

高级软件工程-复习

高级软件工程复习 坐标国科大,下面是老师说的考试重点。 Ruby编程语言的一些特征需要了解要能读得懂Ruby程序Git的基本命令操作知道Rails的MVC工作机理需要清楚,Model, Controller, View各司什么职责明白BDD的User Story需要会写,SMART要求能…

TrollFools 2.10-22 插件注入工具 官方版

《TrollFools巨魔设备专用插件注入工具》这是一款专为巨魔设备打造的插件注入神器,功能强大且操作便捷。它能够轻松地将插件注入通过AppStore商店下载的任意APP中,同时也能随时卸载,丝毫不影响APP的正常使用。注入后的APP仍可正常更新&#x…

30分钟内搭建一个全能轻量级springboot 3.4 + 脚手架 <1> 5分钟快速创建一个springboot web项目

快速导航 <1> 5分钟快速创建一个springboot web项目 <2> 5分钟集成好最新版本的开源swagger ui&#xff0c;并使用ui操作调用接口 <3> 5分钟集成好druid并使用druid自带监控工具监控sql请求 <4> 5分钟集成好mybatisplus并使用mybatisplus generator自…