You can use raw socket programming to exchange packets on low level using
Ethernet protocol.
Ethernet use a binary address unique for each comm card made of 6 octects named MAC, that is the short for Media Access Control address, a hardware address that uniquely identifies each node of a network under IEEE-802 networks (MAC sublayer of OSI Data Link Control (DLC) layer).
Use of raw socket is restricted because of the possibility to intercept and/or modify comm packets. For this reason under linux raw sockets are allowed only as superuser (root), and under Windows raw sockets are disabled since XP-SP2. To use them you need a special driver code like
winpcap[
^].
Just google for around for ethernet comm or raw sockets and you'll find some info.
Just 2 sites:
Raw socket programming on windows with winsock[
^] and
RAW ethernet[
^]