当前位置:
文档之家› ip数据报解析源地址目的地址
ip数据报解析源地址目的地址
青 岛 农 业 大 学
理学与信息科学学院
计算机网络综合实习报告
题 目IP数据报解析源地址/目的地址
专 业计算机科学与技术
学Байду номын сангаас号
姓 名
指导教师
日 期2014年11月8日
一、
设计一个解析IP数据包的程序,并根据这个程序,从IP数据报头中解析出源地址和目的地址等相关问题,从而对IP层的工作原理有更好的理解和认识。
◆服务类型(SERVICE TYPE): 8位,规定本数据报的处理方式。前三位是优先级,0-7,0表示最低,7最高(最重要),但目前的IPv4没有使用优先级。后4位是TOS,表示本数据报在传输过程中所希望得到的服务,D--最小延迟(minimize delay);T--最大吞吐率(maximize throughout);R--最高可靠性(maximize reliability);C--最低成本(minimize cost)。
通过实际操作,加深对计算机网络的理解,了解计算机网络应用的灵活性,加深对IP数据报格式的了解,点分十进制理解,巩固所学习的C语言。
二、
编写计算机程序,从网络捕获数据包,从IP数据报头中解析出源地址和目的地址,将它们以点分十进制形式输出。
三、
3.1
3.1.1
对主机或路由器来说,ip地址都是32位的二进制代码,为了提高可读性,我们常常把32位的ip地址中的每8位用其等效的十进制数字表示,并且在这些数字之间加上一个点,这就叫做点分十进制表示法(dotted decimal notation)。例如:一个ip地址:100000 00000用点分十进制表示为:128.11.3.31读起来要方便得多。
四、
首先理解点分十进制表示方法的运用,理解IP数据报的格式,利用C语言设计程序以点分十进制表示输出IP数据报头源/目的地址。
从网络抓取数据包作为源操作数,再生成32位二进制数作为目的操作数,用编程实现将二进制数转化成十进制数,以点分的形式输出在屏幕上。
五、
通过本次课程设计,让我学到了很多。经过实习,通过实际操作,对计算机网络加深了理解。才知道计算机网络的可以应用的很灵活,而且加深了对IP数据报格式的了解,点分十进制理解,而且对于C语言也进行了巩固。
本实验的功能主要是实现将32位的二进制表示成十进制数
图3-2 IP组成结构图[2]
3.2
3.2.1
图3-2-1程序运行图
图3-2-2运行结果图
3.2.2
IP数据报的首部长度和数据长度都是可变长的,但总是4字节的整数倍。对于IPv4,4位版本字段是4。4位首部长度的数值是以4字节为单位的,最小值为5,也就是说首部长度最小是4x5=20字节,也就是不带任何选项的IP首部,4位能表示的最大值是15,也就是说首部长度最大是60字节。8位TOS字段有3个位用来指定IP数据报的优先级(目前已经废弃不用),还有4个位表示可选的服务类型(最小延迟、最大呑吐量、最大可靠性、最小成本),还有一个位总是0。总长度是整个数据报(包括IP首部和IP层payload)的字节数。每传一个IP数据报,16位的标识加1,可用于分片和重新组装数据报。3位标志和13位片偏移用于分片。TTL(Time to live)是这样用的:源主机为数据包设定一个生存时间,比如64,每过一个路由器就把该值减1,如果减到0就表示路由已经太长了仍然找不到目的主机的网络,就丢弃该包,因此这个生存时间的单位不是秒,而是跳(hop)。协议字段指示上层协议是TCP、UDP、ICMP还有IGMP。然后是校验和,只校验IP首部,数据的校验由更高层协议负责。IPv4的IP地址长度为32位。选项字段的解释从略。
在实习中并不是一番风顺的,但是经过努力最终解决了这些困难,让我认识到了坚持的重要性。总的来说通过实习是我收获不小,也让我认识到了认真学习知识的重要性。希望学校以后多提供这样的机会。
本次实习,其目的是将以前所学的计算机网络理论知识上升为实践,在编程的基础上进一步了解计算机通信交流以及组网的方法,实践就要求对知识的掌握更加的系统化。在实习之初,仔细的查找了相关的资料,了解与本实习有关的知识,对IP数据报报头的格式更进一步的复习和掌握,并查找最前沿的资料充实自己,力求将自己的实习做得的更加全面,在实习的准备过程中了解到,在实际的网络管理中大多使用的sniffer软件对流经网络的数据进行抓取和处理以及分析的过程也可以通过软件的设置将所需数据显示在终端上,本实验所要求处理的任务是将IP数据报报头中的源和目的IP地址以点分十进制的形式输出,程序的实现比较简单,结合以前C语言的基础和编程方法使用随机数生成指令,以及调用C语言库函数实现将二进制的源和目的IP地址转化为点分十进制。
◆标志(FLAGS):3位,表示该IP数据报是否允许分片以及是否最后一片。
◆片偏移(FRAGMENTATION OFFSET):表示本片数据在他所属原始数据报数据区的偏移量。
◆生存时间(time to live,TTL): 8位,
◆协议(PROTOCOL):8位,指明被IP数据报封装的协议:ICMP=1,IGMP=2,TCP=6,EGP=8,UDP=17,OSPF=89.
◆首部校验和(HEADER CHECKSUM):16位,保证首部数据完整性。
◆源IP地址(SOURCE ADDRESS):32位(IPv4中),发送方源地址。
◆目的地址(DESTINATION ADDRESS): 32位(IPv4中),最总接收方IP地址。
◆IP选项(IP OPTIONS):变长字段,传输数据报时的附加功能。
值得注意的有2点:
①服务类型代表用户的希望,并不具有强制性,目前许多设备TCP/IP中不支持服务类型特性。
②在D、T、R、C这4个参数中只能设置其中一个。
◆数据报总长度:在IP数据报封装到以太网帧中进行传输时很有用.
◆标识(IDENTIFICATION):16位每个IP数据报都有一个本地唯一的标识符,它由信源机赋予IP数据报。每次自动加1.
3.1.2 IP
IP协议所处理的数据单元称为IP数据报。其格式如下:
图3-1 数据报格式图[1]
IP数据报由首部和数据两部分组成,首部又分为定长部分和变长部分。
◆版本(VER):4位,表示数据报的IP协议版本,当前的IP协议版本号为4,即IPv4;下一代网络协议IPv6,版本号为6.
◆首部长度(HLEN):4位,表示以字长(4字节)为单位的数据报首部长度。