在以后的一段时间内,我打算用Java编写一个类似于NS2或者TinyOS下的Octopus模拟环境。因为这些模拟器使用起来简直是太麻烦了。后来经过对NS的学习发现,写这样的模拟器,简直是一场噩梦,不知道需要多久多久多久。。。
经过思索之后,决定简化工作量,从简单开始。我打算写个模拟网络拓扑结构动态收敛的过程。即模拟一些路由器、计算机和链路之后,配置好IP地址,然后开始进行网络拓扑结构的收敛过程。此过程应该能够让使用者清楚的看到此过程包的发送接收过程。
这也就是说写这个东西主要是侧重于网络层、传输层和应用层的东西,至于物理层和数据链路层的模拟不是那么重要。主要想模拟的协议有:IP、ARP、ICMP、TCP(包括建立链接和释放连接的模拟)、UDP等。模拟Ping、Tracert等命令。其中还包括DNS服务器的解析服务等。
一是加深自己对整个互联网的架构的理解。
二是加深自己对Java机制的理解。
当然这是项非常艰巨的任务,需要各方面的知识。这只是个人兴趣,在探索中前行。欢迎志同道合者加入一起编写。
2010-11-12
最近终于可以抽出些时间来写下这个东西了,老板的NS2的项目很无聊,也不太想做。唉,不过这几天还是有些东西写出来。到目前为止,大概有了2000行代码,大概的外面的框架差不多了,不过,感觉把界面写出来,也要弄个小5000行,再联系到网络中的协议模拟,不知道要用多少代码才能搞定。先不管,慢慢写。
2010-11-13
今天写了下节点和连线的部分,大致可以部署下网络的拓扑结构。还有很多部分要做,最近作业和考试也多了,这个东西要放一放了,等忙完考试,接着做。唉,今天周六,等明天写写,周一就要开始写作业啦。。。
2010-11-14
今天做到了将整个架构能够进行增加 删除 配置 等的操作,而且其中考虑了一些些实现的细节。到现在大概3900行代码(包括注释)。wns先放这里了,赶紧的赶作业。。。
2010-12-1
现在已经7300行 可以正常的跑起来 简单的ping协议已经可以开始运行 之后再做下其他的协议的模拟.
模拟的时候刷新频率默认是1000ms,链路延迟默认是100ms,待乘系数默认是20(在某条链路上停留的时间位 待乘系数 * 链路延迟 / 刷新频率)。
ping协议下可以进行包括 ping ip和host的操作。(ping host要从dns服务器上得到hostname和ip的映射过程。该过程已经模拟实现)
操作的结果有三种:
success
unreachable(host does not exist)
time exceeded(ttl <= 0)
现在处理了下细节上的东西,比如可以进行自动的IP地址的分配(前提是路由器已经配置好,且所有的节点都连到了路由器上),如果IP地址未分配成功,则会有个error的标志在节点上。可以进行包括arp(查看本地的arp缓存)、ipconfig(查看本地ip配置)、dns(查看本地dns缓存)。
再说下这个东西的目的:为了模拟网络层的协议在一个拓扑结构具体的“游走”路线,这需要对网络进行较深入的理解,我涉水还较浅,还得多看些协议的东西,才能进行更加准确的模拟。现在先到这里,过段时间再弄。
附件中有源代码和wns文件(这个是拓扑结构,运行wns之后直接打开这个文件,拓扑结构就会自动建好。这个是我建立之后保存的,里面有4个Host,1个dns服务器,1个服务器,2个路由器)