把本学期所学的知识,自己做的课程设计,分享一下。
原理
IP首部检验和原理:在发送方,先把IP数据报首部划分为许多16位字的序列,并把检验和字段置零。用反码算术运算把所有16位字相加后,将得到的和的反码写入检验和字段。接收方收到数据报后,将首部的所有16位字再使用反码算术运算相加一次。将得到的和取反码,即得出接收方检验和的计算结果。若首部未发生任何变化,则此结果必为0,于是就保留这个数据报。否则即认为出差错,并将此数据报丢弃。
程序流程图
代码
from scapy.all import *
import struct
ipNum = 0
def sumcheck(head, ichksum):
# 置0
checksum = 0
# IPV4报文头部长度
headlen = len(head)
print("IPV4报文头部长度:", headlen)
if headlen % 2 == 1:
head += b&#