Python 使用POX创建TCP数据包
我正在尝试使用POX控制器和 将其发送到其中一个交换机 以下是创建数据包的方式:Python 使用POX创建TCP数据包,python,tcp,network-programming,openflow,pox,Python,Tcp,Network Programming,Openflow,Pox,我正在尝试使用POX控制器和 将其发送到其中一个交换机 以下是创建数据包的方式: payload = "MESSAGE" tcp_packet = tcp() tcp_packet.srcport = 10000 tcp_packet.dstport = 10001 tcp_packet.payload = payload tcp_packet.seq = 100 ipv4_pack
payload = "MESSAGE"
tcp_packet = tcp()
tcp_packet.srcport = 10000
tcp_packet.dstport = 10001
tcp_packet.payload = payload
tcp_packet.seq = 100
ipv4_packet = ipv4()
ipv4_packet.iplen = ipv4.MIN_LEN + len(tcp_packet)
ipv4_packet.protocol = ipv4.TCP_PROTOCOL
ipv4_packet.dstip = IPAddr('10.0.0.5')
ipv4_packet.srcip = IPAddr('10.0.0.1')
ipv4_packet.set_payload(tcp_packet)
eth_packet = ethernet()
eth_packet.set_payload(ipv4_packet)
eth_packet.dst = EthAddr('00:00:00:00:00:05')
eth_packet.src = EthAddr('00:00:00:00:00:01')
eth_packet.type = ethernet.IP_TYPE
之后,它通过交换机的一个端口发送。当我尝试在PacketIn处理程序中捕获数据包时:
event.parsed.find('tcp')
返回None,就像没有TCP数据包一样。
用Wireshark捕获流量,我看到了数据包(包的包装)
但是Wireshark警告说TCP头是零
这确实是标题的问题吗?如果是,我该如何解决这个问题
谢谢问题在于未设置数据偏移字段。 因为,TCP数据包的最小报头长度是5 32位字(20字节),我在报头中没有设置任何选项。 因此,为了解决这个问题,我必须补充:
tcp_packet.off = 5
这包看起来没问题。你能不做一个event.parsed.find('tcp')而做一个:parsedpkt=event.parsed并撕开标题吗??在您的例子中:parsedpkt将是一个以太网数据包,此数据包的有效负载是一个ipv4数据包,而此ipv4数据包的有效负载将是TCP数据包。您所说的rip头是什么意思?我尝试了以下方法:ip=event.parsed.find('ipv4')和tcp=ip4。接下来,tcp似乎有tcp数据包,但有些损坏。“消息”前面有一些符号。