tanybin 发表于 2012-6-14 09:53:42

问一个关于网络的帧的问题?

如果两个点之间,通过网络传输,纯粹的点到点传输,都不进行MAC地址过滤,是包就收。这种情况下,我是不是可以不遵从网络帧的那种格式,完全的是数据呢。也就是说在原来网络帧的目的MAC,源MAC,长度,数据,填充等等都不按规律来,是否可以。

说实际点吧,就说帧里面的
目的MAC是:0x00,0x12,0x34,0x56,0x78,0x9a
源MAC是:0x00,0x01,0x02,0x03,0x04,0x05
长度填入:0x06,0x07
数据填入:0x08,0x09,……0x36(总共46个,这样可以无填充)
填充域:无
CRC域:硬件自动产生
请问这样的一个帧,长度的数值和实际长度不符,这样的帧,能否在我前面说的情况下发送出去,并被对方接收。

albert_w 发表于 2012-6-14 10:09:52

可以啊,这还是以太网么? 你有自己的网卡芯片/特殊驱动么? 不然,貌似搞不定

tanybin 发表于 2012-6-14 12:15:36

我只是要测试一下这个MAC的发送和接收功能正常不正常,说白了有点像串口那样,只管发送正常不正常,不管数据的具体意义。并不要他符合以太网的规则。也就是说只要检测发送的,和接收的是否匹配就可以了。所以没有按照以太网的规则来,只是发一些数据。上面的源MAC,目的MAC我也只是按照以太网帧的格式进行解析的。我就是担心MAC和PHY会不会按照以太网帧的格式来检查帧的合法性,如以上数据,按照以太网帧的格式来检查,此帧肯定是一个错误的,那此时MAC和PHY还是说不管合法性,只管发送,还是说检查合法性,拒绝发送。同理,接收时,是否也不管合法性。

mored 发表于 2012-6-15 17:03:13

可以啊,pc机上有监控网络通信的软件就是这么做的

machoe 发表于 2012-6-15 21:00:58

tanybin 发表于 2012-6-14 12:15 static/image/common/back.gif
我只是要测试一下这个MAC的发送和接收功能正常不正常,说白了有点像串口那样,只管发送正常不正常,不管数 ...

应该是可以发出去的,但如果长度域和真正的长度不一致的话,那么程序有可能会有问题,就是野指针或数组越界类问题。

tanybin 发表于 2012-6-16 09:48:08

谢谢大家。我现在明白了。我只需要知道能发出去就行了。以前我以为长度域的数值必须和实际数据负载的长度相等的。看来硬件是不做检查的,硬件只检查CRC错误。
我现在等于是把网络当串口用,发送描述符里面有数据buffer的首地址,有buffer的长度。MAC有这些信息就只管发送了,才不管buffer里面是不是一个合法的网络帧。MAC是不管buffer里面的前六个是不是目的MAC,接下来的六个是不是源MAC,然后2字节的长度,然后是数据负载。这些MAC统统认为是用户数据,只管取出来,发到网络上。
我只是两个点对点的通信,等于是自己定义了一套协议,里面各个数据的意义,只有自己知道,只不过使用了网络这种传输方式。
页: [1]
查看完整版本: 问一个关于网络的帧的问题?