Linux网络基础-5

news/2024/11/29 16:32:03/

在上一篇博客中我们对网络层的典型协议--IP进行了介绍,那么本篇博客作为网络方面的最后一片博客,我们对网络中最后内容--链路层协议进行讲解。

目录

1.链路层协议

1.1MAC地址

1.1.1类型

1.1.2作用

1.2以太网协议

1.2.1协议格式

1.2.2ARP协议

1.2.3获取指定硬件地址

1.2.4MTU

1.链路层协议

链路层是负责相邻设备之间的数据传输,在网络层中的IP地址描述的是数据从一台主机到另一台主机,是数据收发的起点和终点。但是在数据传输过程中并不是由起点直接传达到终点,这中间过程中需要经历层层转发才可以,链路层便是为这一部分内容服务的。

1.1MAC地址

MAC地址是网卡的物理硬件地址,是网卡出山时所设定的固定地址。它是为上述转发过程中所经过的中间设备进行标识,通过MAC地址,我们可以很好的清楚数据传输过程所经过的中间转发设备。

1.1.1类型

MAC地址的数据类型是:uint8_t mac[6],是一个无符号的48位数字。

1.1.2作用

MAC地址的作用也正是设计它的初衷,即作为相邻设备之间的标识。

1.2以太网协议

1.2.1协议格式

其中,6字节对端&6字节源端MAC地址:用于描述通信相邻的两个硬件设备;2字节协议类型:所封装的报文data所使用的协议类型;4字节位校验和:进行差错校验。

1.2.2ARP协议

ARP协议是介于链路层和网络层之间的协议,既包含了MAC地址也包含了IP地址。

笔者引用《TCP-IP详解》一书中的结构说明,在上图中进行展示。

其中,2字节硬件类型:描述链路层网络协议--以太网;2字节协议类型:要进行地址转换的地址类型;1字节硬件地址长度:存储硬件地址长度;1字节协议地址长度:存储转换使用的协议地址长度; 2字节op:1--标识ARP请求,2--标识ARP应答。

6字节源端MAC地址,4字节源端IP地址,6字节对端MAC地址,4字节对端IP地址。

1.2.3获取指定硬件地址

  1. 当前主机封装一个ARP请求,在请求中填充源端MAC地址和IP地址,并将以太网帧中头中的目标MAC地址填充为:0XFFFFFFFFFFFF -- 广播地址;
  2. 将ARP请求广播给所有相邻设备;
  3. 收到ARP请求的主机,对数据帧进行解析,如果目标IP地址匹配则填充自己的MAC地址和IP地址进行相应,如果不匹配则直接丢弃;
  4. 当前主机收到相应之后,便知道了指定设备的MAC地址;
  5. 当前主机将MAC-IP映射关系缓存起来,并保存一段时间(非永久)。

了解完如何过去指定硬件地址的操作内容之后,我们可以来简单讲解一种网络攻击--ARP欺骗攻击,也叫做局域网攻击。

它的攻击方式便是:恶意主机伪造IP地址不断的给网关设备发送ARP响应,告知网关自己是子网中的某个主机;与此同时,该恶意主机还会给子网中的其他主机不断发送ARP响应,告知其他主机自己是网关设备。

于是这两种角色的设备会被不断得到的ARP响应覆盖掉自己原有的ARP映射表,普通主机认为恶意主机是网关设备,将数据发送给恶意主机;网关设备认为恶意主机是指定设备,将响应发送给恶意主机。这样,该恶意主机便达成了网络攻击的目的--窃取数据。

1.2.4MTU

以太网中的链路层对数据帧长度存在一个限制,其最大值的默认值是1500字节,链路层将这个特性称作MTU,即最大传输单元。

顺便罗列出几种常见的最大传输单元(MTU):

接下来我们来看一看MTU的存在对传输层协议的影响:

对于TCP协议,我们在三次握手建立连接阶段便会协商MSS(根据MTU计算得到的传输最大数据),然后在后续的数据传输过程中,每次从缓冲区中取出合适大小的数据进行头部封装后传输。TCP在传输层会自动将数据进行分段,因此不会在网络层出现数据分片。

对于UDP协议,并不存在协商MSS(无连接),只要传输的数据大小最大小于64k-8就可以传输,但是有可能会因为网络层传输中,因为数据大小大于MTU而导致数据分片。但是,数据分片之后的重组是有可能失败的(分片越多,越容易失败),重组失败便会导致数据重传,传输效率低下。因此,我们在使用UDP进行数据传输过程中,可以在应用层的程序中设计MSS,即在传输时便将数据分割完成,尽量减少数据在网络层的分片。


http://www.ppmy.cn/news/88982.html

相关文章

SolVES模型应用(基于多源环境QGIS\PostgreSQL\ARCGIS\MAXENT\R语言支持下模型应用)

生态系统服务是人类从自然界中获得的直接或间接惠益,可分为供给服务、文化服务、调节服务和支持服务4类,对提升人类福祉具有重大意义,且被视为连接社会与生态系统的桥梁。自从启动千年生态系统评估项目(Millennium Ecosystem Asse…

【09】Nginx之缓存集成

Nginx缓存集成 缓存的概念 缓存就是数据交换的缓冲区(称作:Cache),当用户要获取数据的时候,会先从缓存中去查询获取数据,如果缓存中有就会直接返回给用户,如果缓存中没有,则会发请求从服务器重新查询数据,将数据返回给…

使用压缩包安装jdk多版本并能灵活切换

使用压缩包安装jdk多版本并能领过切换 1.下载2.解压包到指定位置3.使用pdate-alternatives 进行版本切换管理3.1. jdk173.2. jdk1.8 3.切换版本4.解决JAVA_HOME环境变量识别的问题 1.下载 官网的下载地址: 下载地址: jdk17: jdk1.8在当前页面的下面: …

数据结构-关键路径-理论

1.AOE-网 与AOV-网相对应的是AOE-网(Activity On Netword),即以边表示活动的网。AOE-网是带权的有向无环图,其中,定点表示时间,弧表示活动,权表示活动持续的时间。通常AOE-网可用来估算工程的完…

Java设计模式七大原则-依赖倒转原则

✨作者:猫十二懿 ❤️‍🔥账号:CSDN 、掘金 、个人博客 、Github 🎉公众号:猫十二懿 依赖倒转原则 1、依赖倒转原则 Java中的依赖倒转原则(Dependency Inversion Principle,DIP)是…

springboot+vue之java学习平台(java项目源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的java学习平台。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风歌&a…

The Open Graph protocol(开放图谱协议)的介绍及应用

介绍 Open Graph 协议使任何网页都可以成为社交中的丰富对象。例如,用于 Facebook 以允许任何网页具有与 Facebook 上任何其他对象相同的功能。 以下是把链接分享到钉钉,钉钉识别后显示的效果: 基本元数据 要将网页变成图形对象&#xff0…

openGauss Developer Day 2023 | 邀您参加海量数据分论坛

尊敬的数据库开发者 : 海量数据 已为您备好一封通往数智时代的邀请函,请您于 5月26日 前往北京昆泰嘉瑞文化中心,赶赴 openGauss Developer Day 2023 的盛大约定。 本次专场活动中,海量数据将会轮番为您展示最核心的技术…