网络原理——No.4 传输层_TCP协议中的延迟应答, 捎带应答, 面向字节流与TCP的异常处理

news/2024/5/8 11:35:51/文章来源:https://blog.csdn.net/m0_58592142/article/details/127503765
JavaEE传送门

JavaEE

网络原理——No.2 传输层_TCP的连接管理

网络原理——No.3 传输层_TCP的滑动窗口, 流量控制与拥塞控制


目录

  • 延迟应答
  • 捎带应答
  • 面向字节流
    • 粘包问题
  • TCP 中的异常处理(连接异常)
  • TCP 和 UDP 的应用场景


延迟应答

一种提高传输效率的机制, 又是基于流量控制, 来引入的提高效率的机制

比如: 原缓冲区

1kb 数据来到了我们缓冲区里

实际 TCP 的延时时间, 不一定非是用时间来衡量, 也可能是用传输轮次来衡量

不同的系统里面, 延时的方式可能是不一样的


捎带应答

捎带应答, 基于延时应答的基础上, 引入的.

网络通信中, 典型的通信模型, 是一发一收.

TCP 中, 只要把数据传过去, 对方收到之后, 就会立即由内核返回一个 ack 确认报文, 另外, 响应数据, 则是应用程序里负责传输.

由于这俩操作是不同的时机传输的, 因此不能把这两次传输合并起来, 但是上面有一个延时应答,

本来 ack 是立即就要返回的, 但是由于延时应答, ack 稍等一会返回

稍微一等, 正好, 业务上也要返回这个响应, 此时就可以把两个报文合二为一了.


面向字节流

在面向字节流中, 存在一个典型的问题, 叫做 “粘包问题”.

我们来看这样一个例子: TCP (或者其他面向字节流的传输方式), 都是有一个接收缓冲区

小Gujiu 的应用程序, 就需要从接收缓冲区中,读取收到的数据.

由于是面向字节流的, 无法确定, 从哪里到哪里, 是一个完成的应用层数据报.

就可能把 “不玩” 当做完整响应, 也可能把 “不玩还是” 当成完整响应.

# 注意 #

  • TCP 自身对于应用层数据报是无法做区分的.
  • UDP 面向数据报, 是不存在这个问题的. 一个 UDP 数据报, 就是对应一个应用层报文.

粘包问题

想要解决粘包问题, 就是要在应用层协议里进行区分. 只要定义应用层数据协议的时候, 明确包和包之间的 “边界”, 就可以了.

典型的办法, 有两种:

  1. 通过分隔符, 比如约定 ; 作为包的结束标记.
  2. 通过包的长度, 比如在数据包的开头位置声明长度.

自定义应用层协议, 有几个典型的实现:

  1. xml; 分隔符就相当于 结束标签
  2. json; 分隔符就相当于 }
  3. protobuffer; 里面通过声明长度的方式来确定边界的.
  4. http; 分隔符和长度两个都会用到.

TCP 中的异常处理(连接异常)

  1. 程序崩溃了(进程异常退出)

    操作系统会回收进程的资源. 包括释放文件描述符表. 这样的释放操作, 就相当于调用了对应 socket.close

    执行 close 就会触发 fin 报文, 进一步开始四次挥手 (这种情况和普通的四次挥手其实没啥区别)

  2. 正常关机 (通过 开始菜单 这种方式关闭主机)

    关机的时候, 系统会先强制结束所有的用户进程. 和上述的程序崩溃类似.

    系统内核, 会进行文件描述符的释放操作, 进一步进行四次挥手.

  3. 主机掉电 (断电关机)

    • 掉电的是接收方, 发送方不知道. 继续发送数据, 此时发的数据没有 ack 了, 发送方触发超时重传.

      重传几次之后, 仍然无应答, 就会尝试重置连接, (复位报文段) , 也会失败, 只能放弃连接.

    • 掉电的是发送方, 此时接收方就等着. 接收方等待一阵后, 就会发送一个 “心跳包”. 心跳包是周期性触发的. 只是一个简单的不携带任何数据的包,存在的意义就是确认一下对方是否存在.

      如果对方不返回心跳包, 说明心跳遗失, 此时也就会放弃连接了.

  4. 网线断开

    情况通主机掉电, 只不过通信双方的主机都是好着的.

    客户端和服务器各自按照上述 (主机掉电) 的两种情况分别进行.


TCP 和 UDP 的应用场景

TCP 有可靠性需求的场景, 用到 TCP 非常广泛.

UDP 对于可靠性要求不高, 同时对于传输效率要求很高的情况.

比如: 机房内部的内网传输

  • 机房内布带宽比较充裕, 网络结构更简单, 不容易丢包.
  • 机房内布往往数据之间, 要传输的数据量是很大的, 传输效率要求比较高.

小知识:

传输层也不是只有这两个协议, 还有其他协议.

像 LOL, DOTA , 吃鸡 ,CSGO. 对于实时性要求非常高的游戏, 一般既需要保证可靠性, 有需要保证效率, TCPUDP 都难以胜任, KCP 协议可以胜任.


🌷(( ◞•̀д•́)◞⚔◟(•̀д•́◟ ))🌷

以上就是今天要讲的内容了,希望对大家有所帮助,如果有问题欢迎评论指出,会积极改正!!
在这里插入图片描述
加粗样式

这里是Gujiu吖!!感谢你看到这里🌬
祝今天的你也
开心满怀,笑容常在。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_218669.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

调度线程池ScheduledThreadPoolExecutor源码解析

实现机制分析 我们先思考下,如果让大家去实现ScheduledThreadPoolExecutor可以周期性执行任务的功能,需要考虑哪些方面呢? ScheduledThreadPoolExecutor的整体实现思路是什么呢? 答: 我们是不是可以继承线程池类&am…

docker快速安装redis

一.背景 开发环境中,经常需要redis本地环境,方便开发。准备在本机的虚拟机里面准备一个redis环境。 二.版本信息 操作系统:Windows 10 家庭版 Oracle VM VirtualBox:版本 6.0.10 r132072 (Qt5.6.2) Ubuntu:16.04.6-desktop-a…

STM32CubeMX学习笔记(44)——USB接口使用(HID按键)

一、USB简介 USB(Universal Serial BUS)通用串行总线,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在 PC 领域的接口技术。USB 接口支持设备的即插即用和热插拔功能。USB 是在 1994 年底由英特尔、康柏、IBM、…

淘宝十年技术思考与总结,让人惊叹的进化脱变,最终确认版已发布

看了淘宝在将近10年时间里技术的革新,我对技术与业务有了更近一步的认识。 任何技术都是从小做起,一步步做起来的。如果你让04年的淘宝去做一个能承受10亿次访问的网站,马云那时候肯定会伤透脑筋,即使做半年都做不出来。但现在&a…

Java实现邮件发送

这里我们以QQ邮箱为例。 一、导入依赖:<dependencies><!-- https://mvnrepository.com/artifact/javax.activation/activation --><dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><versio…

联邦学习:联邦异构知识图谱划分

在联邦场景下,C个知识图谱位于不同的客户端上。知识图谱拥的实体集合之间可能会存在重叠,而其关系集合和元组集合之间则不会重叠。我们联系一下现实场景看这是合理的,比如在不同客户端对应不同银行的情况下,由于不同银行都有着自己的业务流程,所以关系集合不重叠。本文我们…

如何给PDF文件添加水印?PDF免费添加水印教程来了

有时候&#xff0c;为了不让别人盗用我们PDF文件里面的内容或图片&#xff0c;或者是出于宣传产品的目的&#xff0c;我们经常会需要给自己的PDF文件添加各种类型的水印&#xff0c;那你们知道如何给PDF文件添加水印吗&#xff1f;下面我们就来看看如何给PDF文件添加水印&#…

瞄准五金行业采购痛难点,智慧采购管理系统实现业务流程数据化,提高采购效率

五金行业采购一直是传统企业采购的软肋和头痛环节&#xff0c;无论从人力成本&#xff0c;物料成本&#xff0c;财务监管成本&#xff0c;物流成本等都存在一个整合服务需求&#xff0c;同时&#xff0c;传统五金行业采购难的问题&#xff0c;也一直制约着行业发展&#xff0c;…

股指期货高手陈(股指期货第一人)

​ 什么是股指期货&#xff0c;怎么玩&#xff1f;请教高手&#xff01; 股指期货&#xff08;Stock Index Futures&#xff0c;即股票价格指数期货&#xff0c;也可称为股价指数期货&#xff09;&#xff0c;是指以股价指数为标的资产的标准化期货合约。双方约定在未来某个特…

RK3399应用开发 | 移植libdrm到rk3399开发板(2.4.113)

一、下载源码 下载地址:https://dri.freedesktop.org/libdrm/。 这里我下载最新的2.4.113版本: wget https://dri.freedesktop.org/libdrm/libdrm-2.4.113.tar.xz解压: xz -d libdrm-2.4.113.tar.xz tar -xf libdrm-2.4.113.tar二、编译环境安装 1. 更新python ubuntu安…

【安信可NB-IoT模组EC系列应用笔记⑧】用NB-IoT模组EC系列了解LwM2M协议并接入云平台

文章目录前言一、测试准备1、硬件准备2、云平台准备二、云平台连接1.注册入网2.读取IMSI及IMEI3.利用IMSI及IMEI创建设备4.LwM2M连接云平台设备三、 数据互交1.ATMIPLNOTIFY 通知属性变化2.ATMIPLREADRSP 返回读取结果3.ATMIPLWRITERSP 发送写入结果4.ATMIPLEXECUTERSP 发送执行…

半乳糖-人血清白蛋白 Gal-HSA,Gal-PEG-HSA 半乳糖修饰人血清白蛋白

产品名称&#xff1a;半乳糖修饰人血清白蛋白 Gal-HSA 用途&#xff1a;科研 状态&#xff1a;固体/粉末/溶液 产品规格&#xff1a;1g/5g/10g 保存&#xff1a;冷藏 储藏条件&#xff1a;-20℃ 储存时间&#xff1a;1年 温馨提醒&#xff1a;仅供科研&#xff0c;不能用于人体…

supervisor管理prometheus进程

一、supervisor简单介绍 二、supervisor安装 三、supervisor部署应用 四、supervisorctl常用指令 五、supervisor测试 一、supervisor简单介绍 1、 概述 supervisor是一个Python编写的进程管理工具&#xff0c;可以方便启动、重启、关闭、单个或多个进程&#xff0c;可以简…

中国数字视听行业全景调研与投资趋势预测报告

数字视听和视听技术的概念 传统视听技术既包括视觉技术&#xff0c;也包括听觉技术&#xff0c;即模拟信号&#xff0c;包括录音录像、摄影等。随着时代和科技的发展&#xff0c;先进的计算机技术在检察系统和办公业务中得到广泛应用&#xff0c;传统的视听技术也逐渐向数字化方…

硬件开发趋势与技术探索

LiveVideoStackCon 2022 音视频技术大会 北京站将于11月25日至26日在北京丽亭华苑酒店召开&#xff0c;本次大会将延续【音视频无限可能】的主题&#xff0c;邀请业内众多企业及专家学者&#xff0c;将他们在过去一年乃至更长时间里对音视频在更多领域和场景下应用的探索、在实…

CSS3 1 CSS3 响应式布局 1.3 Grid 布局

CSS3 文章目录CSS31 CSS3 响应式布局1.3 Grid 布局1.3.1 Grid 布局简介1.3.2 开启grid 布局1.3.3 排列元素1.3.4 对齐方式1 CSS3 响应式布局 1.3 Grid 布局 【【迄今为止最易懂】2分钟掌握 CSS Grid 布局】 https://www.bilibili.com/video/BV18p411A7JB?share_sourcecopy_w…

YOLOv5、v7改进之三十八:引入RepVGG模型结构

前 言&#xff1a;作为当前先进的深度学习目标检测算法YOLOv7&#xff0c;已经集合了大量的trick&#xff0c;但是还是有提高和改进的空间&#xff0c;针对具体应用场景下的检测难点&#xff0c;可以不同的改进方法。此后的系列文章&#xff0c;将重点对YOLOv7的如何改进进行详…

【微服务】微服务万字实战,带你了解工程原理

微服务实战1、前期准备1.1 技术选型1.2 模块设计1.3 微服务调用2、创建父工程3、创建基础模块3.1 导入依赖3.2 创建实体类4、创建用户微服务4.1 创建shop-user模块4.2 用户微服务启动类4.3 创建配置文件5、创建商品微服务5.1 创建shop_product模块5.2 商品微服务启动类5.3 创建…

【自学CSS笔记第7篇】——CSS三大特征(这一篇就够了)

其实&#xff0c;我清楚的知道什么是对的什么是错的&#xff0c;什么该做什么不该做&#xff0c;然而懒惰的天性驱使我们每每做出错误的决定&#xff0c;结束后我又再一次重复着厌倦和懊恼。 目录 CSS的三大特性总览: 层叠性&#xff1a; 继承性&#xff1a; 优先级&#x…

链路状态路由协议 OSPF (二)

作者简介&#xff1a;一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.Router ID 1.什么是Router ID 2.获得Router ID方法 二.DR和…