IP头,TCP头,UDP头,MAC帧头定义(转)
2023-09-27 14:28:14 时间
一、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;
相关文章
- 本文把TCP/IP讲绝了!
- 解决无公网IP,远程访问黑群晖NAS
- 如何查看连接mysql的ip地址
- ip的划分,超详细
- 如何在不使用GPS的情况下获取Android设备的当前所在城市位置信息和IP
- 各厂商服务器存储默认管理口登录信息(默认IP、用户名、密码)收集
- 阿里云 ssh 登陆请使用(公)ip
- 使用SOCKET实现TCP/IP协议的通讯
- C#中开发之Socket网络编程TCP/IP层次模型、端口及报文等探讨
- TCP/IP网络断和127.0.0.1回网IP概念
- 【补丁二次更新】CVE-2020-5902: F5 BIG-IP 远程代码执行漏洞通告更新
- 2.1 TCP/IP命令(Ping)
- 1.2 TCP/IP协议(数据链路层)
- 1.1 TCP/IP协议(物理层)
- 《Nmap渗透测试指南》—第7章7.5节IP反查
- TCP/IP模型的层次结构
- NGINX中的的请求头x_real_ip和x_forwarded_for
- OSI 七层模型和 TCP/IP 四层模型 及 相关网络协议
- TCP/IP具体解释学习笔记——地址解析协议ARP
- iOS开发 - 获取网关IP,运营商,位置,可判断是在国内还是国外
- 和Nginx相关的TCP/IP中反向代理系统解析与调优
- 【转】TCP/IP详解学习笔记(一)