資源簡介
開發環境: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? {
icmp_check_seq?+=?resultStrings[i];
????????????}
????????????//打印校驗序列
????????????Console.WriteLine(“校驗序列如下:“);
for?(int?i?=?0;?i? {
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個文件信息
評論
共有 條評論