TCP/UDP数据结构

来源:互联网 发布:休闲网游推荐 知乎 编辑:程序博客网 时间:2024/06/08 11:26

struct   tcp_hdr
    {
        u_int16_t   source;                
        u_int16_t   dest;                    
        u_int32_t   seq;                            
        u_int32_t   ack_seq;                 
#     if   __BYTE_ORDER   ==   __LITTLE_ENDIAN
        u_int16_t   res1:4;
        u_int16_t   doff:4;

        u_int16_t   fin:1;
        u_int16_t   syn:1;
        u_int16_t   rst:1;
        u_int16_t   psh:1;
        u_int16_t   ack:1;
        u_int16_t   urg:1;

        u_int16_t   res2:2;
#     elif   __BYTE_ORDER   ==   __BIG_ENDIAN
        u_int16_t   doff:4;
        u_int16_t   res1:4;
        u_int16_t   res2:2;

        u_int16_t   urg:1;
        u_int16_t   ack:1;
        u_int16_t   psh:1;
        u_int16_t   rst:1;
        u_int16_t   syn:1;
        u_int16_t   fin:1;
#     else
#       error   "Adjust   your   <bits/endian.h>   defines "
#     endif
        u_int16_t   window;
        u_int16_t   check;
        u_int16_t   urg_ptr;
};


struct udp_hdr
{
 u_short sport; // 源端口(Source port)
 u_short dport; // 目的端口(Destination port)
 u_short len;   // UDP数据包长度(Datagram length)
 u_short crc;   // 校验和(Checksum)
};

 

 

 

数据包:
 在应用层成为data
 在TCP层称为segment
 在IP层称为packet
 在数据链路层称为frame

原创粉丝点击