簡體   English   中英

用POX創建TCP數據包

[英]Creating TCP packet with POX

我正在嘗試使用POX控制器創建TCP數據包並將其發送到其中一台交換機。

這是創建數據包的方式:

        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捕獲流量,我看到了該數據包(用OF數據包包裝),但是Wireshark警告說TCP報頭為零。

這確實是標題的問題,如果可以的話我該如何解決?

謝謝

問題是尚未設置數據偏移量字段。 因為,TCP數據包的最小標頭長度是5個32位字(20個字節),因此標頭中沒有設置任何選項。 因此,為了解決此問題,我必須添加:

tcp_packet.off = 5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM