首页 > 解决方案 > 无法在应用层检测碰撞?唔

问题描述

考虑到两个教程的无用程度

https://inet.omnetpp.org/docs/tutorials/wireless/doc/step5.html

和手册页:

https://doc.omnetpp.org/omnetpp/manual/#sec:ned-lang:warmup:network

如何在应用层建模碰撞?

标签: networkingsimulationomnet++simulatorinet

解决方案


您没有找到教程如何简单地在应用层建模碰撞,因为在应用层碰撞不会发生
通常,当许多元素不能同时访问某个介质(或层)时,可能会发生冲突。但是,应用层没有这样的限制。应用程序可以随时发送一个数据包,该数据包将由传输层(TCP 或 UDP)处理,然后发送到网络层。网络层有一个缓冲区,因此在两个或多个应用程序同时发送数据包的情况下不会发生冲突。

根据您的问题中提供的详细信息:

  • hostSink 如何检查 hostA 或 hostB 是否仍在发送数据包 [最初:信号]?答:hostSink无法判断是否hostA还在发包。模拟反映了真实网络的行为,真实网络中的主机不知道另一台主机是否还在发送数据包。
  • 时间如何在模拟中“流逝”?答:OMNeT++ 是离散事件模拟器,根据模拟手册:

离散事件系统是状态变化(事件)在离散实例中及时发生的系统,事件发生时间为零。

这意味着模拟在内部维护名为 的变量currentSimtime。一开始currentSimtime=0。当第一个事件(例如发送 ARP 数据包)被调度时,例如 t=0.003s,currentSimtime设置为 0.003s,并执行发送 ARP 数据包。


推荐阅读