【网络】数据链路层

news2024/9/21 2:34:15

目录

一、以太网

二、以太网帧格式

三、 MTU

1、MTU概念

2、 MTU对IP协议的影响

3、MTU对UDP协议的影响

4、 MTU对于TCP协议的影响

四、MAC地址

五、 ARP协议

1、ARP协议的作用

2、ARP协议的工作流程

3、ARP数据报的格式

4、中间人


 数据链路层解决的,是在同一个子网内,如何发送数据的问题。

 跨网络的本质,就是在很多子网内进行路由和转发。

一、以太网

  •  "以太网" 不是一种具体的网络,而是一种技术标准。既包含了数据链路层的内容,也包含了一些物理层的内容。例如:规定了网络拓扑结构,访问控制方式,传输速率等。
  •  例如以太网中的网线必须使用双绞线。传输速率有10M,100M,1000M等。
  •  以太网是当前应用最广泛的局域网技术。和以太网并列的还有令牌环网,无线LAN等。

二、以太网帧格式

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

 以太网中,任何时刻,只能有一台主机给另一台主机发送数据帧,否则可能会发生数据碰撞的问题。因此局域网又称为碰撞域。

三、 MTU

1、MTU概念

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

  •  以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位。
  •  最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU。
  •  如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation)。
  •  不同的数据链路层标准的MTU是不同的。
  •  设置MTU是因为局域网内同一时刻只允许一台主机发送消息,否则可能会导致数据碰撞,如果一个数据帧过长,则会导致碰撞发生的几率,且发生碰撞,整个数据帧都要重传。

2、 MTU对IP协议的影响

由于数据链路层MTU的限制,对于较大的IP数据包要进行分包。

  • 将较大的IP包分成多个小包,并给每个小包打上标签。
  • 每个小包IP协议头的 16位标识(id) 都是相同的。
  • 每个小包的IP协议头的3位标志字段中,第2位置为0,表示允许分片,第3位来表示结束标记(当前是否是最后一个小包,是的话置为0,否则置为1)。
  • 到达对端时再将这些小包,会按顺序重组,拼装到一起返回给传输层。
  • 一旦这些小包中任意一个小包丢失,接收端的重组就会失败。但是IP层不会负责重新传输数据。

3、MTU对UDP协议的影响

  • 一旦UDP携带的数据超过1472(1500 - 20(IP首部) - 8(UDP首部)),那么就会在网络层分成多个IP数据报。
  • 这多个IP数据报有任意一个丢失,都会引起接收端网络层重组失败。那么这就意味着,如果UDP数据报在网络层被分片,整个数据被丢失的概率就大大增加了。

4、 MTU对于TCP协议的影响

  • TCP的一个数据报也不能无限大,还是受制于MTU。TCP的单个数据报的最大消息长度,称为MSS(Max Segment Size)。
  • TCP在建立连接的过程中,通信双方会进行MSS协商。
  • 最理想的情况下,MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的MTU)。
  • 双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值。
  • 然后双方得知对方的MSS值之后,选择较小的作为最终MSS。
  • MSS的值就是在TCP首部的40字节变长选项中(kind=2)。

四、MAC地址

  •  MAC地址用来识别数据链路层中相连的节点。
  •  长度为48位,即6个字节。一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
  •  在网卡出厂时就确定了,不能修改。mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址,可能会冲突。也有些网卡支持用户配置mac地址)

 主机A向主机D发送数据时,会把报文报头中的目的MAC地址设置为D的MAC地址。实际上A的数据报发出后,该局域网中的所有主机都能收到该数据报,每一台主机都会把数据报的报头分离出来,并把目的MAC地址与自己做对比,如果不同则直接丢弃该报文,相同则把有效载荷交给上层。

 网卡可以设置为混杂模式,即不对报文的目标MAC地址进行认证,直接把有效载荷向上交付。这也是大部分局域网抓包软件的原理。

 因为局域网中可能会出现数据碰撞的问题,因此为了解决这个问题,首先要先发现问题。主机A在发送完数据后,也会自己接收一份自己刚刚发送的数据,并进行报文拆分后检查校验码与自己之前发送的是否相同,如果相同,则没有发生碰撞,如果不同,就等一会再发一次。这个等待的时间是随机的,局域网中每个主机不同。这种网络资源可以类比到系统中的临界资源。

 局域网中主机数量越多,发生碰撞的概率越大。为了降低发生碰撞的概率,可以在局域网中增加交换机来划分碰撞域,把碰撞域划分成几个区域,一个区域内的数据帧不会被发送到其他区域。

对比理解MAC地址和IP地址:

  • IP地址描述的是路途总体的 起点 和 终点。
  • MAC地址描述的是路途上的每一个区间的起点和终点。

 把数据从主机A发送到主机B,需要知道对方的MAC地址,因此就需要根据对方的IP地址转换成MAC地址。这需要用到ARP协议。 

五、 ARP协议

ARP不是一个单纯的数据链路层的协议,而是一个介于数据链路层和网络层之间的协议。

1、ARP协议的作用

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

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

2、ARP协议的工作流程

  •  源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播)。
  •  目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中。
  •  每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址。这样做是因为一个局域网内IP地址是公有的,有可能MAC1对应的设备退出后,MAC2设备用使用了同一个IP地址,导致数据发送不了。

3、ARP数据报的格式

  •  注意到源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的。
  •  硬件类型指链路层网络类型,1为以太网。
  •  协议类型指要转换的地址类型,0x0800为IP地址。
  •  硬件地址长度对于以太网地址为6字节。
  •  协议地址长度对于和IP地址为4字节。
  •  op字段为1表示ARP请求,op字段为2表示ARP应答。

任何主机收到ARP,先看op,确认是请求还是应答。

4、中间人

 因为所有主机收到APR后都会直接查根据应答看op字段,判断是请求还是应答,如果是应答,就会根据应答在本主机内构建IP地址与MAC地址的映射关系。这样一来就有可能有一个中间人主机M向主机A发送ARP应答,把路由器的IP与自己的MAC地址放到一起发给主机A,这样主机A就会误以为路由器的IP地址对应的MAC地址是M的MAC地址,从而以后本该发给路由器的数据都发给主机M了。同样的操作再对路由器做一次,这样路由器发给主机A的数据都会发送给主机M。这就叫做ARP欺骗。

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

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

相关文章

mysql使用SUBSTRING_INDEX拆分字符串,获取省、市、县和详细现住址

mysql使用SUBSTRING_INDEX拆分字符串,获取省、市、县和详细现住址 一、如何把"江西-上饶市-广丰县-大南镇古村村张家82号"拆分为省、市、县和详细现住址二、mysql的解决办法 一、如何把"江西-上饶市-广丰县-大南镇古村村张家82号"拆分为省、市、…

基于 Redux + TypeScript 实现强类型检查和对 Json 的数据清理

基于 Redux TypeScript 实现强类型检查和对 Json 的数据清理 突然像是打通了任督二脉一样就用了 generics 搞定了之前一直用 any 实现的类型…… 关于 Redux 的部分,这里不多赘述,基本的实现都在这里:Redux Toolkit 调用 API 的四种方式 和…

路桥隧施工管理平台(BIM+实景+GIS)

引言 中科图新公路工程BIMGIS可视化项目管理平台是一种高效的项目管理工具,通过将BIM技术与3DGIS技术融合,实现了宏观地理信息与微观工程模型的集成显示。 该平台为项目管理提供了直观、准确的三维工程虚拟环境,对主要三维空间对象&#xff…

【Java】springboot框架 粮油质量溯源MES生产加工管理系统源码

粮油质量溯源MES生产加工管理系统源码,实现一物一码,全程追溯,正向追踪,逆向溯源。技术架构:spring bootmybatiseasyuimysql 。 粮油生产质量追溯系统实现种植主体、种植基地、生产计划、压榨、精炼、包装、销售、物料…

智能物流千人俱乐部---正式开启!

经过半年的筹备,【研习社智能物流千人俱乐部】今天起正式对外开放。 会员可以直接互相对接联系。 目前已经有100多家各行业代表(用户、甲方)加入了千人俱乐部。 行业精英主要来自供应链管理、食品、金融供应链、铁路、精密制造、商超电商、电…

实战:k8s里通过argoCD部署jenkins-2023.7.24(测试成功)

实战:k8s里通过argoCD部署jenkins-2023.7.24(测试成功) 目录 实验环境 操作系统: CentOS8 Linux (我本次用centos7.6) 内存资源:32GB (自己nuc机器32G内存) 实验软件版本: 工具名…

MySQL 与MongoDB区别

一、什么是MongoDB呢 ? MongoDB 是由C语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 将数据存储为一…

【高危】Apache NiFi 远程资源检索功能存在命令注入漏洞

漏洞描述 Apache NiFi 是一个开源的数据流处理和自动化工具。 Apache NiFi 1.23.0之前版本中包含使用 HTTP URL 进行远程资源检索的 Processors 和 Controller Services,但是未限制普通身份用户配置此功能。经过身份验证的攻击者可配置恶意的外部资源引用地址&…

现场直击!飞凌嵌入式亮相第13届配电技术应用论坛

2023年8月3日,第十三届配电技术应用论坛在杭州开幕,飞凌嵌入式携多款重量级产品及热门方案亮相本届论坛,展位号A49。 飞凌嵌入式作为专注嵌入式核心控制系统研发、设计和生产的高新技术企业,与来自全国各地的行业伙伴共同分享市场…

打破思维定势,头脑风暴必备的3个模板!

在日常工作和生活中,我们常常陷入思维定势,无法找到新的解决方案或创意。而头脑风暴的好处在于它能够打破这种思维定势,激活我们的创造力和想象力,找到新的思路和解决问题的方法。 借由多人参与的头脑风暴,我们可以集思…

[IDEA]使用idea比较两个jar包的差异

除了一些小工具外,idea自带了jar包比较的功能。 把需要比对的jar包放到任意目录下,然后选中两个需要比较的jar包,右键,选择Compare Archives,然后就可以比较了。 这次疏忽了,每次打包前需要commit界面看一下…

数制与码制

用0和1可以组成二进制数表示是数量的大小,也可以表示对立的两种逻辑状态。数字系统中常用二进制数来表示数值。 在微处理器、计算机和数据通信中,采用十六进制。任意一种格式的数可以在十六、二和十进制之间相互转换。 二进制数有加、减、乘、除四种运算…

常用SQL语句总结

SQL语句 文章目录 SQL语句1 SQL语句简介2 DQL(数据查询语句)3 DML(数据操纵语句)4 DDL(数据定义语句)5 DCL(数据控制语句)6 TCL(事务控制语句) 1 SQL语句简介…

【数据结构】二叉树 链式结构的相关问题

本篇文章来详细介绍一下二叉树链式结构经常使用的相关函数,以及相关的的OJ题。 目录 1.前置说明 2.二叉树的遍历 2.1 前序、中序以及后序遍历 2.2 层次遍历 3.节点个数相关函数实现 3.1 二叉树节点个数 3.2 二叉树叶子节点个数 3.3 二叉树第k层节点个数 3…

Crack:CAD Exchanger SDK 3.20 Web Toolkit 应用

在CAD Exchanger SDK 版本 3.20.0中,我们在 Web Toolkit 中包含了绘图、BIM 和 MCAD 查看器的示例,以展示如何使用每个工具可视化数据。这些查看器具有显示不同类型数据的特定功能,允许用户根据自己的需求单独使用它们。我们将继续增强每个查…

HTTP隧道识别与防御:机器学习的解决方案

随着互联网的快速发展,HTTP代理爬虫已成为数据采集的重要工具。然而,随之而来的是恶意爬虫对网络安全和数据隐私的威胁。为了更好地保护网络环境和用户数据,我们进行了基于机器学习的HTTP代理爬虫识别与防御的研究。以增强对HTTP代理爬虫的识…

【云原生】详细学习Docker-Swarm部署搭建和基本使用

个人主页:征服bug-CSDN博客 kubernetes专栏:云原生_征服bug的博客-CSDN博客 目录 Docker-Swarm编排 1.概述 2.docker swarm优点 3.节点类型 4.服务和任务 5.路由网格 6.实践Docker swarm 1.概述 Docker Swarm 是 Docker 的集群管理工具。它将 Doc…

百度智能云“千帆大模型平台”最新升级:接入Llama 2等33个模型!

今年3月,百度智能云推出“千帆大模型平台”。作为全球首个一站式的企业级大模型平台,千帆不但提供包括文心一言在内的大模型服务及第三方大模型服务,还提供大模型开发和应用的整套工具链,能够帮助企业解决大模型开发和应用过程中的…

适配器模式(AdapterPattern)

适配器模式 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 优缺点 优点: 单一职责原则。你可以将接口或数据转换代码从程序主要业务逻辑中分…