码迷,mamicode.com
首页 > 其他好文 > 详细

NS3网络仿真(9): 构建以太网帧

时间:2017-07-13 21:51:54      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:ipa   ram   color   broadcast   nat   new   .net   一个   ipaddress   

快乐虾

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网络仿真(9): 构建以太网帧

标签:ipa   ram   color   broadcast   nat   new   .net   一个   ipaddress   

原文地址:http://www.cnblogs.com/blfbuaa/p/7162707.html

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