计算机网络 | 数据链路层 :ARP协议、以太网协议、MTU
数据链路层
- 数据链路层与网络层的关联
- 以太网协议
- 什么是以太网
- 以太网帧格式
- MAC地址
- MAC地址与IP地址
- MTU
- MTU对TCP的影响
- MTU对UDP的影响
- ARP协议
- 什么是ARP协议
- ARP数据报格式
- ARP协议的工作流程
- ARP局域网欺骗攻击
数据链路层与网络层的关联
数据链路层的主要功能就是负责相邻设备之间的数据传输 。
在网络层那篇博客中也说过,网络层是点对点之间的通信。主要通过IP协议描述起点到终点。而链路层则是对网络层的补充,负责在起点到终点的路径中,每一个相邻节点的数据传输。
网络层主要关心的是从起点到终点
链路层则关心的是其中路径上的每一个相邻节点的通信
举个例子,比如我们要去旅游,我们顶下目标,从北京前往北海道。这即是我们所描述的起点与终点。
而光有起点和终点不行,还需要描述途中的行程,如先从北京坐车到某某机场,然后再从某某机场转机到地点A,再从地点A,再从地点A坐船来到北海道,这边是途中所规划的路径。
这个从起点到终点的整个行程表就相当于我们的网络层。而这一个一个的地点的移动,也就是具体的行程方式与途径,就相当于数据链路层。
如果没有了行程表,即使知道出行方式和途径也不知道具体的路径。而只知道行程表,不通过具体的通行也只能停留在原地。这就是网络层与数据链路层之间的关系。
以太网协议
什么是以太网
- 以太网" 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的 内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;
- 例如以太网中的网线必须使用双绞线; 传输速率有10M, 100M, 1000M等;
- 以太网是当前应用最广泛的局域网技术; 和以太网并列的还有令牌环网, 无线LAN等
以太网帧格式
- 32位源MAC地址/目的MAC地址:表示发送端/接收端的MAC地址,用于描述识别相邻的设备。
- 16位上层协议:记录了上层网络层的协议,用于数据分用时选择上层解析的协议
- 32位FCS:帧尾,包含校验和在内。
MAC地址
MAC地址即相邻设备定位的地址,也就是物理网卡的硬件地址,标识每一块网卡,在两块网卡之间的数据传输起到作用。
- MAC地址用来识别数据链路层中相连的节点;
- 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
- 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可 能会冲突; 也有些网卡支持用户配置mac地址)
MAC地址与IP地址
- IP地址描述的是路途总体的 起点 和 终点;
- MAC地址描述的是路途上的每一个区间的起点和终点;
MTU
MTU即Maximum Transmission Unit, 最大传输单元。它其实就是以太网协议帧的长度限制,用来通知对方所能接受数据服务单元的最大尺寸,说明发送方能够接受的有效载荷大小,默认为1500。
- 以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充 位;
- 最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;
- 如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分 片(fragmentation);
- 不同的数据链路层标准的MTU是不同的;
因为MTU限制了数据帧的大小,所以其对上层也有影响。例如而在网络层中,IP数据报中的UDP报文,虽然没有超过数据报长度,但如果其大小大于MTU,其就得在网络层进行数据分片,然后传送到对端后再在网络层组织数据。所以MTU对传输层有着一定的影响。
MTU对TCP的影响
因为TCP协议在进行三次握手的时候,双方就约定好了一个MSS(最大数据段协商,取通信双方最小的那一个)。因为TCP是面向字节流的传输,所以每次发送数据时,其就从发送缓冲区中取出不大于MSS的数据进行发送,也就是说, TCP在传输层会自动进行数据的分片, 所以其在网络层不会分片。
MSS = MTU - 最小IP报头长度 - 最小TCP报头长度。
因为MTU默认为1500,所以MSS默认为1460,即1500 - 20 - 20。
MTU对UDP的影响
因为UDP中不存在MSS,所以其数据只要小于最大数据报大小就可以传输。但是在其封装到网络层IP协议数据报时,虽然大小不超过最大数据报大小,但是如果超过MTU,即数据无法一次性在链路层发送,所以此时就会在网络层进行数据分片。
而问题来了,UDP是不可靠的,他不能保证数据能够安全到达对端,所以在传输过程中,一旦有任何一个分片出问题,那么整个UDP报文都会被丢弃。这也就以为着,如果UDP传输中,分片越多,在传输的时候出现问题的几率也就越大。所以这时候就需要我们在应用层使用UDP协议的时候就需要考虑到MSS的问题,将UDP数据报按照计算的MSS进行分包处理。
默认的UDP MSS 为 1500 - 20 - 8 = 1472
ARP协议
什么是ARP协议
在进行网络通信时,网络层只给出了起点与终点的IP地址,那么数据链路层又是怎么通过IP地址来获取路径中每一个相邻设备的MAC地址呢?答案就是使用了ARP协议。
ARP协议:
是一个介于网络层和数据链路层之间的一个协议,其主要作用就是通过IP地址来获取MAC地址。
ARP数据报格式
- 注意到源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况 是多余的,但如果链路层是其它类型的网络则有可能是必要的。
- 硬件类型指链路层网络类型,1为以太网;
- 协议类型指要转换的地址类型,0x0800为IP地址;
- 硬件地址长度对于以太网地址为6字节;
- 协议地址长度对于和IP地址为4字节;
- op字段为1表示ARP请求,op字段为2表示ARP应答。
ARP协议的工作流程
ARP协议如何获取相邻设备的MAC地址呢?
首先,按照上面的协议格式,封装ARP请求。然后将ARP请求广播到整个局域网中,然后相邻设备收到这个ARP请求时,就会查看其中的目的IP地址是否与自己相同,如果相同,则组织ARP响应,将自己的MAC地址回复回去,源端收到后,就会对ip地址和MAC地址的关系进行映射缓存,缓存时间一般是20分钟。而如果不符合,则直接丢弃,什么都不做。
- 源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”, 并将这个请求广播到本地网 段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播);
- 目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自 己的硬件地址填写在应答包中;
- 每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如 果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址
ARP缓存为什么只存在一段时间后就会失效?
这个主要涉及到MAC地址与IP地址的映射原理。因为现在的IP地址基本都是DHCP动态分配的,主机发送DHCP请求给路由器,路由器收到后给主机动态分配IP地址。而IP地址改变后,原来的映射关系就会发生变化,所以ARP缓存不能存在太长时间,需要及时更新。
ARP局域网欺骗攻击
从上面ARP协议的工作流程可以看出,ARP请求广播是具有风险的。如果在相邻设备中有恶意的主机,如果其收到了我们的ARP广播请求,他此时就可以伪装成我们的目标主机IP地址,将他的MAC地址响应给我们,这是我们就会将数据发送给他,导致数据被截获。
解决的方法也很简单,在防火墙中设置一个MAC白名单即可,只将数据发送给局域网中信任的设备即可。
计算机网络 | 数据链路层 :ARP协议、以太网协议、MTU相关推荐
- 计算机网络——数据链路层局域网、以太网、PPP协议和HDLC协议、链路层设备
文章目录 前言 一.局域网简介 1.局域网的基本概念和特点 2.局域网的主要要素 3.局域网的分类与 IEEE 802 标准 4.LLC 子层和 MAC 子层 二.以太网 三.无线局域网 四.PPP ...
- 数据链路层协议 ——— 以太网协议
文章目录 链路层解决的问题 以太网协议 认识以太网 以太网帧格式 认识MAC地址 对比理解MAC地址和IP地址 认识MTU MUT对IP协议的影响 MTU对UDP协议的影响 MTU对TCP协议的影响 ...
- 链路层协议——以太网协议
以太网协议 一.以太网帧格式 二.ARP协议 2.1 协议格式 2.2 作用 2.3 工作流程 2.4 ARP局域网欺骗攻击 三.MTU对于上层协议的影响 3.1 TCP协议的影响 3.2 UDP协议 ...
- 计算机网络 day6 arp病毒 - ICMP协议 - ping命令 - Linux手工配置IP地址
目录 arp协议 arp病毒\欺骗 arp病毒的运行原理 arp病毒产生的后果: 解决方法: ICMP协议 ICMP用在哪里? ICMP协议数据的封装过程 编辑 为什么icmp协议封装好数据后,还要 ...
- 【计算机网络-数据链路层】介质访问控制协议(MAC协议)
文章目录 1 静态划分信道--信道划分 MAC 协议 1.1 频分多路复用(FDM)--"并行" 1.2 时分多路复用(TDM)--"并发" 1.2.1 同步时 ...
- 计算机网络数据链路层 --- 后退n帧协议(GBN)
滑动窗口 发送窗口 发送方维持一组连续的允许发送的帧的序号 接收窗口 接收方维持一组连续的允许接收帧的序号 发送过程 如图,假如发送方的发送窗口大小是6,首先发送0号帧,并建立0号帧的副本,防止帧丢失 ...
- IP协议+以太网协议
在计算机网络体系结构的五层协议中,第三层就是负责建立网络连接,同时为上层提供服务的一层,网络层协议主要负责两件事:即地址管理和路由选择,下面就网络层的重点协议做简单介绍~~ IP协议 网际协议IP是T ...
- Linux:数据链路层——以太网协议、NAT协议、ARP协议和DNS协议
Linux:数据链路层--以太网协议.NAT协议.ARP协议和DNS协议 以太网协议 以太网帧格式 MTU以及MTU对IP协议的影响 ARP协议 NAT协议 NAT IP转换过程 静态NAT 动态NA ...
- 网络 链路层 | 以太网协议与ARP协议
数据链路层是计算机网络的底层,主要负责相邻设备之间的数据帧传输 链路层就是负责每一个相邻结点之间的数据传输,但是相邻设备之间也需要描述识别,主要是因为每一个设备都有可能有多个相邻的设备.这种识别在链路 ...
- 在网络上请求网页为什么会用到工业以太网协议_网络知识总结
一下笔记是我看互联网协议入门(一) - 阮一峰的网络日志 所记录的笔记. 如果有人要认真学,强烈建议看上面的链接,以此为基础,再去看别的书,以及视频,因为目前来看阮一峰写的东西是最最最通俗易懂的 并且 ...
最新文章
- 排序学习之---快速排序
- ucache来广营(望京)机房
- android 按钮 叠加,android - 叠加层按钮在Android 4.3中不起作用 - 堆栈内存溢出
- Ouath 验证过程
- vba可以放服务器上处理文档,vba 用服务器运行 内存溢出
- 幼儿园 php,input.php
- h5获取http请求头_React 前端获取http请求头信息
- 力扣113. 路径总和 II(JavaScript)
- Tomcat 6、7在EL表达式解析时存在的一个Bug
- Clojure 学习入门(9)- 连接redis
- 常用计算机名词解释,计算机常用名词解释
- 微星主板节能模式怎么关闭_微星正设计一套易用化BIOS 根据散热器自动调节性能释放_笔记本新闻...
- 南开100题C语言(021-030)
- 用Visio画UML顺序图
- iOS应用程序的辅助功能:辅助功能检查器
- cad管线交叉怎么画_CAD基础教程,CAD中你知道如何使用CAD角度怎么画吗?快来Get吧...
- SolidWorks焊件中将各结构构件分解成单个零件的方法
- 三相全控tc787触发电路_何为可控硅整流器三相桥和双反星整流电路?
- PT与PX,em(%)区别
- OPNET计算机网络仿真 实验作业1 - 网络拓扑创建
热门文章
- maven工程运行环境修改
- Java中的查找树和哈希表(一级)
- hive 判断子字符串_Java中检查空字符串(null或空白)的方法有几种?
- 论云计算机下的中小企业会计信息化建设,中小企业云会计信息化的建议论文
- 013PHP文件处理——filemtime filectime fileatime date_default_timezone_set touch
- Bzoj4561 [JLoi2016]圆的异或并
- MySQL中用户授权/删除授权的方法
- USACO1.5 Number Triangles(numtri)
- 个人遇到局域网不能访问解决分享
- CodeForces - 1535E Gold Transfer(树上倍增+交互)