Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 以太网类型0x0101不适用于原始套接字_C_Linux_Sockets_Raw Ethernet - Fatal编程技术网

C 以太网类型0x0101不适用于原始套接字

C 以太网类型0x0101不适用于原始套接字,c,linux,sockets,raw-ethernet,C,Linux,Sockets,Raw Ethernet,我试图发送一个以太网类型为0x0101的原始数据包,但它似乎不工作,如果我使用以太网类型0x1000,它工作正常。 基本上,我打开一个原始套接字: int sd = socket(AF_PACKET, SOCK_RAW | SOCK_CLOEXEC, htons(0x0101)); int r = sendmsg(sd, msgSend, 0); 因此与以太网类型0101-01FF是实验性的,所以我的理解可以用于实验 如果使用0x0101 tcpdump,则显示: 00:00:01.00191

我试图发送一个以太网类型为0x0101的原始数据包,但它似乎不工作,如果我使用以太网类型0x1000,它工作正常。 基本上,我打开一个原始套接字:

int sd = socket(AF_PACKET, SOCK_RAW | SOCK_CLOEXEC, htons(0x0101));
int r = sendmsg(sd, msgSend, 0);
因此与以太网类型0101-01FF是实验性的,所以我的理解可以用于实验

如果使用0x0101 tcpdump,则显示:

00:00:01.001914 aa:00:00:2e:00:02 > 08:00:27:0b:ed:84, 802.3, length 257: LLC, dsap Null (0x00) Individual, ssap Null (0x00) Command, ctrl 0x0000: Information, send s0
        0x0000:  0000 0000 efbe adde aaaa db00 0000 0000  ................                                                                                              
        0x0010:  0000 0000 0000 0000 0000 0000 0000 0000  ................                                                                                              
        0x0020:  0000 0000 0000 0000 0000 0000 0000 0000  ................                                                                                              
        0x0030:  0000
当我使用0x1000时,显示:

00:00:00.439876 aa:00:00:2e:00:02 > 08:00:27:0b:ed:84, ethertype Trail (0x1000), length 64:                                                                            
        0x0000:  0000 0000 efbe adde aaaa db00 0000 0000  ................                                                                                              
        0x0010:  0000 0000 0000 0000 0000 0000 0000 0000  ................                                                                                              
        0x0020:  0000 0000 0000 0000 0000 0000 0000 0000  ................                                                                                              
        0x0030:  0000 

我遗漏了什么?

Tcpdump将此位置的值
0x0101
解释为以太网帧长度

小于0x600(1536十进制)的值假定为帧长度(解析为帧类型IEEE 802.2 LLC),而不是下一个协议id(解析为帧类型Ethernet II)

这里您可以看到,tcpdump确实将0x101(257十进制)解释为长度:

00:00:01.001914 aa:00:00:2e:00:02>08:00:27:0b:ed:84802.3,长度257:LLC,dsap Null(0x00)个人,ssap Null(0x00)命令,ctrl 0x0000:信息,发送s0

但你们的框架应该按照你们的预期正确地安装在电线上