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

您所在的位置:网站首页 udp报文头部包含哪些参数 IP头,TCP头,UDP头,MAC帧头定义

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

#IP头,TCP头,UDP头,MAC帧头定义| 来源: 网络整理| 查看: 265

阅读更多

一、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;

 

 

 

转载于:https://my.oschina.net/ranjiewen/blog/781091

分享到: 关于Windows API、CRT和STL二三事 | Linux学习--第二波 2019-09-27 03:08 浏览 107 评论(0) 分类:互联网 查看更多 评论 发表评论

您还没有登录,请您登录后再发表评论



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3