• ETHERNET数据包格式( IP & UDP & ICMP & ARP )


    ETHERNET数据包格式( IP & UDP & ICMP & ARP )

    ETHERNET数据包格式( <wbr>IP <wbr>& <wbr>UDP <wbr>& <wbr>ICMP <wbr>& <wbr>ARP <wbr>)ETHERNET数据包格式

    一、ETHERNET 数据包的协议类型 TYPE 的值为 0x0800:IP协议,即:ETHERTYPE_IP,
        该值在 /usr/include/net/ethernet.h中有定义。ETHERNET 数据包的格式又细分
        为如下几种情况:

    (1) IP 报头中的协议号码为 IPPROTO_TCP,其值为 6 。ETHERNET 数据包的格式如下:

        |<------------ Ethernet Header ---------->|
        -------------------------------------------------------------------------
        |DST MAC ADDR |SRC MAC ADDR |    TYPE     |   IP PACKET  |  TCP PACKET  |
        -------------------------------------------------------------------------
        |<- 6 bytes ->|<- 6 bytes ->|<- 2 bytes ->|<- 20 bytes ->|<- 20 bytes ->|

        如下例所示:

        00 00 21 cd a8 48 00 0a 98 1f 0a 8a 08 00 45 00
        -- -- -- -- -- -- -- -- -- -- -- -- -- --

        00 28 38 13 40 00 7e 06 85 48 a6 6f e5 87 a6 6f
                             --       -- -- -- -- -- --

        e5 0d 04 3a 01 95 bc 5d 5a 8b 25 69 20 82 50 11
        -- -- -- -- -- --

        41 87 cc 34 00 00 00 00 00 00 00 00 00 00 00 00
        -- --

        其中作如下说明:

        00 00 --- 08 00         : ETHERNET PACKET,共 14 个字节

              00 00 21 cd a8 48 : 接收方的 MAC 地址,6 个字节
              00 0a 98 1f 0a 8a : 发送方的 MAC 地址,6 个字节
              08 00             : 协议类型,2 个字节,
                                  0x0800:IP协议,该值在/usr/include/net/ethernet.h
                                                  中有定义,其值为:ETHERTYPE_IP

        45 00 --- e5 0d         : IP PACKET ,共 20 个字节

              06                : 协议类型,1 是 ICMP,6 是 TCP,17 是 UDP
              a6 6f e5 87       : 发送方 IP 地址,4 个字节,十进制:166.111.229.135
              a6 6f e5 0d       : 接收方 IP 地址,4 个字节,十进制:166.111.229.13

        04 3a --- 00 00         : TCP PACKET,共 20 个字节

              04 3a             : 发送方的端口号,2 个字节,其十进制表示为:1082
              01 95             : 接收方的端口号,2 个字节,其十进制表示为:405
              41 87             : TCP PACKET 的窗口大小

    (2) IP 报头中的协议号码为 IPPROTO_UDP,其值为 17 。ETHERNET 数据包的格式如下:

        |<------------ Ethernet Header ---------->|
        ------------------------------------------------------------------------
        |DST MAC ADDR |SRC MAC ADDR |    TYPE     |   IP PACKET  | UDP PACKET  |
        ------------------------------------------------------------------------
        |<- 6 bytes ->|<- 6 bytes ->|<- 2 bytes ->|<- 20 bytes ->|<- 8 bytes ->|

        如下例所示:

        ff ff ff ff ff ff 00 80 c8 f7 0b 99 08 00 45 00
        -- -- -- -- -- -- -- -- -- -- -- -- -- --

        00 4e 0b 46 00 00 80 11 24 ff c0 a8 44 0a c0 a8
                             --

        44 ff 00 89 00 89 00 3a fa 63 80 37 01 10 00 01
              -- -- -- -- -- -- -- --

        00 00 00 00 00 00 20 45 4e 46 44 45 49 45 50 45

        4e 45 46 43 41 43 41 43 41 43 41 43 41 43 41 43

        41 43 41 43 41 42 4c 00 00 20 00 01

        其中作如下说明:

        ETHERNET PACKET、IP PACKET 的报头格式同 (1) ,
                            其中:第二行的 11 表示 IPPROTO_UDP 协议。

        00 89 --- fa 63         : UDP PACKET,共 8 个字节

              00 89             : 发送方的端口号,2 个字节,其十进制表示为:137
              00 89             : 接收方的端口号,2 个字节,其十进制表示为:137
              00 3a             : UDP 包长度,其十进制表示为:58
              fa 63             : UDP 检查和

    (3) IP 报头中的协议号码为 IPPROTO_ICMP,其值为 1 。ETHERNET数据包的格式如下:

        |<------------ Ethernet Header ---------->|
        -------------------------------------------------------------------------
        |DST MAC ADDR |SRC MAC ADDR |    TYPE     |   IP PACKET  | ICMP PACKET |
        -------------------------------------------------------------------------
        |<- 6 bytes ->|<- 6 bytes ->|<- 2 bytes ->|<- 20 bytes ->|<- 8 bytes ->|

        如下例所示:

        00 0a 98 1f 0a 8a 00 00 21 cd a8 48 08 00 45 00

        00 54 00 00 40 00 40 01 d0 97 a6 6f f9 0d ca 70
                             --

        00 24 08 00 bc 04 1b 21 00 01 c3 e6 2b 41 3b ae
              -- -- -- -- -- -- -- --

        0b 00 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15

        16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25

        26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35

        36 37

        其中作如下说明:

        ETHERNET PACKET、IP PACKET 的报头格式同 (1) ,
                            其中:第二行的 01 表示 IPPROTO_ICMP 协议。

        08 00 --- 00 01         : ICMP PACKET,共 8 个字节

              08                : ICMP_TYPE,1 个字节。
              00                : ICMP_CODE,1 个字节。
              bc 04             : ICMP 检查和
              1b 21             : ICMP 标识
              00 01             : ICMP 数据包序列号

    二、ETHERNET 数据包的协议类型 TYPE 的值为 0x0806:ARP协议,即:ETHERTYPE_ARP,
        该值在 /usr/include/net/ethernet.h中有定义。ETHERNET 数据包的格式如下:

        |<------------ Ethernet Header ---------->|
        ------------------------------------------------------------
        |DST MAC ADDR |SRC MAC ADDR |    TYPE     | ARP 协议数据包 |
        ------------------------------------------------------------
        |<- 6 bytes ->|<- 6 bytes ->|<- 2 bytes ->|<-- 28 bytes -->|

        如下例所示:

        ff ff ff ff ff ff 00 0a 98 1f 0a 8a 08 06 00 01
        -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

        08 00 06 04 00 01 00 0a 98 1f 0a 8a a6 6f e5 01
        -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

        00 00 00 00 00 00 a6 6f e5 58 00 00 00 00 00 00
        -- -- -- -- -- -- -- -- -- --

        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

        其中作如下说明:

        ff ff --- 08 06         : ETHERNET PACKET,共 14 个字节

              ff ff ff ff ff ff : 接收方的 MAC 地址,6 个字节
              00 0a 98 1f 0a 8a : 发送方的 MAC 地址,6 个字节
              08 06             : 协议类型,2 个字节,
                                  0x0806:ARP协议,在/usr/include/net/ethernet.h
                                                 中有定义,其值为:ETHERTYPE_ARP

        00 01 --- f9 58         : ARP PACKET ,共 28 个字节

              00 01             : 硬件地址格式,2 个字节
              08 00             : 协议地址格式,2 个字节
              06                : 硬件地址长度,1 个字节
              04                : 协议地址长度,1 个字节
              00 01             : 可选项,2 个字节,0x0001:ARPOP_REQUEST,
                                                  0x0002:ARPOP_REPLY
                                  该值在 /usr/include/net/if_arp.h中有定义
              00 0a 98 1f 0a 8a : 发送方的 MAC 地址,6 个字节
              a6 6f e5 01       : 发送方的 IP 地址, 4 个字节,十进制:166.111.229.1
              00 00 00 00 00 00 : 接收方的 MAC 地址,6 个字节
              a6 6f e5 58       : 接收方的 IP 地址, 4 个字节,十进
    制:166.111.229.88
     
  • 相关阅读:
    CSS印象不深的小地方
    gulp常用插件的使用
    移动端手势库Hammer.js—增强touch事件或手势
    HTML5拖放与文件操作api,实现拖拽上传文件功能
    Less相关
    gulp使用(一)
    将博客搬至CSDN
    jquery Ajax 通过jsonp的方式跨域提交表单
    解决“The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path”问题
    使用eclipse4.5创建maven项目
  • 原文地址:https://www.cnblogs.com/the-tops/p/5674229.html
Copyright © 2020-2023  润新知