资源简介
开发环境: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#编写的SVG文件编辑器,包含代码和执
- sqlite3 C# ADO.net初学者 实现增删改查
- winform 多线程 异步 文件操作(查询、
- 将C# 类文件中属性和方法自动生成文
- C# sqlite 中文乱码的解决方法
- C#修改网卡MAC地址的源码,可以随机生
- VS2008编写基于遗传算法的C#五子棋游戏
- C#控制台文字RPG游戏
- 可自定义选区的C#抓屏/截图小程序
- c#遍历一个文件夹下的所有文件包括子
- 医院PACS系统 C#源码
- C#将DataSet导入到excel中(包括图片)
- C# 多窗口切换
- c# 自定义控件 - 重绘控件 - TabControl
- c#绘制矩形(鼠标拉伸与平移)
- c# 绘制可拖动可平移图形
- 一套C#编写的医生生成处方软件
- Des与3Des算法CBC,ECB模式
- C#使用OpcNetApi_dll和OpcNetApi_Com_dll操作
- C#串口通讯读写
- .NET C# 反射机制实现无Bug插件演示源码
- C# WebBrowser 任意切换IE版本
- 基于C#的文本相似度检测
- InTheHand.Net.Personal.dll173488
- C#控制台下读取3D模型的STL格式文件
- C#实现双态按钮
- C#/.NET 学生管理系统控制台版含数据库
- c#实现id3决策树--MyId3.rar
- 酒店管理系统c#源码
- PuyoPuyo游戏
评论
共有 条评论