IP分割和重组

摘要:
IP头中的“碎片偏移”字段指示每个碎片在用户数据中的相对位置,以及碎片之后是否有其他后续碎片。然后,MTU值通过ICMP不可访问消息返回给发送主机。当上层协议为TCP时。使用路径MTU发现TCP连接后,将不会在IP层执行分段处理。

数据链路层不同,MTU(最大传输单元)就不同。但是IP协议是网络层的协议,它需要将数据链路层进行抽象。使得所有的数据链路对于上层的表现是一致的。

任何一台主机必要对IP分片进行相应的处理。因为,较大的报文无法一下子发送出去,需要进行分片分次发送。是否有必要进行分片是由路由器决定的,只要路由器认为有必要分片,就会进行分片。路由器只管分片,不管重组。重组是需要在目标主机上完成的。分片以8字节的倍数进行。IP首部的“片偏移”字段表示之后每个分片在用户数据中的相对位置和该分片之后是否还有其它后续分片。

分片机制并不完美,随着互联网的快速发展。分片机制带给路由器的负担越来越重。并且分片带来了如果丢失其中一个分片,那么整个报文就会作废。但是如果让上层协议封装的数据流变得更小,会导致网路利用率下降。为了解决上述问题,路径MTU发现。

路径MTU发现是指从发送端主机到接收端主机所经过的所有数据链路中最小的MTU。按照路径MTU分片以后,就无需再中途的路由器上进行分片处理了。路径MTU的实现依赖于路由器所搭载的操作系统。

在上层协议是UDP协议的情形下,首先在发送端主机发送IP包的时候设置分片禁止标志。途中的路由器即使遇到了包的大小超过了数据链路的MTU,也不去分片,直接将包丢弃。随后,通过ICMP的不可达消息返回一个MTU的值给发送主机。下一次,根据这个ICMP所通知的MTU去进行分片处理,接着发送出去,如果分片仍旧在传输过程中大于某一数据链路的MTU,仍将分片丢弃,ICMP继续返回一个当前MTU,如此一直进行下去,直到找到一个合适的MTU。

在上层协议是TCP协议的情形下。由于TCP协议是面向有连接的(两台主机之间要维护这个连接)。TCP协议会根据路径MTU的大小来计算出最大段长度MSS。一旦TCP连接采用了路径MTU发现,那么在IP层就不会在进行分片处理。因为,MSS最大就是路径MTU。

免责声明:文章转载自《IP分割和重组》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux下安装rabbitmq 集群缓存三大问题的解决办法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

详解vue 路由跳转四种方式 (带参数)

详解vue 路由跳转四种方式 (带参数):https://www.jb51.net/article/160401.htm 1.  router-link ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1. 不带参数  <router-link :to="{name:'home'}">...

6.1 路由router

路由将信息由源地址传递到目的地的一种角色. 一、路由简单应用举个例子: let express=require('express'); let app=express(); app.use(express.static('public')); // GET /home 显示 网站首页 app.get('/home',function(req,res...

uniapp路由插件使用爬坑

插件官网地址:https://hhyang.cn/v2/start/quickstart.html 一.安装路由插件: npm install uni-simple-router 二.配置路由: 1.编写路由代码: //src/router/index.js import {RouterMount,createRouter} from 'uni-simpl...

Vue-Router基础知识点总结【vue系列】

Vue-Router 认识路由 1.什么是路由 2.后端路由阶段 3.前端路由阶段 前端路由的规则 1.URL的hash 2.HTML5的history模式 Vue-Router基础 1.认识vue-router 2.安装与使用vue-router 3.路由组件详解 路由配置其他补充 1.路由的默认路径 2.路径的History模式...

消息队列 RabbitMQ

  前言 市面上的消息队列产品有很多,比如老牌的 ActiveMQ、RabbitMQ ,目前我看最火的 Kafka ,还有 ZeroMQ ,阿里巴巴捐赠给 Apache 的 RocketMQ ,连 redis 这样的 NoSQL 数据库也支持 MQ 功能。总之这块知名的产品就有十几种。 什么是rabbitMQ RabbitMQ 是一个由 Erlang 语...

thinkphp3.2.3中设置路由,优化url

需求:访问这个目录的时候,http://xx.com/p-412313要重定向到(暂且这么叫)http://xx.com/Home/Blog/index/id/412313 就是看着好看 我的应用目录是Application。模块是Home 第一步:知道哪个文件怎么处理的路由路由处理在think/Route.class.php [php]view p...