这是大学计算机网络的一个课程设计:
//((想要源代码或者有问题的小伙伴可以私聊我,我是拿js嵌html实现的,不用配置环境))
TCP校验和是一个端到端的校验和,由发送端计算,然后由接收端验证。其目的是为了发现TCP首部和数据在发送端到
接收端之间发生的任何改动。如果接收方检测到校验和有差错,则TCP段会被直接丢弃。
TCP校验和覆盖TCP首部和TCP数据,而IP首部中的校验和只覆盖IP的首部,不覆盖IP数据报中的任何数据。
TCP的校验和是必需的,而UDP的校验和是可选的。TCP和UDP计算校验和时,都要加上一个12字节的伪首部。
伪首部
伪首部共有12字节,包含如下信息:源IP地址、目的IP地址、保留字节(置0)、传输层协议号(TCP是6)、TCP报文长度(报头+数据)。
伪首部是为了增加TCP校验和的检错能力:如检查TCP报文是否收错了(目的IP地址)、传输层协议是否选对了(传输层协议号)等。
运行截图:
简单的算法实现如下:
<script type="text/javascript">
// $(document).ready(function () {
// var ip = $("#yuanip").val();
// alert(ip);
// });
$(document).ready(function () {
$("#jiaoyan").click(function () {
//32网络地址数据部分取值转换
function bitchange(number_1, number_2) {
var change;
number_1 = parseInt(number_1, 10);
number_2 = parseInt(number_2, 10);
number_2 = ("000000000" + number_2.toString(2)).substr(-8);
change = number_1.toString(2) + number_2;
change = parseInt(change, 2);
return change;
}
//tcp Data
function addzero(tcp) {
var tcpdatasum = 0;
var tcpsum = 0;
for (var i = 0; i < tcp.length + 1; i++) {
if (i % 4 == 0) {
tcpdatasum = parseInt(tcpdatasum,16);
tcpsum = tcpsum + tcpdatasum;
tcpdatasum = 0;
tcpdatasum += tcp.charAt(i);
}
else
{
tcpdatasum += tcp.charAt(i);
}
// tcpdatasum = (tcpdatasum + "0000").substr(-4);
// tcpdatasum = parseInt(tcpdatasum,16);
// alert(tcpdatasum);
}
tcpdatasum = parseInt(tcpdatasum,16);
tcpdatasum = tcpdatasum.toString(16);
tcpdatasum