資源簡介
本程序包括checkSum(校驗(yàn)和函數(shù))/fragment(分片函數(shù))/Reassembly(重組函數(shù))模擬IP協(xié)議分片和重組

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#define?DataSize?5000
#define?MTU?60
using?namespace?std;
//?IP頭部結(jié)構(gòu)
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;
//?重組資源結(jié)構(gòu)
typedef?struct?buf
{
????????char?*Data;????????????????????????????????//?數(shù)據(jù)緩沖
????????IPHeader?ipHeader;?????????????????????????//?頭部緩沖
????????unsigned?char?*RCVBT;??????????????????????//?分片塊位表
????????unsigned?int?TDL;??????????????????????????//?總數(shù)據(jù)長度頭部
????????unsigned?short?TIMER;??????????????????????//?定時(shí)器
????????unsigned?int?BUFID;????????????????????????//?BUFID
}BUFFER?*pBUFFER;
/*****************************************************************
函數(shù)聲明
*****************************************************************/
short?CheckSum(IPHeader?ipHeader);?????????????????//?校驗(yàn)和計(jì)算函數(shù)
void?bit_set(void?*buf?int?offset);???????????????//?置1函數(shù)
int?bit_isset(void?*buf?int?offset);??????????????//?置1判斷函數(shù)
void?Fragment(IPHeader?ipHeader);??????????????????//?分片函數(shù)
void?Reassembly(IPHeader?ipHeader);????????????????//?重組函數(shù)
void?read();???????????????????????????????????????//?讀取分片函數(shù)
/*****************************************************************
函數(shù)名:CheckSum
描述:校驗(yàn)和計(jì)算
參數(shù):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;
}
/*****************************************************************
函數(shù)名:bit_set
描述:位置1函數(shù)
參數(shù):void?*buf?int?offset
return:NULL
*****************************************************************/
void?bit_set(void?
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2012-10-18?10:14??分片\
?????文件???????14630??2012-10-16?17:18??分片\fragment.cpp
評論
共有 條評論