计算机网络中的MAC帧

一.数据链路层

数据链路层实现的是相邻结点之间的逻辑链接,其使用的协议单元为数据帧。在两个结点之间传送数据时,数据链路层将网络层交下来的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应答:

时间: 2024-11-03 21:09:17

计算机网络中的MAC帧的相关文章

计算机网络中协议相关的问题(转)

目录 TCP对应的协议和UDP对应的协议 协议上的各种机器 交换机.路由器的概念,各自的用途,区别 路由器的分组转发算法. 说说静态路由和动态路由有什么区别 传输层协议与网络层协议的区别? 硬件(MAC)地址的概念及作用. IP.TCP.UDP头部都有哪些东西? TCP和UDP的区别? TCP通过哪些措施,保证传输可靠? 面向连接和非面向连接的服务的特点是什么? 为什么 TCP 叫数据流模式? UDP 叫数据报模式? TFTP与FTP的区别 怎样使用 UDP 实现 TCP 的可靠传输 TCP的三

IP头,TCP头,UDP头,MAC帧头定义

一.MAC帧头定义 /*数据帧定义,头14个字节,尾4个字节*/ typedef struct _MAC_FRAME_HEADER { char m_cDstMacAddress[6];    //目的mac地址 char m_cSrcMacAddress[6];    //源mac地址 short m_cType;        //上一层协议类型,如0x0800代表上一层是IP协议,0x0806为arp }__attribute__((packed))MAC_FRAME_HEADER,*PM

mac帧进入交换机后如何添加去除vlan信息的过程

mac帧进入交换机后如何添加去除vlan信息的过程 本文只是自己的对mac帧进入交换机后如何添加删除vlan过程的理解,有错误的地方还请大家指正.   交换机的端口有两种角色:access端口和trunk端口.access端口只能属于一个vlan,而trunk端口能够传送多个vlan的信息完整的过程是怎样的呢?如图,PC0发送数据给PC1,PC0发送mac帧进入access端口时,交换机会给其打上一个标签----802.1q标签,以标记改数据属于vlan10.当数据要从Switch0的f0/2发

▶链路层第五弹◀使用广播信道的以太局域网(下)--以太网帧(MAC帧)

使用广播信道的以太局域网(下)--以太网帧格式(MAC) l MAC层的硬件地址(MAC地址) 在局域网中,硬件地址又称为物理地址,或 MAC 地址. (48位地址) 802 标准所说的"地址"严格地讲应当是每一个站的"名字"或标识符. 其实我们教材中说的地址并不是很确切,但是我们习惯将这种 48 位的"名字"称为"地址",所以本书也采用这种习惯用法. IEEE 的注册管理机构 RA 负责向厂家分配地址字段的前三个字节(即高位

【转载】取得系统中网卡MAC地址的三种方法

From:http://blog.csdn.net/zhangting1987/article/details/2732135 网卡地址这个概念有点混淆不清.因为实际上有两个地址,mac地址和物理地址,一般说网卡地址我是指物理地址,不知道别人怎么看?物理地址指的是网卡上的存放地址的ROM里的地址,mac地址是这块卡工作的时候用的地址,一般情况下这两个地址是一样的,所以很多人都混用了,甚至不知道有区别  -_-# 网卡工作的时候,一个以太网帧60到1514(不包括crc),帧的crc是网卡自动加的

【转】busybox分析——arp设置ARP缓存表中的mac地址

[转]busybox分析--arp设置ARP缓存表中的mac地址 转自:http://blog.chinaunix.net/uid-26009923-id-5098083.html 1. 将arp缓存表中某一IP的MAC地址修改 [email protected]:/work/test/tcpip/busy/arp$ cat arp.c #include "utils.h" #include <net/if_arp.h> #include <linux/sockios

实现Vmware10中的Mac OS X10.9与主机Windows8.1的硬盘文件共享

由于Mac OS X 10.9系统是安装在虚拟机VMware 10里的,所以里面的系统都是占用着本机的资源才运行起来的,可能做各方面的事情都不如在本机上快.如果在虚拟机里,那么使用主机上的东西是不容易的,所以这里的共享文件夹就起作用了.然后你把要用的东西放在文件夹里,那虚拟机里就可以直接用了,这样操作就可以节省大量的时间.下面看下是如何具体操作的,步骤详解如下: 1.在虚拟机的工具栏选项里,依次选择"虚拟机"---"设置". 2.然后选择"选项"

深度技术W10系统中绑定MAC地址和IP地址的设置技巧

深度技术W10系统中绑定MAC地址和IP地址的设置技巧分享给大家,感兴趣的用户,请一起来了解下,以备以后作参考,具体如下:1.点击“开始——搜索”,输入CMD命令,然后在CMD上右键选择以管理员身份运行.2.在打开的命令行窗口中,输入 netsh i i show in运行,在以上显示内容中找到你用来上网连接的Idx号码,在下面命令中使用 (比如小编这里上网的网卡是“WLAN”所以Idx为5). 3.在命令提示符窗口输入:arp -a 查看各个IP与对应的mac地址 4.输入netsh -c "

设置 VMware 中的 Mac OS 虚拟机进入 Recovery 模式

?  简介 本文主要介绍 VMware 中的 Mac OS 虚拟机如何进入 Recovery 模式的方法,具体步骤如下: 1.   选择 Mac OS 虚拟机,点击"打开电源是进入固件" 2.   选择"Enter setup" 3.   选择"Boot from a file" 4.   选择"Recovery" 5.   选择如图: 6.   选择"boot.efi" 7.   运行效果 原文地址:ht