ns-3.25仿真器实现端口扫描遇到的问题

在ns-3.25中使用tcp-syn实现端口扫描的功能比较简单,我们依次不断的发送syn数据包,数据包的目的ip和地址依次为事先指定的ip范围(例如10.1.2.1-10.1.2.5)和指定的端口号范围(例如1-1024)。然后服务器返回的情况有4种:一是syn|rst--服务器在线,但是端口服务没开启,二是syn|ack--服务器在线,端口服务开启(源主机收到后会发送rst,可以不处理),三是TTL超时--服务器可能不在线,四是没有回复--没有到达目的地的路由。 

网络拓扑为node0(10.1.1.1)-----node1(10.1.1.1and10.1.2.1)-----node2(10.1.2.2),但是在实际运行过程中发现两个问题。问题一是我发现在发送第102个数据包时,在调用src/traffic-control/model/queue-disc.cc中的Transmit函数时会发生发送失败的现象,现在我也不太清楚原因。并且之前放入到队列中的(QueueDiscItem)item的Transmission queue index是没有被置位stopped的,重传将这个item赋值给m_requeued,但是之后对m_requeued进行判断时候却一直被置位stopped了,感觉好奇怪。以后所有的数据包都会被在m_nPackets上进行累加(之前是入队+1,出队-1),直到所有的包都入队后m_requeued又变为没被置位stopped。接下来就是将队列中的包出队并发送。m_nPackets最大值为1000,并且不能修改,如果累积计数超过1000,此时我们期望发送的syn包只能被丢弃!之所以在第102个数据包发生变化,我发现是和src/network/utils/queue.cc中的MaxPackets成员变量紧密关联的,默认值为100,为了避免上述行为,我将其改为10000。要真正解决上述问题还需要将tcp流量控制中的queue disciple和pfifo fast queue disciple的运行原理搞清楚。

第二个问题是,node1的第二个接口也就是10.1.2.1会发送大量的tcp syn重传包,在上述例子中10.1.2.3-10.1.2.5(拓扑中没有对应的主机存在)在短时间之内不会回复node0,所以被扫描子网的路由器(node1)就不停的进行重传吗?这一点我现在还没搞清楚。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值