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

【网络协议栈】TCP/IP相关知识点收集

TCP/IP知识点收集

1 TCP分段

在TCP/IP协议栈中,“MSS”(Maximum Segment Size)是一个关键参数,它指定了TCP协议在发送数据时可以使用的最大数据段(segment)的大小。这个参数是TCP连接建立时通过三次握手(three-way handshake)过程中的一个选项来协商的。

MSS的作用

  • 效率:通过选择适当的MSS,TCP可以优化数据传输的效率。过大的MSS可能导致数据包在网络中分片(fragmentation),而过小的MSS则可能增加网络上的包数量,从而增加开销。
  • 避免IP分片:IP层在传输数据包时有一个最大传输单元(MTU)的限制。如果TCP数据段的大小超过MTU,IP层就会对其进行分片。但是,分片会增加数据丢失的风险,并可能降低传输效率。因此,选择一个合适的MSS可以避免或减少IP分片的发生。

MSS的确定

  • 默认值:不同的操作系统和网络环境可能使用不同的MSS默认值。例如,在以太网环境中,常见的MSS默认值为1460字节(基于1500字节的MTU减去IP头部和TCP头部的长度)。
  • 协商:在TCP连接建立时,客户端和服务器会交换一个称为"MSS选项"的TCP选项,以协商使用哪个MSS值。这通常基于各自的网络环境和配置来确定。

MSS与MTU的关系

MSS和MTU之间存在一定的关系。MSS是TCP层可以发送的最大数据段大小,而MTU是IP层可以传输的最大数据包大小。为了确保TCP数据段可以在IP层中无需分片地传输,MSS应该小于或等于MTU减去IP头部和TCP头部的长度。

总结

MSS是TCP协议中一个重要的参数,它指定了TCP数据段的最大大小。通过选择合适的MSS值,TCP可以优化数据传输的效率,并避免或减少IP分片的发生。MSS的确定通常基于网络环境和配置,并在TCP连接建立时通过三次握手过程中的选项来协商。

2 IP分片

TCP/IP分片是在TCP/IP协议栈中,特别是在网络层(IP层)处理数据传输时的一个重要概念。以下是关于TCP/IP分片的详细解释:

定义

TCP/IP分片:当IP数据报的大小超过链路层帧所允许的最大传输单元(MTU)时,网络层(IP层)会将数据报拆分成多个较小的片段(fragments),并在目标主机上进行重新组装的过程。

原因

  1. MTU限制:不同的物理网络会规定链路层数据帧的最大长度,即MTU。当IP数据报加上数据帧头部后长度大于链路MTU时,就需要进行分片。
  2. 网络设备限制:某些网络设备可能只能接收和处理较小的数据包,因此需要将较大的数据包进行分片以适应这些设备的限制。

分片过程

  1. 检查数据包大小:IP层在发送数据前会检查数据包的大小是否超过MTU。
  2. 计算分片:如果需要分片,IP层会计算需要分成的片段数量以及每个片段的大小。
  3. 添加分片信息:每个分片都会包含一些额外的信息,如标识符(Identification)和片偏移(Fragment Offset),以便在目标主机上进行重新组装。
    • 标识符:一个唯一的数值,用于标识属于同一原始数据报的所有分片。
    • 片偏移:表示该分片在原始数据报中的位置。
  4. 发送分片:每个分片都会作为独立的IP数据报进行发送。

重新组装

在目标主机上,IP层会根据标识符和片偏移信息将所有收到的分片重新组装成原始的IP数据报。然后,该数据报会被传递给传输层(如TCP)进行进一步处理。

注意事项

  1. MTU的发现:为了避免不必要的分片,TCP/IP协议栈通常会使用一种称为“路径MTU发现”(Path MTU Discovery)的机制来动态地确定两个主机之间的MTU。
  2. 分片的开销:虽然分片可以确保数据包在网络中的传输,但它也会增加一些额外的开销,如额外的头部信息和处理时间。
  3. 分片与分段:需要注意的是,分片是在网络层(IP层)进行的,而分段是在传输层(如TCP层)进行的。TCP层会将应用层的数据分成多个段(segments),而每个段都可能会在网络层被进一步分片。

总结

TCP/IP分片是确保数据包在网络中有效传输的一种重要机制。它允许IP层在必要时将数据包拆分成多个较小的片段,并在目标主机上进行重新组装。通过合理地设置MTU和使用路径MTU发现机制,可以减少不必要的分片并提高数据传输的效率。

3 TCP粘包 Sticky Packet

1. 定义:
TCP粘包(或称为粘包现象)是指在TCP协议中,发送方发送的两个或多个数据包在接收方被接收时,可能会合并成一个数据包的现象。这主要是因为TCP是一个流协议(stream-based protocol),它不会保留数据包之间的边界信息。

2. 产生原因:
TCP为了提高传输效率,可能会在收集到足够多数据后才一起发送。
接收方收到的数据会保存在缓存中,如果应用层提取数据不够快,就会导致缓存中多条数据粘在一起。

3. 处理方式:
关闭Nagle算法(通过TCP_NODELAY选项)。但这样做会降低TCP的传输效率。
在应用层处理粘包问题,如循环处理接收到的数据,或使用特定的数据格式(如添加开始符和结束符)来区分不同的数据包。

UDP与TCP的对比
UDP是一个无连接的、不可靠的传输协议,它发送的每个数据报都被视为独立的单元,因此不存在粘包问题。UDP适用于对实时性要求较高、对数据完整性要求不高的应用场景。
而TCP是一个面向连接的、可靠的传输协议,它通过复杂的控制机制确保了数据的可靠传输,但也因此可能出现粘包现象。TCP适用于需要确保数据完整性和顺序性的应用场景。

总结
在TCP协议中,粘包是一个需要注意的问题,需要在应用层进行适当的处理。而在UDP协议中,由于每个数据报都是独立的,因此不存在粘包问题。选择使用TCP还是UDP取决于具体的应用场景和需求。

4 应答机制

TCP的确认应答机制(ACK)是TCP协议中确保数据可靠传输的关键机制之一。以下是TCP确认应答机制的详细解释:

  1. 发送与分割

    • 发送方将要发送的数据分割成称为TCP段(TCP segment)的较小单元,并为每个段分配一个唯一的序列号。
    • 序列号是一个32位的字段,用于标识TCP源端设备向目的端设备发送的字节流中的位置。
  2. 发送与确认

    • 发送方将这些TCP段发送给接收方,并启动一个定时器来跟踪每个已发送段的确认。
    • 接收方收到TCP段后,会按序将它们重新组装成完整的数据流,并发送一个确认(ACK)给发送方。
  3. 确认中包含的信息

    • 确认(ACK)中包含接收到的最高序列号,表示该序列号之前的所有数据都已正确接收。
    • 当接收方收到一个TCP段后,它不会立即发送一个ACK,而是等待一小段时间(通常称为“延迟ACK”),看看是否还有后续的TCP段可以一并确认,从而提高传输效率。
  4. 继续发送与重传

    • 发送方在接收到确认后,会停止相应定时器,并继续发送下一个序列号的TCP段。
    • 如果发送方在定时器超时之前未收到确认,它将重新发送未确认的TCP段。
  5. 重复确认与快速重传

    • 如果接收方检测到重复的数据段时,会发送一个重复确认(Duplicate ACK)给发送方。
    • 如果发送方收到连续的3个重复确认,它会认为该数据段丢失,并立即重新发送该数据段,这被称为“快速重传”。
  6. 拥塞控制

    • 如果发送方的数据段未在一定时间内(称为超时时间)内收到确认,它会认为网络发生了拥塞,并减慢发送速率,以减轻网络负载。

通过确认应答机制,TCP可以确保数据的可靠传输,因为发送方和接收方之间会进行双向的确认和重传操作,以确保数据的完整性和正确性。这种机制在TCP协议中起到了至关重要的作用,使得TCP成为了一个广泛应用于各种网络环境中的可靠传输协议。

相关文章:

【网络协议栈】TCP/IP相关知识点收集

TCP/IP知识点收集 1 TCP分段 在TCP/IP协议栈中,“MSS”(Maximum Segment Size)是一个关键参数,它指定了TCP协议在发送数据时可以使用的最大数据段(segment)的大小。这个参数是TCP连接建立时通过三次握手&…...

Java开发中的常用字段校验注解

在 Java 开发中,数据校验是确保应用程序的数据完整性和一致性的重要步骤。Java 提供了一系列注解来简化数据校验的过程,以下是一些常用的字段校验注解及其示例代码: NotNull NotNull 用于确保字段不为 null,适用于任何类型的字段…...

面试经验分享 | 24年6月某安全厂商HW面试经验

所面试的公司:某安全厂商 所在城市:安徽省 面试职位:蓝初 面试过程: 腾讯会议(语音) 面试过程:整体流程就是自我介绍加上一些问题问题balabalabala。。。由于面的是蓝队所以渗透部分不会太多…...

JSON学习

一、JSON 1.1 简介 JSON:JavaScript Object Notation是一种表示对象的方式 基于JavaScript语言的轻量级的数据交换格式;(即:用来传输数据的一种格式) 现在传输数据的方式更多是采用json的格式,渐渐代替了XML 1.2 JSON的数据表示 …...

LabVIEW在中国航天中的应用

​LabVIEW是一种系统设计平台及开发环境,由美国国家仪器公司(NI)开发。它在中国航天领域的应用非常广泛,涵盖了测试与测量、数据采集、控制系统设计等多个方面。以下是LabVIEW在中国航天中的几个主要应用实例: 1. 测试…...

编程思维的培养

培养编程思维是成为一名优秀程序员的重要步骤。编程思维不仅仅是写代码的能力,还包括解决问题的思维方式、对复杂系统的理解、代码优化的意识、团队合作的能力等。以下是一些培养编程思维的方法和建议。 1. 学习基础知识 1.1 掌握编程语言 从一门编程语言开始&am…...

Docker笔记-Debian容器内搭建ssh服务

登陆容器之后修改密码: passwd 密码设置完成后安装openssh-server apt-get install openssh-server 修改端口号为50022并添加配置 vim /etc/ssh/sshd_config 修改成 Port 50022 PasswordAuthentication yes PermitRootLogin yes 启动 rootlinux:~# /etc/in…...

爬虫的法律风险是什么?以及合法使用爬虫技术的建议。

爬虫的法律风险是什么? 网络爬虫技术,虽然在数据获取方面具有巨大优势,但其使用过程中可能引发的法律风险也不容忽视。这些风险主要包括违反数据保护法规、侵犯知识产权、构成不正当竞争等。下面将详细探讨网络爬虫的法律风险,并在…...

微信小程序允许相机访问相册

// 允许从相机和相册扫码 // uni.scanCode({ // success: function(res) { // console.log(条码类型: res.scanType); // console.log(条码内容: res.result); …...

AMEYA360 | 江苏润石最新发布12颗车规级模拟芯片

日前江苏润石再度新增12颗通过AEC-Q100 Grade1,满足MSL 1湿敏等级认证的车规级芯片。截止目前,润石科技总计有70颗Grade1 & MSL1的车规级芯片通过认证并进入量产。凭借卓越的产品技术指标和稳定的品质性能不仅展示了公司在车规级模拟芯片领域的技术积…...

PHP表单设计:确保必需字段完整性的最佳实践

在开发网页应用程序时,设计一个具有必需字段的PHP表单是至关重要的。必需字段是用户提交表单时必须填写的信息,它们对于确保数据完整性和准确性至关重要。本文将从多个方面讨论如何在PHP表单中设计必需字段,并探讨确保表单数据完整性的最佳实…...

CentOS 7 安装部署Cassandra4.1.5

一、Cassandra的介绍 Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身Facebook于2008将 Cassandra 开源,此后&#xff0…...

【数据结构与算法】对称矩阵,三角矩阵 详解

给出对称矩阵、三角矩阵的节省内存的存贮结构并写出相应的输入、输出算法。 对称矩阵和三角矩阵可以通过特殊的存储结构来节省内存。这种存储结构只存储矩阵的一部分元素,而不是全部元素。 对称矩阵:对于一个n阶对称矩阵,我们只需要存储主对…...

Apache IoTDB 走进东南大学,深入分享项目发展历程与收获

源于高校,回到高校,Apache IoTDB PMC 成员乔嘉林为同学们详细分享行业前瞻、研发历程与心得体会。 01 把领先的数据库知识带到校园 6 月 5 日,东南大学计算机科学与工程学院、软件学院、人工智能学院主办的“拔尖领航系列活动特别策划篇-第二…...

Stable Diffusion AI绘画助力建筑设计艺术创新——城市建筑设计大模型分享

大家好,我是向阳 今天我将针对建筑设计方面的AI大模型进行简单介绍,我们将通过富有想象力的关键词或结合Stable Diffusion 的ControlNet 给原本只有黑白线条的线稿变成彩色的效果图,可能你只需要短短几分钟就可以让黑白线稿变成几种甚至十几种…...

没有 ADetailer,ComfyUI 画图脸崩了怎么办?

我们都知道 SD 的 WebUI 中的面部修复神器是 ADetailer,不过它是 WebUI 的专属插件,在 ComfyUI 中是搜索不到这个插件的,但是并不代表 ComfyUI 就不能使用面部修复功能了,ComfyUI 中也是可以找到平替的。 今天我们就来讲讲在 Com…...

防爆气象仪的工作原理

TH-WFB5矿山气象传感器在矿山安全监测系统中扮演着至关重要的角色,它们能够及时发现异常情况,为矿山的安全运营提供可靠的数据支持。矿山气象传感器能够实时监测矿山环境中的风速、风向、温度、湿度和大气压力等关键气象参数。这些传感器采用先进的传感技…...

深度学习入门5——为什么神经网络可以学习?

在理解神经网络的可学习性之前,需要先从数学中的导数、数值微分、偏导数、梯度等概念入手,从而理解为什么神经网络具备学习能力。 1.数值微分的定义 先从导数出发理解什么是梯度。某一点的导数直观理解就是在该点的切线的斜率。在数学中导数表示某个瞬…...

Integer溢出问题

0. 背景 在刷 LeetCode 时,代码的执行结果与预期出现了偏差,原因是 Int 值超过了允许范围 [ − 2 31 , 2 31 − 1 ] [-2^{31},2^{31}-1 ] [−231,231−1]。工作中从来没有遇到过这种情况,之前的认知是如果 Int 中存储的值超过了允许范围也许…...

软件测试全面指南:提升软件质量的系统流程

一、引言 随着软件行业的飞速发展,确保软件质量、稳定性和用户体验已成为企业竞争的关键。本文档旨在为测试团队提供一套全面的软件测试指南,通过规范测试用例管理、功能测试、接口测试、性能测试及缺陷管理等流程,助力测试团队实现高效、系统…...

《逆贫大叔》:一部穿越时光的温情史诗

《逆贫大叔》:一部穿越时光的温情史诗 在历史的长河中,有些故事能够穿越时光的尘埃,直击人心。《逆贫大叔》就是这样一部作品,它不仅是一部电视剧,更是一段历史的缩影,一次心灵的触动。 背景设定&#xff1…...

【电机控制】FOC算法验证步骤——PWM、ADC

【电机控制】FOC算法验证步骤 文章目录 前言一、PWM——不接电机1、PWMA-H-50%2、PWMB-H-25%3、PWMC-H-0%4、PWMA-L-50%5、PWMB-L-75%6、PWMC-L-100% 二、ADC——不接电机1.电流零点稳定性、ADC读取的OFFSET2.电流钳准备3.运放电路分析1.电路OFFSET2.AOP3.采样电路的采样值范围…...

如何衡量llm 数据集的多样性

衡量大型语言模型(LLM)数据集的多样性是一个复杂的问题,因为多样性可以从多个角度来考虑。以下是一些常用的方法和指标来评估数据集的多样性: 词汇多样性: 类型-词符比(Type-Token Ratio, TTR)…...

编程天才是什么意思

编程天才是什么意思 编程天才,这个词汇似乎充满了神秘与敬畏的色彩。那么,它究竟意味着什么呢?在本文中,我们将从四个方面、五个方面、六个方面和七个方面深入探讨编程天才的内涵与外延,带您领略这一领域的独特魅力。…...

创建npm私包

参考文章: 使用双重身份验证访问 npm | npm 中文网 私有npm包的实例详解-js教程-PHP中文网 1.注册npm账号 npm官网: npm | Home 2.安装node 百度挺多的,安装完后,检查是否安装成功就行 3.写一个简单的模块 创建个文件夹&am…...

provider追加android:name的命名有哪些?

在Android中&#xff0c;为<provider>元素添加android:name属性时&#xff0c;命名应遵循Android组件的命名规范和包名的命名规范。以下是一些关于命名android:name的要点&#xff1a; 包名前缀&#xff1a;android:name属性的值通常应以包名开始&#xff0c;这是应用程序…...

长亭网络通信基础

长亭笔试之前就已经学过一遍了 这算温故而知新吧 TCP/IP 首先我在这里默写一下之前的7层和4层 应用层 应 【表示层 数据格式转换 传 【会话层 …...

hdfs源码解析之DFSClient

1、DFSClient类简介 DFSClient 是 Hadoop 分布式文件系统&#xff08;HDFS&#xff09;中的一个核心类&#xff0c;用于客户端与 HDFS 之间的交互。它提供了一组方法&#xff0c;使客户端应用程序可以方便地与 HDFS 进行通信&#xff0c;包括文件的读取、写入、创建、删除、重命…...

智能化立体仓库的种类有哪些?

在仓储运输系统中&#xff0c;自动化立体仓库可充分利用空间储存货物&#xff0c;故而也被称之为高层货架仓库。在实际应用中&#xff0c;自动化仓库系统是不需人工处理的情况下能自动存储和取出物料的系统。那么&#xff0c;智能化立体仓库的种类有哪些&#xff1f;下面就让小…...

Stable Diffusion 3 如何下载安装使用及性能优化

Stable Diffusion 3 Stable Diffusion 3&#xff08;SD3&#xff09;&#xff0c;Stability AI最新推出的Stable Diffusion模型系列&#xff0c;现在可以在Hugging Face Hub上使用&#xff0c;并且可以与Diffusers一起使用。 今天发布的模型是Stable Diffusion 3 Medium&…...

做presentation的网站/网络优化工程师是干什么的

了解自己真正的潜能你的成功与否只有你自己能做评判&#xff0c;绝对不要让其他人来定义你的成功&#xff0c;只有你能决定自己要成为什么样的人、做什么事、拥有什么&#xff0c;只有你知道什么能使自己满足、什么令自己有成就感。知人者智&#xff0c;知己者强其实&#xff0…...

wordpress修改页面样式表/搜索引擎优化seo

通过路由传递参数在我们开发vue的项目中是经常使用到的&#xff0c;下面针对路由传递参数做一个简单的总结&#xff0c;路由传递参数一共有三种方式 1.路由配置 {path:/search,name:search,component:search } 实现路由跳转 this.$router.push{path:search,params:{id:id} } …...

做独立网站给你的启发是什么/东莞seo优化排名

“小乔啊,咱们网站要做一个往下扒拉一下,就刷新的效果”,BOSS 说 ”老板,这个应该叫滚动加载,你得学习一下技术名词啊“ ”明天咱们公司要向社会输送1个人才,我看你行“ 本篇博客是 爬虫训练场项目第18课,专栏清单查阅地址 pachong.vip 文章目录 调用滚动加载 - infinit…...

全球新冠死亡人数/网站为什么要seo

前言&#xff1a; 1、公司delphi7开发的传统软件还活得好好的&#xff0c;但是大家都知道delphi早已经日落西山了&#xff0c;现在成了后进、追随者。细细算了已经6、7不用了。新的delphixe7呢&#xff0c;没有时间成本去适应和研究。 由于大量使用了第3方的组件和控件&#xf…...

一起做网店网站入驻收费/网站关键词排名查询工具

普通的英文半角空格 &#xA0; no-break space &#xff08;普通的英文半角空格但不换行&#xff09; 中文全角空格 &#xff08;一个中文宽度&#xff09; &ensp; en空格 &#xff08;半个中文宽度&#xff09; &emsp; em空格 &#xff08;一个中文宽…...

wordpress add_role/搜索引擎优化的主要工作有

点击上方蓝色字体&#xff0c;选择“设为星标”回复”面试“获取更多惊喜这个文章是我在云栖社区的网站上发现的。这片文章从系统架构的角度&#xff0c;就大数据架构热点&#xff0c;每条技术线的发展脉络&#xff0c;以及技术趋势和未解问题等方面做了概述。特别的&#xff0…...