快乐虾

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

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



NS3网络仿真(9): 构建以太网帧的更多相关文章

  1. NS3网络仿真(10): 解析以太网帧

    快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载.但请保留作者信息 解析以太网帧的过程是构建以太网帧的逆过程,当我们接收到一个以太网帧时,仍然以上一节中的ARP帧为例 ...

  2. NS3网络仿真(7): Wifi节点

    快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 在上一节中.我们仿真了一个总线型网络,这一节尝试将上一节中的n0变成一个无线的AP.再连上几个节点 ...

  3. NS3网络仿真(6): 总线型网络

    快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载.但请保留作者信息 在NS3提供的第一个演示样例first.py中,模拟了一个点对点的网络,接下来的一个演示样例代码模 ...

  4. NS3网络仿真(2):first.py

    1    安装基本模块 11  安装Python 12  安装PTVS 13  加入对python-279的支持 2    在vs2013下编译NS3 3    编译NetAnim 4    在vs2 ...

  5. NS3网络仿真(11): ARP

    快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 ARP(Address ResolutionProtocol,地址解析协议)协议的基本功能就是通过 ...

  6. NS3网络仿真(12): ICMPv4协议

    快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 ICMP的全称是 Internet ControlMessage Protocol . 其目的就是 ...

  7. NS3网络仿真(3): NetAnim

    快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 在NS3提供的演示样例first.py中,并没有生成NetAnim所须要的xml文件,本节我们尝试 ...

  8. NS3网络仿真(4): DataRate属性

    快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 在first.py中创建了一个点到点的信道,且配置了两个属性: pointToPoint = ns ...

  9. NS3网络仿真(5): 数据包分析

    快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 在我们生成的xml文件里.是不包括生成的数据包的数据的,在我们的脚本中加入以下的语句: point ...

随机推荐

  1. Linux的硬件时间、校正Linux系统时间及系统时间调用流程

    第一部分: 一)概述: 事实上在Linux中有两个时钟系统,分别是系统时间和硬件时间 UTC是协调世界时(Universal Time Coordinated)英文缩写,它比北京时间早8个小时.   ...

  2. 条款12:复制对象时勿忘其每一个成分(Copy all parts of an object)

    NOTE: 1.Copying 函数应该确保复制“对象内的所有成员变量”及“所有base class成分”. 2.不要尝试以某个copying函数实现另一个copying函数.应该将共同机能放进第三个 ...

  3. viva correction statements

    * List of amendments| No. | Location     | Amendments                                                ...

  4. AnjularJs-Select添加数据并设置默认值

    html中 <select name="book_classify" class="all_list_btn" ng-model="select ...

  5. SolrCloud架构

    原文链接 https://blog.csdn.net/dingzfang/article/details/42804489 1 核心概念 Collection Shard 均为逻辑上的概念 Core为 ...

  6. str内部方法释义

    1. __add__:字符串拼接 [示例]:>>> str1=‘good’>>> str1.__add__(‘morning’)>>> ‘good ...

  7. pip安装requests库失败

    pip install 安装第三方插件是出现Could not fetch URL https://pypi.python.org/simple/pool/: There was a problem ...

  8. Leetcode 312.戳气球

    戳气球 有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中. 现在要求你戳破所有的气球.每当你戳破一个气球 i 时,你可以获得 nums[left] * n ...

  9. 《Docker容器与容器云》读书笔记

    云计算平台 云计算是一种资源的服务模式,该模式可以实现随时随地.便捷按需地从可配置计算资源共享池中获取所需资源(如网络.服务器.存储.应用及服务),资源能够快速供应并释放,大大减少了资源管理工作开销. ...

  10. hdu 1824 2-sat问题(判断)

    /* 题意:u,v,w队长,队员,队长留下两个队员可以回家,两个队员留下,队长回家 2-sat问题,把两个队员看成一个整体就变成一个简单2-sat问题了 */ #include<stdio.h& ...