IP协议+以太网协议
在计算机网络体系结构的五层协议中,第三层就是负责建立网络连接,同时为上层提供服务的一层,网络层协议主要负责两件事:即地址管理和路由选择,下面就网络层的重点协议做简单介绍~~
IP协议
网际协议IP是TCP/IP体系中两个最重要的协议之一,简单来说就是负责使互连起来的许多计算机网络进行通信的协议。
计算机网络通过路由器进行互连,参加互连的计算机网络势必使用相同的网际协议IP,因此我们将互连以后的计算机网络看做是一种虚拟互连网络(逻辑互连网络),即互连起来的各种物理网络的异构性本来是客观存在的,但若我们使用了IP协议就可以将这些各异的网络在网络层上看做是一个统一的网络;
那么在这样一个虚拟网络上,我们如何进行寻址,进一步进行数据传输呢?
分类的IP地址
进行寻址,势必就要进行编址,我们给互联网上的每一台主机的每一个结口分配一个32位的标识符,就得到了用来寻址的IP地址。最早的IP地址的编址方法是对IP地址进行分类,大致分类方法如下:

最初的IP地址分为上面5类,使用最为广泛的是A、B、C三类;
IP地址都是32位的二进制代码,为了提高可读性,我们使用点分十进制记法来表示(每8位为一段,插入一个空格)
IP地址在整个互联网范围内是唯一的~
IP地址与硬件地址
前面提到IP地址实际是一种虚拟的地址,它与硬件地址又有什么区别呢?
硬件地址,即物理地址,是数据链路层和物理层使用的地址;
IP地址是网络层及以上各层使用的地址,是一种逻辑地址;
在发送数据时,数据从高层逐渐被下到低层,再通过通信链路进行传输。使用IP地址的IP数据报被交给数据链路层,就会被封装成MAC帧;因此IP地址是被放在IP数据报的首部的,而硬件地址则是被放在MAC帧的首部;
ARP地址解析协议
地址解析,即通过主机的IP地址来解析得到其对应的硬件地址;由于IP地址与硬件地址的数据格式不同(IP地址32位,硬件地址48位)两者之间并不存在映射的关系,为了数据的顺利传输,就需要通过IP地址来得到其对应的硬件地址。因此,ARP协议的用途就是:从网络层使用的IP地址,解析出在数据链路层使用的硬件地址;
下面是ARP协议工作流程的简单介绍:
对于每一台主机,都会内置有一个ARP高速缓存,其中存放了本局域网上各主机的IP地址对应的硬件地址(相当于一个映射表)。对于缓存内有的IP地址,主机可以直接通过其内部的映射表得到对应的硬件地址,若是其缓存中查不到某个IP地址的映射信息,ARP进程就会通过发送ARP请求分组来寻求其对应的硬件地址;
ARP进程是主机A在没有找到需要的映射信息时自动运行的一个进程,该进程会在本局域网上通过广播的方式去发送一个ARP请求分组(大致内容为:本主机A的IP地址为x.x.x.x,硬件地址为x-x-x-x-x-x,需要知道IP地址为x.x.x.x的主机的硬件地址),在本局域网上的所有主机的ARP进程都会都到该请求分组,若主机B的IP地址与请求分组中寻求的信息对应,就会收下这个ARP请求分组,同时向主机A发送ARP响应分组,这个ARP响应分组中就带有自己的硬件地址,待主机A收到这个响应分组,就将此条映射信息存入自己的缓存中去;若是寻求本局域网以外的IP地址的硬件地址,就会通过路由器来进行转发,这个过程需要通过转发表来进行~
使用ARP高速缓存可以有效避免每次通信都需要发送请求分组从而增加网络通信量的问题,同时ARP对保存在高速缓存中的每一个映射信息都会设置一定的生存时间,超出该时间就从缓存中删掉该映射信息,来避免由于主机B更换硬件地址而导致数据传输错误的问题~
IP数据报的格式
如下图:

一个IP数据报由首部和数据两部分组成。首部的前一部分固定20字节,下面是首部各字段的含义:
版本:指IP协议的版本,目前广泛使用IPV4版本;
首部长度:占4位,首部长度字段所表示数的单位是32位字(一个32位字长是4字节),首部长度字段的最小值是5(首部的固定长度是20字节);
总长度:首部和数据长度之和;
标识:数据报被分片时,相同的标识字段的值视为同一个数据报;
标志:最低位为MF,MF=1表示后面还有分片,MF=0表示后面没有分片;中间的一位为DF,DF=0时表示允许分片;
片偏移:表示相对于用户数据字段的起点,该片从何处开始;
生存时间:TTL,数据报每被路由器转发一次,该值减一,TTL为零,该数据报被丢弃;
协议:表示此数据报携带的数据是使用何种协议;
IP层分组转发
对于不在同一局域网上的数据传输,需要使用路由器来进行转发分组,具体的转发流程如下:
- 通过数据报的首部得到目的主机的IP地址,通过ARP协议得到目的网络地址;
- 若其网络地址是与该路由器直接相连的某个网络地址,进行直接交付;
- 不满足第2条,若路由表中有目的地址的特定主机路由(对特定的目的主机指明一个路由),将数据报交给路由表中所指明的路由器;
- 不满足2,3条,将数据报传送给路由表中所指明的默认路由器;
- 报告转发分组出错;
划分子网
经过时代的不断发展,两级IP地址的弊端逐渐显现,为了更好的进行网络通信,将两级IP地址发展为三级IP地址;
通过划分子网的方式来达到三级IP地址的目的,即从网络的主机号借用若干位作为子网号,记为IP地址::={<网络号>,<子网号>,<主机号>};
子网掩码和IP地址进行“与”操作就可以得到其对应的网络地址~
CIDR(无分类编址)
前面的编址方法都不可避免IP地址被分配完毕的问题,因此又引入了无分类编址,无分类即消除了传统的ABC类地址及划分子网的概念,而是将32位的IP地址划分为前后2个部分 IP地址 ::={<网络前缀>,<主机号>};同时在IP地址后面加上斜线“/”,来表示网络前缀所占的位数(斜线记法),斜线后面的数字就是地址掩码中1的个数;
网络地址转换NAT
NAT是为了解决专用网内部的主机与互联网上的主机进行通信的问题;这种方法需要在专用网连接到互联网的路由器上安装NAT软件,装有NAT软件的路由器称为NAT路由器,它至少有一个有效的外部全球IP地址,具体的转换过程就需要这个全球IP地址;
具体的工作流程如下:
假设专用网内部的主机A需要向互联网上的主机B发送数据,当NAT路由器收到主机A的数据报时,就将该数据报的源IP地址转换为新的源IP地址(即NAT路由器的全球IP地址),再转发出去。当互联网上的主机B收到该数据报时,就仍以这个全球IP地址为目的地址发送应答数据,待应答数据到达NAT路由器时,再由该路由器使用NAT地址转换表对应答数据的目的地址进行转换,如此使数据顺利到达主机A;
当然,解决IP地址不够用的问题,最优的办法就是使用IPV6,今天,IPV6的使用也逐渐广泛~
数据链路层是计算机网络体系结构中的第2层,数据链路层的三个基本问题是:封装成帧(在一段数据的前后分别添加首部和尾部),透明传输、差错检测(循环冗余检验CRC);
以太网的MAC层
在局域网中,硬件地址又称为物理地址或MAC地址,MAC地址是用在MAC帧中,下面是MAC帧的格式:

MAC帧的目的地址和源地址都是物理地址,而非IP地址,当数据字段的长度小于46字节时,MAC子层就会在数据字段的后面加入一个整数字节的填充字段,来保证以太网的MAC帧长不小于64字节;
FCS即栈检验序列;
数据字段的最大值为1500,即以太网的最大传输单元(MTU),用来通知对方所能接收数据服务单元的最大尺寸,若一个IP数据报的数据帧的长度大于MTU,将会对该数据报进行分片;
over!
相关文章:
IP协议+以太网协议
在计算机网络体系结构的五层协议中,第三层就是负责建立网络连接,同时为上层提供服务的一层,网络层协议主要负责两件事:即地址管理和路由选择,下面就网络层的重点协议做简单介绍~~ IP协议 网际协议IP是TCP/IP体系中两…...
可视化组件届的仙女‖蝴蝶结图、玫瑰环图、小提琴图
在上一篇内容中为大家介绍了几个堪称可视化组件届吴彦祖的高级可视化图表。既然帅哥有了,怎么能少得了美女呢?今天就为大家介绍几个可视化组件届的“美女姐姐”,说一句是组件届的刘亦菲不为过。蝴蝶结图蝴蝶结图因其形似蝴蝶结而得名…...
人的高级认知:位置感
你知道吗?人有个高级认知:位置感 位置感是啥?咋提高位置感? 趣讲大白话:知道自己几斤几两 【趣讲信息科技99期】 ******************************* 位置感 就是对自己所处环境和自身存在的领悟 属于人生智慧 来源于阅历…...
MATLAB——信号的采样与恢复
**题目:**已知一个连续时间信号 其中:f01HZ,取最高有限带宽频率fm5f0。分别显示原连续时间信号波形和 3种情况下抽样信号的波形。并画出它们的幅频特性曲线,并对采样后的信号进行恢复。 step1.绘制出采样信号 这部分相对简单…...
Docker Nginx 反向代理
最近在系统性梳理网关的知识,其中网关的的功能有一个是代理,正好咱们常用的Nginx也具备次功能,今天正好使用Nginx实现一下反向代理,与后面网关的代理做一个对比,因为我使用的docker安装的Nginx,与直接部署N…...
手把手教你实现书上的队列,进来试试?
一.队列的基本概念队列的定义队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出(First In First Out)的线性表,简称FIFO。允许插入的一端称为队尾,允…...
【springboot】springboot介绍
学习资料 SpringBoot 语雀 (yuque.com)【尚硅谷】SpringBoot2零基础入门教程(spring boot2干货满满)_哔哩哔哩_bilibiliSpringBoot2核心技术与响应式编程: SpringBoot2核心技术与响应式编程 (gitee.com) Spring 和Springboot 1、Spring能做什么 1.1…...
PMP项目管理项目整合管理
目录1 项目整合管理概述2 制定项目章程3 制定项目管理计划4 指导与管理项目工作5 管理项目知识6 监控项目工作7 实施整体变更控制8 结束项目或阶段1 项目整合管理概述 项目整合管理包括对隶属于项目管理过程组的各种过程和项目管理活动进行识别、定义、组合、统一和协调的各个…...
ADS中导入SPICE模型
这里写目录标题在官网中下载SPICE模型ADS中导入SPICE模型在官网中下载SPICE模型 英飞凌官网 ADS中导入SPICE模型 点击option,设置导入选项 然后点击ok 如果destination选择当前的workspace,那么导入完成之后如下: (推荐使用…...
C++:异常
在学习异常之前,来简单总结一下传统的处理错误的方式: 1. 终止程序,如assert,缺陷:用户难以接受。如发生内存错误,除0错误时就会终止程序。 2. 返回错误码,缺陷:需要程序员自己去查找…...
3.初识Vue
目录 1 vue 浏览器调试工具 1.1 安装 1.2 配置 2 数据驱动视图与双向数据绑定 3 简单使用 3.1 下载 3.2 将信息渲染到DOM上 4 使用vue浏览器调试工具 5 vue指令 1 vue 浏览器调试工具 chrome可能是我浏览器的原因,装上用不了,我们使…...
【C语言复习】程序的编译与链接
程序的编译与链接写在前面程序的编译与链接编译的过程程序编译环境程序执行过程编译链接的过程预处理预处理符号#define条件编译写在前面 程序的编译与链接是C语言中非常重要的一节。关键点在于详解C语言的程序编译和链接、宏的定义和与函数的区别、条件编译等知识。 程序的编…...
Golang sql 事务如何进行分层
在写代码过程中遇到了需要使用gorm执行sql事务的情况,研究了一下各位大佬的实现方案,结合了自身遇到的问题,特此记录。 代码架构介绍 . ├── apis ├── config ├── internal │ ├── constant │ ├── controller │ ├──…...
linux系统openssh升级
linux系统openssh升级 说明 整个过程不需要卸载原先的openssl包和openssh的rpm包。本文的环境都是系统自带的openssh,没有经历过手动编译安装方式。如果之前有手动编译安装过openssh,请参照本文自行测试是否能成功。 如果严格参照本文操作,保…...
力扣-求关注者的数量
大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目:1729. 求关注者的数量二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.正确…...
近红外荧光染料修饰氨基IR 825 NH2,IR 825-Amine,IR-825 NH2
IR 825 NH2,IR 825-NH2,IR825 Amine,IR825-Amine,新吲哚菁绿-氨基,荧光染料修饰氨基产品规格:1.CAS号:N/A2.包装规格:10mg,25mg,50mg,包装灵活&am…...
Android Crash和ANR监控
文章目录一、Crash1.1 概念1.2 类型二、ANR2.1 概念2.2 类型2.2.1 KeyDispatchTimeout(常见)2.2.2 BroadcastTimeout2.2.3 ServiceTimeout2.2.4 ContentProviderTimeout三、测试中如何关注3.1 Crash测试关注方法3.2 ANR测试关注方法四、如何记录与处理4.…...
【02 赖世雄英语语法:复句的语法】
复句的语法复句:把单句 连在一起(标点符号,连词,关系词)1. 连接符号1.1 破折号 — :补充说明,同位语1.2 冒号 : (同位语)1.3 分号 ; ( , 连词)&am…...
北斗导航 | 多参考一致性监测算法(MRCC)(附伪码)—— B值计算
===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== MRCC 用于接收机失效检查与排除。在进行 MRCC 之前,先判断 4 台接收机…...
数字孪生与 UWB 人员定位:双剑合璧的智能物联新时代
人员定位是指利用各种定位技术对人员在特定场所的位置进行准确定位的技术。人员定位技术主要应用于需要实时监控、管理和保障人员安全的场所,如大型厂区、仓库、医院、学校、商场等。人员定位技术的应用范围非常广泛,例如:-在工厂生产线上&am…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
