• 大小: 66KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-03
  • 语言: C#
  • 标签: c#  算法  

资源简介

开发环境:VS2019 编程语言:C# 关于:网际校验和算法 介绍:实验对于IPV4的ICMP、TCP、UDP数据的网际校验和验证,数据从txt文本读取,未调用网络接口。

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace checksum
{
public class CheckData
{
/// 
/// 协议到函数
/// Author:段鹏辉
/// 

/// 报文数组
/// 协议类型
public static void check(String[] resultStrings int duan)
{
            switch (duan)
            {//采用某种协议
case 1: ICMPData(resultStrings); break;
case 6: TCPData(resultStrings); break;
case 17:UDPData(resultStrings);break;
default:
Console.WriteLine(“数据类型不符合要求“);
break;
            }
        }



/// 
/// ICMP
/// Author:段鹏辉
/// 

/// 报文数组
private static void ICMPData(String[] resultStrings)
{
//确定ICMP开始部分

/*  获取IP版本和数据报的首部长度 */
string s = resultStrings[14];
int IpVersion = int.Parse(s[0].ToString() System.Globalization.Numberstyles.HexNumber); //ip版本
int IpLenOfHead = int.Parse(s[1].ToString()System.Globalization.Numberstyles.HexNumber)*4;
Console.WriteLine(“Ip版本:ipv“ + IpVersion);
Console.WriteLine(“Ip数据报首部长度: “ + IpLenOfHead + “Bytes“);


int IcmpLen = resultStrings.Length- IpLenOfHead;
Console.WriteLine(“ICMP数据报长度“+IcmpLen+“Bytes“);

string icmp_check_seq = ““;       //临时保存校验序列
for (int i = 14 + IpLenOfHead; i < resultStrings.Length; i++)
{
icmp_check_seq += resultStrings[i];
            }

            //打印校验序列
            Console.WriteLine(“校验序列如下:“);
for (int i = 0; i < icmp_check_seq.Length; i += 4)
{
Console.WriteLine(icmp_check_seq.Substring(i 4));
}

//计算校验和并输出
//计算校验和
string duan_check_sum = Check_Sum(icmp_check_seq);
Console.WriteLine(“校验和:“ + duan_check_sum);

//差错检验结果
if (“0000“ == duan_check_sum)
{
Console.WriteLine(“数据正确!“);
}
else
{
Console.WriteLine(“报文数据出现错误,应丢弃!“);
}
}



/// 
/// UDP
/// Author:段鹏辉
/// 

/// 报文数组
public static void UDPData(String[] resultStrings)
{
//确定UDP开始部分
string s = resultStrings[14];
int IpVersion = int.Parse(s[0].ToString() System.Globalization.Numberstyles.HexNumber); //ip版本
int IpLenOfHead = int.Parse(s[1].ToString() System.Globalization.Numberstyles.HexNumber) * 4;  //IP数据报首部文长度
Console.WriteLine(“Ip版本:ipv“ + IpVersion);
Console.WriteLine(“Ip数据报首部长度: “ + IpLenOfHead + “Bytes“);

//固定8字节
Console.WriteLine(“UDP数据报首部长度: “ + 8 + “Bytes“);

int UdpLenOfBody = resultStrings.Length - IpLenOfHead - 8 - 14;
Console.WriteLine(“UDP数据报数据长度: “ + UdpLenOfBody + “Bytes“);


//校验序列:伪首部+UDP报文
//伪首部
string pseudoHeader = ““;
for (int i = 26; i <= 33; i++)
            {//源ip目的ip
pseudoHeader += resultStrings[i];
            }
int UdpBodyLength = UdpLenOfBody + 8;
//00+类型+UDP数据长度
ps

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2020-12-14 16:35  checksum\
     目录           0  2020-12-06 22:19  checksum\.vs\
     目录           0  2020-12-06 16:33  checksum\.vs\checksum\
     目录           0  2020-12-06 16:33  checksum\.vs\checksum\v16\
     文件       55808  2020-12-14 16:37  checksum\.vs\checksum\v16\.suo
     文件          37  2020-12-06 22:16  checksum\.vs\ProjectSettings.json
     文件      204800  2020-12-06 22:19  checksum\.vs\slnx.sqlite
     文件         115  2020-12-06 22:19  checksum\.vs\VSWorkspaceState.json
     文件         189  2020-12-06 16:33  checksum\App.config
     目录           0  2020-12-06 16:50  checksum\bin\
     目录           0  2020-12-07 14:26  checksum\bin\Debug\
     文件        8192  2020-12-11 13:01  checksum\bin\Debug\checksum.exe
     文件         189  2020-12-06 16:33  checksum\bin\Debug\checksum.exe.config
     文件       32256  2020-12-11 13:01  checksum\bin\Debug\checksum.pdb
     文件         227  2020-12-06 22:02  checksum\bin\Debug\ICMP.txt
     文件         168  2020-12-07 15:39  checksum\bin\Debug\TCP.txt
     文件         288  2020-12-06 21:23  checksum\bin\Debug\UDP.txt
     目录           0  2020-12-06 16:50  checksum\bin\Release\
     文件        7462  2020-12-14 16:35  checksum\CheckData.cs
     文件        2445  2020-12-10 23:15  checksum\checksum.csproj
     文件        1121  2020-12-06 16:33  checksum\checksum.sln
     目录           0  2020-12-06 22:16  checksum\obj\
     目录           0  2020-12-11 12:58  checksum\obj\Debug\
     文件         214  2020-12-06 16:33  checksum\obj\Debug\.NETframeworkVersion=v4.7.2.AssemblyAttributes.cs
     文件          42  2020-12-07 14:26  checksum\obj\Debug\checksum.csproj.CoreCompileInputs.cache
     文件         995  2020-12-11 12:58  checksum\obj\Debug\checksum.csproj.FileListAbsolute.txt
     文件         424  2020-12-11 12:58  checksum\obj\Debug\checksum.csprojAssemblyReference.cache
     文件        8192  2020-12-11 13:01  checksum\obj\Debug\checksum.exe
     文件       32256  2020-12-11 13:01  checksum\obj\Debug\checksum.pdb
     文件        6761  2020-12-10 23:15  checksum\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache
     目录           0  2020-12-06 16:33  checksum\obj\Debug\TempPE\
............此处省略7个文件信息

评论

共有 条评论