NS3网络仿真: 构建以太网帧

Posted blfbuaa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NS3网络仿真: 构建以太网帧相关的知识,希望对你有一定的参考价值。

快乐虾

http://blog.csdn.net/lights_joy/

欢迎转载,但请保留作者信息


NS3使用了一个叫Packet的类来表示一个数据帧,本节尝试用它构造一个以太网帧。


以下是一个典型的ARP请求帧:

技术分享


我们就用Packet来创建一个同样的帧。

首先创建一个空的数据包:

    Ptr<Packet>pkt = Create<Packet>();


接下来加上ARP头:


    //加入arp

    ArpHeader ah;

    ah.SetRequest(Mac48Address("00:50:56:c0:00:01"),"192.168.24.1",

        Mac48Address("00:0c:29:e6:e9:cd"),"192.168.24.129");

    pkt->AddHeader(ah);


这里的SetRequest用以设置ARP包的内容。


  /**

   * \brief Set the ARP request parameters

   * \param sourceHardwareAddress the sourcehardware address

   * \param sourceProtocolAddress the source IPaddress

   * \param destinationHardwareAddress thedestination hardware address (usually the broadcast address)

   * \param destinationProtocolAddress thedestination IP address

   */


  void SetRequest (AddresssourceHardwareAddress,

                   Ipv4AddresssourceProtocolAddress,

                   AddressdestinationHardwareAddress,

                   Ipv4AddressdestinationProtocolAddress);


在内存中能够非常清楚地看见此操作加入的内容:

技术分享


接下来为此ARP帧加上以太帧的帧头:


    //加入以太网头

    EthernetHeader eh;

    eh.SetDestination("00:0c:29:e6:e9:cd");

    eh.SetSource("00:50:56:c0:00:01");

    eh.SetLengthType(ArpL3Protocol::PROT_NUMBER);

    pkt->AddHeader(eh);


再看看生成的数据包的内容:

技术分享


哈哈。这就和我们从网络上抓下来的包一模一样了!




??

以上是关于NS3网络仿真: 构建以太网帧的主要内容,如果未能解决你的问题,请参考以下文章

NS3网络仿真: 数据包分析

MATLAB教程案例75~79总结MATLAB网络类算法仿真经验和技巧总结

eNSP仿真软件之配置Trunk口

NS3入门与安装

NS-3学习ns3-模拟基础:关键概念,日志,命令行参数

NS-3学习ns-3模拟基础:目录结构,模块,仿真流程