IP数据报中如果不分片,分片标志值是什么?
过了好久才解决这个简单的问题,罪过罪过…
答案:如果IP数据报不分片,分片标志DF(Don’t Fragment)会被设置为1。分片标志MF(More Fragment)设置为0。
下面是详细解释:
1:首先来一张IP数据报的报文头部结构。
2:需要注意第二行数据,有这么三个字段
- 序列号:开始发送数据时由
发送方生成。标识发送方发送的每一个数据报,如果发送的数据报未发生分片,则此值依次加1,如果发生了分片,分片后的各个数据报使用同一个序列号。 - 分片标志:三个bit位。第一位保留,未使用。第二位是DF(Don’t Fragment),如果为
1,表示不允许分片。第三位是MF(More Fragment),如果为1,表示后面还有分片,并且除了分片出的最后一个报文中此标志为0,其余报文中此标志均为1。 - 偏移量:分片相对于原始IP数据报开始处的偏移。
这就基本回答我提出的问题了,下面再扯扯为什么要分片,会有什么影响。
以tcp/ip四层协议为例,应用层->传输层->网络层->数据链路层,我们说的IP分片现象发生在网络层,什么时候会发生呢?当数据包的大小大于MTU(Maximum Transmission Unit)最大传输单元(MTU也就是在数据链路层“帧”的数据部分大小。)举个例子如下所示:
1:假设从传输层下来的数据大小为1648个字节(包含tcp数据报报头和数据部分)
2:我们在网络层继续添加20字节的IP数据报(假设IP数据报没有使用扩展选项)
3:目前大小为1648+20=1668 > 1500(以太网协议MTU默认大小为1500),因此会发生IP分片。
4:先不考虑IP数据报的大小,考虑原始数据大小1648字节,应该这样分片 1480 + 168,然后再将IP数据报头分别加上去,数据报变成了这样:1500 和 188
5:这两个数据报中:
第一个大小为1500,序列号:1234(假设值),DF:0,MF:1
第二个大小为188,序列号:1234,DF:0,MF:0
继续向下就到了数据链路层,看看数据链路层的结构。
数据部分就是IP数据报,大小从46~1500,1500现在不难理解,那最小为什么又是46字节呢?
不要乱猜什么TCP数据报头部最少20字节,IP数据报头部最少20字节,那你加到一起也才40字节。真正的原因是因为数据链路层发送出去的包大小最少是64字节!!
64 - 6(目的MAC地址)- 6(源MAC地址)- 2(类型)- 4 (CRC)= 46
那为什么数据链路层发出去的包大小最小要是64字节呢?
http://blog.csdn.net/yyc1023/article/details/30286739
IP数据报中如果不分片,分片标志值是什么?的更多相关文章
- 计算机网络-4-2-ARP地址解析协议以及IP数据报不可变组成部分
地址解析协议ARP 在实际的应用中,我们会经常遇见这样的一个问题:我们已知一个机器(主机或者路由器的),我们怎么获取相应的硬件地址?,地址解析协议就是用来解决这个问题的. ARP协议的作用: 由上 ...
- TCP/IP具体解释--UDP数据报中的IP分片
1.UDP首部 2.UDP分片 在第二章,讲链路层是,提到过以太网.刨除数据帧帧头.最多传输的长度为1500.也就是说,假设一个ip数据报,长度大于1500,则须要分片. 分片方法: 在ip头中3位标 ...
- 在C#中实现Python的分片技术
在C#中实现Python的分片技术 前言 之前在学习Python的时候发现Python中的分片技术超好玩的,本人也是正则表达式热爱狂,平时用C#比较多,所以决定把Python中的分片技术在C#中实现, ...
- IP数据报是如何在网络中转发的?
首先发送方抽取目的站的网络前缀,来判断是否目的站是否位于同一网络上,如果在二者有相同的网络前缀,则,直接使用直接交付的方式, 否则,使用由路由器互连的间接交付,这要借助IP路由表,采用表驱动法,路由表 ...
- 用寄快递模拟数据在网络中的传送过程,发送一个ip数据报到接受这个ip数据报经历的过程
发送一个ip数据报到接受这个ip数据报经历的过程 好比寄一个快递的过程 这个包裹一共有三层, 这个包裹的最里面是数据,数据 第二层写着目的ip地址和源ip地址,即收件人和发件人的姓名 第三层也就是最外 ...
- 在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统? 网络层协议 MAC帧、IP数据报、TCP报文 关系 IP地址与硬件地址 链路层与网络层
小结: 1. 网络层两种服务 虚电路服务 virtual circuit 电信网 网络层负责可靠交付 数据报服务 网络层不负责可靠交付 提供灵活的.无连接的.尽最大努力交付的数据报服务 不提供服务 ...
- 计算机网络(3)-----IP数据报格式
IP数据报(IP Datagram) 格式 解析 (1)版本 占4位,指IP协议的版本.通信双方使用的IP协议版本必须一致.目前广泛使用的IP协议版本号为4(即IPv4). (2)首部长度 占4位,可 ...
- IP数据报的格式
1. IP数据报首部的固定部分中的各字段 ①版本:占4位,指IP协议的版本.通信双方使用的 IP协议版本必须一致.日前广泛使用的 IP协议版本号为 4 (即 IPv4). IPv6 目前还处于起步阶段 ...
- IP数据报格式 及路由转发算法
ip数据报分首部和数据两部分组成: 首部分为固定部分和可变部分 版本--占 4 位,指 IP 协议的版本 目前的 IP 协议版本号为 4 (即 IPv4) 首部长度--占 4 位,可表示的最大数值 是 ...
随机推荐
- sonar扫描java项目报错
安装maven 配置path 验证maven,看到以下信息证明已经成功 扫描项目 扫描以下项目: kf-buss-nhgip-smartoffice-business-thirdparty 项目的配置 ...
- 版本管理 - Git 使用入门
Git 是一个分布式的版本管理系统,而 SVN 是一个集中式管理系统. 版本控制 Git与SVN的对比 对比 SVN Git 工作方式 集中式 分布式 文件管理 增量式 系统快照 权限控制 对团队中参 ...
- 由浅入深了解cookie
什么是 Cookie "cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie.你可以使用 JavaScript 来创建和取回 c ...
- GIS应用|快速搭建REST地图服务
SuperMap Online云存储作为您的"在线GIS云盘",除了可以在云端存储GIS数据,还可以将数据直接发布多种REST服务,为您节省购买和部署SuperMap iServe ...
- 浅聊Linux的五种IO模型
在日常 Coding 中,多多少少都会接触到网络 IO,就会想要深入了解一下.看了很多文章,总是云里雾里的感觉,直到读了<UNIX网络编程 卷1:套接字联网API>中的介绍后,才豁然开朗. ...
- bzoj3729-Gty的游戏【Splay,博弈论】
正题 题目链接:https://darkbzoj.tk/problem/3729 题目大意 给出\(n\)个点的一棵树,第\(i\)个节点上有\(a_i\)个石子,然后每次可以选择不超过\(L\)个石 ...
- 软件测试工程师简历要怎么写,才能让HR看到
作为软件测试的从业者,面试或者被面试都是常有的事. 可是不管怎样,和简历有着理不清的关系,面试官要通过简历了解面试者的基本信息.过往经历等. 面试者希望通过简历把自己最好的一面体现给面试官,所以在这场 ...
- Python3入门系列之-----return返回值,我终于懂了
前言 初学者学习return的用法有点蒙,不知道它的作用是什么?返回的是什么?在什么时候要用?小伙伴也可能会遇到和我同样的困扰,给大家举个例子,马上就明白了. 同一段代码,函数中带return和没有r ...
- 关于使用antd-vue的卡片无法设置avatar图标/头像问题的解决方案
在使用antd-vue的卡片a-card时,遇到无法添加avatar图标/头像的问题,原因出在a-avatar,他不支持webpack图片打包. 上代码: <a-card hover ...
- k8s deployment controller源码分析
deployment controller简介 deployment controller是kube-controller-manager组件中众多控制器中的一个,是 deployment 资源对象的 ...