当前位置: 首页 > news >正文

IP分片和TCP分段解析--之IP分片

本文目录

  • 什么是IP分片
  • 为什么会产生IP分片
  • 为什么要避免IP分片
  • 如何避免IP分片

什么是IP分片

IP协议栈将TCP/UDP传输层要求它发送的,但长度大于发送端口MTU的一个数据包,分割成多个IP报文后分多次发送。这些分成多次发送的多个IP报文就是IP分片。

为什么会产生IP分片

TCP/UDP是工作在传输层,依赖于IP协议在网络层提供的服务。IP层又依赖于链路层提供的报文发送服务。链路层会根据链路层协议的不同,会要限制每次发送数据帧的最大长度(称之为Maximum Transmission Unit,最大传输单元MTU)。所以当TCP/UDP往IP层发送数据时(相当于IP层从TCP/UDP传输层接收到一份要发送的IP数据报),IP层要判断向本地哪个接口发送数据(选路),并查询该接口获得其MTU。IP把MTU与数据报长度进行比较,如果太长了一次发送不下(超过MTU)则需要则需要将这个数据报文,分割成多个IP报文后分多次发送,就产生了IP分片。这就是IP分片产生的原因。因为路由器是工作在IP层,负责IP报文的转发的,所以分片可以发生在原始发送端主机上,也可以发生在中间路由器上。

为什么要避免IP分片

IP分片产生了二个坏的影响:

  • IP头部占用了更多的带宽
    IP分片使得原来的一个IP报文,变成了多个IP报文,那么更多的IP报文,就使得IP头部占用了更多的网络带宽,网络传有效载荷的能力下降,使得网络有效吞吐能力下降。
  • 增加了报文丢失率
    IP分片发生在IP层,不仅发送商端主机会进行分片,中间的路由器也有可能分片,因为不同的网络的MTU是不一样的,如果传输路径上的某个网络的MTU比发送端网络的MTU要小,路由器就可能对IP数据报再次进行分片。然而,按照IP协议的定义,IP分片数据的重组只会发生在目的端的IP层,即当所有分片都正确到达目的端时,目的端会将这些IP分片重组成一个完整的数据报文,再提供给上层。如果注意这些分片报文中,只有第一片才带有传输层协议的状况信息,所以只要其中任何一个IP分片丢失或者超时,就会引起所有IP分片报文的丢失。此时如果传输层是不支持重传的不可靠协议,比如UDP,那么整个报文就全部丢失了(一个IP分片的丢失,引发所有IP分片的丢弃),这就增加了报文丢失率的,使得网络有效吞吐能力下降。
  • 降低了重传效率降低
    IP分片发生在IP层,不仅发送商端主机会进行分片,中间的路由器也有可能分片,因为不同的网络的MTU是不一样的,如果传输路径上的某个网络的MTU比发送端网络的MTU要小,路由器就可能对IP数据报再次进行分片。然而,按照IP协议的定义,IP分片数据的重组只会发生在目的端的IP层,即当所有分片都正确到达目的端时,目的端会将这些IP分片重组成一个完整的数据报文,再提供给上层。如果注意这些分片报文中,只有第一片才带有传输层协议的状况信息,所以只要其中任何一个IP分片丢失或者超时,就会引起所有IP分片报文的丢失。此时如果传输层是支持重传的可靠协议,比如TDP,那么整个报文全部都需要重传(一个IP分片的丢失,引发所有IP分片的重传),这就大大的降低的重传的效率,使得网络有效吞吐能力下降。

如何避免IP分片

  • 对于UDP
    我们需要在应用层去限制每个包的大小,应用层在往UDP层发送数据时,就考虑链路上的最小MTU,让自己发送的数据包+IP头+UDP头的总长度不要超过MTU。

  • 对于TCP数据
    应用层就不需要考虑这个问题了,因为TCP已经帮我们做了。TCP用TCP的MSS的计算与详解来保证每次发送的TCP报文的数据都不会超过MSS,也就保证了IP数据报不会超过MTU,从而避免了IP分片。

相关文章:

IP分片和TCP分段解析--之IP分片

本文目录什么是IP分片为什么会产生IP分片为什么要避免IP分片如何避免IP分片什么是IP分片 IP协议栈将TCP/UDP传输层要求它发送的,但长度大于发送端口MTU的一个数据包,分割成多个IP报文后分多次发送。这些分成多次发送的多个IP报文就是IP分片。 为什么会…...

物联网方向常见通信方式有哪些?

常用的有线通信方式有串口、以太网等。 1、串口 串口通信普及率高、成本低,但是组网能力差,只适合低速率和小数据量的通信 2、以太网接口(网线) 以太网(Ethernet)是目前最普遍的一种局域网 通信技术,它规定了包括 物理层的连线、电子信号和介质访问层协议的内容。 以太…...

windows wireshark抓到未加入组的组播消息

现象 在Windows上开启wireshark,抓到了大量地址为239.255.255.251的组播包。 同时,根据组播相关命令,调用netsh interface ipv4 show joins,显示当前并没加入 239.255.255.251 组播组。 解决 根据IGMP Snooping,I…...

【PTA Advanced】1156 Sexy Primes(C++)

目录 题目 Input Specification: Output Specification: Sample Input 1: Sample Output 1: Sample Input 2: Sample Output 2: 思路 代码 题目 Sexy primes are pairs of primes of the form (p, p6), so-named since "sex" is the Latin word for "…...

项目(今日指数)

一 项目架构1.1 今日指数技术选型【1】前端技术【2】后端技术栈【3】整体概览3.2 核心业务介绍1】业务结构预览【2】业务功能简介1.定时任务调度服务XXL-JOB通过RestTemplate多线程动态拉去股票接口数据,刷入数据库; 2.国内指数服务 3.板块指数服务 4.涨…...

适配器模式(Adapter Pattern)

1.什么是适配器模式? 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接…...

网易一面:select分页要调优100倍,说说你的思路? (内含Mysql的36军规)

背景说明: Mysql调优,是大家日常常见的调优工作。所以Mysql调优是一个非常、非常核心的面试知识点。 在40岁老架构师 尼恩的读者交流群(50)中,其相关面试题是一个非常、非常高频的交流话题。 近段时间,有小伙伴面试网易&#x…...

二叉树的遍历 (2023-02-11)

二叉树的遍历 二叉树的遍历分为:先序遍历、中序遍历、后序遍历和层次遍历。 1.先序遍历(根左右) (1)访问根节点 (2)左子树按根左右遍历 (3)右子树按根左右遍历 2.中序…...

string的深浅拷贝问题

深浅拷贝问题引入浅拷贝深拷贝总结问题引入 对于一个普通的string类: class String { public:String(const char* str ""){//构造函数if (nullptr str)str "";_str new char[strlen(str) 1];strcpy(_str, str);}~String(){//析构函数if …...

C++中的万能头文件

目录一、什么是万能头文件&#xff1f;二、源码三、编译器找不到 bits/stdc.h一、什么是万能头文件&#xff1f; C的万能头文件是&#xff1a; #include <bits/stdc.h>它是一个包含了每一个标准库的头文件。 优点&#xff1a; 在算法竞赛中节约时间&#xff1b;减少了…...

Java 8 Lambda 表达式 Stream

lambda表达式和Stream流是JDK8新增加的新特性&#xff0c;研究本文内容或者运行本文中的demo示例必须安装并使用JDK8以上的JDK版本。demo地址&#xff1a;https://gitee.com/huannzi/bigdataframework/tree/master/src/main/java/com/orkasgb/java 文章目录1、什么是Lambda表达…...

【VictoriaMetrics】VictoriaMetrics单机版部署(二进制版)

1、下载安装包git路径,本文基于1.87.1版本 进入git地址 :https://github.com/VictoriaMetrics/VictoriaMetrics/tags 2、下载其中linux下的 amd64架构...

SCI论文阅读-使用基于图像的机器学习模型对FTIR光谱进行功能组识别

期刊&#xff1a; Analytical Chemistry中科院最新分区&#xff08;2022年12月最新版&#xff09;&#xff1a;1区(TOP)影响因子&#xff08;2021-2022&#xff09;&#xff1a;8.008第一作者&#xff1a;Abigail A. Enders通讯作者&#xff1a;Heather C. Allen 原文链接&…...

双11大型互动游戏“喵果总动员” 质量保障方案总结

推荐语&#xff1a;互动游戏是一个系统化工程&#xff0c;在笔者的“喵果总动员”质量方案中&#xff0c;可以看到为保障用户体验&#xff0c;我们在各个难点的解决方案&#xff0c; 例如&#xff1a;用线上压测能力支持业务及时调整各服务容量、通过强化学习覆盖游戏行业的测试…...

剑指Offer专项突击版题解一

1.整数除法 思想&#xff1a;不能用除法、乘法、取余&#xff0c;那么可以用减法完成除法的操作&#xff0c;但是在减去被除数的时候&#xff0c;可以考虑被除数<<1扩大一倍在进行减少&#xff0c;加快减的速率。 2.二进制加法 思想&#xff1a;从末尾向前遍历&#xff0…...

Django框架之模型

模型 当前项目的开发, 都是数据驱动的。 以下为书籍信息管理的数据关系&#xff1a;书籍和人物是 &#xff1a;一对多关系 要先分析出项目中所需要的数据, 然后设计数据库表. 书籍信息表 字段名字段类型字段说明idAutoField主键nameCharField书名 idname1西游记2三国演义…...

OSACN-Net:使用深度学习和Gabor心电图信号谱图进行睡眠呼吸暂停分类

这篇文章在之前读过一次&#xff0c;其主要的思路就是利用Gabor变换&#xff0c;将心电信号转变为光谱图进行识别研究&#xff0c;总体来讲&#xff0c;不同于其他的利用心电信号分类的算法&#xff0c;该论文将心电信号转换为光谱图&#xff0c;在此基础上&#xff0c;分类问题…...

使用开源实时监控系统 HertzBeat 5分钟搞定 Mysql 数据库监控告警

使用开源实时监控系统 HertzBeat 对 Mysql 数据库监控告警实践&#xff0c;5分钟搞定&#xff01; Mysql 数据库介绍 MySQL是一个开源关系型数据库管理系统&#xff0c;由瑞典MySQL AB 公司开发&#xff0c;属于 Oracle 旗下产品。MySQL 是最流行的开源关系型数据库管理系统之…...

插件 sortablejs:HTML元素可拖动排序

插件 sortablejs 用于可重新排序拖放列表的JavaScript库&#xff1b;关键链接&#xff1a;npm 地址 Github 地址 安装 npm i sortablejs引入 import Sortable from "sortablejs"HTML <ul id"items"><li>item 1</li><li>item …...

libVLC 视频裁剪

作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 裁剪是指去除图像的外部部分,也就是从图像的左,右,顶部和/或底部移除一些东西。通常在视频中,裁剪是一种通过剪切不需要的部分来改变宽高比的特殊方式。 尤其是在做视频墙时,往往需要处理多个 vlc 实例…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...