MAC头、IP头、TCP头、UDP头详解以及定义

一、MAC帧头定义

/*数据帧定义,头14个字节,尾4个字节*/
typedef struct _MAC_FRAME_HEADER
{
    char m_cDstMacAddress[6];    //目的mac地址
    char m_cSrcMacAddress[6];    //源mac地址
    short m_cType;            //上一层协议类型,如0x0800代表上一层是IP协议,0x0806为arp
}__attribute__((packed))MAC_FRAME_HEADER,*PMAC_FRAME_HEADER;

typedef struct _MAC_FRAME_TAIL
{
    unsigned int m_sCheckSum;    //数据帧尾校验和
}__attribute__((packed))MAC_FRAME_TAIL, *PMAC_FRAME_TAIL;

二、IP头结构的定义
IP头结构的定义

/*IP头定义,共20个字节*/
typedef struct _IP_HEADER 
{
    char m_cVersionAndHeaderLen;       //版本信息(前4位),头长度(后4位)
    char m_cTypeOfService;           // 服务类型8位
    short m_sTotalLenOfPacket;        //数据包长度
    short m_sPacketID;              //数据包标识
    short m_sSliceinfo;              //分片使用
    char m_cTTL;                  //存活时间
    char m_cTypeOfProtocol;          //协议类型
    short m_sCheckSum;              //校验和
    unsigned int m_uiSourIp;         //源ip
    unsigned int m_uiDestIp;         //目的ip
} __attribute__((packed))IP_HEADER, *PIP_HEADER ;

三、tcp头结构定义
TCP头结构的定义

/*TCP头定义,共20个字节*/
typedef struct _TCP_HEADER 
{
    short m_sSourPort;              // 源端口号16bit
    short m_sDestPort;              // 目的端口号16bit
    unsigned int m_uiSequNum;          // 序列号32bit
    unsigned int m_uiAcknowledgeNum;    // 确认号32bit
    short m_sHeaderLenAndFlag;         // 前4位:TCP头长度;中6位:保留;后6位:标志位
    short m_sWindowSize;             // 窗口大小16bit
    short m_sCheckSum;               // 检验和16bit
    short m_surgentPointer;           // 紧急数据偏移量16bit
}__attribute__((packed))TCP_HEADER, *PTCP_HEADER;


/*TCP头中的选项定义
kind(8bit)+Length(8bit,整个选项的长度,包含前两部分)+内容(如果有的话)
KIND = 1表示 无操作NOP,无后面的部分
       2表示 maximum segment   后面的LENGTH就是maximum segment选项的长度(以byte为单位,1+1+内容部分长度)
       3表示 windows scale     后面的LENGTH就是 windows scale选项的长度(以byte为单位,1+1+内容部分长度)
       4表示 SACK permitted    LENGTH为2,没有内容部分
       5表示这是一个SACK包     LENGTH为2,没有内容部分
       8表示时间戳,LENGTH为10,含8个字节的时间戳
*/

typedef struct _TCP_OPTIONS
{
    char m_ckind;
    char m_cLength;
    char m_cContext[32];
}__attribute__((packed))TCP_OPTIONS, *PTCP_OPTIONS;

四、UDP头结构的定义
UDP结构的定义

/*UDP头定义,共8个字节*/

typedef struct _UDP_HEADER 
{
    unsigned short m_usSourPort;       // 源端口号16bit
    unsigned short m_usDestPort;       // 目的端口号16bit
    unsigned short m_usLength;        // 数据包长度16bit
    unsigned short m_usCheckSum;        // 校验和16bit
}__attribute__((packed))UDP_HEADER, *PUDP_HEADER;

转自《IP头,TCP头,UDP头,MAC帧头定义》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值