课题描述

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实现原理

(图为网图,方便理解)

  1. 从源地址发出一个ICMP请求回显(ICMP Echo Request)数据包到目的地址,并将TTL设置为1;
  2. 到达路由器时,将TTL减1;
  3. 当TTL变为0时,包被丢弃,路由器向源地址发回一个ICMP超时通知(ICMP Time Exceeded Message),内含发送IP包的源地址,IP包的所有内容及路由器的IP地址;
  4. 当源地址收到该ICMP包时,显示这一跳路由信息;
  5. 重复1~5,并每次设置TTL加1;
  6. 直至目标地址收到探测数据包,并返回ICMP回应答复(ICMPEcho Reply);
  7. 当源地址收到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协议的分析过程
创作不易,大佬们留步… 动起可爱的双手,来个赞再走呗 (๑◕ܫ←๑)

网络原理课设——IP协议分析相关推荐

  1. 网络原理之TCP/IP协议

    文章目录 1.网络基础 1.1 认识IP地址 1.1.1概念 1.1.2 作用 1.1.3 格式 1.1.4 组成 1.1.5 分类 1.2 子网掩码 1.2.1 格式 1.2.2 作用 1.2.3 ...

  2. 【网络原理】TCP/IP协议五层模型

  3. 网络原理 --- 传输层Ⅱ TCP协议中的确认应答,超时重传和连接管理

    文章目录 网络原理 传输层 TCP 协议 TCP的基本特性 1.确认应答 2.超时重传 3.连接管理 ❗❗①建立连接(三次握手) ②断开连接(四次挥手) 总结 网络原理 介绍TCP/IP协议中每一层里 ...

  4. 计算机网络实验-->> IP 协议分析

    一.实验目的 掌握IP数据包格式以及关键字段的含义: 掌握路由器转发IP数据包的流程: 理解验证IP分片原理. 二.实验内容 根据下述网络拓扑结构图,实现IP协议分析. 三.实验步骤 1.添加并连接网 ...

  5. uIP tcp/ip协议分析及其在嵌入式系统中的应用

    网络技术的发展使越来越多的工业控制设备将网络接入功能作为其必备的特性之一.同样,嵌入式系统的发展,要求其应用能够支持网络功能,为用户提供一个简易方便的可视化图形界面.当前WEB浏览器已经成为用户的合理 ...

  6. 计算机网络-实验5:网络层-IP协议分析

    实验报告 IP协议分析与子网转发 实验目的:1.理解IP协议数据报格式,IP数据包分片:                   2.了解路由器在不同子网之间转发数据报,配置静态路由. 实验任务1.启动W ...

  7. Linux网络编程篇之ICMP协议分析及ping程序实现

    Linux网络编程系列: Linux网络编程篇之Socket编程预备知识 Linux网络编程篇之TCP协议分析及聊天室功能实现 如果对Linux网络编程,对socket通信不是太清楚的同学,强烈推荐看 ...

  8. 【Python】猎聘网招聘数据爬虫(Python网络爬虫课设简要)

    [Python]猎聘网招聘数据爬虫(Python网络爬虫课设简要) 注: 本文仅供学习交流使用! 合肥学院-20信管-20302211009 项目文件可自行前往博客主页下载或联系作者qq(341625 ...

  9. KNX IP 协议分析

    KNX IP 协议分析 KNXnet/IP 连接请求数据包 连接请求响应数据包 连接状态请求 连接状态请求响应 Tunnel请求 Tunnel请求响应 最后 KNXnet/IP   KNXnet/IP ...

最新文章

  1. Kafka深度解析(如何在producer中指定partition)(转)
  2. 怎么配置搭建Nginx网站服务器
  3. Mockito:一个强大的用于Java开发的模拟测试框架
  4. mysql存储过程大于小于_mysql5.0存储过程操作符知识_函数方法[Mysql学习]
  5. android 减少图片出现oom错误
  6. 服务器机房新风系统,某机房新风系统设计方案参考
  7. Taro+react开发(81):props属性
  8. STM32项目(二) —— 车灯测试台架
  9. redis主从的配置和使用
  10. DJL | DJL 如何正确打开 [ 深度学习 ]
  11. 开启spring boot学习之旅
  12. 利用POI 技术动态替换word模板内容
  13. 函数adapthisteq
  14. xsd文件转图片_原来华为手机能一键将图片转为PDF,实在太方便啦!你还不会吗?...
  15. Kali虚拟机安装,设置中文等详细教程,Linux最新免镜像版
  16. hdu7116 lowbit (线段树+lowbit的性质)
  17. (LINPACK)HPL测试成功步骤整理
  18. 笔记本电脑计计算机硬盘分区,笔记本电脑如何分区,小编教你笔记本电脑如何分区...
  19. 复变函数的极限和连续
  20. node插件rimraf

热门文章

  1. go pprof性能分析
  2. python数据字符串_python数据类型-字符串
  3. win7安装打印机 计算机,WIN7安装网络打印机设置教程
  4. PY-pandas | 数据重塑
  5. lol现在哪个服务器有无限火力,LOL公布最新消息,无限火力模式再次登场,这次是全新的体验...
  6. [matlab]石头剪刀布
  7. 有一种冷,叫做“冻关机”
  8. 使用AHK为音量调节设置快捷键 | AutoHotKey
  9. python终止循环_python终止循环
  10. 北语计算机基础3,北语网院20秋《计算机基础》作业3题目及答案