基于Python的网际校验和算法的实现

来源 :大经贸·创业圈 | 被引量 : 0次 | 上传用户:w33333333
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘 要】 信息时代,庞大的数据集合中,信息交互的出错在所难免。对于差错处理,网际校验和算法的应用具有里程碑式的意义。算法利用网络数据使用二进制代码的特点,通过对信息串进行反码相关运算,“放大”通信两端数据出现的差异,较大程度地减少了出错概率。这一算法的思想如今已经被应用在IP、ICMP、 UDP和TCP等诸多报文的检错运算中。
  本文将对网际校验的基本思想和使用情况做出简要论述,并使用python编制一个具有识别报文类型和验算校验和功能的代码示例。
  技术上,在抓取报文时使用了网络抓包软件WireShark;识别报文类型时,依赖了python强大的字符串处理能力;验算校验和算法以二进制反码运算为基础。
  【关键词】 网际校验和 IP UDP TCP ICMP 二进制 反码运算 互联网
  一、网际校验和算法
  (一)算法概述
  一般的网际校验和算法过程分为两步。
  第一步是,对报文分段进行二进制反码加法运算。对于需要检测的报文部分,在发送方,先将被检测报文的对应校验和字段置为全0,继而把该部分内容以16位为一个单位分组,再将这些分组分别进行二进制反码加法运算,将得到的结果存入到对应校验和字段,覆盖掉全0。发送方将这样的报文发送出去。
  第二步,在接收方,将收到的报文部分以和第一步中同样方式分段进行二进制反码的加法运算。这个时候,得到结果要么是全0要么是全1。为什么呢?
  我们以IP数据报为例,假设IP数据报首部只有32位也就是4个字节,经16位的划分,可分为两个16位的字序列,我们暂称其为A和B。(此时未填入数据的IP数据报首部校验和字段的值为0)则根据上述算法,此时首部校验和则为 A+B+0 = A+B,结果再求反。将A+B记为C,那则首部校验和就是 非C 。当报文传送到接收方,接收方再按照16位子序列去划分报文首部,此时首部校验和字段是 非C,则需要计算的是A+B+ 非C = A+B+ 非(A+B) = 1(数字逻辑运算)。也就是说,只要IP数据报首部未变,到此运算结果必为1。(若再求反,则结果为就为0。)
  (二)不同协议的报文运算区别
  网际校验和算法在不同的协议实现的时候,是有使用差别的。
  主要分为两方面:1.检验字段范围;2.正确的验证结果。
  对于需要检验的字段范围,IP和ICMP报文不需要附加额外的字段,其中IP只需要检验IP数据报的首部字段,ICMP则需要同时检测首部和数据部分;TCP报文段和UDP用户数据报检验范围都是首部加上数据部分,但是二者在进行校验和运算的时候,还需要在报文的首部前加上额外的12字节的被称为“伪首部”的字段,作为参与运算的一部分。但是伪首部不作为信息向上递交。
  对于正确的验证结果,其中IP和ICMP对最终的正确结果要求是全0,TCP和UDP对于最终正确结果的要求是全1。其实计算的原理都是一样的,正常的经过一轮网际校验和的运算后结果为全1,不过在TCP和ICMP的检验过程中,会将结果再次求反,于是获得全0。
  二、算法实现
  (一)获取报文
  使用抓包工具WireShark,在上网时获取到相应的MAC帧数据,并以此为基础向内解析出所含的IP数据报、TCP报文段或者UDP报文段。。
  限于篇幅,测试数据在此不详细列出,请感兴趣的读者自行尝试抓包。
  (二)区分报文的方法
  报文的格式与包含关系请读者先了解有关资料,这里限于篇幅不再展示。
  在报文都是2进制表示的情况下,若想从MAC帧中提取完整的IP数据报,取得MAC帧中(从0开始的)第14×8位往后的数据即可。在IP中,首先判断第72~79(“协议”字段)位的数据,若是6,则表示TCP,若是17,则表示UDP,否则表示ICMP。
  对于首部检验和字段,IP在第80~95位,ICMP在第16~31位置,TCP在第128~143位(不含伪首部),UDP在第48~63位(不含伪首部)。
  (三)算法思路
  1.获取用户按指定格式输入的报文信息;
  2.根据1.2中的区分报文原则,将IP数据报整体划分出来;
  3.对IP首部进行校验和计算,有误则提示错误,无误则继续提取协议字段,判断其值;
  1)若为6,则是TCP,
  提取TCP报文段整体,进行校验和计算,有误则提示错误,无误则完成校验;
  2)若为17,则为UDP,
  提取UDP报文段整体,进行校验和计算,有误则提示错误,无误则完成校验;
  3)不是6或17,则为ICMP,
  提取ICMP报文段整体,进行校验和计算,有误则提示错误,无误则完成校验。
  使用Python语言完成了本次编码。
  (四)关键代码示例
  1.报文分组
  """
  对指定的字符串进行4位一组分组,每组二进制加法运算
  """
  def get_grouped_sum(s):
   s2 = s
   length = len(s2)
   counter = int(length / 16)
   ls = []
   for i in range(0, counter):
   ls.append(bin(int(s2[0: 16], 2))[2:])
   s2 = s2[16:]
   return get_bin_sum(ls)
  2.对分组进行二进制反码加法
  '''
  取得反码求和运算之结果
  '''
  def get_bin_sum(ls):
   bin_sum = 0
   for v in ls:
   bin_sum = bin_sum + int(v, 2)
   if len((bin(bin_sum))[2:]) > 16:
   result = bin(bin_sum)[3:]
   bin_sum = int(result, 2) + 1
   return get_inverse(bin(bin_sum)[2:])
  3.對结果进行求反
  '''
  在字符串中将原码“笨拙”地替换为反码
  '''
  def get_inverse(s):
   inverse = ''
   d = {'0': '1', '1': '0'}
   for e in s:
   inverse += d[e]
   return bin(int(inverse, 2))[2:].zfill(16)
  【参考文献】
  [1] 施展. 新型互联网传输协议的差错控制设计与协议一致性测试[D]. 北京:北京交通大学,2018
  [2] 谢希仁. 计算机网络(第七版)[M].北京:电子工业出版社,2017:96,128,209-210,216-217
  [3] Zed A. Shaw. “笨方法”学Python3 [M].北京:中国邮电出版社,2018:98
  作者简介:刘杨(1999——)男,汉族,河南信阳人,单位:河南大学计算机与信息工程学院,本科,软件工程专业,软件工程:
其他文献
【摘 要】 伴随素质化教学要求在现代教育中的提出,相较于传统教学中以“应试教育”为主要模块,现代教育更加注重学生德智体美劳全面性发展,更加关注学生综合素质和能力在实际教学中的提升。音乐教学是素质化教育中至关重要的环节之一,音乐教学凭借其“以情动人,以音感人”的特点在素质化教学中起到关键作用。因此,音乐老师应把握素质教育的具备要求,在多元化的音乐实践中渗透人文教育的特点和优势。  【关键词】 学生主
期刊
【摘 要】 打造健康向上的企业文化,构建以人为本、健康和谐的企业环境,是建设和谐排水企业的必要内涵。在新的发展阶段,如何培育先进的企业文化,推动水务事业和谐发展,是摆在绍兴市水务产业有限公司面前亟需解决的一道课题。该公司在打造先进企业文化过程中,致力于丰富企业安全文化、管理文化、服务文化、人本文化、廉政文化等多个层面的文化内涵,将精神理念的塑造体现到公司各个岗位的具体实践中,将价值取向的统一带入到
期刊
【摘 要】 近几年,我国高度重视军队思想政治教育工作,在强军战略思想的指导下,全军官兵要以习近平新时代中国特色社会主义思想为指引,深入贯彻落实习近平强军思想,努力建设一支世界一流的新时代强军。基于此,本文首先阐述了习近平强军战略的深刻内涵,然后提出了习近平强军战略视野下的军队思政教育策略,希望能为促进军队思政教育工作水平提高提供一些有益的参考和借鉴。  【关键词】 强军战略 军队 思政教育  习近
期刊
【摘 要】 社会主义核心价值观是社会的稳定器,是凝聚全国人民上下一心、各民族团结友爱的定海神针。在民族地区传播社会主义核心价值观必须由传播学介入,信息只有在传播中才能发挥其价值,观念与思想也只有在傳播中才得以壮大而深入人心。在此背景下,必须寻找传播学与社会主义核心价值观相关概念的契合之处,打通二者之间的潜在关联,使得社会主义核心价值观在传播学助力下在民族地区走的更远,更加深入。  【关键词】 传播
期刊
【摘 要】 干部培训是部队发展、强大和长久发展的最基础性 的工作,能够有效的提高干部的整体素质和专业技能,也能有效的提高干部的执政能力和管的水平。通过查阅文献和当前我部队的实际情况,发现部分部队干部培训工作的现状与问题,就这些问题,提出相应的培训工作的策略和方法,为后期干部培训工作有一定的参考性的价值和意义。  【关键词】 干部培训 加强 改进 工作  引 言  干部培训是顺应时代发展的需要。当前
期刊
【摘 要】 思想政治工作,是党的一项极端重要的工作。随着中国特色社会主义进入新时代,思想政治工作面对的外部环境、社会条件、工作对象都发生了深刻变化,特别是人思想活动的独立性、选择性、多变性、差异性明显增强,衍生出新矛盾、新问题。而化解矛盾、解决问题,就要依赖于与时俱进、不断创新和改进的思想政治工作,以此调动车间一线职工安全生产的积极性,更好的为铁路高质量发展贡献基础力量。故精准做实做强铁路企业基层
期刊
【摘 要】 党建工作的重大任务就是党风廉政建设和反腐败斗争,其作为国企工作的重要内容,也是当前社会经济和国企改革的重点,基于此,本文阐述了国企党风廉政建设工作的必要性及其意义,对做好国企党风廉政建设工作的策略进行了探討分析,旨在促进国有企业健康发展。  【关键词】 国企 党风廉政建设工作 必要性 意义 策略  党风廉政建设的好坏直接影响到国企改革能否顺利推进,其作为国企工作的重要内容,对于保证国企
期刊
【摘 要】 2003年非典成就了阿里巴巴、京东等企业,时隔17年后的现在,同样充满着历史机遇,相信多年以后又有一批伟大的企业是在这次疫情中产生的。同时随着计算机、互联网等技术发展也促进了人工智能的发展,那么本文对团队构思的人工智能+教育项目进行分析和介绍。  【关键词】 创新创业项目 教育 人工智能 计算机  1.项目介绍  1.1项目概要。 “U智云课堂”基于人工智能、大数据、云计算等技术,来实
期刊
【摘 要】 本文针对疫情期间线下教学无法正常开展,以《服装手绘效果图》课程为例,结合线上教学的特点与规律,论述了在特殊时期艺术类教学方式的探索与反思,并为正常时期课程正常教学的开展提供新的思路。  【关键词】 实践 线上教学 探索反思  2020年伊始,新冠肺炎席卷全球。截止到本学期结束,由于疫情的原因,常规的线下教学模式都无法开展。经过本学期《服装手绘效果图》课程的教学过程的探索与试验、授课课程
期刊
企业政工人员经常同企业员工接触,是最了解员工的重要主力,其工作质量直接影响到企业员工的思想教育质量及效果。政工人员自身职业素养给其自身工作质量带来重要影响,是其重要影响因素。为此,企业必须重视政工人员职业素养建设,强化引导和培训,提升其职业素养,以提升企业思想教育工作的效果及质量。  一、企业政工人员职业素养现状  (一)缺乏职业认同感及职业精神。企业政工的职业化需要从政工人员的思想上进行,使其对
期刊