Tim

一枚野生程序员~

  • 主页
  • 分类
  • 标签
  • 归档
  • 关于
所有文章 工具

Tim

一枚野生程序员~

  • 主页
  • 分类
  • 标签
  • 归档
  • 关于

IP数据报格式及分片

阅读数:次 2019-10-29
字数统计: 1.2k字   |   阅读时长≈ 4分

IP数据报格式

mark

下面是首部的结构:

mark

这里的长度单位都是位(比特位)

1、版本

4位版本号(version):指定IP协议的版本,对于IPv4来说,就是4

2、首部长度

4位头部长度(header length):IP头部的长度,单位是4比特,最小为5(因为固定部分为20字节,所以最小就是5),也就是说首部长度是 4×5=20到 4×15=60之间

3、区分服务

8位服务类型(Type Of Service):3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0)。4位
TOS分别表示:最小延时、 最大吞吐量、 最高可靠性、最小成本。 这四者相互冲突,只能选择一个。对于
ssh/telnet这样的应用程序,最小延时比较重要;对于ftp这样的程序,最大吞吐量比较重要。

4、总长度

16位总长度(total length):IP数据报整体占多少个字节

5、标识

16位标识(id):唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每一个片里面的这个
id都是相同的。

6、标志

3位标志字段:第一位保留(保留的意思是现在不用,但是还没想好说不定以后要用到)。第二位置为1表示禁
止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。第三位表示“更多分片”,如果分片了的话,最后一个分片置为1,其他是0。类似于一个结束标记。

7、片偏移

13位分片偏移(framegament offset):是分片相对于原始IP报文开始处的偏移。其实就是在表示当前分片
在原报文中处在哪个位置,实际偏移的字节数是这个值 * 8 得到的。因此,除了最后一个报文之外,其他报
文的长度必须是8的整数倍(否则报文就不连续了)。

8、生存时间

8位生存时间(Time To Live, TTL):数据报到达目的地的最大报文跳数,一般是64。每次经过一个路由,TTL
就减一,一直减到0还没到达,那么就丢弃了。这个字段主要是用来防止出现路由循环

9、协议

8位协议:表示上层协议的类型

mark

10、首部校验和

16位头部校验和:使用CRC进行校验,来鉴别头部是否损坏。也就是二进制的和!

11、源地址和目的地址

32位源地址和32位目标地址: 表示发送端和接收端

12、可选字段和填充

用来支持排错、测量以及安全等措施

IP数据报分片

1、最大传送单元MTU

MTU全称是maximum transmission unit,是指链路层数据帧可封装数据的上限,以太网的MTU是1500字节。

mark

2、IP数据报的标识

回顾一下IP数据报中的标识:唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每一个片里面的这个id都是相同的。

3、IP数据报的标识字段

回顾一下IP数据报中的标志字段:

mark

4、IP数据报的片偏移

片偏移:指出较长分组分片后,某片在原分组中的相对位置,以8B为单位。除了最后一个分片,每个分片长度一定是8B的整数倍。

5、分片示例

以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位;最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;

如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation);不同的数据链路层标准的MTU是不同的;

下面以1420比特为最大值进行分片:

mark

这个例子其实很好理解,首部必须占用了20位,数据划分为1400位+1400位+1000位,他们都来自同一个数据报,所以标识都是一样的(在这里假设都为12345),数据报1、2、3DF都是0则表示允许分片,数据报1、2MF都是1表示后面还有分片,数据报3的MF为0,代表自己是最后一个分片,后面没有分片了,至于片偏移这个额也是可以计算的,数据报1的片偏移为0,1400/8=175,所以数据报2的片偏移为175,数据报3的片偏移为350,通过片偏移就是为了数据重组或者合并后仍然是原来未分片时候的顺序!

赏

谢谢你请我喝咖啡

支付宝
微信
  • 本文作者: Tim
  • 本文链接: https://zouchanglin.cn/1869031479.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 许可协议。转载请注明出处!
  • 计算机网络

扫一扫,分享到微信

计算机网络性能指标
分布式架构基础
  1. 1. IP数据报格式
    1. 1.1. 1、版本
    2. 1.2. 2、首部长度
    3. 1.3. 3、区分服务
    4. 1.4. 4、总长度
    5. 1.5. 5、标识
    6. 1.6. 6、标志
    7. 1.7. 7、片偏移
    8. 1.8. 8、生存时间
    9. 1.9. 9、协议
    10. 1.10. 10、首部校验和
    11. 1.11. 11、源地址和目的地址
    12. 1.12. 12、可选字段和填充
  2. 2. IP数据报分片
    1. 2.1. 1、最大传送单元MTU
    2. 2.2. 2、IP数据报的标识
    3. 2.3. 3、IP数据报的标识字段
    4. 2.4. 4、IP数据报的片偏移
    5. 2.5. 5、分片示例
© 2017-2021 Tim
本站总访问量次 | 本站访客数人
  • 所有文章
  • 工具

tag:

  • 生活
  • Android
  • 索引
  • MySQL
  • 组件通信
  • Nginx
  • JavaSE
  • JUC
  • JavaWeb
  • 模板引擎
  • 前端
  • Linux
  • 计算机网络
  • Docker
  • C/C++
  • JVM
  • 上传下载
  • JavaEE
  • SpringCloud
  • Golang
  • Gradle
  • 网络安全
  • 非对称加密
  • IDEA
  • SpringBoot
  • Jenkins
  • 字符串
  • vim
  • 存储
  • 文件下载
  • Mac
  • Windows
  • NIO
  • RPC
  • 集群
  • 微服务
  • SSH
  • 配置中心
  • XML
  • Chrome
  • 压力测试
  • Git
  • 博客
  • 概率论
  • 排序算法
  • 分布式
  • 异常处理
  • 文件系统
  • 哈希
  • openCV
  • 栈
  • 回溯
  • SpringCore
  • 流媒体
  • rtmp
  • 面向对象
  • Vue
  • ElementUI
  • 软件工程
  • 异步
  • 自定义UI
  • ORM框架
  • 模块化
  • 交互式
  • Jsoup
  • Http Client
  • LRUCache
  • RabbitMQ
  • 消息通信
  • 服务解耦
  • 负载均衡
  • 权限
  • 多线程
  • 单例模式
  • Protobuf
  • 序列化
  • Python
  • m3u8
  • 堆
  • 二叉树
  • 自定义View
  • 观察者模式
  • 设计模式
  • 线程池
  • 动态扩容
  • 高可用
  • GC
  • ffmpeg
  • SpringMVC
  • REST
  • Redis
  • 缓存中间件
  • UML
  • Maven
  • Netty
  • 高性能网络
  • IPC通信
  • IO
  • Stream
  • 发布订阅
  • SQLite
  • Hash
  • 集合框架
  • 链表
  • Lambda
  • 汇编语言
  • 组件化
  • Router
  • 开发工具

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia-plus根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • 思维导图
  • PDF工具
  • 无损放大
  • 代码转图
  • HTTPS证书