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

网络原理(五):IP 协议

目录

认识IP 地址

子网掩码

作用

动态分配IP 地址

NAT 机制

认识MAC地址

MAC地址如何工作

网络设备和相关技术

集线器:转发所有端口

交换机:MAC地址转换表+转发

主机&路由器:ARP缓存表+ARP寻址

路由器:路由+NAPT

数据链路层重点协议

以太网

认识以太网

认识MTU

ARP协议


认识IP 地址

概念:

IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。

作用:

IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。

格式:

IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节),如:
01100100.00000100.00000101.00000110
通常用“点分十进制”的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数)。如:    100.4.5.6。

 IP 有两个版本,IPV4 和 IPV6 ;IPV4 是四个字节表示,IPV6 并不是六个字节,而是16 个字节2^128 ,地球上每一粒沙子都可以被完全覆盖。

随着时代的发展,目前的 IPV4 有点不够用了,4个字节毕竟太小;那为啥当初设计的时候不直接多给几个字节?  这主要就是时代的局限性,放在当时,每一个字节都很珍贵,其次就是当时使用设备的人太少了,42亿9千万 足够他们使用了。

而 IPV6 就完美的解决了这个问题,2 ^128 也不知道啥时候能用完。

组成:

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

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

通过合理设置网络号和主机号,就可以保证在相互连接的网络中,每台主机的IP地址都是唯一的。

那么,如何划分网络号和主机号呢?

分类:

过去曾经提出一种划分网络号和主机号的方案,把所有IP 地址分为五类,如下图所示

A、B、C三类及特殊D、E。全0和全1的都保留

  1. A:(1.0.0.0-126.0.0.0)(默认子网掩码:255.0.0.0        
    1. 网络号取值于1~126
    2. 大型网络。
  2. B:(128.0.0.0-191.255.0.0)(默认子网掩码:255.255.0.0
    1. 该类IP地址的最前面为“10”,
    2. 网络号取值于128~191
    3. 中等规模
  3. C:(192.0.0.0-223.255.255.0)(子网掩码:255.255.255.0
    1. 该类IP地址的最前面为“110”,
    2. 网络号取值于192~223
    3. 小型网络。
  4. D:是多播地址。
    1. 该类IP地址的最前面为“1110”,所以地址的网络号取值于224~239之间。
    2. 用于多路广播用户
  5. E:是保留地址。
    1. 该类IP地址的最前面为“1111”,
    2. 网络号取值240~255

 这种划分只会出现在课本上(AB类主机号太长了,很少有这么大的局域网),现实中根本不会这么来表示,而是使用子网掩码等方式来表示 IP 地址。

目前为止,已经出现了 IP 地址不够用的情况,在此基础上有好几个缓解方法,后面会提到。

我们来看看子网掩码:

子网掩码

格式

子网掩码格式和IP地址一样,也是一个32位的二进制数。其中左边是网络位,用二进制数字“1”表示,1的数目等于网络位的长度;右边是主机位,用二进制数字“0”表示,0的数目等于主机位的长度。
子网掩码也可以使用二进制所有高位1相加的数值来表示,如以上子网掩码也可以表示为24。

作用

其作用是:减少网络上的通信量;节省IP地址;便于管理;解决物理网络本身的某些问题。使用子网掩码划分子网后,子网内可以通信,跨子网不能通信,子网间通信应该使用路由器,并正确配置静态路由信息。划分子网,就应遵循子网划分结构的规则。

Classless Inter-Domain Routing(CIDR):

  CIDR 叫做无类域间路由,ISP 常用这样的方法给客户分配地址,ISP 提供给客户1 个块(block size),类似这样:192.168.10.32/28,这排数字告诉你你的子网掩码是多少,/28 代表多少位为1,最大/32.但是你必须知道的一点是:不管是A类还是B类还是其他类地址,最大可用的只能为/30,即保留2 位给主机位。

CIDR 值:

  • 掩码255.0.0.0:/8(A 类地址默认掩码)
  • 掩码255.255.0.0:/16(B 类地址默认掩码)
  • .掩码255.255.255.0:/24(C 类地址默认掩码)

计算方式:

将 IP 地址和子网掩码进行“按位与”操作(二进制相同位,与操作,两个都是1结果为1,否则为0),得到的结果就是网络号。
将子网掩码二进制按位取反,再与 IP 地址位与计算,得到的就是主机号。
举例:

二进制二进制
IP地址180.210.242.13110110100.11010010.11110010.10000011
子网掩码255.255.248.011111111.11111111.11111000.00000000
网络号180.210.240.010110100.11010010.11110000.00000000
主机号0.0.2.13100000000.00000000.00000010.100000

聊到这里还是没有能解决IP地址不够的问题,那么究竟该如何解决IP 地址不够用的问题?

动态分配IP 地址

东半球的黑夜就是西半球的白天,那么对方的很多设备也就不在线,这样就空出了很多IP 地址了。

那么在此基础上,提出了:只有上网才会分配地址,不上网就不分配。    那么这样就可以省下一大批地址。但是这样还无法解决问题。

NAT 机制

我们既然无法解决问题,我们就退而求其次

我们将所有网络分为两部分:外网和内网

  1. 内网IP:192.168.*   ; 10.*    ; 172.16.* - 172.31.*
  2. 其余的都属于外网。

那么什么叫外网,什么叫内网呢?

外网的ip 都是唯一的,而内网的ip 是可以重复的(通常局域网都属于内网)。

如果内网想要访问外网,那么就会给他分配一个 ip ,但是这个 ip 不是这个设备独占的,这整个局域网内的所有设备共享一个 ip 。

那好问题来了,如果我两个设备同时想要访问外网,那么该怎么办呢?

举例:

我们假设有两个主机,内网ip 分别是:192.168.0.1 和 192.168.0.2;目的 ip 都是 1.2.3.4

我们想要出这个局域网,得先经过 路由器吧(这个路由器也是个 NAT 设备);两个主机在路由器上做一个记录(具体内部干了啥我也不知道,反正交给路由器解决), 这个路由器有一个外网ip (假设为 4.3.2.1);那么此时就转换为: 4.3.2.1 的 ip 访问 1.2.3.4 的 ip 。

两个主机可能是不同的 端口号发送出去的数据,也或者是其他的。

我们上面说的只是内外网之间的访问,内网之间的访问,内网的ip 地址还是很有用的。

这样一个外网ip 就可以代表一大批内网设备了。

我们现实世界目前是使用 动态分配IP 地址 和 NAT 机制两种方式来提高 ip地址的利用率;然而这并不能完全解决问题(地址不够用);解决问题的唯一方法就是 IPv6。

认识MAC地址

MAC地址,即 Media Access Control Address,用于标识网络设备的硬件物理地址。

  1. 主机具有一个或多个网卡,路由器具有两个或两个以上网卡;其中每个网卡都有唯一的一个MAC地址。
  2. 网络通信,即网络数据传输,本质上是网络硬件设备,将数据发送到网卡上,或从网卡接收数据。
  3. 硬件层面,只能基于MAC地址识别网络设备的网络物理地址。

它们是 12 位字母数字,格式非常独特。一个例子是 A1:2B:C3:4D:E5:6F。从一开始就是这样,因为有 2 48 个(或 281,474,976,710,656)个可能的地址,我们很快就不需要其他方法了。

由于 MAC 地址是在工厂永久分配的,因此人们通常将其称为烧录地址或硬件地址。您甚至可以在直接贴在某些设备上的贴纸上找到 MAC 地址。

MAC地址如何工作

MAC 地址通过帮助网络上的事物将数据发送到正确的设备来发挥作用。您的手机或计算机在 Internet 上发送请求。当您的路由器收到该数据时,它会使用您的 MAC 地址来了解将数据发送到哪里。

但是,有一些细微差别。MAC 地址专门用于将同一网络中的设备标识为另一设备。当你通过蓝牙连接到某个东西时,唯一能获得你的 MAC 地址的就是你连接的那个东西。同样,当您连接到家庭 Wi-Fi 时,只有连接到家庭 Wi-Fi 的设备才能看到您设备的 MAC 地址。

总的来说,除了少数例外,互联网上的网站和其他设备看不到您的 MAC 地址。这些实体会获取您的 IP 地址。与 MAC 地址不同,IP 地址不是永久的,而是在您上网时分配的。因此,很少有设备真正有机会看到您设备的 MAC 地址。

上述来自:什么是 MAC 地址?你需要知道的一切 (baidu.com)

ok,目前为止我们所学的内功心法就到这里,目前都是为了做网站打下基础,接下来就要学外功招式(前端和后端了);前端主要是为了扫盲,而不是真正吃透。

网络设备和相关技术

集线器:转发所有端口

集线器是工作在物理层的网络设备,发送到集线器的任何数据,都只是简单的将数据复制并转发到其他所有端口。(端口指集线器后边的物理端口)

交换机:MAC地址转换表+转发

交换机(Switch)是一种用于信号转发的。与集线器广播的方式不同,它维持一张MAC地址表,可以为接入交换机的任意两个网络节点提供独享的电信号通路.主要有二重交换机和三重交换机,二层交换机属数据链路层设备,可以识别数据包中的MAC地址信息,根据MAC地址进行转发,三重交换机带路由功能,工作于网络层。网络中的交换机一般默认是二重交换机。

交换机也有一张MAC—PORT对应表,和网桥不一样的是,网桥的表是一对多的(一个端口号对多个MAC地址),但交换机的表却是一对一的,根据对应关系进行数据转发,工作原理如下图所示.

主机&路由器:ARP缓存表+ARP寻址

首先,ARP是一个介于数据链路层和网络层之间的协议;ARP协议建立了IP地址与MAC地址的映射关系。
在数据链路层,寻找下一跳设备MAC地址的过程,称为ARP寻址:

  1. 主机和路由器中都保存了一张ARP缓存表:通过IP地址可以找到对应的MAC地址。
  2. 根据下一跳设备的IP地址,在ARP缓存表中能找到对应的MAC地址,则可以设置目的MAC并发送数据报。
  3. 如果找不到,则发送ARP广播数据报:目的MAC为广播地址,询问下一跳设备的MAC地址

路由器:路由+NAPT

路由器主要有两个作用:

  • 网关:
    • 路由器作为网关,可以划分公网和局域网,某些路由器还可以将局域网划分为多个子网(不同网段)
    • 公网端口即WAN口,为单独的网卡,具有公网IP地址和公网MAC地址。
      • 划分的多个子网,是由局域网端口即LAN口划分,每个端口都有单独的网卡,具有该网段IP地址和MAC地址
    • 路由器作为网关:
      • 1. 划分局域网多个子网时,可以直接通过ARP寻址找到局域网任意主机。(这里的局域网就是路由器下的多个子网组成的局域网)。
      • 2. 划分公网和局域网时,局域网内主机发送数据报到公网主机时,需要基于NAPT协议,将局域网主机的IP地址和端口号,转换为路由器公网IP和端口号(指路由器中运行的程序的端口)。
         
  • 路由
    • 所谓路由,即在复杂的网络结构中,找出一条通往终点的路线;
      网络通信(网络数据传输),路由器中的路由功能,就类似于规划路线,往哪个方向行进能更快到达目的地。

IP 协议是网络层中的重点协议,那么聊完了网络层就再来看看数据链路层

数据链路层重点协议

我们在数据链路层需要了解三个重要的协议:以太网 , 认识 MTU , ARP协议

以太网

认识以太网

以太网不是一种具体的网络,而是一种技术标准,既包含了数据链路层又包含了物理层。

以太网中的网线必须使用双绞线;传输速率有10M,100M,1000M等;

以太网是当前应用最广泛的局域网技术;和以太网并列的还有令牌环网,无线LAN等;

源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固
化的;
帧协议类型字段有三种值,分别对应IP、ARP、RARP;
帧末尾是CRC校验码。

认识MTU

MTU相当于发快递时对包裹尺寸的限制。这个限制是不同的数据链路对应的物理层,产生的限制。
以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要
在后面补填充位;
最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;
如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对
数据包进行分片(fragmentation);
不同的数据链路层标准的MTU是不同的;

ARP协议

虽然我们在这里介绍ARP协议,但是需要强调,ARP不是一个单纯的数据链路层的协议,而是一个介于数据链路层和网络层之间的协议;

ARP协议的作用

ARP协议建立了主机 IP地址 和 MAC地址 的映射关系。

  1. 在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址;
  2. 数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃;
  3. 因此在通讯前必须获得目的主机的硬件地址

相关文章:

网络原理(五):IP 协议

目录 认识IP 地址 子网掩码 作用 动态分配IP 地址 NAT 机制 认识MAC地址 MAC地址如何工作 网络设备和相关技术 集线器:转发所有端口 交换机:MAC地址转换表转发 主机&路由器:ARP缓存表ARP寻址 路由器:路由NAPT 数…...

MySQL---空间索引、验证索引、索引特点、索引原理

1. 空间索引 MySQL在5.7之后的版本支持了空间索引,而且支持OpenGIS几何数据模型 空间索引是对空间数据类型的字段建立的索引,MYSQL中的空间数据类型有4种,分别是: 类型 含义 说明 Geometry 空间数据 任何一种空间类型 Poi…...

选择合适的 MQTT 云服务:一文了解 EMQX Cloud Serverless、Dedicated 与 BYOC 版本

引言 EMQX Cloud 是基于 EMQX Enterprise 构建的一款全托管云原生 MQTT 消息服务。为了满足不同客户的需求,EMQX Cloud 提供了三种版本供客户选择:Serverless 版、专有版和 BYOC 版。 本文将简要介绍这三个版本的核心区别,并通过三个用户故…...

uvc驱动ioctl分析下

uvc驱动ioctl分析下 文章目录 uvc驱动ioctl分析下uvc_ioctl_enum_input枚举输入uvc_query_ctrl__uvc_query_ctrluvc_ioctl_g_input 获取输入uvc_ioctl_s_input 设置输入uvc_query_v4l2_ctrluvc_ioctl_queryctrl查询控制器uvc_ioctl_query_ext_ctrl查询扩展控制器 uvc_ioctl_g_c…...

数据库可视化神器,你在用哪一款呢

唠嗑部分 在我们日常开发中,作为开发者,与数据库是肯定要打交道的,比如MySQL,Oracle、sqlserver… 那么数据库可视化工具,你用什么呢?小白今天将常用地几款工具列一下,各位小伙伴如有喜欢的自…...

CMD与DOS脚本编程【第三章】

预计更新 第一章. 简介和基础命令 1.1 介绍cmd/dos脚本语言的概念和基本语法 1.2 讲解常用的基础命令和参数,如echo、dir、cd等 第二章. 变量和运算符 2.1 讲解变量和常量的定义和使用方法 2.2 介绍不同类型的运算符和运算规则 第三章. 控制流程和条件语句 3.1 介…...

多激光雷达手眼标定

手眼标定方法已经有很多博客进行解析,但是都是针对机器人的手(夹爪)眼睛(相机)进行标定。例如: 标定学习笔记(四)-- 手眼标定详解 手眼标定_全面细致的推导过程 本文主要描述多激光…...

SQL执行过程

1. select 语句执行过程 一条 select 语句的执行过程如上图所示 1、建立连接 连接器会校验你输入的用户名和密码是否正确,如果错误会返回提示,如果正确,连接器会查询当前用户对于的权限。连接器的作用就是校验用户权限 2、查询缓存 MySQL…...

K8S 部署 seata

文章目录 创建 Deployment 文件创建 ConfigMap 文件创建 Service 文件运行访问高可用部署踩坑 官方文档 k8s中volumeMounts.subPath的巧妙用法 创建 Deployment 文件 deploymemt.yaml namespace:指定命名空间image:使用 1.5.2 版本的镜像ports&#xf…...

ClickHouse:(二)数据类型

1.整型 固定长度的整型分为:有符号和无符合整型 有符号整型无符号整型类型范围类型范围Int8 -128 : 127 UInt8 0 : 255 Int16 -32768 : 32767 UInt16 0 : 65535 Int32 -2147483648 : 2147483647 UInt32 0 : 4294967295 Int64 -9223372036854775808 : 9223372036854…...

项目文档(request页面代码逻辑)

项目文档 目录 项目文档 1. 封装请求基地址 代码 2. 添加请求拦截器并设置请求头 作用 代码部分 3. 添加响应拦截器 作用 代码 4. token过期问题处理 5. 无感刷新 作用 代码 6. refresh_token过期处理 解决方式 1. 封装请求基地址 在src目录下 放上一个专门写…...

后端传到前端的JSON数据大写变小写--2023

问题复现:1. 首先我先说一下,我用了lombok,事实证明和这个也有关系 前端这里写的也是按照驼峰命名来写的 控制台打印出来的数据 后台打印出来的数据 解决方法: 1. 重写get/set方法 因为我在实体类上标注了Data注解 重写get/se…...

学习【菜鸟教程】【C++ 类 对象】【C++ 类的静态成员】

链接 1. 教程 可以使用 static 关键字来把类成员定义为静态的。当我们声明类的成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。 静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句,在创建第一个对象时…...

计算机四大件笔记

啊~数据库、操作系统、计算机网络、Linux start 操作系统 并发和并行 并发是同一时间段内发生了多个事情,多任务之间互相抢占资源。 并行是在同一时间点内发生了多个事情,多任务之间不互相抢占资源,只有多CPU的情况下才能并行。 例如&a…...

【vue上传文件——hash】

vue上传文件 要求:只能上传视频,先计算文件的hash值,hash值一样则不需要上传,不一样在执行上传 分析:因为el-upload没有找到合适的属性,本次用的是原生的input的type属性为file上传 代码: html: 通过点击选取文件按钮调用input上传 js 第一步:点击上传文件先效验是否…...

【OpenCV DNN】Flask 视频监控目标检测教程 01

欢迎关注『OpenCV DNN Youcans』系列,持续更新中 【OpenCV DNN】Flask 视频监控目标检测教程 01 【OpenCV DNN】Flask 视频监控目标检测教程 01 1. 面向Python程序的Web框架2. Flask 框架的安装与使用2.1 Flask 安装2.2 Flask 框架例程2.3 绑定IP和端口2.4 Flask路…...

(转载)从0开始学matlab(第10天)—自顶向下的编程思想

在前面的内容中,我们开发了几个完全运转的 MATLAB 程序。但是这些程序都十分简单,包括一系列的 MATLAB 语句,这些语句按照固定的顺序一个接一个的执行。像这样的程序我们称之顺序结构程序。它首先读取输入,然后运算得到所需结果&a…...

mapreduce技术

要实现操作hbase数据表首先要了解它的原理: 1,Hbase原理篇 HBASE就是基于Hadoop的一个开源项目,也是对Google的BigTable的一种实现。 BigTable最浅显来看就是一张很大的表,表的属性可以根据需求去动态增加,但是又没有表与表之间…...

AI智慧安监视频平台EasyCVR视频出现不能播放的情况排查与解决

EasyCVR基于云边端协同,可支持海量视频的轻量化接入与汇聚管理。平台兼容性强、拓展度高,可提供视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、H.265自动转码、平台级联等功能。 有用户反…...

嵌入式学习之Linux驱动(第九期_设备模型_教程更新了)_基于RK3568

驱动视频全新升级,并持续更新~更全,思路更科学,入门更简单。 迅为基于iTOP-RK3568开发板进行讲解,本次更新内容为第九期,主要讲解设备模型,共计29讲。视频选集 0.课程规划 06:35 1.抛砖引玉-设备模型…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络&#xf…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found"​, "n…...

深度学习水论文:mamba+图像增强

🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...