资源简介
本程序包括checkSum(校验和函数)/fragment(分片函数)/Reassembly(重组函数)模拟IP协议分片和重组

代码片段和文件信息
#include
#include
#include
#include
#include
#define DataSize 5000
#define MTU 60
using namespace std;
// IP头部结构
typedef struct header
{
unsigned char VIHL; // Version and IHL
unsigned char ToS; // Type of Service
unsigned short TotalLen; // Total Length
unsigned short ID; // Identfication
unsigned short FlagOff; // Flags and Fragment Offset
unsigned char TTL; // Time to Live
unsigned char Protocol; // Protocol
unsigned short Checksum; // Checksum
unsigned long SrcAddr; // Source Address
unsigned long DstAddr; // Destination Address
char *Data; // data
}IPHeader*pIPHeader;
// 重组资源结构
typedef struct buf
{
char *Data; // 数据缓冲
IPHeader ipHeader; // 头部缓冲
unsigned char *RCVBT; // 分片块位表
unsigned int TDL; // 总数据长度头部
unsigned short TIMER; // 定时器
unsigned int BUFID; // BUFID
}BUFFER *pBUFFER;
/*****************************************************************
函数聲明
*****************************************************************/
short CheckSum(IPHeader ipHeader); // 校验和计算函数
void bit_set(void *buf int offset); // 置1函数
int bit_isset(void *buf int offset); // 置1判断函数
void Fragment(IPHeader ipHeader); // 分片函数
void Reassembly(IPHeader ipHeader); // 重组函数
void read(); // 读取分片函数
/*****************************************************************
函数名:CheckSum
描述:校验和计算
参数:IPHeader ipHeader
return:unsigned short checkSum
*****************************************************************/
short CheckSum(IPHeader ipHeader)
{
unsigned short checkSum;
int sum;
sum = ((ipHeader.VIHL<<8)+ipHeader.ToS)
+ipHeader.TotalLen
+ ipHeader.ID
+ ipHeader.FlagOff
+ ((ipHeader.TTL<<8)+ipHeader.Protocol)
+ (ipHeader.SrcAddr>>16)
+(ipHeader.SrcAddr&65535)
+(ipHeader.DstAddr>>16)
+ (ipHeader.DstAddr&65535);
while (sum>65535)
{
sum = (sum>>16) + (sum&65535);
}
checkSum = (unsigned short)~sum;
return checkSum;
}
/*****************************************************************
函数名:bit_set
描述:位置1函数
参数:void *buf int offset
return:NULL
*****************************************************************/
void bit_set(void
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-10-18 10:14 分片\
文件 14630 2012-10-16 17:18 分片\fragment.cpp
- 上一篇:IPHONE3/2 7.11=712SHSH
- 下一篇:SSD7 所有习题答案完美版
相关资源
- TCP IP通信labview程序
- Modbus协议官方文档中、英文全
- ModelGoon-4.4.1-site.zip
- 信号奇异点Lipschitz指数计算
- vspd7.2.308.zip
- pthreads-w32-2-9-1-release.zip
- Navicat Premium 15汉化包.zip55438
- 登录注册界面.zip48872
- 电信中兴光猫超密获取工具使用方法
-
Actionsc
ript 1.0实现能跟随鼠标运动的 - IAR-Keygen-2019+附使用教程.zip
-
st
yles 引文样式语言( CSL ) 引文样 - Reparatory Effects of Nicotine on NMDA Recepto
- Apolipoprotein E4 Impairs in vivo Hippocampal
- flash as3 多点触控-缩放-旋转-滑动.zi
- Quartus II 15.0中仿真Altera三速以太网I
- Quartus II 15.0中仿真Altera三速以太网I
-
imx6qSBP的jli
nk初始化脚本 - IMX385驱动代码.zip
- sony_imx385.zip
- 数字华容道
- jstl-api-1.2和jstl-impl-1.2
- 基于MIPS指令集的32位CPU设计与Verilog语
- 基于MVC模式的会员管理系统
- IP地址转换整形工具
- 直观端口查看器,详细显示可疑进程
- 佳能IP2780清零
- SIP电话实例
- 一个简单的verilog编写的DMA IP CORE,和
- ipv6网络抓包程序
评论
共有 条评论