解包接收到的数据后出现奇怪的协议
Strange Protocol after unpacking received data
正在建立连接。
HOST = socket.gethostbyname(socket.gethostname())
con = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
con.bind((HOST, 0))
con.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
con.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
正在接收数据。
raw_data, addr = con.recvfrom(65536)
raw_data : \x45\x00\x00\x77\x00\x00\x40\x00\x40\x11\xb4\xc0\xc0\xa8\x02...
解压原始数据。
dest, src, proto = struct.unpack('! 6s 6s H', data[:14])
目的地:\x45\x00\x00\x77\x00\x00
源代码:\x40\x00\x40\x11\xb4\xc0
原型:49320
所以我的问题是:我犯了一个明显的错误吗? 49320 是哪种以太网类型(协议)?
您是从哪里读取 IPV4 数据包定义的?
您对数据的解释完全错误!
您似乎混淆了 OSI 模型中的第 2 层(数据 link)和第 3 层(网络层)。套接字进入第 3 层。Socket raw 允许您从第 3 层读取原始数据包。
看看这些 link:
鉴于此数据:
\x45\x00\x00\x77\x00\x00\x40\x00\x40\x11\xb4\xc0\xc0\xa8\x02...
\x45 = Version (IPV4) + IHL (5 32bit ints = 20 bytes)
\x00 = DCSP (0 - best effort) + ECN (0 - Non ECN-Capable Transport, Non-ECT)
\x00\x77 = Total length (119 bytes)
\x00\x00 = Identification (0)
\x40\x00 = Flags (100 - MF - more fragments) + Fragment Offset (0)
\x40 = TTL (64 seconds)
\x11 = Protocol (UDP)
\xb4\xc0 = Header Checksum (0xb4c0)
Followed by source IP then dest IP. You haven't given these
fully so I can't decode them.
我希望这现在有意义。
正在建立连接。
HOST = socket.gethostbyname(socket.gethostname())
con = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
con.bind((HOST, 0))
con.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
con.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
正在接收数据。
raw_data, addr = con.recvfrom(65536)
raw_data : \x45\x00\x00\x77\x00\x00\x40\x00\x40\x11\xb4\xc0\xc0\xa8\x02...
解压原始数据。
dest, src, proto = struct.unpack('! 6s 6s H', data[:14])
目的地:\x45\x00\x00\x77\x00\x00
源代码:\x40\x00\x40\x11\xb4\xc0
原型:49320
所以我的问题是:我犯了一个明显的错误吗? 49320 是哪种以太网类型(协议)?
您是从哪里读取 IPV4 数据包定义的?
您对数据的解释完全错误!
您似乎混淆了 OSI 模型中的第 2 层(数据 link)和第 3 层(网络层)。套接字进入第 3 层。Socket raw 允许您从第 3 层读取原始数据包。
看看这些 link:
鉴于此数据:
\x45\x00\x00\x77\x00\x00\x40\x00\x40\x11\xb4\xc0\xc0\xa8\x02...
\x45 = Version (IPV4) + IHL (5 32bit ints = 20 bytes)
\x00 = DCSP (0 - best effort) + ECN (0 - Non ECN-Capable Transport, Non-ECT)
\x00\x77 = Total length (119 bytes)
\x00\x00 = Identification (0)
\x40\x00 = Flags (100 - MF - more fragments) + Fragment Offset (0)
\x40 = TTL (64 seconds)
\x11 = Protocol (UDP)
\xb4\xc0 = Header Checksum (0xb4c0)
Followed by source IP then dest IP. You haven't given these
fully so I can't decode them.
我希望这现在有意义。