数据链路层【Linux网络复习版】

2024-06-20 16:52

本文主要是介绍数据链路层【Linux网络复习版】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

目录

 

一、数据链路层主要解决的是什么问题?

二、什么是以太网?

三、什么是MAC地址?

 四、以太网帧的格式是什么?

五、 什么是MTU?

六、MTU和分片

MTU对IP协议的影响?

 如何分片?

如何组装? 

如何识别有无丢失?

 怎么知道第一个是不是被分片了?

怎么避免分片?MSS

 七、局域网内主机如何通信?

交换机 

八、ARP协议

ARP协议的工作原理

 ARP协议报头

ARP请求发送过程 

 ARP应答发送过程

ARP欺骗


一、数据链路层主要解决的是什么问题?

直接相连的主机(同一网段的主机-路由器)进行数据交付的过程。

二、什么是以太网?

以太网(Ethernet)是一种局域网技术。既包含数据链路层的内容,也包含了一些物理层的内容。除了以太网以外,还有令牌环网,无线LAN等。

三、什么是MAC地址?

MAC地址用来识别数据链路层中相连的节点,在网卡出厂时就确定了,不能修改,具有全球唯一性(虚拟机中的MAC地址不是真实的MAC地址,可能会有冲突;也有写网卡支持用户配置MAC地址)

MAC地址长度为48位,即6字节,一般用16进制数字加上冒号的形式来表示。

 四、以太网帧的格式是什么?

以太网帧首部由 目的mac地址、源mac地址类型组成。

帧类型:该字段的值通常是一个16位的十六进制数,对应不同的协议使用不同的值。例如:

  • 0x0800:表示IP数据报,会把有效载荷交给上层 ------ 网络层        
  • 0x0806:表示ARP请求/响应,发起ARP请求/应答。

五、 什么是MTU?

以太网中规定数据长度最小为46字节,最大为1500字节,ARP数据包长度如果不够46字节,就要在后面补填充位。

MTU就是以太网的最大传输单元:1500(不包括以太网首部),不同的网络类型有不同的传输单元。

六、MTU和分片

MTU对IP协议的影响?

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

 如何分片?

3位标志:第二位表示是否允许分片(0允许);第三位是结束标记(当前是否是最后一个小包,0是/1不是)

13位片偏移:比如4500字节的数据要进行分片,那么第一片的片偏移就是0,第二片的片偏移是1500,第三片的片偏移就是3000。

如何组装? 

a.将分片全聚在一起

b.根据片偏移排序

如何识别有无丢失?

根据片偏移计算。

一旦这些小包中任意一个小包丢失,接收段重组就会失败,但IP层不负责重传。

 怎么知道第一个是不是被分片了?

片偏移为0且接结束标记为1。

怎么避免分片?MSS

分片会增加丢包概率,因为ip中任何一个分片丢失,都要上层重发。所以尽量不分片。

双方tcp三次握手时,协商好双方mss的较小值,就能避免分片。

以太网的mtu是1500(有效载荷)

则 IP的最大有效长度 = 1500 - IP报头(20Byte)=  1480

则 TCP的最大有效长度 = 1480 - TCP报头(20Byte)= 1460

1460数据就是MSS,通信双方的MSS尽量保持一致,减少分片。

 七、局域网内主机如何通信?

局域网中,是以广播的形式来通信的,就好像在一个班级里,老师说:“xxx过来一下”,此时全班的学生都收到了这条消息,只不过不是告诉自己的,就自动丢弃了。

局域网中任何时刻只允许有一条消息在信道上,否则会产生碰撞(有碰撞检查、碰撞避免算法),那么如果局域网内很多主机,碰撞的概率就会加大,如何缓解?

交换机 

 划分碰撞域,在概率上减少局域网碰撞。

此时,交换机左侧和右侧主机可以同时进行内部通信(eg:h1发给h2,h3发给h4),此时就能见效冲突概率。

数据包每到达一个路由器都要重新解包和封包,更新下一跳的mac地址,mac帧只在局域网中有效。

八、ARP协议

当主机A想跨网络传输到主机B,当数据包到主机B所在网络的网关路由器时,该路由器只知道源ip和目的ip,它如何在局域网内将该数据包送给主机B呢?这是候就要用到ARP协议,来获得IP对应的mac地址。ARP协议建立的IP和MAC地址的映射关系

该协议虽然归属数据链路层,但实际是介于数据链路层和网络层之间的协议。

ARP协议的工作原理

在局域网内广播一条消息,问局域网内xxip地址是谁,对应的mac地址是多少。所有主机收到后,根据xxip发现是向我发起的ARP请求,那么就给它响应一条消息,告诉它自己的mac地址是多少。

 ARP协议报头

硬件类型:数据链路层网络类型,1为以太网。

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

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

协议地址长度:对于IP地址为4字节。

op:1表示ARP请求,2表示ARP应答。

ARP请求发送过程 

如果局域网内一台主机想知道局域网内另一台主机的mac地址(已知其ip地址),那么它可以发起一个ARP请求。

填充ARP报头:

op填1(请求)

发送端mac地址和发送端ip地址:自己的mac地址和ip地址。

目的mac地址:未知,填全F

目的ip地址:已知的

mac帧报头:

目的mac地址:全F(表示广播)

源mac地址:自己的mac地址

由于以太网mac地址是全F,广播,所以局域网内每台主机都会收到,到达某台主机的mac帧层时,发现它的目的mac地址是广播地址,就把数据帧向上交付给ARP层。

ARP层

1)先看op字段。

2)发现op字段是请求,那么继续看目的ip地址,如果与当前主机ip地址相同,则说明是发给本主机的,本主机就会给对方回一个ARP应答。

 ARP应答发送过程

目标主机收到应答,mac帧层发现是发给自己的,将数据帧向上交给ARP层。

ARP层:

1)先看op字段,发现op是2(即应答)

2)提取发送端mac地址+发送端ip地址

如果是其他主机收到应答,那么它在数据链路层就发现不是发给自己的,就丢弃了。

ARP欺骗

1)如何获得同一网段下的其他所有主机的mac地址?

用自己的ip地址和子网掩码按位与得到网络号,遍历所有的ip地址,ping一下,就ok了。

2)ARP欺骗

ARP的缓存是有时间限制的,且多次发送收到应答时,往往会以最新的为准。

同一个局域网内的hostM(攻击机)可以伪造应答发疯狂发送给hostA,hostA就会以为ipA的mac地址是macM,那么它就会给hostM发送报文。

hostM可以选择丢弃该报文,也可以替hostA向Route R去请求,Route R应答也会发送给我,此时hostM就成了中间人。

这篇关于数据链路层【Linux网络复习版】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1078704

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor