首页 > 其他分享 >ip数据报

ip数据报

时间:2023-04-18 17:47:30浏览次数:59  
标签:字节 ip MTU 标识 分片 数据

1、介绍

ip数据报,也称为ip包,ip分组。

IP协议屏蔽了下层各种物理子网的差异,能够向上层提供统一格式的IP数据报。lP数据报采用数据报分组传输的方式,提供的服务是无连接方式。

tcp和udp的网络层都是基于ip数据报。

2、数据报格式

前面部分为固定的20字节,后面可变部分,长度可变

(1)版本,占4位,即ip协议版本。ipv4表示为4,0100

(2)首部长度,占4位,单位是4字节。一般就为5,0101,表示固定的首部字段。如果添加可变部分,则需要为4字节的整倍数,不足部分需要补全

(3)区分服务,占8位。一般未使用,为0x0000

(4)总长度,首部和数据之和,单位是字节,占2个字节。因此数据表最大长度65535字节。

实际中,ip层下面的数据链路层限制了最大传送单元MTU,maximum transfer unit。当一个数据报封装成链路帧时,数据报总长度不得超过下面的数据链路层的MTU值。

(5)标识,占16位。

  • IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。
  • 数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
  • 分片和组装是受数据链路层影响,也就是说标识是在相邻两个主机间作用。接收后传递给下一个主机,则写入自己的标识。
  • 下一主机接收后,根据自身下一传输过程的数据链路层MTU决定是否进行分片

(6)标志,占3位,但只有两位有意义

  • 最低位记为MF,more fragment,为1标识后面还有分片的数据报,为0则表示当前是最后一个
  • 中间位记为DF,don’t fragment,为0时有效才允许分片

(7)片偏移,占13位,单位是8个字节,指导接收方如何拼接。也就是说,除了最后一个分片,其余都必须是8字节的整倍数

(8)生存时间TTL,time to live,占8位,表明是数据报在网络中的寿命。在网络传输过程中,如果值为0时被丢弃,用于防止在网络中无限传递,消耗资源。

  • 最初设计是单位为秒,后来改为设计为跳数,即每经过一个ip减1

(9)协议,占8位,指明上层的协议。tcp是6,0x06。udp是17,0x11

(10)首部校验和,占16位

(11)源地址,32位

(12)目的地址,32位

3、wireshark

(1)一般分析

(2)ip总长度受限于数据链路层的MTU值,列表中发现的最大值为1492,并未超出1500

(3)标识

对不同目的ip发送的ip分组,标识起始值一般是不同的。

对同一目的ip发送的ip分组,标识一般是依次递增1。

 

标签:字节,ip,MTU,标识,分片,数据
From: https://www.cnblogs.com/wd404/p/17330470.html

相关文章

  • 打印pdf 前端请求数据并打印pdf文件
    1、参考vue接收后端传来的pdf文件流,前端调用预览PDF2、原理3、代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>pdf</title></head><div><inputstyle="display:none&q......
  • pandas读取Excel核心源码剖析,面向过程仿openpyxl源码实现Excel数据加载
    今天我们将研究pandas如何使用openpyxl引擎读取xlsx格式的Excel的数据,并考虑以面向过程的形式简单的自己实现一下。截止目前本人所使用的pandas和openpyxl版本为:pandas:1.5.2openpyxl:3.0.10今天所有的测试全部基于以下文件:pandas的read_excel核心代码这里我使用pycharm工具对以下代......
  • 小白用chatgpt编写python 爬虫程序代码 抓取网页数据(js动态生成网页元素)
    jS动态生成,由于呈现在网页上的内容是由JS生成而来,我们能够在浏览器上看得到,但是在HTML源码中却发现不了一、注意:代码加入了常规的防爬技术    如果不加,如果网站有防爬技术,比如频繁访问,后面你会发现什么数据都取不到1.1 模拟请求头: 这里入进入一步加强,随机,主要是User-Agen......
  • VMware centos7静态IP,开通SSH
     1CMD里ipconfig查看虚拟机网卡分配的IP网段:  2虚拟机设置这里选自定义VMnet8,不然就算改了ifcfg-en32,也不能访问外网  3 vi/etc/sysconfig/network-scripts/ifcfg-en32BOOTPROTO=static    #开机协议,有dhcp及static;ONBOOT=yes     #设置为开......
  • IPv4地址
    1、介绍ipv4地址是一组32位比特组成的地址,用于在OSI协议的第三层标识网络设备身份。一般采用点分十进制书写。比如127.0.0.1。2、网络号和主机号一个ip地址的32位可以分为网络号和主机号两个部分,将庞大的网络整体分为多个网络号管理的小型局域网络,主机号则是该子网络下的主机......
  • 【愚公系列】2023年04月 .NET CORE工具案例-DeveloperSharp的使用(数据库)
    (文章目录)前言DeveloperSharp是一个研发中大型项目必备的系统平台。也是一个低代码平台。它主要包括了如下一些功能:基于Sql语句、存储过程、事务、分页的数据库操作。并几乎支持市面上所有种类的数据库。图片操作。裁剪、缩放、加水印。http请求调用(Post与Get)高效分页We......
  • python如何对.csv文件里面的信息进行数据可视化
    相关步骤1、首先打开.csv文件2、然后获取任意指定列的所有数据3、绘制出折线图4、然后由于国家数量过多,就成了这副样子但是数据是没有错误的尝试更改后,其实也是没有啥效果;然后就把他放在世界地图了:......
  • NBU备份系统中oracle数据库自动恢复脚本
    #!/bin/bash#oracle数据库恢复源客户端主机名exportclient=dmzdb71cd/usr/openv/netbackup/bin/CONTROL=`./bplist-C${client}-t4-R/|awk-F:'NR==1{print$(NF)}'`;exportCONTROL;#恢复库Oracle环境变量exportORACLE_SID=moniexportORACLE_HOME=/u01/......
  • Pandas 读写sqlite数据库
    SQLite3工具实现了简单、轻量级的DBMSSQL,因此可以内置于用python语言实现的任何应用。若想使用数据库的所有功能而又不想安装真正的数据库,这个工具就是最佳选择。若想在使用真正的数据库之前练习数据库操作,或在单一程序中使用数据库存储数据而无需考虑接口,SQLite3都是不错的选择......
  • Nlog-动态修改DatabaseTarget,对数据库字符串进行加密
    privatestaticLoggerprocessLogger;//①LnProcessDBLog标签LogManager.GetLogger("LnProcessDBLog");②使用前先保证不为null,否则InitNlog();//修改Nlog.config配置的文件privatestaticvoidInitNlog(){LoggingConfigurationloggingConf......