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

快乐虾

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);


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


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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌云阁主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值