资源简介
本程序包括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 所有习题答案完美版
相关资源
- IPHONE3/2 7.11=712SHSH
- 闯关1-11.zip
- Pipe管道工具.7z
- tcp、ip课程设计
- caj.zip
- 视频地址.zip
- CSRFTester-1.0内附链接.zip
- pako.js js Gzip 解压
- 路书实时轨迹边走边划.zip
-
command-line sc
ripting for Quartus IIVer12. - luci-app-mwan3helper_1-3_all.ipk
- ad5410_driver.zip
- 通达信指标密码破解器6.0版.zip242956
- Kettle的一套流程完成对整个数据库迁
- point to circle.zip
- 国土空间规划数据汇交要求和数据库
- NetworkStateDemo.zip
- 易语言两个编辑框内容比对源码.zip
- 实现swipt中TSR和PSR功能
- bookticket-master.zip
- zw_IntelFortranlicgen.zip
- zw_jxl.zip
- zw_算法实验1——凸包问题.zip
- 影像TIF导入CAD插件.zip
- 天猫淘宝数据爬取源码可直接使用.
- sweet-alert-dialog的eclipse版本
- SAR图像变化检测代码,基于差异图和
- Q760642.zip windows程序设计 编写Windows窗
- TCPIP协议族 第四版答案1~16章
- 基于hyperlidger_fabric的牛奶溯源项目搭
评论
共有 条评论