我正在使用SNMP访问远程系统数据。根据要求,我将SNMP请求数据编码为OAMPDU数据包格式,并发送到远程系统。远程系统接收到OAMPDU数据包,对其进行解码,并通过绑定到端口161的UDP套接字将snmp请求发送给snmp代理。但是我无法收到snmp代理的响应。我已经创建了一个绑定到161端口的UDP套接字来接收响应。
如果我使用161以外的任何其他空闲端口号来接收SNMP代理,则不会向该端口发送响应。
有没有人能建议我如何克服这个问题?
我们可以为tx、rx配置不同的端口吗?
我们如何知道snmp在哪个端口发送响应?
发布于 2010-07-02 18:46:12
每个UDP数据包都有一个源端口和一个目的端口。SNMP管理器使用任何源端口和目的端口161发出SNMP请求。代理将回复管理器上的源端口。例如:
Manager Agent
source port: <random number>
dest port: 161
content: what is your sysUpTime
source port: 161
destination port: <same random number>
content: sysUpTime is 42 seconds应答到达random number端口,而不是端口161。因此,监听端口161的管理器不太可能收到很多回复。不要监听161端口,而要监听您用来发出请求的同一套接字。该套接字将记住它选择用于发送的源端口。
使用SNMP查询时,SNMP的manager为UDP的client,SNMP的agent为UDP的server。
https://stackoverflow.com/questions/3164928
复制相似问题