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层分组转发

对于不在同一局域网上的数据传输,需要使用路由器来进行转发分组,具体的转发流程如下:

  1. 通过数据报的首部得到目的主机的IP地址,通过ARP协议得到目的网络地址;
  2. 若其网络地址是与该路由器直接相连的某个网络地址,进行直接交付;
  3. 不满足第2条,若路由表中有目的地址的特定主机路由(对特定的目的主机指明一个路由),将数据报交给路由表中所指明的路由器;
  4. 不满足2,3条,将数据报传送给路由表中所指明的默认路由器;
  5. 报告转发分组出错;

划分子网

经过时代的不断发展,两级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!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RecyclerView流程学习

RecyclerView流程学习模块划分绘制流程onMeasuremLayout为nullmLayout开启自动测量未开启自动测量onLayoutonDrawonLayoutChildren缓存预加载滚动和fling模块划分 RecyclerView中根据其功能可以分为以下几个模块&#xff1a; Recycler mRecycler // 缓存管理者&#xff0c;fi…

yolov5的基本配置

yolov5的基本配置train.pydata.yaml数据集标签文件格式:总结train.py def parse_opt(knownFalse):parser argparse.ArgumentParser()parser.add_argument(--weights, typestr, defaultROOT / yolov5s.pt, helpinitial weights path)parser.add_argument(--cfg, typestr, defau…

uniCloud在线升级APP配置教程

app在线升级背景实现思路流程流程背景 因用户需要添加手机h5页面来进数据操作实现思路流程 实现流程图流程 相关文档&#xff1a;帮助文档 https://uniapp.dcloud.net.cn/uniCloud/cf-functions.html 注册服务空间 https://unicloud.dcloud.net.cn/pages/login/login uni升级…

基于Yolv5s的口罩检测

1.Yolov5算法原理和网络结构 YOLOv5按照网络深度和网络宽度的大小&#xff0c;可以分为YO-LOv5s、YOLOv5m、YOLOv5l、YOLOv5x。本文使用YOLOv5s&#xff0c;它的网络结构最为小巧&#xff0c;同时图像推理速度最快达0.007s。YO-LOv5的网络结构主要由四部分组成&#xff0c;分别…

三天吃透MySQL八股文(2023最新整理)

本文已经收录到Github仓库&#xff0c;该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点&#xff0c;欢迎star~ Github地址&#xff1a;https://github.com/…

博客系统(界面设计)

✏️作者&#xff1a;银河罐头 &#x1f4cb;系列专栏&#xff1a;JavaEE &#x1f332;“种一棵树最好的时间是十年前&#xff0c;其次是现在” 目录实现博客列表页预期效果导航栏页面主体左右布局左侧区域右侧区域完整代码实现博客详情页预期效果导航栏 左侧右侧完整代码实现…

全国程序员薪酬大曝光!看完我酸了····

2023年&#xff0c;随着互联网产业的蓬勃发展&#xff0c;程序员作为一个自带“高薪多金”标签的热门群体&#xff0c;被越来越多的人所关注。在过去充满未知的一年中&#xff0c;他们的职场现状发生了一定的改变。那么&#xff0c;程序员岗位的整体薪资水平、婚恋现状、职业方…

认识TomcatMavenServlet第一个Servlet程序

文章目录一、什么是Tomcat、什么是Servlet二、Tomcat的下载与使用关于下载启动欢迎页面查看可能出现的问题博客系统静态页面的部署三、什么是Maven四、第一个servlet程序1.创建Maven项目2.引入依赖3.创建目录结构4.编写程序5.打包程序6.部署程序7.验证小结五、servlet程序简化版…

学习 Python 之 Pygame 开发魂斗罗(四)

学习 Python 之 Pygame 开发魂斗罗&#xff08;四&#xff09;继续编写魂斗罗1. 创建子弹类2. 根据玩家方向和状态设置子弹发射的位置(1). 站立向右发射子弹(2). 站立向左发射子弹(3). 站立朝上发射子弹(4). 蹲下发射子弹(5). 向斜方发射子弹(6). 奔跑时发射子弹(7). 跳跃时发射…

图片的美白与美化

博主简介 博主是一名大二学生&#xff0c;主攻人工智能研究。感谢让我们在CSDN相遇&#xff0c;博主致力于在这里分享关于人工智能&#xff0c;c&#xff0c;Python&#xff0c;爬虫等方面知识的分享。 如果有需要的小伙伴可以关注博主&#xff0c;博主会继续更新的&#xff0c…

Python雪花代码

前言 用python画个雪花玩玩&#xff0c;源码在文末公众号哈。 雪花类 class Snow(): #雪花类 def __init__(self): self.r 6 #雪花的半径 self.x ra.randint(-1000,1000) #雪花的横坐标 self.y ra.randint(-500,5…

读书笔记——《富爸爸穷爸爸》

《富爸爸穷爸爸》&#xff0c;以前不屑读这种书。这种书就是那种走进书店放在门口展销位的成功学著作&#xff0c;一眼看上去没什么实在的内容&#xff0c;看上去很不靠谱&#xff0c;感觉就是骗一些社会底层又做着暴富梦的人来买的&#xff0c;但是由于自身原因或环境局限根本…

MySQL基本查询

文章目录表的增删查改Create&#xff08;创建&#xff09;单行数据 全列插入多行数据 指定列插入插入否则更新替换Retrieve&#xff08;读取&#xff09;SELECT列全列查询指定列查询查询字段为表达式查询结果指定别名结果去重WHERE 条件基本比较BETWEEN AND 条件连接OR 条件连…

【面试题】Python软件工程师能力评估试题(一)

文章目录前言应试者需知&#xff08;一&#xff09;Python 语言基础能力评估1、理解问题并完成代码&#xff1a;2、阅读理解代码&#xff0c;并在空白处补充完整代码&#xff1a;3、编写一个装饰器&#xff1a;exposer4、阅读代码并在空白处补充完整代码&#xff1a;5、自行用P…

嵌入式 串口通信

目录 1、通信的基本概念 1.1 串行通信 1.2 并行通信 2、串行通信的特点 2.1 单工 2.2 半双工 2.3 全双工 3、串口在STM32的引脚 4、STM32的串口的接线 4.1 STM32的串口1和电脑通信的接线方式 4.2 单片机和具备串口的设备连接图 5、串口通信协议 6、串口通信…

linux进程管理

进程管理 进程是启动的可执行程序的一个指令 1、进程简介 &#xff08;1&#xff09;进程的组成部分 已分配内存的地址空间安全属性&#xff0c;包括所有权凭据和特权程序代码的一个或多个执行线程进程状态 &#xff08;2&#xff09;程序和进程的区别 程序是一个静态的二进制…

第十四届蓝桥杯第三期模拟赛 C/C++ B组 原题与详解

文章目录 一、填空题 1、1 找最小全字母十六进制数 1、1、1 题目描述 1、1、2 题解关键思路与解答 1、2 给列命名 1、2、1 题目描述 1、2、2 题解关键思路与解答 1、3 日期相等 1、3、1 题目描述 1、3、2 题解关键思路与解答 1、4 乘积方案数 1、4、1 题目描述 1、4、2 题解关…

28岁小公司程序员,无车无房不敢结婚,要不要转行?

大家好&#xff0c;这里是程序员晚枫&#xff0c;又来分享程序员的职场故事了~ 今天分享的这位朋友叫小青&#xff0c;我认识他2年多了。以前从事的是土木行业&#xff0c;2年前找我咨询转行程序员的学习路线和职业规划后&#xff0c;通过自学加入了一家创业公司&#xff0c;成…

分享几个常用的运维 shell 脚本

今天咸鱼给大家分享几个不错的 Linux 运维脚本&#xff0c;这些脚本中大量使用了 Linux 的文本三剑客&#xff1a; awkgrepsed 建议大家这三个工具都要了解并最好能够较为熟练的使用 根据 PID 显示进程所有信息 根据用户输入的PID&#xff0c;过滤出该PID所有的信息 #! /b…

第十四届蓝桥杯三月真题刷题训练——第 11 天

目录 第 1 题&#xff1a;卡片 题目描述 运行限制 第 2 题&#xff1a;路径_dpgcd 运行限制 第 3 题&#xff1a;字符统计 问题描述 输入格式 输出格式 样例输入 样例输出 评测用例规模与约定 运行限制 第 4 题&#xff1a;费用报销 第 1 题&#xff1a;卡片 题…