码迷,mamicode.com
首页 > 系统相关 > 详细

计算机网络中的MAC帧

时间:2016-05-14 01:17:10      阅读:2672      评论:0      收藏:0      [点我收藏+]

标签:以太网帧格式

一.数据链路层

  数据链路层实现的是相邻结点之间的逻辑链接,其使用的协议单元为数据帧。在两个结点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧,在两个相邻节点间的链路上传送帧。

   数据链路层的三个基本问题:

         1.封装成帧,2.透明传输,3.差错检测

下来讨论一下封装成帧 :

   封装成帧就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。网络层的IP数据报传送到数据链路层就成为了帧的数据部分,在帧的数据部分前后分别加上头部和尾部就构成了一个完整的帧。

二.以太网的MAC层

   1.MAC 层的硬件地址

       在局域网中,硬件地址又称为物理地址或者MAC 地址长度是48位,是在网卡出厂

时固化的。在LINUX 下用ifconfig命令看一下,“HWaddr 00:15:F2:14:9E:3F”部分就是硬件地址。在生产适配器时,这6字节MAC地址已被固化在适配器的ROM中。因此实际上就是适配器地址或适配器标识符。

   2.MAC帧的格式

   技术分享

其中目的地址和源地址就是MAC地址,帧协议类型字段有三种值,分别对应IP、ARP(地址解析)、RARP(逆地址解析)。帧末尾是CRC校验码。

 以太网帧中的数据长度规定最小46字节,最大1500字节,ARP和RARP数据包的长度不够46字节,要在后面补填充位。最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU,如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则 需要对数据包进行分片(fragmentation)。LINUX下的ifconfig命令的输出中也有“MTU:1500”。注意,MTU这 个概念指数据帧中有效载荷的最大长度,不包括帧首部的长度。

3.ARP数据报格式 

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

   源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播),目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中。

每台主机都维护一个ARP缓存表,在LINUX下可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址。

 ARP数据报帧格式如下图所示:

  技术分享

 

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

下面举一个具体的例子:

 主机1向主机2发送ARP请求:

技术分享

 主机2向主机1ARP应答:


技术分享





  

  


本文出自 “输出菱形图案” 博客,请务必保留此出处http://10541571.blog.51cto.com/10531571/1773161

计算机网络中的MAC帧

标签:以太网帧格式

原文地址:http://10541571.blog.51cto.com/10531571/1773161

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!