首页 > 编程知识 正文

以太网的通信协议,以太网协议定义

时间:2023-05-04 21:14:21 阅读:157960 作者:4453

一.以太网中的数据帧结构

以太网是目前最流行的局域网组网技术之一。 (其他典型的LAN组网络技术包括令牌环局域网、无线LAN、ATMLAN。 以太网技术的正式标准是IEEE 802.3标准,其规定了在以太网上传输的数据帧结构。 参照下图。

在物理层上,完整的以太网帧包含七个字段。 事实上,前两个字段并不是真正意义上的以太网数据帧。 这些是以太网在物理层发送以太网数据时添加的。 为了允许正确地描述基础数据,使用7字节前导码(0和1交替的56比特(55-55-55-55-55-55-55-55-55-55 ) )来插入物理层帧) 使用1字节的SFD (帧开头分隔符,固定为10101011 )标识帧的开头。 上图中剩下的五个字段是真正的以太网数据,包含目标地址和源地址。 这些都是6字节的长度。 通常,每个网卡都有一个6字节的MAC地址,用于在以太网中唯一标识自己。 网卡接收数据时,它会通过比较目标地址字段和自身的MAC地址来确定是否接收该包。 通常,这里6个字节外的地址用以下格式写,例如00-01-02-03-04-05。 这6个字节在以太网上从左到右顺序地发送,并且同时对于每个字节来说,第一个被发送的是最低有效比特0并且最后是最高有效比特7。

在以太网帧中,目标地址可以分为单播地址、多播地址和广播地址三种。 单播地址通常对应于特定网卡的MAC地址,第一个字节的位0或第一个发出的位必须为0。 多播地址必须将第一个字节的位0设置为1。 这样,网络中的多播地址与任何网卡的MAC都不相同,多播数据可以由多个网卡同时接收。 广播地址的所有48位都为1 (即FF-FF-FF-FF-FF ) ),同一局域网中的所有网卡都可以接收广播包。

上图的长度/类型有两种含义。 如果这两个字节的值为小雨1518,则表示随后的数据字段的长度。 如果这两个字节的值大于1518,则表示以太网帧中的数据属于哪个上层协议。 例如,表示IP分组的0x800; 表示0x806、ARP数据包等。 ) )

在使用网卡进行数据包发送和接收时,网卡为我们完成了物理层的所有工作。 驱动程序发送数据时,会将目标地址、源地址、类型/长度、数据和这些值写入网卡。 网卡会自动计算CRC并将其添加到数据帧的末尾,同时对数据帧进行物理层封装,最后发送数据帧。 接收数据时,网卡可以自动检测并接收包,验证校验和,并将这四个字段中的值放入内部SRAM中以供控制器读取。

TCP/IP协议有自己的地址。 32位的IP地址(网络地址)在网络层发送数据包时只知道目标地址的IP地址,而以太网驱动程序等下级接口如果不知道对方的硬件地址,则不知道数据

二. ARP协议

ARP的功能在32位的IP地址和采用不同网络技术的硬件地址之间提供动态映射,通过在上层屏蔽下层的物理地址的差异,使上层的因特网协议可以灵活地使用IP地址进行通信ARP协议的基本功能是使用目标主机的IP地址查询相应的MAC地址,以确保底层链路上的数据包通信的进行。 为了实现网络接口物理地址和IP地址之间的转换,在ARP协议中引入了ARP缓存表的概念。 ARP缓存表中记录了一个个的IP地址、MAC地址对。 如果他们需要以主机最近执行并取得的从外围主机的IP地址到物理地址的绑定来发送IP分组,则ARP层基于目的地IP地址查找ARP高速缓存表,并将匹配的MAC地址发送到以太网帧报头中

ARP缓存表的创建与ARP包密切相关。 在以太网中,ARP包和IP包是独立的部分,封装在以太网帧中发送。 ARP数据包的类型有两种。 一个ARP请求包是通过以太网广播发送的,用于向具有某个IP地址的主机发送请求,并希望该主机返回MAC地址。 第二个是ARP应答分组,接收到ARP请求的主机根据分组内的IP地址是否与自己的IP地址一致来进行比对,在一致的情况下向源主机发送回ARP应答分组。 向源主机报告自己的MAC地址。 源主机提取ARP响应包的相关字段并更新ARP缓存表。 在Windows控制台中键入arp -a将显示操作系统使用的ARP缓存表。

举个简单的例子来看看ARP的功能吧。 如果我们的主机(192.168.1.11 )需要向开发板(192.168.1.37 )发送IP分组,则在发送数据时,主机在自己的ARP缓存表中是否有目标IP地址如果找到,还会显示目标MAC地址为(04-02-35-00-00-01 )。 在这种情况下,主机只需将目标MAC地址直接写入以太网报头并发送即可。 如果在ARP缓存表中找不到对应的IP地址,很遗憾,我们的数据需要延迟发送。 然后,主机首先向网络发送广播。 请回答:广播“192.1662.FF-FF-FF”消息的ARP请求将发送到同一网段中的所有主机。 网络IP地址为192.168.1.37 (开发板)的主机接收到此帧,其中“192.168.1.37的MAC地址是(04-02-35-00-00-01 )” 这样,主机就可以知道开发板的MAC地址,并先发送延迟的数据包。 这是

外,主机将这个地址对保存在缓存表中,以便后续数据包发送时使用。

ARP协议的核心就是对ARP缓存表的操作。发送数据包时,查找缓存表以得到目的MAC地址,此外,ARP还需要不断地处理ARP请求包和ARP应答包,以保证缓存表中各个表项的有效性。ARP的实质就是对缓存表的建立、更新、查询等操作。

2.2 ARP报文

要在源主机上建立关于目标主机的IP地址与MAC地址对应表项,则源主机和目的主机的基本信息交互式必须的,简单地说就是,源主机如何告诉目的主机:我需要你的MAC地址;而目的主机如何回复:这就是我的MAC地址。这时ARP报文(ARP数据包)就派上用场了。

ARP请求和ARP应答都是被组装在一个ARP数据包中发送的,ARP包的组成结构如下图所示。需要注意的是:ARP包时被封装在以太网帧中发送的,所以在图中也列出了以太网帧头部。

      以太网帧头部中的前两个字段是以太网的MAC地址和源MAC地址,目的地址为全1的特殊地址是以太网广播地址。在ARP表项建立前,源主机只知道目的主机的IP地址,并不知道其MAC地址,所以在数据链路上,源主机只有通过广播的方式将ARP请求数据包发送出去,同一网段上的所有以太网接口都会接收到广播的数据包。

       两个字节长的以太网帧类型表示帧中数据的类型。对于ARP包来说,该字段值为0x0806;对IP包来说,该字段的值为0x0800。接下来就是ARP数据包部分了,第一个硬件类型字段表示发送方想要知道的硬件接口类型,对于以太网MAC地址,它的值为1.协议类型字段表示要映射的协议地址类型,它的值为0x0800时,即表示要映射为IP地址,该值与以太网数据帧头中的类型字段的值使用相同的一组值。

接下来的两个单字节长度的字段,称为硬件地址长度和协议地址长度,它们分别指出硬件地址和协议地址的长度,长度单位为字节。对于以太网上ARP请求或应答来说,它们的值分别为6和4,代表MAC地址的长度和IP地址的长度。在ARP协议包中流出硬件地址长度和协议地址长度字段可以使得ARP协议在任何网络中被使用,而不仅仅只在以太网中。

      操作字段op指出ARP数据包的类型,它们可以使ARP请求(值为1)、ARP应答(值为2)。

      接下来的四个字段是发送端的以太网MAC地址、发送端的IP地址、目的端的以太网MAC地址和目的端的IP地址。





版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。