我是靠谱客的博主 懵懂唇彩,最近开发中收集的这篇文章主要介绍计算机网络2——数据链路层,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

数据链路层主要干什么
mtu概念 mtu最大值和最小值是多少
以太网帧的格式
ARP协议,RARP地址解析(逆地址解析) 说白了就是网卡的mac地址和ip地址互查的机制
ARP高效运行的关键 其弱点
ARP代理的概念和应用场景 免费ARP

why 数据链路层

物理层的线路有传输介质与通信设备组成,比特流在传输介质上传输时肯定会存在误差的。这样就引入了数据链路层在物理层之上,采用差错检测、差错控制和流量控制等方法,向网络层提供高质量的数据传输服务

how

两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。在两个相邻节点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧,在两个相邻路由之间的链路上传送帧。每一个帧包括数据和必要的控制信息(如,同步信息、地址信息、差错控制等)
在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始和哪个比特结束。这样,数据链路层在收到一个帧后,就可从种提取出数据部分,上交给网络层,上交之前控制信息检测所收到的帧种有无差错,如果有差错,数据链路层就简单地丢弃这个出差错的帧,以免继续在网络中传送下去白白浪费网络资源。

mtu:最大传输单元(Maximum Transmission Unit)

  1. 数据链路层会将网络层的IP数据报组装成帧,就是在IP数据报的前后添加首部和尾部,mtu就是IP数据报的最大长度,帧的数据部分的最大长度。转自知乎用户 java架构师系列
  2. 如果MTU过大,在碰到路由器时会被拒绝转发,因为它不能处理过大的包。如果太小,那实际传送的数据量就会过小,这样也划不来。大部分操作系统会提供给用户一个默认值,该值一般对用户是比较合适的。
  3. 最小MTU为64字节,最大MTU为1500字节,一个标准的以太网数据帧大小是:1518,头信息有14字节,尾部校验和FCS占了4字节,所以真正留给上层协议传输数据的大小就是:1518 - 14 - 4 = 1500,那么,1518这个值又是从哪里来的呢?参考https://yq.aliyun.com/articles/222535

以太网帧

数据链路层使用两种信道:
1)点对点信道(点对点协议ppp:世界用最多的数据链路层协议)
2)广播信道:局域网是一种典型的广播信道,如以太网(开始将以太网):
在以太网链路上的数据包称作以太帧。以太帧起始部分由前导码和帧开始符组成。后面紧跟着一个以太网报头,以MAC地址说明目的地址和源地址。帧的中部是该帧负载的包含其他协议报头的数据包。以太帧由一个32位冗余校验码结尾用于检验数据传输是否出现损坏。
在这里插入图片描述
例子:这边负载IP数据报,也可以ARP报文之类…
在这里插入图片描述适配器从网络上每收到一个 MAC 帧,就首先用硬件检查 MAC 帧中的 MAC 地址:如果是发往本站的帧则收下,然后再进行其他的处理。否则就直接将此帧丢弃

ARP:将IP地址解析为MAC地址

当主机或其他网络设备有数据要发送给另一个主机或设备时,它必须知道对方的IP地址,但是IP数据报文必须封装成帧再通过物理网络发送,因此还需要接收方的MAC地址,ARP协议就是用于完成一个IP地址到物理地址的映射的协议

ARP帧格式

ARP,RARP数据报都需要以太网帧驱动程序来封装成帧,所以点对点链路是不使用ARP的。先看看数据链路层格式在这里插入图片描述
ARP帧格式:在这里插入图片描述帧类型:0x0806表示ARP,0x8035表示RARP,(0x0800表示ip数据报,IP数据报也是用以太网驱动来封装成帧的)
硬件类型:是与主机相连接的网络类型,1表示以太网
协议类型:是ipv4还是ipv6协议,不同的协议后续操作是不一样的(0x0800是IP地址
硬件地址长度:硬件地址的长度,也就是MAC帧的长度,6字节
协议地址长度:不同协议的长度,ipv4就是4字节,ipv6就是16字节
op:是什么操作,1表示arp请求,2表示arp应答
arp总共28个字节

ARP过程

来一次完整的ARP:首先有两台主机H1,H2,当H1需要与H2通信的时候是知道对方的IP地址的,当然也知道自己的IP地址和自己的MAC地址,唯独不知道H2的MAC地址,就是以太网目的地址,此时双方通信会先填充ARP数据报,对目的地址全部填充1,也就是ffffffffffff(为了广播),op为1,请求arp报文,然后由H1以广播形式发送到当前局域网在这里插入图片描述当前局域网中的主机们就会接收到这个广播的帧(谁是这个IP啊),当帧中ip与主机不相符时就直接丢弃这个帧,如果主机ip与ip2符合时就接收这个帧。
接收到报文的主机H2会发送一个应答arp数据报给H1,在应答ARP中发送端源地址是当前发送报文的主机H2的IP2和MAC2,目的端是发送请求报文的H1的IP1和MAC1,op为2,然后加一个以太网首部发送出去。
当到达主机H1的时候,首先H1就会取出以太网帧的首部,然后交给上层的ARP进行处理,ARP从op得知是应答报文,就去查看发送端的MAC地址,就这样得到了所需要通信的H2的MAC地址
在这里插入图片描述

ARP代理及其应用场景

ARP是解决同一个局域网上的主机或路由器的IP地址和MAC地址的映射关系,若ARP请求是从一个网络的主机发送到另一个网络的主机,那么连接这两个网络的路由器就可以回答该请求,这个过程叫做ARP代理。
ARP代理路由器响应ARP请求的MAC地址为路由器的MAC地址而非请求的主机的MAC地址

arp代理的应用场景

两个物理网络之间的路由是使用相同的网络号,两个路由器设置成ARP代理,实现相互隐瞒物理网络
.

ARP高速缓存: ARP高效运行的关键

ARP协议的实质上需要有一个ARP缓存,用这个缓存来进行保存ip地址和MAC地址的映射关系,这样就不需要对同一个映射进行多次ARP请求了

会出现一个MAC地址被改变或者长时间不通信的情况,就会有缓存更新的问题,当一个映射关系长时间不进行通信就会删除该映射,防止缓存表变满。这个时间叫生存时间,为每一个映射地址设置一个生存时间,默认事件ARP缓存是20分钟一更新

ARP协议弱点

  1. 主机的地址映射是基于高速缓存,动态更新的,地址刷新是有时间限制的,因此可以通过下次更新之前修改计算机上的地址缓存,造成拒绝服务攻击或者ARP欺骗
  2. 广播:攻击者可以伪装成ARP应答
  3. ARP应答没有认证,都是合法的,可以在不接收到请求的时候就发出应答包

免费ARP

指主机放ARP查找自己的IP地址,即SIP=DIP(来源ip=目的ip)
作用有两个:

  1. 一个主机使用免费ARP来确定有没有其他主机设置相同的IP地址
  2. 如果发送免费ARP的主机改变了MAC地址,可以通过发送免费ARP的方式告知主机端更新ARP表

RARP

RARP也叫逆地址解析协议,知道双方的MAC地址,所以在链路层上可以直接通信,然后通信过去就可以得到IP地址
RARP协议允许局域网的物理机器从网管服务器ARP表或者缓存上请求其IP地址

最后

以上就是懵懂唇彩为你收集整理的计算机网络2——数据链路层的全部内容,希望文章能够帮你解决计算机网络2——数据链路层所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部