作者:手机用户2602921437_525 | 来源:互联网 | 2023-10-13 09:19
课题描述
IP协议是用于将多个包交换网络连接起来的,它在源地址和目的地址之间传送一种称之为数据包的东西 ,它还提供对数据大小的重新组装功能,以适应不同网络对包大小的要求。IP的责任就是把数据从源传送到目的地。它不负责保证传送可靠性,流控制,包顺序和其它对于主机到主机协议来说很普通的服务。IP实现两个基本功能:寻址和分段。IP可以根据数据包包头中包括的目的地址将数据报传送到目的地址,在此过程中IP负责选择传送的道路,这种选择道路称为路由功能。如果有些网络内只能传送小数据报,IP可以将数据报重新组装并在报头域内注明。IP模块中包括这些基本功能,这些模块存在于网络中的每台主机
网关上,而且这些模块(特别在网关上)有路由选择和其它服务功能。
IP协议定义在0SI 第三层—网络层,是internet最重要的协议。在IP协议中规定了在internet上进行通信时应遵守的规则,例如IP数据包的组成、路由器如何将I P数据包送到目的主机等。
各种物理网络在链路层(二层)所传输的基本单元为帧(MAC帧),其帧格式随物理网络而异,各物理网络的物理地址(MAC 地址)也随物理网络而异。IP 协议的作用就是向传输层(TCP层) 提供统一的IP包,即将各种不同类型的MAC帧转换为统一的IP包,并将MAC帧的物理地址变换为全网统一的逻辑地址(I P址)。这样,这些不同物理网络MAC帧的差异对上而言就不复存在了。正因为这一转换, 才实现了不同类型物理网络的互联。
IP协议面向无连接,I P网中的节点路由器根据每个IP包的包头I P地址进行寻址,这样同一个主机发出的属于同一报文的IP包可能会经过不同的路径到达目的主机。
IP网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。
IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,井把该数据包发送到更高层— TOP或UDP层;相反,IP层也把从TOP或UDP层接收来的数据包传送到更低层。IP 数据包是不可罪的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。
高层的TOP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IP source routing, 可以用来指定一条源地址和目的地址之间的直接路径。对于一 些TOP和U0P的服务来说,使用了该选项的I P包好像是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统以进行平常时候被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。
IP (Internet Protocol )协议的英文名直译就是:因特网协议。从这个名称我们就可以知道IP协议的重要性。在现实生活中,我们进行货物运输时都是把货物包装成-一个个的纸箱或者是集装箱之后才进行运输,在网络世界中各种信息也是通过类似的方式进行传输的。IP 协议规定了数据传输时的基本单元和格式。如果比作货物运输,IP协议规定了货物打包时的包装箱尺寸和包装的程序。除了这些以外,IP协议还定义了数据包的递交办法和路由选择。同样用货物运输做比喻,IP协议规定了货物的运输方法和运输路线。
在Internet中,一台计算机可以有一个或多个IP地址:就像一个人可以有多个通信地址一样,但两台或多台计算机却不能共享一个IP地址。如果有两台计算机的IP地址相同,则会引起异常现象,无论哪台计算机都将无法正常工作。
需求分析
利用Wireshark软件分析IP协议,学习了解IP数据包,了解IP (互联网协议)的细节。显示的内容包括: 捕获的IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、 头校验和、源IP地址和目的IP地址等内容。捕获数据包,分析数据包,熟悉IP数据包结构,加深对IP层工作原理的理解和认识。学会使用基本网络命令追踪路由,并解决网络问题
IP结构分析
IP数据包格式
互联网络层是TOP/ IP协议参考模型中的关键部分. IP协议把传输层送来的消息封装成IP数据包,并把IP数据包传送给数据链层IP协议在TOP/IP协议族中处于核心地位, IP协议制定了统一的IP数据包格式,以消除个通信子网中的差异,从而为信息发送方和接收方提供了透明的传输通道.编制本程序前,首先要对IP包的格式有一定了解,图3.1给出了IP协议的数据包格式。
版本:占4位,指IP协议版本。并且通信双方使用的版本必须一致,目前我们使用的是IPv4,IPv6也是一种版本,目前用的不多,以后会使用。
首部长度:占4位,表示的最大十进制数是15(注意:首部长度字段所表示的单位是32位子,一个32位字长是4字节),因此首部长度的最小值为5(即:0101),相当于54=20字节,最大值为15(即:1111),相当于154=60字节,切记当首部长度不是4的整数倍时,必须利用最后的填充字段填充。
区分服务:占 8位,用来获得更好的服务,一般情况下不怎么使用这个字段,只有在区分服务时使用这个字段。
总长度:指首部和数据之和的长度,单位为字节,总长度字段为16位,因此数据报的最大长度为2^16 - 1 = 65535。
标识:占16位,IP软件在存储器中维持一个计数器,每产生一个数据包,计数器加1,并将此值赋给标识字段,当数据包长度超过网络的MTU时,就要采用分片处理,分片时,这个标识字段的值就会被复制到所有的数据报切片中。最后相同的数据报标识字段的分片就会重装成为原来的数据报。
标志:占3位,但目前只有两位有意义。标志字段中最低位记MF,MF=1表示后面还有分片的数据报,MF=0,表示这是若干数据报中的最后一个。中间的一位为DF,意思是不能分片,只有当DF=0时才允许分片。
片偏移:占13位,表示相对于用户数据的起点,该片从何处开始,片偏移以8字节为偏移量,也就是说每一个分片的长度一定是8字节的整数倍。
生存时间:占8位,生存时间常用的字段是TTL(Time To Live),表示数据报在网络中的寿命,由发出的源站点设置,目的就是防止无法交付的数据报在因特网中无限制的兜圈子,白白消耗资源。TTL字段是以跳数限制的,每经过一个路由器,在转发之前就把跳数减为1,当TTL减为0时就会丢弃这个数据报,因为数据报在因特网中最大经过的路由器是255。
协议:占8位,协议字段指数据报携带的数据是使用何种协议的,以便使目的主机的IP层知道将数据部分上交给那个处理过程。
首部校验和:占16位,这个字段只检验数据报的首部,不包括数据部分。这是因为数据报没经过一次路由器,都要重新计算一下首部校验和(因为,一些字段如生存时间、标志、片偏移等可能发生变化)。
源地址和目的地址:占32位,表示发送端和接收端的IP地址。
可选字段:占25位,该字段大小长度可变,从一字节到40字节不等。
填充:占7位,前面字段加起来不是4的整数倍时,该字段填充全0补齐为4字节的倍数。
数据传输流程
客户端和服务端数据交换如图所示
具体操作
打开wireshark,选择网络
开始抓包
第一步,确定使用的协议,使用HTTP服务。选择http://www.baidu.com作为目标地址。
第二步,启动抓包:点击【start】开始抓包,在浏览器地址栏输入http://www.baidu.com。
第通过显示过滤器得到先关数据包:通过抓包获得大量的数据包,为了对数据包分析的方便,需要使用过滤器,添加本机IP地址和IP协议过滤条件。
(1)打开命令提示符,通过ipconfig /all来查看本机IP地址。
(2)在工具栏上的Filter对话框中填入过滤条件:ip.addr==192.168.0.101,过滤结果如下:
结果发现效果不是很好,于是将过滤条件中的IP地址更换为http://www.baidu.com的IP地址,操作过程如下:
(1)打开命令提示符,通过ping www.baidu.com来查看目标IP地址。
(2)打开命在工具栏上的Filter对话框中填入过滤条件: ip.addr==14.215.177.38,过滤结果如下:
双击点击一条TCP报文进入详细信息,那为什么不选Protocol类型为IP的协议呢?
答案是没有,TCP报文正是基于IP协议的,TCP是传输层协议,而IP是它底下的网络层协议。
数据分析和追踪路由
数据分析
1.版本(4bit)。ip报文中,版本占了4位,用来表示该协议采用的是那一个版本的ip,相同版本的ip才能进行通信。
2.首部长度(4bit)。该字段表示整个ip包头的长度,其中数的单位是4字节。即二进制数0000-1111(十进制数0-15),其中一个最小长度为0字节,最大长度为60字节。一般来说此处的值为0101,表示头长度为20字节。
3.区分服务(8bit)。该字段用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过。1998 年这个字段改名为区分服务。只有在使用区分服(DiffServ)时,这个字段才起作用。在一般的情况下都不使用这个字段。
4.总长度(16bit)。该字段指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。总长度必须不超过最大传送单元 MTU。
5.标识(16bit)。标识(identification)占 16 位,它是一个计数器,用来产生数据报的标识。
6.标志(3bit)。标志(flag)占 3 位,目前只有前两位有意义。标志字段的最低位是 MF (More Fragment)。MF=1 表示后面“还有分片”。MF=0 表示最后一个分片。标志字段中间的一位是 DF (Don’t Fragment) 。只有当 DF=0 时才允许分片。
7.片偏移(13 bit)。该字段指出较长的分组在分片后某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。
8.生存时间(8 bit)。记为 TTL (Time To Live)数据报在网络中可通过的路由器数的最大值。
9.源地址/目的地址(32bit)。
源地址
目的地址
10.可选字段,一般一些特殊的要求会加在这个部分。
11.数据
追踪路由
1 tracert实现原理
(图为网图,方便理解)
- 从源地址发出一个ICMP请求回显(ICMP Echo Request)数据包到目的地址,并将TTL设置为1;
- 到达路由器时,将TTL减1;
- 当TTL变为0时,包被丢弃,路由器向源地址发回一个ICMP超时通知(ICMP Time Exceeded Message),内含发送IP包的源地址,IP包的所有内容及路由器的IP地址;
- 当源地址收到该ICMP包时,显示这一跳路由信息;
- 重复1~5,并每次设置TTL加1;
- 直至目标地址收到探测数据包,并返回ICMP回应答复(ICMPEcho Reply);
- 当源地址收到ICMP Echo Reply包时停止tracert。
注:
1.Windows系统使用ICMP请求回显(ICMP Echo Request)数据包进行探测,源地址以目的地址返回的ICMP回应答复(ICMP Echo Reply)作为跟踪结束标志。
2.Traceroute每跳默认发送3个探测包。在未能到达路由器或未返回ICMP超时通知的情况下,相应的延时位置会以*显示。
3.每个探测包都有唯一的标识号,ICMP数据包使用seq进行标识。
具体操作
如图,第一跳为192.168.43.1,第二跳为10.254.11.46,第三跳为请求超时;每条记录输出3个延时结果,说明源地址每次默认发送三个数据包;在第7条记录只有2个延时结果,说明源地址只收到了2个ICMP超时通知消息;数据包从源地址经过11跳之后到达目的地址。
这样,就简单的完成了一次ip协议的分析过程
创作不易,大佬们留步… 动起可爱的双手,来个赞再走呗 (๑◕ܫ←๑)