文档章节

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

r
 ranjiewen
发布于 2016/11/03 23:52
字数 513
阅读 61
收藏 0

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


 

 



 

本文转载自:http://www.cnblogs.com/ranjiewen/p/5901134.html

r
粉丝 1
博文 203
码字总数 28
作品 0
武汉
程序员
私信 提问
IP头,TCP头,UDP头,MAC帧头定义

一、MAC帧头定义 /数据帧定义,头14个字节,尾4个字节/ typedef struct MACFRAMEHEADER { char mcDstMacAddress[6]; //目的mac地址 char m_cSrcMacAddress[6]; //源mac地址 short m_cType;  ......

ranjiewen
2016/09/22
0
0
重读TCP/IP(4)之IP协议及传输

IP IP是TCP/IP协议族中最为核心的协议,所有的TCP,UDP,ICMP及IGMP数据都以IP数据报格式传输,IP协议是不可靠,无连接的,这是针对它的上层TCP来说的,不可靠指的是它不能保证IP数据能成功地到...

terry_hding
2016/05/07
330
1
计算机网络漫谈

前言: 本文作于2017年1月~3月之间,借助大三寒假的时间,我把自己学习的网络相关的知识做了个简单的整理,由于个人能力有限,我参考了 阮一峰 互联网协议入门,并且在我文中出现的一些插图也...

yangbodong22011
2017/05/18
0
0
计算机网络漫谈之UDP和TCP

计算机网络漫谈之传输层 咱们讨论了如果需要确定一个计算机上的不同网络程序(比如QQ和浏览器),需要端口的标识,但是IP头部和帧的头部都没有端口的标识字段,需要新的协议。和前面IP协议的...

yangbodong22011
2017/05/23
0
0
重读TCP/IP协议(1)--网络概述

以前很多不同的厂家生产各自的计算机,有着不同的操作系统,只有同样的操作系统的计算机才能通信,但TCP/IP允许这些不同的操作系统的计算机互相进行通信,他们都准守则一些协议在网络中进行传...

terry_hding
2016/04/27
189
0

没有更多内容

加载失败,请刷新页面

加载更多

为构建社交关系链手淘都做了啥?

作者|王卫(泓冰) 出品|阿里巴巴新零售淘系技术部 01、淘宝社交关系推荐的背景 1、互联网下半场到来:互联网的下半场,人口红利消失,各大平台需要对用户做精细化运营,用户的增长和留存是每一...

阿里云官方博客
10分钟前
3
0
Iaas/Paas/Saas有何区别,一个故事告诉你

云计算有三种服务模式,IaaS,PaaS和SaaS。单从英文全称去理解,他们分别是“基础设施即服务”“平台即服务”和“软件即服务”。 这样翻译过来可不好理解,但是我们可以举个例子。现在我们就以...

JEPaaS云平台
18分钟前
3
0
温度传感器怎么测好坏

  温度传感器也就是负温度系数热敏电阻,温度越高,电阻越小,测量时先看其阻值能不能根据温度的变化而变,再看其变化的阻值是不是在标定的范围之内。   有以下四种方法;   1、若是有...

仙溪
18分钟前
3
0
zk中ZooKeeperServer解析

内部类 ChangeRecord 处理PrepRP和FinalRP之间的信息 static class ChangeRecord { ChangeRecord(long zxid, String path, StatPersisted stat, int childCount, List<ACL> acl) {......

writeademo
29分钟前
3
0
LNMP---安装worrdpress、discuz,域名重定向,用户认证,nginx访问日志

4.34 安装wordpress 4.35 安装discuz 4.36 域名重定向 4.37 用户认证 4.38 nginx访问日志 一、安装wordpress 创建博客: 添加一个博客的虚拟主机 blog.tobe.com.conf 做如下更改 安装博客wor...

tobej
30分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部