zoukankan      html  css  js  c++  java
  • Ethernet IP TCP UDP 协议头部格式

    The Ethernet header structure is shown in the illustration below:

    以太网头部14 bytes

    Destination
    Source
    Len
    Data unit + pad
    FCS
    (6 bytes)
    (6 bytes)
    (2)
    (46-1500 bytes)
    (4 bytes)
    Ethernet header structure

    The IP header structure is as follows:

    IP头部20 bytes

    4
    8
    16
    32 bits
    Ver.
    IHL
    Type of service
    Total length
    Identification
    Flags
    Fragment offset
    Time to live
    Protocol
    Header checksum
    Source address
    Destination address
    Option + Padding
    Data
    IP header structure

    The TCP header structure is as follows:

    TCP头部20 bytes

    16
    32 bits
    Source port
    Destination port
    Sequence number
    Acknowledgement number
    Offset
    Resrvd
    U
    A
    P
    R
    S
    F
    Window
    Checksum
    Urgent pointer
    Option + Padding
    Data
    TCP header structure

    The UDP header structure is shown as follows:

    UDP头部8 bytes

    16
    32 bits
    Source port
    Destination port
    Length
    Checksum

    Data
    UDP header structure

    一些协议头部的定义:

    struct ip 
    {
    #if BYTE_ORDER == LITTLE_ENDIAN
        u_char    ip_hl:4,        /* header length */
                  ip_v:4;            /* version */
    #endif
    #if BYTE_ORDER == BIG_ENDIAN
        u_char    ip_v:4,            /* version */
                  ip_hl:4;        /* header length */
    #endif
        u_char    ip_tos;            /* type of service */
        short    ip_len;            /* total length */
        u_short    ip_id;            /* identification */
        short    ip_off;            /* fragment offset field */
        u_char    ip_ttl;            /* time to live */
        u_char    ip_p;            /* protocol */
        u_short    ip_sum;            /* checksum */
        struct    in_addr ip_src,ip_dst;    /* source and dest address */
    };
    
    struct udphdr 
    {
        u_short    uh_sport;        /* source port */
        u_short    uh_dport;        /* destination port */
        short    uh_ulen;        /* udp length */
        u_short    uh_sum;            /* udp checksum */
    };
    
    struct tcphdr 
    {
        u_short    th_sport;        /* source port */
        u_short    th_dport;        /* destination port */
        tcp_seq    th_seq;            /* sequence number */
        tcp_seq    th_ack;            /* acknowledgement number */
    #if BYTE_ORDER == LITTLE_ENDIAN
        u_char    th_x2:4,        /* (unused) */
                  th_off:4;        /* data offset */
    #endif
    #if BYTE_ORDER == BIG_ENDIAN
        u_char    th_off:4,        /* data offset */
                  th_x2:4;        /* (unused) */
    #endif
        u_char    th_flags;
        u_short    th_win;            /* window */
        u_short    th_sum;            /* checksum */
        u_short    th_urp;            /* urgent pointer */
    };

    更多网络协议格式细节参考:http://www.protocols.com/pbook/

  • 相关阅读:
    Java swing 代码例子
    MySql
    swing 下拉菜单
    uiautomator2.0的配置的两种方法
    【Java】边框总结
    Java可视操作界面例子
    Java多线程例子
    使用Java让android手机自动执行重复重启
    形参的一种特殊写法
    this 基础使用方法
  • 原文地址:https://www.cnblogs.com/luxiaoxun/p/2628627.html
Copyright © 2011-2022 走看看