数据链路层

  • 数据链路层与网络层的关联
  • 以太网协议
    • 什么是以太网
    • 以太网帧格式
    • 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相关推荐

  1. 计算机网络——数据链路层局域网、以太网、PPP协议和HDLC协议、链路层设备

    文章目录 前言 一.局域网简介 1.局域网的基本概念和特点 2.局域网的主要要素 3.局域网的分类与 IEEE 802 标准 4.LLC 子层和 MAC 子层 二.以太网 三.无线局域网 四.PPP ...

  2. 数据链路层协议 ——— 以太网协议

    文章目录 链路层解决的问题 以太网协议 认识以太网 以太网帧格式 认识MAC地址 对比理解MAC地址和IP地址 认识MTU MUT对IP协议的影响 MTU对UDP协议的影响 MTU对TCP协议的影响 ...

  3. 链路层协议——以太网协议

    以太网协议 一.以太网帧格式 二.ARP协议 2.1 协议格式 2.2 作用 2.3 工作流程 2.4 ARP局域网欺骗攻击 三.MTU对于上层协议的影响 3.1 TCP协议的影响 3.2 UDP协议 ...

  4. 计算机网络 day6 arp病毒 - ICMP协议 - ping命令 - Linux手工配置IP地址

    目录 arp协议 arp病毒\欺骗 arp病毒的运行原理 arp病毒产生的后果: 解决方法: ICMP协议 ICMP用在哪里? ICMP协议数据的封装过程 ​编辑 为什么icmp协议封装好数据后,还要 ...

  5. 【计算机网络-数据链路层】介质访问控制协议(MAC协议)

    文章目录 1 静态划分信道--信道划分 MAC 协议 1.1 频分多路复用(FDM)--"并行" 1.2 时分多路复用(TDM)--"并发" 1.2.1 同步时 ...

  6. 计算机网络数据链路层 --- 后退n帧协议(GBN)

    滑动窗口 发送窗口 发送方维持一组连续的允许发送的帧的序号 接收窗口 接收方维持一组连续的允许接收帧的序号 发送过程 如图,假如发送方的发送窗口大小是6,首先发送0号帧,并建立0号帧的副本,防止帧丢失 ...

  7. IP协议+以太网协议

    在计算机网络体系结构的五层协议中,第三层就是负责建立网络连接,同时为上层提供服务的一层,网络层协议主要负责两件事:即地址管理和路由选择,下面就网络层的重点协议做简单介绍~~ IP协议 网际协议IP是T ...

  8. Linux:数据链路层——以太网协议、NAT协议、ARP协议和DNS协议

    Linux:数据链路层--以太网协议.NAT协议.ARP协议和DNS协议 以太网协议 以太网帧格式 MTU以及MTU对IP协议的影响 ARP协议 NAT协议 NAT IP转换过程 静态NAT 动态NA ...

  9. 网络 链路层 | 以太网协议与ARP协议

    数据链路层是计算机网络的底层,主要负责相邻设备之间的数据帧传输 链路层就是负责每一个相邻结点之间的数据传输,但是相邻设备之间也需要描述识别,主要是因为每一个设备都有可能有多个相邻的设备.这种识别在链路 ...

  10. 在网络上请求网页为什么会用到工业以太网协议_网络知识总结

    一下笔记是我看互联网协议入门(一) - 阮一峰的网络日志 所记录的笔记. 如果有人要认真学,强烈建议看上面的链接,以此为基础,再去看别的书,以及视频,因为目前来看阮一峰写的东西是最最最通俗易懂的 并且 ...

最新文章

  1. 排序学习之---快速排序
  2. ucache来广营(望京)机房
  3. android 按钮 叠加,android - 叠加层按钮在Android 4.3中不起作用 - 堆栈内存溢出
  4. Ouath 验证过程
  5. vba可以放服务器上处理文档,vba 用服务器运行 内存溢出
  6. 幼儿园 php,input.php
  7. h5获取http请求头_React 前端获取http请求头信息
  8. 力扣113. 路径总和 II(JavaScript)
  9. Tomcat 6、7在EL表达式解析时存在的一个Bug
  10. Clojure 学习入门(9)- 连接redis
  11. 常用计算机名词解释,计算机常用名词解释
  12. 微星主板节能模式怎么关闭_微星正设计一套易用化BIOS 根据散热器自动调节性能释放_笔记本新闻...
  13. 南开100题C语言(021-030)
  14. 用Visio画UML顺序图
  15. iOS应用程序的辅助功能:辅助功能检查器
  16. cad管线交叉怎么画_CAD基础教程,CAD中你知道如何使用CAD角度怎么画吗?快来Get吧...
  17. SolidWorks焊件中将各结构构件分解成单个零件的方法
  18. 三相全控tc787触发电路_何为可控硅整流器三相桥和双反星整流电路?
  19. PT与PX,em(%)区别
  20. OPNET计算机网络仿真 实验作业1 - 网络拓扑创建

热门文章

  1. maven工程运行环境修改
  2. Java中的查找树和哈希表(一级)
  3. hive 判断子字符串_Java中检查空字符串(null或空白)的方法有几种?
  4. 论云计算机下的中小企业会计信息化建设,中小企业云会计信息化的建议论文
  5. 013PHP文件处理——filemtime filectime fileatime date_default_timezone_set touch
  6. Bzoj4561 [JLoi2016]圆的异或并
  7. MySQL中用户授权/删除授权的方法
  8. USACO1.5 Number Triangles(numtri)
  9. 个人遇到局域网不能访问解决分享
  10. CodeForces - 1535E Gold Transfer(树上倍增+交互)