UNIX网络编程0 IP头,TCP头,UDP头,MAC帧头定义
来源:互联网 发布:mac python如何加载库 编辑:程序博客网 时间:2024/04/29 23:59
转自 http://www.cnblogs.com/li-hao/archive/2011/12/07/2279912.html
一、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;
- UNIX网络编程0 IP头,TCP头,UDP头,MAC帧头定义
- IP头,TCP头,UDP头,MAC帧头定义
- IP头,TCP头,UDP头,MAC帧头定义
- IP头,TCP头,UDP头,MAC帧头定义
- IP头,TCP头,UDP头,MAC帧头定义
- 【网络】IP头、TCP头、UDP头详解以及定义
- MAC、IP头、TCP头、UDP头帧格式、详解
- MAC、IP头、TCP头、UDP头帧格式、详解
- MAC头、IP头、TCP头、UDP头详解以及定义
- IP头、TCP头、UDP头详解以及定义
- IP头、TCP头、UDP头详解以及定义
- IP头、TCP头、UDP头详解以及定义
- IP头、TCP头、UDP头详解以及定义
- IP头、TCP头、UDP头详解以及定义
- IP头、TCP头、UDP头详解以及定义
- IP头、TCP头、UDP头详解以及定义
- IP头、TCP头、UDP头详解以及定义
- IP头、TCP头、UDP头详解以及定义
- 交叉编译ARM版 Qt (qt-everywhere-opensource-src-4.7.3)
- 一个Angularjs实际项目的开发历程微博
- 小议:Site Collection中SharePoint Publishing Feature无法激活的解决方案
- 自定义类似Gridview 不同行列数不同 的显示控件
- Highmaps网页图表教程之绘图区显示标签显示数据标签定位
- UNIX网络编程0 IP头,TCP头,UDP头,MAC帧头定义
- caffe调试 ubuntu1404+eclipse
- 信号(signal)介绍
- ORA-00904: "STUDENTNUMBER": 标识符无效
- HDU 1171 Big Event in HDU (由01背包演变的水题)
- 【算法导论】快速排序
- ASP杂记
- Qt 中显示中文
- matlab遇到问题-矩阵索引值超维问题