一、基本概念

  IP数据包也称为IP报文分组,是网络层的一个协议,由IP报文头和IP报文用户数据组成,IP报文头部长度一半在20-60个字节之间。一个IP分组最大长度不能超过65535个字节。IP是一个不可靠和无连接的协议,因为它提供的的是最大努力传输;没有推自身传输的消息进行检错和跟踪的方法,因此IP具有内在协议层的不可靠性,如果对数据的可靠性质有要求可以选择IP+TCP,如果对数据的可靠性无要求可以使用IP+UDP。

二、数据格式

 

版本号[4bit] :  用于指定IP协议的版本号,目前主要版本为IPv4, 即第4版本号,通信双方的IP协议版本号必须一致,否则无法直接进行通信。

首部长度[4bit]:指IP报文头部长度,每个长度单位为4个字节, 最小长度(0101)为5个单位长度, 所以IP协议报文头部长度最小20(5 * 4)个字节;最大长度(四个bit全为1),为15个单位长度, 所以最大为60(15 * 4)个字节。

服务类型[8bit]: 用来表示更好的服务。

    RFC791[互联网标准]:

其中前3个bit 表示报文优先级取值为 0: 普通级别(缺省标记值)、1:优先(数据业务)、2: 快速(数据业务)、3:闪速(语音控制)、4: 疾速(视频会议、视频流)、5:关键(语音数据)、6:网间控制(网络控制数据)、7:网络控制(网络控制数据), 后几位分别表示低延时、高吞吐、高可靠、低路由,字段为1表示启用,为0表示不启用。

    

    

  

  总长度[16bit]: 包括首部和数据之和,单位为字节,报文总长度最大可表示65545个字节

  标识[16bit]: 唯一标识主机发送的数据报,当IP报文长度超过网络的MTU(最大传输单元)时,进行分片,该标示字段不变。 通常每发送一个报文,该字段值+1

  标志[3bit]:传输控制标志, 分别表示R、DF、MF三位, DF位为分片标志位值为0分片,MF位中断标志位值为1表示最后分片字段

  片偏移[13bit]:在原先数据报文中相对首位的偏移位。(需要再乘以8)

  生存时间(TTL)[8bit]:IP报文所允许通过的路由器的最大数量。每经过一个路由器,TTL减1,当为0时,路由器将该数据报丢弃。TTL 字段是由发送端初始设置一个 8 bit字段.推荐的初始值由分配数字 RFC 指定,当前值为 64。发送 ICMP 回显应答时经常把 TTL 设为最大值 255。

  协议号[8bit]:IP报文携带的数据使用的是那种协议,以便目的主机的IP层能知道要将数据报上交到哪个进程

  首部校验和[8bit]:计算IP头部的校验和,用于检测首部在传输过程中是否出现差错

  源IP地址[32bit]:发送端设备IP地址

  目标IP地址[32bit]:目标IP地址

  选项信息:IP选项是IP固定首部之后的选项部分,由于IP首部长度是用4bit来计数,以4个字节为表示的,所以首部长度最多为60个字节,IP选项最多为40个字节。IP选项字段可能包含0~多个单独选项。选项包含两类:单字节与多字节。

单字节:单个标明类型的选项, 单字节IP选项只有俩个

      

选项表的结尾:在可变长度的选项的结尾必须使用操作结束符(有时成为选项列表结束符),因此,只能有一个选项结束符。选项结束符在所有选项的结尾。并且只有在选项的结尾无法按照IP数据报的题头长度字段中规定与选项题头的结尾保持一致时,才会使用结束符。

无操作:是一个填充字符,没有任何功能,只作为填充符放在选项的开始或现象之间,一边在32位边界对其下一个选项,无操作字节没有长度字段。用于规定数据报控制选项,并支付只到第一个段中

多字节: 多字节IP选项共有七个,由一个字节的复用字段,一个字节的长度字段和一个可变长度的数据字段组成。

记录路由:记录有为记录IP数据在从源设备传输到目的设备时采用的路径提供了一种方法。

时间戳:用于记录路由器有路由处理数据报所用的时间,时间以毫秒为单位,时间戳只能给出数据包从一个路由器传输到下一个路由器所使用的时间的预估值。

严格源路由:严格路由为设备提供了数据报到达目的地必须通过的跳(路由器接口)的列表,这些跳是数据报可以使用的唯一路由器。 在这个列表中两个连续地址之间的路径之间不能有多个物理网络否则将产生一个错误信息。如果数据不能沿着严格源路由指定的路径传送。这个数据将会丢弃。

宽松源路由:宽松源路由允许主机或路由器使用具有任何数量的中间路由器的路由到达该路由中的下一个必经的接口。如果路由器利用记录的路由器代替愿路由,这个选项成为宽松源和记录路由选项

  数据包:上层协议数据

转载于:https://www.cnblogs.com/onlycat/p/11401113.html

0x0800 IP数据包格式分析相关推荐

  1. <整理总结>H264/265码流数据包格式分析(带mp4v2封装H264/265为MP4的源码示例)

    H264/265码流数据包格式分析 前言: 一.H.264码流解析 I帧P帧B帧说明: 二.H.265码流解析 三.主要源码 前言: 最近在学习使用MP4v2将H264/H265码流以及AAC音频封装 ...

  2. IP数据包格式(ICMP协议与ARP协议)

    这里写目录标题 IP数据包格式 网络层的功能 IP数据包格式 ICMP协议 ping 广播域 ARP协议(地址解析协议) 无故ARP ARP工作原理: ARP报文 查看arp缓存表(静态arp和动态a ...

  3. Linux 系统应用编程——网络编程(TCP/IP 数据包格式解析)

    图中括号中的数字代表的是当前域所占的空间大小,单位是bit位. 黄色的是数据链路层的头部,一共14字节 绿色的部分是IP头部,一般是20字节 紫色部分是TCP头部,一般是20字节 最内部的是数据包内容 ...

  4. TCP/IP数据包格式详解-包括数据链路层的头部

    图中括号中的数字代表的是当前域所占的空间大小,单位是bit位. 黄色的是数据链路层的头部,一共14字节 绿色的部分是IP头部,一般是20字节 紫色部分是TCP头部,一般是20字节 最内部的是数据包内容 ...

  5. Linux 网络编程——TCP/IP 数据包格式解析

    图中括号中的数字代表的是当前域所占的空间大小,单位是bit位. 黄色的是数据链路层的头部,一共14字节 绿色的部分是IP头部,一般是20字节 紫色部分是TCP头部,一般是20字节 最内部的是数据包内容 ...

  6. IP数据包的分析实例

    要分析IP包,首先要知道IP包的包头格式,各种计算机网络的书籍都有介绍,必须了解该协议分析包才有意义,IPv4首部一般是20字节长,该协议如下: 下面使用Ethereal抓取一个特定的IP包,然后根据 ...

  7. 计算机网络ip数据包分析题,计算机网络课程设计_IP数据包的捕获及分析.doc

    CENTRAL SOUTH UNIVERSITY 计算机网络课程设计报告 目录 第一章 课程设计的目的与要求1 1.1 课程设计的目的1 1.2 课程设计的要求1 第二章 课程设计的内容3 2.1 课 ...

  8. 计算机网络ip数据包分析题,计算机网络课程设计-IP数据包解析实验报告

    计算机网络课程设计-IP数据包解析实验报告 解析 IP数据报实验报告目录目录 21.课程设计目的 .22.课程设计要求 .23.相关知识 .24.课程设计分析 .64.1 网卡设置64.2 使用套接字 ...

  9. 网络层协议和IP数据包的格式(详解)

    1.网络层的功能 定义了基于IP协议的逻辑地址,就是ip地址 连接不同的媒介类型 选择数据通过网络的最佳路径,完成逻辑地址寻址 2.IP数据包格式 版本号( Version): 4bit 指IP协议版 ...

最新文章

  1. python 浏览器显示本地文件夹_从浏览器中打开本地文件文件夹
  2. ios5 ARC机制介绍和使用
  3. 银行、航空软件结构图
  4. 01爬虫基本原理及Requests库下载
  5. 小看--发布-订阅(观察者)模式
  6. 深度学习中tensorflow框架的学习
  7. mysql将时间戳转成常用可读时间格式
  8. 梦世界服务器修改指令,我的世界梦世界有哪些指令必须知道 梦世界所有必须知道指令汇总...
  9. 从零点五开始用Unity做半个2D战棋小游戏(六)
  10. c++ windows 点击按钮跳转另一个窗体_PyQt5学习笔记(一)窗体控制
  11. poj1419 Graph Coloring 最大独立集(最大团)
  12. 何凯明最新一作MAE解读系列2之代码实践
  13. 支持向量机原理与实现
  14. GO语言:zorm介绍
  15. 「SQL面试题库」 No_10 超过经理收入的员工
  16. 【机器人】关于工业机器人控制系统,这几方面内容你必须掌握;中国3C电子智造行业优秀的机器人供应商推荐...
  17. 不需要到健身房的互动健身,so cool
  18. 四羧基锌酞菁(ZnC4Pc),Zn-taPc 的荧光激发光谱介绍,齐岳生物供应酞菁材料
  19. 微信小程序Demo组件大全(对话框、指示器、五星评分,画廊,影院座位……
  20. Java基础day2【谷】

热门文章

  1. Android空间WebView和ViedeoView的使用
  2. Promise和Async-Await的入门教程
  3. 手机linux内核下载,Linux Kernel
  4. mysql主从配置笔记_MySQL主从配置学习笔记
  5. verilog实例_Verilog设计与逻辑综合实例解析(含代码)(Tasks amp;Functions)
  6. a java runtime envi_认识java
  7. 一文带你认识:Liunx的历史
  8. 还在担心服务挂掉?Sentinel Go 让服务稳如磐石
  9. K8s 从懵圈到熟练 – 镜像拉取这件小事
  10. vue第二次ajax失效,解决VUE-Router 同一页面第二次进入不刷新的问题