资源简介
开发环境: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\.NETfr
文件 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个文件信息
相关资源
- C#解析HL7消息的库135797
- C# OCR数字识别实例,采用TessnetOcr,对
- 考试管理系统 - C#源码
- asp.net C#购物车源代码
- C#实时网络流量监听源码
- C#百度地图源码
- Visual C#.2010从入门到精通配套源程序
- C# 软件版本更新
- C#屏幕软键盘源码,可以自己定制界面
- 智慧城市 智能家居 C# 源代码
- c#获取mobile手机的IMEI和IMSI
- C#实现简单QQ聊天程序
- 操作系统 模拟的 欢迎下载 C#版
- C#写的计算机性能监控程序
- 用C#实现邮件发送,有点类似于outlo
- MVC model层代码生成器 C#
- c#小型图书销售系统
- C# Socket Server Client 通讯应用 完整的服
- c# winform 自动登录 百度账户 源代码
- C#编写的16进制计算器
- C#TCP通信协议
- C# 数据表(Dataset)操作 合并 查询一
- C#语音识别系统speechsdk51,SpeechSDK51L
- 数据库备份还原工具1.0 C# 源码
-
[免费]xm
lDocument 节点遍历C# - EQ2008LEDc#开发实例
- DirectX.Capturec# winform 操作摄像头录像附
- c# 实现的最大最小距离方法对鸢尾花
- C#版保龄球记分代码
- C#自定义控件
评论
共有 条评论