楼上说的很正确。TCP、IP和以太网是在三个个不同的层级,他们的作用不同。
如果要走TCP/IP,主机A和B都要遵守TCP/IP的规则。如果要走MAC地址,却用TCP/IP规则,怎么能通信成功呢?当然可以只用MAC地址来通信了,以太网就是利用MAC地址来区分主机的。题主不知道是如何用MAC地址来通信的?使用socket还是什么的?如果用socket话,在创建socket的时候,不是要指明协议吗?
从上图来看,即使在局域网中两台主机A和B,如果A和B之间需要用TCP/IP协议簇来通信,A发送的数据需要加上TCP报文头、IP报文头、以太网报文头,然后数据就被发送出去了。你要使用MAC地址来通信,是可以的。但是你使用的是TCP/IP协议簇,A发送的是数据是走的TCP/IP,B要获取数据也要走TCP/IP。
假设A在北京,B在武汉,A要给B寄一份信,地址上写了武汉市XX区XX路XX小区XX楼,那么信是可以送到武汉市XX区XX路XX小区的。但是XX小区还是有楼号、单元号和楼层号的。B还是收不到信。这里XX市XX区XX路XX小区可以看做是IP地址,因为它是全国唯一的,同时这个地址是整个小区统一使用的,邮局可以看做TCP/IP协议簇。邮局可以很轻易的把信送到这个小区来。此时如果小区有传达室,看门大爷看到信上B的名字就知道这封信是哪个楼、哪个单元和哪个楼层了。只就相当于以太网了。
如果A和B在同一个小区,不用写XX市XX区XX路XX小区,把信给小区的传达室,看门大爷只要知道信上的名字就可以把信送到B的手中了,因为没有走邮局,只是在本小区。