精华内容
下载资源
问答
  • 如题,用winpcap编程发送数据包要有以太网头,但是这个以太网头内有源mac地址目的mac地址和协议号,那么目的mac地址怎么写?是全写0xff吗?
  • 【以太网数据结构】以太网头部

    千次阅读 2015-11-24 17:14:03
    以太网目的地址和源地址各占6个字节,该地址即平常所说的网卡的MAC。每个网卡在全球拥有唯一的MAC! 在地址后面有两个字节表示类型,如:0800表示此真数据是IP数据,0806表示ARP请求。后面博客会针对讲解。 类型...

    以太网封包格式如图所示:
    以太网封包格式如图所示


    以太网目的地址和源地址各占6个字节,该地址即平常所说的网卡的MAC。每个网卡在全球拥有唯一的MAC!

    在地址后面有两个字节表示类型,如:0800表示此真数据是IP数据,0806表示ARP请求。后面博客会针对讲解。

    类型字段之后是数据,对于以太网,数据段大小为46-1500字节,不足46字节的数据将被自动补足到46字节。如ARP协议的数据格式为28字节,为了符合规范,其后被填充了18个字节以达到最少46字节的要求。

    CRC字段用于对帧内数据进行校验,保证数据传输的正确性,通常是硬件实现的。

    以太网数据包格式较为简单,简述到此!
    最后留一个问题,以太网数据包在网络中最终传输到目的地是用的IP来寻址还是MAC来寻址?(想一想,如果只是没有目的地IP,数据会准确的送达到目的地吗?倘若只是没有MAC呢?)


    在局域网内,协议栈根据MAC来精确的将数据送达到指定网卡,而在广域网中,数据在网际中肆意穿梭,直到到达目的IP(当然,数据包有生存时间的限制,以防止数据包在网络中无限循环下去)


    相关源代码
    在linux/if_ether.h文件中,以太网包头结构体定义如下:

    #define ETH_ALEN 6
    struct ethhdr {
        unsigned char   h_dest[ETH_ALEN];   /* destination eth addr */
        unsigned char   h_source[ETH_ALEN]; /* source ether addr    */
        __be16      h_proto;        /* packet type ID field */
    } __attribute__((packed)); //packed属性:使用该属性可以使得变量或者结构体成员使用最小的对齐方式,即对变量是一字节对齐,对域(field)是位对齐。
    

    获取以太网包头函数(提示:测试该函数返回值不为空后再使用)

    static inline struct ethhdr *eth_hdr(const struct sk_buff *skb)
    {
        return (struct ethhdr *)skb_mac_header(skb);
    }
    展开全文
  • ARP数据包结构:(看不清可将图片放大查看) 为什么有ARP? 在以太网为基础的局域网中,每个网络接口都有一个硬件地址,即MAC。...ARP穿着一件外套——以太网头部,此时以太网头部目的地址为ff ff ff ff

    ARP数据包结构:(看不清可将图片放大查看)
    这里写图片描述


    为什么有ARP?
    在以太网为基础的局域网中,每个网络接口都有一个硬件地址,即MAC。在局域网中必须知道网络设备的硬件地址才能向目的主机发送数据,而在广域网中数据传输的目的地址是IP地址
    要保证数据准确的传输到目的地必须建立IP地址和硬件地址的映射关系,所以有了ARP。

    ARP穿着一件外套——以太网头部,此时以太网头部目的地址为ff ff ff ff ff ff,帧类型为0x0806。
    ARP协议结构字段解释:
    1. 硬件类型表示硬件地址类型,值为1表示以太网硬件地址
    2. 协议类型表示硬件地址的类型,值为0x0800表示询问IP地址
    3. 硬件地址长度,表示硬件地址以字节为单位的长度,MAC地址占6字节,此处填6
    4. 协议地址长度,表示协议地址以字节为单位的长度,不用说,IP地址占4个字节,此处填4
    5. 操作方式字段为本次操作的类型,可选方式见下表:

    含义
    1ARP请求
    2ARP应答
    3RARP请求
    4RARP应答

    6. 剩下的四个字段分别为发送方和接收方的MAC和IP


    相关源代码
    在linux/if_arp.h中,arp数据包头结构体定义如下:

    struct arphdr {
        __be16      ar_hrd;     /* format of hardware address   */
        __be16      ar_pro;     /* format of protocol address   */
        unsigned char   ar_hln;     /* length of hardware address   */
        unsigned char   ar_pln;     /* length of protocol address   */
        __be16      ar_op;      /* ARP opcode (command)     */
    
    #if 0
         /*
          *  Ethernet looks like this : This bit is variable sized however...
          */
        unsigned char       ar_sha[ETH_ALEN];   /* sender hardware address  */
        unsigned char       ar_sip[4];      /* sender IP address        */
        unsigned char       ar_tha[ETH_ALEN];   /* target hardware address  */
        unsigned char       ar_tip[4];      /* target IP address        */
    #endif
    
    };

    获取arp包头指针函数:

    static inline struct arphdr *arp_hdr(const struct sk_buff *skb)
    {
        return (struct arphdr *)skb_network_header(skb);
    }

    wireshark抓包实例:
    ARP抓包实例

    展开全文
  • 以太网帧的目的地址从哪里来?

    千次阅读 2020-01-04 13:34:02
    以太网帧头有目的地址和源地址,源地址可以通过获取本机的mac地址填写即可,可是,目的地址从哪里获取呢?

    以太网帧头有目的地址和源地址,源地址可以通过获取本机的mac地址填写即可,可是,目的地址从哪里获取呢?
    mac地址获取使用ARP协议,参考添加链接描述

    展开全文
  • 以太网 IP TCP UDP 头部

    千次阅读 2017-11-03 15:37:39
    以太网头部结构 1、目的地址/源地址:目的主机或源主机的MAC地址 2、类型: 0800:IP数据报 0806:ARP请求 3、数据: 不足46字节的数据会被补足到46字节再发送。 4、内核数据结构 #define ETH_ALEN 6 struct ...

    以太网头部结构


    1、目的地址/源地址:目的主机或源主机的MAC地址

    2、类型:

    0800:IP数据报

    0806:ARP请求

    3、数据:

    不足46字节的数据会被补足到46字节再发送。

    4、内核数据结构

    #define ETH_ALEN 6
    struct ethhdr {
    	unsigned char	h_dest[ETH_ALEN];	/* destination eth addr	*/
    	unsigned char	h_source[ETH_ALEN];	/* source ether addr	*/
    	__be16		h_proto;		/* packet type ID field	*/
    } __attribute__((packed));
    



    IP头部结构

    1、版本:指定IP协议的版本号

    2、首部长度:IP协议首部的长度

    因为有一个可选项,所以IP首部的长度不是固定值;

    单位长度是4个字节;

    IPv4 首部的最小长度是20个字节(首部长度值为5),最大长度是24个字节(首部长度为6)。

    总长度:IP包的总长度(首部+数据部分)

    内核数据结构

    struct iphdr {
    #if defined(__LITTLE_ENDIAN_BITFIELD)
    	__u8	ihl:4,
    		version:4;
    #elif defined (__BIG_ENDIAN_BITFIELD)
    	__u8	version:4,
      		ihl:4;
    #else
    #error	"Please fix <asm/byteorder.h>"
    #endif
    	__u8	tos;
    	__be16	tot_len;
    	__be16	id;
    	__be16	frag_off;
    	__u8	ttl;
    	__u8	protocol;
    	__sum16	check;
    	__be32	saddr;
    	__be32	daddr;
    	/*The options start here. */
    };
    


    UDP 头部结构(8个字节)

    内核数据结构

    struct udphdr {
    	__be16	source;
    	__be16	dest;
    	__be16	len;
    	__sum16	check;
    };
    typedef __u16 __bitwise __sum16;






    展开全文
  • 有些arp请求报文中为什么会有目的mac地址(不使用广播地址)最近做实验,注意到局域网内大部分的arp包的以太网头部目的mac地址并不是广播地址,并且包内的目的mac地址字段并不是全0,而是目的ip对应的mac地址(显然,此...
  • 以太网

    2021-03-07 13:47:52
    IEEE 802.11——无线以太网 IEEE 802.2——逻辑链路控制 IEEE 802.3——带冲突检测的载波侦听多路访问协议CSMA/CD(半双工以太网) 终端之间的通信 MAC:介质接入控制地址 二层以太接口的物理地址,通常不可改变。...
  • 以太网,IP, TCP, UDP头部格式

    万次阅读 2017-04-26 11:29:28
    1.以太网帧的格式 以太网封装格式 2.IP报头格式  IP是TCP/IP协议簇中最为重要的协议。所有的TCP,UDP, ICMP和IGMP数据都以IP数据报格式传输。IP提供的是不可靠、无连接的协议。  普通的IP首部长为20个字节,除非...
  • 以太网帧格式

    千次阅读 2017-09-10 11:15:29
    以太网帧由前导码和帧起始符组成起始部分,后面即是以太网头部,中部则是该帧负载的其他协议数据包。以太网帧以1个32位的冗余校验码j结尾,用于检测数据传输是否被损坏。802.3以太网帧结构(以mtu为1500说明) 前导码...
  • 以太网数据格式前导码目的地址源地址类型数据FCS最小的数据帧是多少字节? MAC地址 每个网卡或三层网口都有一个MAC地址,MAC地址是烧录到硬件上,因此也叫硬件地址。MAC地址作为数据链路设备的地址标识符,需要保证...
  • 以太网交换

    2019-08-17 00:28:56
    理解MAC地址的基本概念及用途 熟悉以太网数据帧结构 学会查看MAC地址白哦 理解二层交换机的基本工作原理 8.1二层交换基础 我们在生活中所见的局域网几乎均以以太网技术实现,以太网交换机是非常重要及基础的网络设备...
  • 以太网

    千次阅读 2018-05-20 20:46:59
     以太网帧(Ethernet frame)是符合以太网标准的链路层协议数据单元(PDU),其格式有Ethernet V1、Ethernet V2、RAW 802.3、IEEE 802.3/802.2 LLC和IEEE 802.3/802.2SNAP。现在大多数网络应用都使用Ethernet V2...
  • 网络·以太网

    2021-10-13 19:16:54
    以太网帧有前导码、帧首定界符、以太网头部、数据、校验和组成,其中前导码、帧首定界符是物理层封装的。 2、格式 前导码:调整时钟,使目的主机接收器时钟与源主机发送器时钟同步。由二进制10交替组成。帧首...
  • 所谓路由就是当一台路由器(或其他三层设备)收到一个IP数据包时,路由器查看IP数据包的IP头部,将IP头部中的目的IP地址拿到路由表中进行查找,找到匹配的条目后,依照条目所指示的下一跳IP地址及出接口信息将数据包...
  • 1.1:以太网是实现LAN的一种技术,它允许嵌入式系统连接到一个LAN中,并可通过使用网关经Internet连接到外部世界,以太网的主要目的是向LAN发送和从LAN接收以太网帧,在TCP/IP协议族中,不包括以太网协议,可以理解...
  • 以太网实现

    2014-11-26 13:20:26
    以太网头部为14字节,6字节源地址,6字节目的地址,2字节类型域。它的定义如下: [ include/uapi/linux/if_ether.h ] /* * This is an Ethernet frame header. * ETH_ALEN = 6 */ struct ethhdr { unsigned ...
  • 以太网原理

    千次阅读 2018-10-31 15:16:38
    目录 以太网协议工作原理 以太网访问特征 CSMA/CD 小总结 以太网帧 IP报文格式 以太网协议工作原理 ...以太网访问特征 ... 共享介质信道,公平的保障信道上的工作站均能控制信道发送...:标识IP数据报的目的地址
  • 以太网基础

    2008-05-10 11:53:00
    是一种著名的,使用方便的,应用总线拓扑的网络技术。...以太网的帧格式见图(a),以太网头部包括四个域:64位前同步码,两个48位地址,第四个帧包含一个帧地址的类型。以太网使用总线拓扑所以它要求堕
  • 以太网帧结构详解

    万次阅读 多人点赞 2019-07-15 21:52:59
    以太网帧结构详解前言分层模型- OSI分层模型– TCP/IP数据封装终端之间的通信帧格式Ethernet_II 帧格式IEEE802.3 帧格式数据帧传输以太网的MAC地址数据帧的发送和接收单播广播组播发送与接收 前言 20世纪60年代以来...
  • 以太网帧和一些标准

    2021-01-13 09:22:33
    以太网帧的目的地址也允许寻址到多个站点(广播或组播) 源地址的后面跟着一个类型字段,或者长度字段,在多数情况下,它用于确定头部后面的数据类型。 TCP/IP网络常用的值IPv4(0x0800) ,IPv6(0x86DD) , ARP
  • 以太网以及ARP协议

    2018-12-25 15:35:15
    目的地址和源地址是6字节48位的mac地址,mac地址是用来识别链路层中相连的节点,也叫网卡的硬件地址,这个地址一般在网卡出厂时就固定了,不能修改(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡⽀...
  • 以太网头部---14字节 45 00 00 29 77 51 40 00 40 06 00 00 0a 00 02 0f 8c cd da 0e ------>IP协议头部---20字节 6f 2c 01 bb 7d 3d c8 c1 00 db 9e 72 50 10 f5 b0 73 06 00 00 ------>TCP协议头部--20字节 ...
  • 以太网数据结构】IP协议

    千次阅读 2015-10-12 21:14:37
    寻址:根据子网划分IP地址,发现正确的目的主机地址 路由选择:选择数据在互联网上的传送路径 数据报文的分段:当传送的数据大于MTU时,将数据进行分段发送和接收并组装 协议字段解释: 版本:IP协议版本号,...
  • 三、mac头部 四、何为以太网 1.以太网的定义 2.如何收发以太网包 3.以太网接收网络包详细 4.收到网络包后,协议如何工作 一、以太网包 TCP 模块在执行连接、收发、断开等各阶段操作时,都需要委托 IP 模块...
  • 认识以太网与ARP协议

    2021-04-20 19:37:28
    文章目录什么是以太网以太网帧格式认识MAC地址对比理解MAC地址和IP地址认识MTUARP协议 什么是以太网? “以太网” 不是一种具体的网络, 而是一种技术标准;...源地址和目的地址是指网卡的硬件地址(也叫M
  • 以太网与 TCP/IP

    2020-06-12 11:29:17
    以太网(Ethernet) ...通信数据流被切分并打包成帧(Frame)来发送,每帧都包含来源节点和目的节点的 MAC 地址。 网段(Network Segment) 中继器,集线器是和网线一样工作在物理层的硬件设备。被它们连接在一起的部分

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,340
精华内容 4,936
关键字:

以太网头部目的地址