阅读:2158回复:19
怎么判断包类型
我对于一点问题比较迷惑。
我已经将Packet的数据信息输出发现并不是所有数据包的以太帧之后都跟随IP包。在这样的情况下。我怎么判断是否是IP包呢? |
|
最新喜欢:![]() |
沙发#
发布于:2002-05-30 17:52
这个应该去翻tcpip的书吧.
|
|
|
板凳#
发布于:2002-05-31 21:20
分析报头结构?
我想应该是这样吧 |
|
地板#
发布于:2002-05-31 21:32
0x0800 == Ethernet->type
|
|
|
地下室#
发布于:2002-06-01 15:15
#define ETH_ALEN 6 /* Octets in one ethernet addr */
#define ETH_P_LOOP 0x0060 /* Ethernet Loopback packet */ #define ETH_P_ECHO 0x0200 /* Ethernet Echo packet */ #define ETH_P_PUP 0x0400 /* Xerox PUP packet */ #define ETH_P_IP 0x0800 /* Internet Protocol packet */ #define ETH_P_X25 0x0805 /* CCITT X.25 */ #define ETH_P_ARP 0x0806 /* Address Resolution packet */ #define ETH_P_BPQ 0x08FF /* G8BPQ AX.25 Ethernet Packet [ NOT AN OFFICIALLY REGISTERED ID ] */ #define ETH_P_DEC 0x6000 /* DEC Assigned proto */ #define ETH_P_DNA_DL 0x6001 /* DEC DNA Dump/Load */ #define ETH_P_DNA_RC 0x6002 /* DEC DNA Remote Console */ #define ETH_P_DNA_RT 0x6003 /* DEC DNA Routing */ #define ETH_P_LAT 0x6004 /* DEC LAT */ #define ETH_P_DIAG 0x6005 /* DEC Diagnostics */ #define ETH_P_CUST 0x6006 /* DEC Customer use */ #define ETH_P_SCA 0x6007 /* DEC Systems Comms Arch */ #define ETH_P_RARP 0x8035 /* Reverse Addr Res packet */ #define ETH_P_ATALK 0x809B /* Appletalk DDP */ #define ETH_P_AARP 0x80F3 /* Appletalk AARP */ #define ETH_P_IPX 0x8137 /* IPX over DIX */ #define ETH_P_IPV6 0x86DD /* IPv6 over bluebook */ typedef struct ethhdr { unsigned char h_dest[ETH_ALEN]; /* destination eth addr */ unsigned char h_source[ETH_ALEN]; /* source ether addr */ unsigned short h_proto; /* packet type ID field */ }ETHHDR,*PETHHDR; |
|
|
5楼#
发布于:2002-06-03 09:19
搞定了,多谢各位大侠
|
|
6楼#
发布于:2002-06-03 09:54
但是发现一个问题,在包内的数据不是倒顺排列的。比如IP的proto是0x0800,在内存中不是0008而是0800。如果是这样的话。我自己将地址指针赋给eth头结构就会有问题。请问一下是这样的么。
|
|
7楼#
发布于:2002-06-03 10:04
这个是我调试用的数据图,已经用黑框框出来了
|
|
8楼#
发布于:2002-06-03 10:13
但是发现一个问题,在包内的数据不是倒顺排列的。比如IP的proto是0x0800,在内存中不是0008而是0800。如果是这样的话。我自己将地址指针赋给eth头结构就会有问题。请问一下是这样的么。 是这样的网络顺序和MOTOROLA格式一至的。高位在前低位在后的。 至于你后面一个问题我没看懂,能说清楚点。 |
|
|
9楼#
发布于:2002-06-03 10:19
不好意思,其实是一个问题。后一个我把内存图输出了。谢谢。
|
|
10楼#
发布于:2002-06-03 10:39
1。你的内存图是用什么工具?
2。在哪里看的? 3。用的什么命令? 4。其他一些可能与这有关的环境。 不知道你是怎么做的的话,可能搞不请你在问什么。 |
|
|
11楼#
发布于:2002-06-03 10:43
1。你的内存图是用什么工具? 关注!!! |
|
|
12楼#
发布于:2002-06-03 10:46
这个内存图是我做的一个看包信息的工具,现在还只能用DriverMonitor看。输出的信息是我机器上以太包的信息。我正在对该信息做研究。据了解整个以太网中的包只要经过我的计算机我网卡就可以收到。我想通过一个工具知道所有同事看了什么网(IP地址)。
|
|
13楼#
发布于:2002-06-03 10:50
问题出在你的工具上。你用softice 再看一遍内存可能就明白了。祝你好运!
|
|
|
14楼#
发布于:2002-06-04 12:40
我看了,packet的virtual address的内容和我输出的一样。
|
|
15楼#
发布于:2002-06-04 12:44
1。你的内存图是用什么工具? 2。在哪里看的? 3。用的什么命令? |
|
|
16楼#
发布于:2002-06-04 12:47
在程序中放一个断点,然后从packet从取得buffer从buffer取得virtual address.然后用d命令看这个地址的内容。
|
|
17楼#
发布于:2002-06-04 12:51
忘记说了是Softice中看到的信息和我的程序是一致的。不知道正确的应该是怎样的。楼上的能否贴一张内存图,让小弟看看。
|
|
18楼#
发布于:2002-06-04 15:43
对于高位在前低位在后的内存字节能否通过一个简单的 pEthHdr = address 来实现? 请高手帮忙。
|
|
19楼#
发布于:2002-06-07 10:20
对于高位在前低位在后的内存字节能否通过一个简单的 pEthHdr = address 来实现? 请高手帮忙。 使用强制类型转换不是不可以,但是在little-endian环境下需要注意字节序的问题。 |
|