TCP/IP头部结构体

// i386 is little_endian.   
#ifndef LITTLE_ENDIAN   
#define LITTLE_ENDIAN   (1)   //BYTE ORDER   
#else   
#error Redefine LITTLE_ORDER   
#endif   

//Mac头部,总长度14字节   
typedef struct _eth_hdr  
{  
    unsigned char dstmac[6]; //目标mac地址   
    unsigned char srcmac[6]; //源mac地址   
    unsigned short eth_type; //以太网类型   
}eth_hdr;  

//IP头部,总长度20字节   
typedef struct _ip_hdr  
{  
    #if LITTLE_ENDIAN   
    unsigned char ihl:4;     //首部长度   
    unsigned char version:4, //版本    
    #else   
    unsigned char version:4, //版本   
    unsigned char ihl:4;     //首部长度   
    #endif   
    unsigned char tos;       //服务类型   
    unsigned short tot_len;  //总长度   
    unsigned short id;       //标志   
    unsigned short frag_off; //分片偏移   
    unsigned char ttl;       //生存时间   
    unsigned char protocol;  //协议   
    unsigned short chk_sum;  //检验和   
    struct in_addr srcaddr;  //源IP地址   
    struct in_addr dstaddr;  //目的IP地址   
}ip_hdr;  

//TCP头部,总长度20字节   
typedef struct _tcp_hdr  
{  
    unsigned short src_port;    //源端口号   
    unsigned short dst_port;    //目的端口号   
    unsigned int seq_no;        //序列号   
    unsigned int ack_no;        //确认号   
    #if LITTLE_ENDIAN   
    unsigned char reserved_1:4; //保留6位中的4位首部长度   
    unsigned char thl:4;        //tcp头部长度   
    unsigned char flag:6;       //6位标志   
    unsigned char reseverd_2:2; //保留6位中的2位   
    #else   
    unsigned char thl:4;        //tcp头部长度   
    unsigned char reserved_1:4; //保留6位中的4位首部长度   
    unsigned char reseverd_2:2; //保留6位中的2位   
    unsigned char flag:6;       //6位标志    
    #endif   
    unsigned short wnd_size;    //16位窗口大小   
    unsigned short chk_sum;     //16位TCP检验和   
    unsigned short urgt_p;      //16为紧急指针   
}tcp_hdr;  

//UDP头部,总长度8字节   
typedef struct _udp_hdr  
{  
    unsigned short src_port; //远端口号   
    unsigned short dst_port; //目的端口号   
    unsigned short uhl;      //udp头部长度   
    unsigned short chk_sum;  //16位udp检验和   
}udp_hdr; 
 
//ICMP头部,总长度4字节   
typedef struct _icmp_hdr  
{  
    unsigned char icmp_type;   //类型   
    unsigned char code;        //代码   
    unsigned short chk_sum;    //16位检验和   
}icmp_hdr;  

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值