tcpdump mailing list archives
Re: packets captured with
From: d00fy <d00fy () 163 com>
Date: Tue, 17 Nov 2009 13:05:02 +0800 (CST)
thanks for your help. Now I know what the header means. 在2009-11-17,"Guy Harris" <guy () alum mit edu> 写道:
On Nov 15, 2009, at 11:56 PM, d00fy wrote:hi all, recently I captured packets from ethernet with libpcap, I found out that packets which were caputred with pcap_open_live("any", ...)seem like strange, there are two bytes new at mac headerThere is no MAC header for packets captured on the "any" device. There is no guarantee that, if you capture from an arbitrary device, the packet will begin with an Ethernet header. In order to properly inspect packets captured with libpcap, or read from a savefile with libpcap, you must call pcap_datalink() on the pcap_t, and use the result to determine what type of header the packets begin with. DLT_EN10MB means an Ethernet header (the "10MB" is historical - that value is used for all versions of Ethernet, from 10MB/s to 10GB/s; the "10MB" distinguishes regualr Ethernet from the old 3MB "experimental" Ethernet, which used a different header). The header type for the "any" device is DLT_LINUX_SLL. If pcap_datalink() returns DLT_LINUX_SLL, then the packet begins with a header that contains, in order: a 2-byte "packet type", in network byte order, which is one of: 0 packet was sent to us by somebody else 1 packet was broadcast by somebody else 2 packet was multicast, but not broadcast, by somebody else 3 packet was sent by somebody else to somebody else 4 packet was sent by us a 2-byte field, in network byte order, containing a Linux ARPHRD_ value for the link-layer device type; a 2-byte field, in network byte order, containing the length of the link-layer address of the sender of the packet (which could be 0); an 8-byte field containing that number of bytes of the link-layer address of the sender (if there are more than 8 bytes, only the first 8 are present); a 2-byte field containing the Ethernet protocol type for the packet, in network byte order, or containing 1 for Novell 802.3 frames without an 802.2 LLC header or 4 for frames beginning with an 802.2 LLC header.for instance: 00 00Packet type - 0, meaning that the packet was sent to your machine.00 01Linux ARPHRD_ value - it's network byte order, i.e. big-endian, so that's 1, i.e. ARPHRD_ETHER, so that *particular* frame happened to come from an Ethernet device.00 06Length of the link-layer address of the sender of the packet - it's network byte order, so that's 6 bytes.00 1e c9 56 f8 a2Link-layer address of the sender = 00:1e:c9:56:f8:a2f1 00Padding - the address field is 8 bytes long in the header, so a 6-byte address has to be padded to 8 bytes.08 00Ethernet protocol type for the packet - it's network byte order, so it's 0x0800, i.e. IPv4. - This is the tcpdump-workers list. Visit https://cod.sandelman.ca/ to unsubscribe.
- This is the tcpdump-workers list. Visit https://cod.sandelman.ca/ to unsubscribe.
Current thread:
- packets captured with pcap_open_live("any", ...) seem like strange d00fy (Nov 16)
- Re: packets captured with pcap_open_live("any", rh (Nov 16)
- Re: packets captured with pcap_open_live("any", ...) seem like strange Guy Harris (Nov 16)
- Re: packets captured with d00fy (Nov 16)