承载于以太网帧之上的数据包的解析——ARP、IPv4、IPv6

本文解析了承载在以太网帧上的ARP、IPv4和IPv6协议,详细介绍了ARP协议的数据包结构,包括硬件类型、协议类型、地址长度和OP字段,以及MAC和IP地址映射。接着讨论了IPv4协议的结构,并概述了IPv6为解决地址空间不足所做的改进和其数据报结构。
摘要由CSDN通过智能技术生成

承接上一博文而来,继续解析网络数据包,对于承载在以太网上的三种协议进行了解析,主要是分为根据RFC定义的标准先解析头部数据,然后得到有效载荷,即为协议包含的实体数据,更上层进行进一步处理。

一、ARP协议

该协议作为局域网IP地址和MAC地址映射的重要协议,与DNS将域名与IP地址进行映射有异曲同工之妙。当以太网的类型字段为 0x0806时即为ARP协议数据包。定义如下图:


硬件类型即为以太网的代码。ARP支持的协议类型为IP(0x0800),硬件地址长度即MAC地址长度为6,协议地址长度为IP地址长度为4,OP字段为当前数据报的类型,0x0001表示请求包,0x0002表示应答包。这些就构成了ARP数据报头,一共8个Byte。

随后的20个Byte分别如上图所示,用来进行MAC地址和IP地址映射。

解析如下:

    /// <summary>
    /// Define the ARP packet header by RFC826
    /// </summary>
    public class ARPPacketHeader : INetworkLayerHeader
    {
        public ushort HardwareType = 0;         //2 Bytes 硬件类型
        public ushort ProtocalType = 0;         //2 Bytes 协议类型
        public byte HardwareAddressLength = 6;  //1 Byte  硬件地址长度(即MAC地址长度为6)
        public byte ProtocolAddressLength = 4;  //1 Byte  协议地址长度(即IP地址长度为4)
        public ushort OP = 0;                   //2 Byte  ARP包类型(0x0001:请求包  0x0002:应答包)
    }
/// <summary>
    /// Parse the ARP packet
    /// </summary>
    public class ARPPacket : INetworkLayerPacket
    {
        private byte[] Raw
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值