java网络原理(二)------TCP确认应答和超时重传

一Tcp协议

TCP,即Transmission Control Protocol,传输控制协议。人如其名,要对数据的传输进行一个详细的控制。

二.TCP协议段格式

在这里插入图片描述
在这里插入图片描述
知道了端口号才能进一步确认这个数据报交给了哪一个程序。16为端口号是2字节,范围是0到65535.如果端口号超过了65535那么这个端口号是不合法的。
在这里插入图片描述
tcp的报头是变长的,Tcp报头的最大长度是60字节,前20个字节是固定的,报头最短长度是20字节。选项部分可以有 ,也可以没有,可以是一个,也可以是多个。
在这里插入图片描述
当tcp的空间不够用了,可以升级拓展空间。

确认应答

tcp的特点是:有连接,全双工,可靠,面向字节流。那么可靠的传输机制是什么样的呢?确认应答是保证tcp可靠性的重要条件。
比如我给女生发信息,第一条信息是我们一起去吃麻辣烫,第二条是做我女朋友。
在这里插入图片描述

正常情况是女生同意和我一起吃麻辣烫但是不做我女朋友,有没有可能是第二条回应先过来,第一条回应后过来
在这里插入图片描述
后发先至导致意思全变了,女生拒绝了吃麻辣烫但是答应做我女朋友,那么对我来说更加开心。那么这种后发先至的情况有没有可能存在?一定是存在的,网络从a->b中间的路径很多,每个节点的路由器繁忙程度也不一样,此时就会有后发先至的可能性。解决这个问题针对数据进行编号。
在这里插入图片描述
当客户端发送数据时,会把数据转换为一个一个字节,然后对每个字节进行编号,假设第一次发送编号1到1000的,第二次发送1001-2000,第三次2001-3000.
在这里插入图片描述
第一次主机A发送编号1-1000的数据,主机B收到后会给A返回一个编号1001的数据(不一定发送的是1到1000的数据,可能编号是1到500,1到600都有可能,但主机B返回的一定是A发送编号的最后一位加1),主机A收到后说明1到1000的数据已经成功发送,下一次发送的数据应该从1001开始。
在这里插入图片描述
在这里插入图片描述
32位序号是每次发送的第一个字节编号,32为确认序号是最后一个字节编号加1。
搞清楚当前是普通报文和应答报文是很有必要的。
在这里插入图片描述
当ack为0时是一个普通报文,此时只有32为序号是有效的。
当ack时1时表示是一个应答报文,这个报文的32为序号和32位确认序号都是有效的。
主机A发送1000到2000的数据时,主机B收到后同样会发送一个TCP数据报,32位确认序号是1001,主机A收到反馈后会把32为确认序号+1和发过来的32为序号进行对比,如果相等说明数据发送成功,如果不相等说明发送失败。保证了数据传输的可靠性。

超时重传

丢包,在网络上很可能出现发一个数据,然后丢了。路由器和交换机就是交通枢纽,数据传输的时要经过很多路由器和交换机,传输的线路结构复杂,传输的数据量也不确定,如果设备太繁忙,后面的数据等待太久就会出现丢包的可能。
超时重传是主机A给主机B发信息,如果主机A收不到确认应答既发送失败,主机A等待一定的时间后会重新给A发送一次。超时重传相等于确认应答进行的重要补充。
在这里插入图片描述
不管是应答报文丢失还是数据本身丢失都会重新发送。如果是应答报文丢失,那么同一条信息B收到了2次,本身是有问题的。

接收方收到数据后,需要对数据进行去重,把重复的数据丢失掉。
tcp会在内核中给每个socket对象安排一个内存空间,相当于一个队列,也称为接收缓存区,收到的数据都会被放在内存缓存区中,并且按照序号进行排序,当B主机读数据的时候,会把数据从队列中读走并删除,如果有重复的,下一次主机A发过来的数据编号一定大于队列队首元素的编号,这时候说明上次主机B发给主机A的数据重复发送过去了,把重复的数据删除即可。

为啥重传的时候能传过去?
丢包本来就是一个概率性的问题,假设丢包的概率是10%,那么连续传2次丢包的概率是10%*10%=1%,那么随着重传的次数增多丢包的概率会越来越小,如果重传了很多次都没收到,那么说明是重大网络事故。每次未收到数据都需要等待一定的时间,如果超过等待时间还没有收到,那么就要重传。超时重传不是一个固定的值,会随着时间的轮次增加,而进一步增加。
如果重传到一定的程度会自动放弃。次数就会重置tcp的连接。
在这里插入图片描述
rst为1为一个复位报文,如果网络出现严重的故障,复位操作就无法完成,最终放弃连接。

超时重传和确认应答是保证tcp可靠性的关键。

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

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

相关文章

redis功能点

一、redis简介 概述 Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。 Redis 支持很…

windows端给python重命名,快速将默认的python修改为 python3

问题点 在windows上,我们实际已经安装了python,但默认的是 python, 可能有的程序执行需要用到 python3,下面的方法可以快速将默认的python修改为 python3 解决方法 此方法需要保证windows上已经安装了python 1:首先找到系统的…

LED显示屏视频播放器的8大功能

随着中国LED显示屏企业的规模发展和产品技术的不断创新,LED显示屏在各个领域中的应用得到了广泛推广。然而,LED显示屏的出色表现离不开LED视频播放器这一关键设备的支持。下面将介绍LED视频播放器的8大功能,以及它们如何提升LED显示屏的显像效…

FPGA - AXI4_Lite(实现用户端与axi4_lite之间的交互逻辑)

在之前的博客中对AXI4总线进行了介绍(FPGA-AXI4接口协议概述),在这篇博客中,实现用户端与axi4_lite之间的交互逻辑。 一, AXI4 1.1 AXI4 介绍 对AXI4总线简单介绍(具体可见FPGA-AXI4接口协议概述&#…

(done) 机器学习中的方差 variance 和 偏差 bias 怎么理解?

来源:https://blog.csdn.net/weixin_41479678/article/details/116230631 情况1属于:低 bias,高 variance (和 human performance 相近,但和 验证集dev set 相远) 通常意味着模型训练轮数太多 情况2属于:高 bias&#…

微服务高级篇(三):分布式缓存+Redis集群

文章目录 一、单点Redis的问题及解决方案二、Redis持久化2.1 单机安装Redis2.2 RDB持久化2.3 AOF持久化2.4 RDB和AOF对比 三、Redis主从3.1 搭建Redis主从架构3.1.1 集群结构3.1.2 准备实例和配置3.1.3 启动3.1.4 开启主从关系3.1.5 测试 3.2 数据同步3.2.1 全量同步【建立连接…

【Web应用技术基础】HTML(5)——案例1:展示简历信息

样式&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>展示简历信息…

真机笔记(1)第一阶段知识讲解

目录 第一阶段讲解&#xff1a; 1.1 机房 1.2 分类&#xff1a; 1.3 机房建设标准 1.3.1 安全性: 1.3.2 供电&#xff1a; 1.3.3 空气调节&#xff1a;&#xff08;恒温恒湿&#xff09; 1.3.4 电磁防护&#xff1a; 2.1 机柜 2.2 分类 2.3 机柜的高度单位 3.1 设备…

【教程】PLSQL查看表属性乱码解决方法

一、前言 PL/SQL是Oracle数据库的编程语言&#xff0c;用于编写存储过程、触发器、函数等。 今天用plsql想查看表的属性&#xff0c;看看各个字段的注释&#xff0c;可是打开一看&#xff0c;居然是乱码的&#xff0c;如下面这样 如果在使用PL/SQL查看表属性时出现乱码&…

隐语笔记3 —— 隐语架构

隐语架构一览 隐语产品层 定位&#xff1a; 通过可视化产品&#xff0c;降低终端用户的体验和演示成本。通过模块化API降低技术集成商的研发成本。 人群画像&#xff1a; 隐私保护计算集成商&#xff0c;产品人员&#xff0c;隐私保护计算需求方&#xff0c;开发人员&#xff…

Flutter-仿携程首页类型切换

效果 唠叨 闲来无事&#xff0c;不小心下载了携程app&#xff0c;还幻想可以去旅游一番&#xff0c;奈何自己运气不好&#xff0c;自从高考时第一次吹空调导致自己拉肚子考试&#xff0c;物理&#xff0c;数学考了一半就交卷&#xff0c;英语2B铅笔除了问题&#xff0c;导致原…

基于modbus TCP实现EPICS与西门子S7 1200系列1215C PLC的通信

PLC介绍 西门子系列PLC在国内的市场占比第一&#xff0c;1200系列中小型PLC&#xff0c;因其众多的产品序列、强大的通讯功能和丰富扩展模块&#xff0c;被使用在工业生产、自动化生产线、智能制造、机器人等各行各业。根据CPU的供电电源的型号和数字量输出的类型&#xff0c;…

专业130+总分410+西南交通大学924信号与系统考研经验西南交大电子信息通信工程,真题,大纲,参考书。

初试分数出来&#xff0c;专业课924信号与系统130&#xff0c;总分410&#xff0c;整体上发挥正常&#xff0c;但是还有遗憾&#xff0c;其实自己可以做的更好&#xff0c;总结一下经验&#xff0c;希望对大家有所帮助。专业课&#xff1a;&#xff08;130&#xff09; 西南交…

【技术栈】Spring Cache 简化 Redis 缓存使用

​ SueWakeup 个人主页&#xff1a;SueWakeup 系列专栏&#xff1a;学习技术栈 个性签名&#xff1a;保留赤子之心也许是种幸运吧 ​ 本文封面由 凯楠&#x1f4f8; 友情提供 目录 本栏传送门 1. Spring Cache 介绍 2. Spring Cache 常用注解 注&#xff1a;手机端浏览本文章…

DS-红黑树(RBTree)

一.红黑树 1.1 红黑树的起源 当对对AVL树做一些结构修改的操作时候&#xff0c;性能较为低下&#xff0c;比如&#xff1a;插入时要维护其绝对平衡&#xff0c;旋转的次数比较多&#xff0c;更差的是在删除时&#xff0c;有可能一直要让旋转持续到根的位置。 因此1972年Rudolf…

YOLOv8独家改进:backbone改进 | 视觉新主干!RMT:RetNet遇见视觉Transformer | CVPR2024

💡💡💡本文独家改进:RMT:一种强大的视觉Backbone,灵活地将显式空间先验集成到具有线性复杂度的视觉主干中,在多个下游任务(分类/检测/分割)上性能表现出色! 💡💡💡Transformer 在各个领域验证了可行性,在多个数据集下能够实现涨点 改进结构图如下: 收录 …

Canine IP-10/CXCL 10 ELISA试剂盒上新

科研用Canine IP-10/CXCL 10 ELISA试剂盒重磅来袭&#xff0c;将在免疫学、癌症研究与神经科学等多个领域助力各位老师们的研究&#xff01; 图1&#xff1a;犬IP-10/CXCL10结构预测&#xff08;图片来源&#xff1a;UniProt&#xff09; C-X-C基序趋化因子(C-X-C motif chemok…

基于飞凌嵌入式i.MX6ULL核心板的电梯智能物联网关方案

电梯是现代社会中不可或缺的基础性设施&#xff0c;为人们的生产生活提供了很大的便捷。我国目前正处于城镇化的快速发展阶段&#xff0c;由此带动的城市基础设施建设、楼宇建设、老破小改造等需求也让我国的电梯行业处在了一个高速增长期。截至2023年年底&#xff0c;中国电梯…

UE5 GameMode C++函数 学习

已经尝试&#xff0c;确实能重启游戏 类描述符加了noplaceable过后即使是Actor也不能放到场景中了&#xff0c;关卡蓝图&#xff0c;GameMode&#xff0c;GameState这些就不能放场景中了 UFUNCTION(exec)

ruoyi-nbcio-plus基于vue3的flowable增加开始节点的表单绑定修改

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…