本文例子:*/ns-3.29/examples/udp-client-server目录下的udp-client-server.cc文件
网络拓扑:n0结点装有udp客户端应用,n1结点装有udp服务端应用
n0 n1
| |
======= LAN
功能:生成一个从no到n1的UDP flows ,n0一共发5次包,间隔为0.2s
实验过程对源代码做了部分修改
1.给两个结点安装了移动模型
//创建移动模型,设置两结点为静态位置
MobilityHelper nMobility;
Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
positionAlloc->Add (Vector (0.0, 250.0, 0.0));
positionAlloc->Add (Vector (500.0, 250.0, 0.0));
nMobility.SetPositionAllocator (positionAlloc);
nMobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
nMobility.Install (n);
2.修改了发包次数(maxPacketCount)和发包时间间隔(interPacketInterval)
Time interPacketInterval = Seconds (0.2);
uint32_t maxPacketCount = 5;
3.生成动画以及.pcap格式的文件,以供netanim和wireshark分析。
csma.EnablePcapAll ("udpcs");
AnimationInterface anim ("udpclientserver.xml");
结果分析:
用wireshark打开udpcs-0-1.pcap,发现整个过程可分为两部分:
(1)ARP地址解析过程:n0结点采用广播方式发出询问消息(询问10.1.1.2主机对应的mac地址),n1结点收到该消息后发现消息中ip地址与自身ip地址一致,则n1发送应答信息给n0,告诉n0自己的IP和MAC地址。
注: 学习一下ARP协议数据格式:
ARP(Address ResolutionProtocol,地址解析协议)协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的进行。
打开ARP询问消息,发现十六进制数据与ARP消息格式完全符合。
(2)n0发送5个数据包的过程
通过wireshark发现整个发包过程和预期效果一致,除此之外也可利用NetAnim打开动画,看到整个发包过程。
欢迎点赞收藏