您的位置:首页 > 理论基础 > 计算机网络

IP头,TCP头,UDP头,MAC帧头定义

2016-03-02 09:43 555 查看


IP头,TCP头,UDP头,MAC帧头定义

 
一、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头定义,共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头定义,共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头定义,共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;

分类: 网络编程
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: