资源简介

本程序包括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

评论

共有 条评论