IP分片与重组详解
大家对IP数据包头,应该不陌生吧
分片便是与图中圈出来的两个地址有关,本文也是将主要围绕他们展开。
那我们先来了解他们的概念。
标志
一个三比特字段遵循与用于控制或识别片段。他们是(按顺序,从高分以低位):
0:保留; 必须为零。
1位:不分段(DF)
2位:更多片段(MF)
如果DF标志被设置,并且分片需要来路由分组,则该分组被丢弃。这可以发送分组到不具有足够的资源来处理破碎的宿主时,可以使用。它也可用于路径MTU发现由主机IP软件,可以自动或使用诊断工具例如手动平或跟踪路由。对于未分段的数据包,对MF标志被清除。对于分片包,除了最后的所有片段具有MF标志设置。最后片段具有一个非零片偏移量字段,从一个未分段的分组区分它。
分片偏移
片段偏移字段以8字节块为单位进行测量。它是13位长,并指定特定相对于原始未分段的IP数据报的开始的片段的偏移量。零第一片段已偏移。这允许最多(2偏移13(次方) - 1)×8 =字节65,528,这将超过65,535字节的最大IP报文长度与包括报头长度(+ 65,528 20 = 65548字节)。
为什么要分片呢?
互联网协议使网络互相通信。设计要迎合不同物理性质的网络; 它是独立于链路层使用的基础传输技术。具有不同硬件的网络通常会发生变化,不仅在传输速度,而且在最大传输单元(MTU)。当一个网络要的数据报发送到具有较小MTU的一个网络,它可能片段的数据报。在IPv4中,这个功能被放置在因特网层,并且在IPv4路由器,这因此只需要这个层作为最高的一个在其设计中实现的处理。
与此相反,IPv6的,下一代互联网协议的,不允许的路由器来执行分片; 发送数据包之前,主机必须确定路径MTU。
分片
当路由器收到一个数据包时,它会检查目的地址,并确定出接口使用,并且该接口的MTU。如果分组的大小是比MTU大,并且在该分组的头中的不分段(DF)位被设置为0,则路由器可分段的数据包。
路由器将所述分组成片段。每个片段的最大尺寸是MTU减去IP包头的大小(20字节最低; 60个字节的最大值)。路由器会在每个片段到其自己的数据包,有以下改变每个分片报文:
该总长度字段是片段大小。
所述多个片段(MF)标志被设置为除了最后一个,这被设置为0的所有片段。
该片段的偏移字段被设置的基础上,在原来的数据有效载荷的片段的偏移量。这是在8字节块为单位进行测量。
该头校验域被重新计算。
例如,对于1500字节的MTU和20个字节的报头大小,该片段的偏移将是(1500年至1520年)/ 8 = 185。这些倍数倍数0,185,370,555,740,...
它有可能为一包在一个路由器进行分段,并在另一路由器进行分段的片段。例如,考虑4500个字节,没有选项大小和20字节的IP报头大小传输层段。因此IP分组大小为4,520字节。
重组
接收机知道一个分组是片段,如果满足下列条件中的至少一个为真:
“更多碎片”标志设置。(这是除最后所有片段真)。
在“片段偏移”字段是零。(这是为除第一所有片段真)
接收器标识匹配使用外国和当地的互联网地址,协议号,和识别领域的片段。接收器将重组从片段数据与同时使用的片段偏移和多个片段标志相同的ID。当接收机接收的最后一个片段(其具有的“更多片段”标志设置为0),它可以通过乘以最后一个片段的八个偏移,并加入最后一个片段的数据的大小来计算的原始数据有效载荷的长度,。在上面的例子中,这一计算是495 * 8 + 540 = 4500字节。
当接收机具有所有的片段,它可以把它们在正确的顺序,通过使用他们的偏移。然后,它可以通过他们的数据的堆栈作进一步处理。
IP分片与重组详解的更多相关文章
- DPDK IP分片及重组库(学习笔记)
1 前置知识学习 1.1 MTU MTU是最大传输单元( Maximum Transmission Unit)的缩写,指一个接口无需分片所能发送的数据包的最大字节数. MTU范围在46 ~ 1500 ...
- IP地址、子网掩码详解
如何通过子网掩码划分网段 资料一: 一.缺省A.B.C类地址,子网掩码: 二.子网掩码的作用: code: IP地址 192.20.15.5 11000000 00010100 00001111 ...
- IP命令的用法详解
IP命令的用法详解 原创 2017-06-29 10:02:34 0932 摘自:http://www.php.cn/linux-371363.html ip命令是Linux下较新的功能强大的 ...
- 网络基础知识-TCP/IP协议各层详解
TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...
- TCP/IP协议簇分层详解---转
http://blog.csdn.net/hankscpp/article/details/8611229 一. TCP/IP 和 ISO/OSI ISO/OSI模型,即开放式通信系统互联参考模型(O ...
- redis主从架构,分片集群详解
写在前面:这篇笔记有点长,如果你认真看完,收获会不少,如果你只是忘记了相关命令,请翻到末尾. redis的简单介绍: 一个提供多种数据类类型储存,整个系统都在内存中运行的, 定期通过异步的方式把数据刷 ...
- IP数据包格式详解(转)
摘自:http://blog.163.com/hlz_2599/blog/static/1423784742011112195857956/</> TCP/IP协议定义了一个在因特网上传输 ...
- TCP/IP数据包结构详解
一般来说,网络编程我们只需要调用一些封装好的函数或者组件就能完成大部分的工作,但是一些特殊的情况下,就需要深入的理解网络数据包的结构,以及协议分析.如:网络监控,故障排查等…… IP包是不安全的,但是 ...
- TCP/IP笔记(七)TCP详解
TCP的特点及其目的 为了通过数据包实现可靠性传输,需要考虑很多事情,例如数据的破坏.丢包.重复记忆分片顺序混乱等问题.如不能解决这些问题,也就无从谈起可靠传输. TCP通过检验和.序列号.确认应答. ...
随机推荐
- 论文--Topic-Sensitive PageRank
背景 原有的PageRank方法:通过web上链接结构信息得到页面之间相对的重要性,和特定的查询内容无关 论文涉及到的其他算法 HITS Hilltop,处理常见的流行查询 popular query ...
- C# 使用PrintDocument 绘制表格 完成 打印预览 DataTable
经过不断的Google与baidu,最终整理出来的打印类 主要是根据两个参考的类组合而成,稍微修改了一下,参考代码及来源见最后(其中一份是VB语言的) 其中遇到的一些问题也已经得到了解决(分页,打印预 ...
- Altium Designer Summer 09 Gerber 文件设置
- 判断socket连接是否失效
http://blog.csdn.net/jazywoo123/article/details/8693661 http://www.itnose.net/st/141698-pn11.html
- [原创]Java性能优化权威指南读书思维导图3
[原创]Java性能优化权威指南读书思维导图3
- springmvc中的页面解析器ViewResolver不起作用,变量输出字符串的解决方案
<web-app xmlns:web="http://xmlns.jcp.org/xml/ns/javaee"> <servlet> <servlet ...
- ASP.NET WebAPI构建API接口服务实战演练
一.课程介绍 一.王小二和他领导的第一次故事 有一天王小二和往常一下去上早班,刚吃完早餐刚一打开电脑没一会儿.王小二的领导宋大宝走到他的面前,我们现在的系统需要提供服务给其他内部业务系统,我看你平时喜 ...
- Unity Shader-后处理:简单的颜色调整(亮度,饱和度,对比度)
好久没坚持写blog了,是时候开始撸一波新博文了!学习Unity有一段时间了,关于Shader的书也看了几本<Unity Shader入门精要>,<Unity 3D ShaderLa ...
- 阿里云 RDS 与 DRDS 学习了解
RDS 主页:https://help.aliyun.com/document_detail/26092.html?spm=5176.7741872.6.539.4h8LSC DRDS 主页:http ...
- Caffe使用step by step:caffe框架下的基本操作和分析
caffe虽然已经安装了快一个月了,但是caffe使用进展比较缓慢,果然如刘老师说的那样,搭建起来caffe框架环境比较简单,但是完整的从数据准备->模型训练->调参数->合理结果需 ...