开发者

Have problem printing source mac address in linux [closed]

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center. Closed 11 years ago.

etherheader points to the header of ether packet as its name implies开发者_运维知识库:

    printf("Source MAC address: "
           "%02x:%02x:%02x:%02x:%02x:%02x\n",
           etherheader[0],etherheader[1],etherheader[2],
           etherheader[3],etherheader[4],etherheader[5]);

struct ether_header {
    u_int8_t ether_dhost[6];
    u_int8_t ether_shost[6];
    u_int16_t ether_type;
}

It turns out the above code always prints:

Source MAC address: 40:40:8d:40:b8:f4

What's wrong?

UPDATE

Destination MAC address: 40:40:8d:40:b8:f4
Source MAC address: 88:43:e1:7c:46:7f
Source host 123.126.50.73
Dest host *.*.27.*
----------
Destination MAC address: 40:40:8d:40:b8:f4
Source MAC address: 88:43:e1:7c:46:7f
Source host 114.62.80.83
Dest host *.*.27.*


Ethernet is a protocol (suite) for Local Area Networks. If your machine is statically connected, point-to-point, to a single router/switch which provides it with internet access, then this is where all your incoming packets originate from (the last hop, for your ingress traffic). This means that regardless what IP on the internet you're trying to establish IP communication with, all packets will traverse the link between your machine and your router/switch (through Ethernet).

If you are connected to a single network element, and neither your nor its network configuration changes, MAC addresses for those two machines (network cards, to be more precise) will remain the same. This behaviour seems to be what you're observing.


If packets originate from outside the broadcast domain (AKA subnet) of the destination then the source MAC address will always be that of the router that provides the gateway into that broadcast domain. Although 40:40:8d doesn't appear to be a valid OUI (see http://standards.ieee.org/develop/regauth/oui/oui.txt) so maybe there is just a programming error.

88:43:e1 is an OUI from Cisco, which lends some weight to the above paragraph being an explanation of why the source MAC address does not change.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜