Linux网络原理及编程(8)——第十八节 数据链路层

news2024/11/15 11:02:52

目录

1、MAC地址

2、MAC帧

3、MAC帧协议

4、MTU

5、ARP请求和应答


各位好,博主新建了个公众号《自学编程村》,拉到底部即可看到,有情趣可以关注看看哈哈,关注后还可以加博主wx呦~~~(公众号拉到底部就能看到呦~~)

思考一个问题:真正在网络中跑的是一个一个IP报文吗?

实际也不是。真正在网路中传输的是一个一个的以太网帧。

当然,从IP往下,不同的网络就有不同的标准了。我们接下来介绍的以太网帧,主要以以太网为标准。也是比较有代表性的。

1、MAC地址

 用来识别数据链路层中相连的节点;

 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)

 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)

2、MAC帧

以太网是目前应用比较多的局域网技术。

1、在局域网中,其资源是大家共享的,当一个主机发送报文的同时,局域网中的其他主机也能够收到。所以,当有大量的报文同时在局域网中发送的时候,就会造成局域网的瘫痪。这就造成了需要有局域网的争用问题(就像争互斥锁)。所以我们的链路层在底层是有一个碰撞避免算法的。

2、整个局域网都是一个碰撞域,在发送报文之前需要进行冲突检测;同时在发送的时候要进行冲突避免。

3、局域网中的数据一般是的采用数据碰撞的方式来进行发送。

4、MAC帧的数据也是有可能进行重传的,只不过它的作用只是为了确保书数据为对方所成功接收。

5、为了减少数据碰撞,增加交换机的概念。第一:划分碰撞域;第二:转发数据报文

6、E怎么知道C想要跟它通信呢,或者说E怎么知道在网络中的数据是它自己的呢?

C主机在发送数据的时候,其并不知道要将其发给谁,它的任务就是将这个数据发送发到局域网当中,它的任务就完成了。具体怎么发到目标主机上,是由协议决定的:C在发送的时候,会填src_m地址和dst_m(关于其是如何知道这个目的主机的MAC地址的我们马上说)地址当C发出之后,所有人都会收到这个数据,然后从这个数据当中找到目的MAC地址,看是不是发给的,如果是那就将数据交付,如果不是,就丢弃。

7、数据能从C交付给E,那么其也就可以交给路由器。交给路由器的过程本质上就是交给下一跳的过程。(给路由器的原因是目标主机不在本局域网中)

所以,目的IP给我们以宏观知道,MAC地址给我们以微观导向。

3、MAC帧协议

 

关于这个协议,首先还是需要解决两个问题:实现报头和有效载荷分离以及交付给上层的哪一层协议的问题。

那它是怎么做到这个的呢?

前面两个地址分别是目的MAC地址和源MAC地址;

后面的类型即表示要交付给上层的哪一个协议。

由于MAC帧是一个定长报头,所以只要从头往后读确定的数据就可以实现分离了。(独特定的长度,我们已经学了三种分离的方式了)

4、MTU

这个概念,我们在IP协议中提到过。

MTU相当于发快递时对包裹尺寸的限制. 这个限制是不同的数据链路对应的物理层, 产生的限制.

 以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位;

 最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;

如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation);

不同的数据链路层标准的MTU是不同的;

5、ARP请求和应答

根据我们前面说到的,我想要把我的数据发送到对方主机,那么我必须要知道它的MAC地址。

那怎么知道呢?

可是我只知道 目的主机的IP地址,所以我必须要将我的IP地址转化为MAC地址

这个时候我们就用到了ARP技术。

ARP技术是在数据链路层。

报文解释:

硬件类型如果填1,那就代表着是以太网。

协议类型指要转换的地址类型,0x0800为IP地址;

硬件地址长度对于以太网地址为6字节;

协议地址长度对于和IP地址为4字节;

op字段为1表示ARP请求,op字段为2表示ARP应答

 

当发送出去之后,所有人都拿到了这个协议,然后向上交付给ARP协议。

然后先看op,如果为1,看目的IP地址,如果对上了,那么就进行ARP应答(把自己的IP地址填到里面去)。(填的所有数据元素都已经有了)如果没有对上,就丢弃。

这样,如果有了一次ARP的应答,那么二者之间的IP地址就互相都知道了。此时,就可以进行数据报文的来回交互了。
举个例子:

当A想要将B通信,那么我们的ARP请求该怎么填呢?

可以向下面这样填:

硬件类型:1

协议类型:0x0800

硬件地址长度:6

协议地址长度:4

op:1

发送端以太网地址:MACa

发送端IP:Ipa

目的以太网地址:111111;

目的IP:IPb

好啦,本节的内容就到这里啦~~

原创不易,如果觉得写的不错,就点个赞呗~~~笔芯~~~~

下面是笔者的微信公众号,也欢迎来关注呀~~~

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

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

相关文章

基于java+springmvc+mybatis+jsp+mysql的新冠肺炎疫苗接种管理系统

项目介绍 新冠疫苗接种管理系统,在网站首页可以查看首页,疫苗信息,疫苗资讯 ,个人中心,后台管理,在线客服等内容,并进行详细操作。管理员登录进入系统可以查看首页,个人中心&#x…

vue自定义keepalive组件的问题解析

前一阵来了一个新的需求,要在vue项目中实现一个多开tab页面的功能,本来心想,这不简单嘛就是一个增加按钮重定向吗?(当然如果这么简单我就不写这个文章了)。很快写完,提交测试。测试大哥很快就提…

一份奇奇怪怪的地图设计书

地图设计书 地图设计是通过研究实验制定新编地图的内容、表现形式及其生产工艺程序的工作,是地图制图学各种活动的中心,贯穿整个地图制图过程。本设计选择了福建省龙岩市作为研究区域,并结合相应区域的土地利用类型、水系、道路等数据&#…

儿童剧本杀行业是好生意吗?剧本杀门店管理系统

红楼梦、西游记、水浒传、三国演义是中国四大名著,几乎每个中国人上到70岁老人,下到十岁小学生都知道,同时还有花木兰、包青天、八仙过海等故事也都耳濡目染,小说描述的淋漓尽致,影视剧老戏骨们将每个角色刻画的深入人…

spring-aop源码分析(3)完结_执行流程分析

本文详细介绍Spring AOP的执行阶段流程。 Cglib代理的代理拦截逻辑在DynamicAdvisedInterceptor中,JDK代理的拦截逻辑在JdkDynamicAopProxy中,本文将从这两个类入手分析Spring AOP的执行阶段流程。 DynamicAdvisedInterceptor private static class D…

Modbus数据采集方案

目录 目标 Modbus协议简介 配置界面以及实例 概述 modbus协议应该是工业行业应用最广泛的协议,由于其协议简单、通讯标准、扩展性强的特点,被各个行业大量的应用。作为通讯网关机来说,设计一个便捷易懂的配置方式显得尤其重要。本方案基于…

多模态中的指令控制(InstructPix2Pix,SayCan)

InstructPix2Pix: Learning to Follow Image Editing Instructions 图像的语言指令生成。目的是遵循人工指令去编辑图像,即给定输入图像和一个如何编辑它的文本指令,模型尝试遵循这些指令来编辑图像。 这份论文与现有基于文本的图像编辑工作们最大的不同…

【JVM】方法区与永久代、元空间之间的关系

方法区与永久代、元空间之间的关系 方法区是JVM规范中定义的一块内存区域,用来存储类元数据、方法字节码、即时编译器需要的信息等 永久代是Hotspot虚拟机对JVM规范的实现(1.8之前) 元空间是Hotspot虚拟机对JVM规范的实现(1.8以后),使用本地…

java基于springboot高校学报论文在线投稿系统-计算机毕业设计

项目介绍 在新发展的时代,众多的软件被开发出来,给用户带来了很大的选择余地,而且人们越来越追求更个性的需求。在这种时代背景下,高校只能以工作人员为导向,以稿件的持续创新作为高校最重要的竞争手段。 系统采用了J…

Java AQS

AQS 是什么 AQS 的全称为 AbstractQueuedSynchronizer,翻译过来的意思就是抽象队列同步器,这个类在 java.util.concurrent.locks 包下面Java 中的大部分同步类(Lock、Semaphore、ReentrantLock等) 都是基于 AQS 实现的AQS 是一种提供了原子式管理同步状…

SpringBoot - 整合WebSocket时@ServerEndpoint修饰的类属性注入为null问题

SpringBoot - 整合WebSocket时ServerEndpoint修饰的类属性注入为null问题前言一. 问题复现1.1 原因分析二. 问题解决前言 最近在做一个直播弹幕系统,前期准备先用WebSocket来试试水。我们都知道,使用WebSocket只需要给对应的类加上注解ServerEndpoint即…

Linux之定时任务--crontab命令解析学习

Corntab定时任务学习 一、crond服务 在学习crontab,命令之前,我觉得有必要学习了解一下crond服务,因为要在linux系统下使用crontab命令需要crond的支持。Crond是Linux下要用来周期执行某种任务或者等待处理某些事件的一个守护进程。和Windo…

项目——员工管理系统

开发环境:vmware ubuntu18.04 实现功能:基本功能包括管理者和普通员工用户的登录,管理者拥有操作所有员工信息的最高权限,可以进行增删改 查等操作,普通用户仅拥有查看、修改个人部分信息的权限 具体功能详解&…

python 学习笔记

解决执行python"ImportError: No module named requests"问题 #切换到python的安装目录执行如下命令 D:\Python27>pip install requestsImportError: No module named bs4错误解决方法 运行脚本时提示ImportError: No module named bs4错误,原因&…

[附源码]计算机毕业设计基于vue的软件谷公共信息平台Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Python——有限状态机

有限状态机(Finite-state machine, FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。FSM是一种算法思想,简单而言,有限状态机由一组状态…

【Lilishop商城】No3-5.模块详细设计,商品模块-1(商品分类、品牌管理、规格管理、参数、计量单位、店铺分类)的详细设计

仅涉及后端,全部目录看顶部专栏,代码、文档、接口路径在: 【Lilishop商城】记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客 全篇会结合业务介绍重点设计逻辑,其中重点包括接口类、业务类,具体的结合源代码…

人脸特征点检测入门

基础 人脸特征点可以用来做脸型、眼睛形状、鼻子形状等分析,从而对人脸的特定位置进行修饰加工,实现人脸的特效美颜。人脸识别等算法可以通过对人脸的姿态进行对齐从而提高模型的精度。 68点标注是现今最通用的一种标注方案,早期在1999年的…

Effective C++条款30:透彻了解inlining的里里外外(Understand the ins and outs of inlining)

Effective C条款30:透彻了解inlining的里里外外(Understand the ins and outs of inlining)条款30:透彻了解inlining的里里外外1、inline函数的优缺点2、隐式内联和显式内联2.1 隐式内联2.2 显式内联3、函数模板必须inline么&…

自动驾驶之3D点云聚类算法调研

1. 方法 总共分为4类 基于欧式距离的聚类Supervoxel 聚类深度(Depth) 聚类Scanline Run 聚类 1.1 基于欧氏距离的聚类 思路: 在点云上构造kd-tree, 然后在某个半径阈值(例如0.5m), 则分割为一个实例。 相似算法: RBNN (radially bounded nearest neighbor graph), 2008. …