运输层3——TCP协议(重点!!!)

news2024/12/26 19:55:12

目录

一、TCP协议的特点

二、TCP连接

三、TCP的可靠传输(重点!!!)

1、停止等待协议

(1)无差错情况

(2)出现差错

(3)确认分组丢失 和 确认分组迟到

2、停止等待协议的信道利用率

3、连续ARQ协议 和 滑动窗口协议


一、TCP协议的特点

1、面向连接
2、每条TCP连接只能有两个终点,但是一个进程可以建立多个TCP连接
3、支持可靠传输:无差错、不丢失、不重复、有序到达
4、全双工通信
5、面向字节流
TCP把进程提交的数据看成一个个字节,简称字节流
TCP和上层应用一次交互一个数据块
但是接收方与发送方对上层交互的数据块大小可能不同

二、TCP连接

TCP的端口是套接字 / 接口 = {IP地址 : 端口号};而UDP的端口就仅仅是端口号
因此,TCP的连接,本质是不同的套接字进行连接
一个端口 / IP地址可以建立多个TCP连接
例如:{IP1 : 端口A}、{IP1:端口B},一个IP地址,多个端口
       {IP1 : 端口C}、{IP2:端口C} ,一个端口,多个IP地址

三、TCP的可靠传输(重点!!!)

1、停止等待协议

每次发送一个分组就停下等待,等待对方发送收到确认后,再发送后续分组
这种机制,有以下3种情况:无差错、出现差错、确认丢失/迟到
以下描述,以A为发送端,B为接收端

(1)无差错情况

数据分组M1正确发送到B,B发送确认分组到A
A发送下一数据分组M2

(2)出现差错

B接收到错误数据,直接丢弃;同时什么也不做
A在每一次发送,都设置了一个超时计时器,这个时间叫做重传时间
当,A在重传时间内没有收到B发送的确认分组,则重传数据

为实现上述过程:
1、A必须暂时备份数据,只有得到收到确认后才丢弃
2、分组和确认分组都进行编号,以明确哪些分组确实收到了
3、重传时间一般要比数据平均往返时间RTT大一些

(3)确认分组丢失 和 确认分组迟到

由B向A发送的收到确认分组叫做确认分组
当B向A发送的确认分组丢失 / 迟到时
此时A不会收到确认分组,必定超时;因此A必定会重传
B收到重传数据后:
1、丢弃重复分组
2、向A重新发送确认分组

于是,由于上述机制,A总是可以收到确认分组
同时,因为接收方B不需要发送重传请求
发送方A就会自动重传数据
因此,该机是也叫做自动重传请求

2、停止等待协议的信道利用率

信道利用率 = \frac{\frac{T_{D}}{T_{D}+RTT+T_{A}}}{}
TD:发送方分组发送时间=分组长度 / 数据速率
RTT:数据平均往返时间
TA:接收方发送确认分组时间

由于上述公式,当RTT远大于分组发送时间TD时(一般TD远大于TA),信道利用率就会很低
如果重传,利用率更低。即是说信道在大多数时间都是空闲的(空闲就是没有在发送数据)

因此,基于等待停止协议的信道利用率很低
采用新的数据传输方式:流水线传输

3、连续ARQ协议 和 滑动窗口协议

对发送方:
设置一个发送窗口,在这个窗口内的所有分组都可以发送出去,而不必等待确认分组
每收到一个确认,就把发送窗口向前移动一个分组
并且发送下一个未发送的分组

对接收方
并不是每收到一个分组就相应的发送一个确认分组,这和停止等待协议没有区别
而是采用累计确认的方式
什么是累计确认?
就是连续收到多个分组后,对按顺序到达的最后一个分组发送确认
标识:该分组包括前面的所有分都正确到达

但是,该机制会产生一个困境,叫做回退N问题
什么意思?
如果发送方发送了5个分组,1、2、3、4、5
1、2、4、5都受到了,但是偏偏中间的分组3没有丢了
怎么办?
按照累计确认和最后一个确认分组机制
只能发送分组3的确认分组,标识我只收到了分组3以及之间的数据
于是,A只能重新传3、4、5
滑动窗口的前沿回退了3格
这就叫做回退N
可以想到,如果发送窗口大小更大,丢失的分组很靠前
这将会极大的影响通信质量。

如果你对这个过程不是很理解,请你自己拿起笔来,画个图,一目了然

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

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

相关文章

LeetCode题练习与总结:排列硬币--441

一、题目描述 你总共有 n 枚硬币,并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。 给你一个数字 n ,计算并返回可形成 完整阶梯行 的总行数。 示例 1: 输…

数据查找文件夹里Excel、Word文件

我经常需要处理大量的Excel文件,为了解决查找数据时的困扰,我编写了一个小工具。这个工具可以搜索文件夹下的所有Excel文件,只需输入你想查找的字符串,它就会告诉你该字符串出现在哪个Excel文件的哪个表格中。 下载地址&#xff…

每天下午16:20达梦数据库干什么?

家里有达梦的朋友注意了,如果您用的是试用版,那么通常1年后数据库就不允许使用了,这是因为缺少正式许可,通常保存在 $DM_HOME/bin/dm.key 文件中 这个1年的时间从软件发布日期算,例如:从官方网站下载的 dm…

rtc-pcf8563 0-0051: low voltage detected, date/time is not reliable

解决方法: 1、先测量pcf8563电源电压,是否满足要求。 2、pcf8563首次操作。第一次读取pcf8563的时间,未初始化,非法,芯片门槛电压检测配置不合理。使用hwclock命令写入一次,即可解决。 hwclock -f /dev/…

SpringBoot 整合 Avro 与 Kafka

优质博文:IT-BLOG-CN 【需求】:生产者发送数据至 kafka 序列化使用 Avro,消费者通过 Avro 进行反序列化,并将数据通过 MyBatisPlus 存入数据库。 一、环境介绍 【1】Apache Avro 1.8;【2】Spring Kafka 1.2&#xf…

【leetcode100】矩阵置零

1、题目描述 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用原地算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]] 2、初始思路 2…

进程状态的学习

进程状态就是 task_struct 内的一个整数 状态间是可以进行转化的 运行: 每一个框都是进程的task_struct,都有唯一的pcb和pid来标识它的唯一性 让CPU选择一个进程去运行,本质是选择一个进程的PCB去运行,task_struct里一定有内存指…

PDF版地形图矢量出现的问题

项目描述:已建风电场道路测绘项目,收集到的数据为PDF版本的地形图,图上标注了项目竣工时期的现状,之后项目对施工区域进行了复垦恢复地貌,现阶段需要准确的知道实际复垦修复之后的道路及其它临时用地的面积 解决方法&…

Ubuntu20.04离线安装全教程(包括DellR940重置Raid 5、安装Ubuntu、设置root、安装nvidia英伟达显卡驱动及设置防火墙白名单)

本文记录重装Ubuntu20.04的所有记录,从服务器磁盘阵列重新排列、Ubuntu 20.04系统安装、配置root权限、安装Nvidia显卡驱动以及设置防火墙白名单的全部操作。 每一部分参考的博客的出处会放置于段落末尾,表示感谢! 一、重置服务器磁盘阵列&…

华为新手机和支付宝碰一下 带来更便捷支付体验

支付正在变的更简单。 11月26日,华为新品发布会引起众多关注。发布会上,华为常务董事余承东专门提到,华为Mate 70和Mate X6折叠屏手机的“独门支付秘技”——“碰一下”,并且表示经过华为和支付宝的共同优化,使用“碰…

手机中的核心SOC是什么?

大家好,我是山羊君Goat。 常常听说CPU,中央处理器等等的,它是一个电脑或单片机系统的核心,但是对于SOC可能相比于CPU了解的人没有那么广泛。 所以SOC是什么? SOC全称是System on Chip,就是片上系统&#…

理解字母形状,从而获得含义

英文字母,都是象形符号,所以,理解其形象,所象之形,是一项重要的工作,和非常有意义事情。也是我们快速记住大量单词,将单词从底层逻辑开始理清,融会贯通扩展记忆容量的重要办法之一。…

新型大语言模型的预训练与后训练范式,阿里Qwen

前言:大型语言模型(LLMs)的发展历程可以说是非常长,从早期的GPT模型一路走到了今天这些复杂的、公开权重的大型语言模型。最初,LLM的训练过程只关注预训练,但后来逐步扩展到了包括预训练和后训练在内的完整…

爬虫专栏第一篇:深入探索爬虫世界:基础原理、类型特点与规范要点全解析

本专栏会对爬虫进行从0开始的讲解,每一步都十分的细致,如果你感兴趣希望多多点赞收藏关注支持 简介:文章对爬虫展开多方面剖析。起始于爬虫的基本概念,即依特定规则在网络抓取信息的程序或脚本,在搜索引擎信息提取上作用显著。阐述其于大数据背景下可助力获取并处理分析数…

LocalDateTime序列化(跟redis有关)

使用过 没成功,序列化后是[2024 11 10 17 22 20]差不多是这样, 反序列化后就是: [ 2024 11 10.... ] 可能是我漏了什么 这是序列化后的: 反序列化后: 方法(加序列化和反序列化注解)&…

UE5 打包报错 Unknown structure 的解决方法

在虚幻引擎5.5 打包报错如下: UATHelper: 打包 (Windows): LogInit: Display: LogProperty: Error: FStructProperty::Serialize Loading: Property ‘StructProperty /Game/Components/HitReactionComponent/Blueprints/BI_ReactionInterface.BI_ReactionInterface…

webrtc ios h264 硬编解码

webrtc ios h264 硬编解码 一 ios 系统支持 从ios8开始,苹果公司开放了硬解码和硬编码API(即 VideoToolbox.framework API) 二 主要api 1 主要解码函数 VTDecompressionSessionCreate // 创建解码 session VTDecompressionSession…

【大模型】深度解析 NLP 模型5大评估指标及 应用案例:从 BLEU、ROUGE、PPL 到METEOR、BERTScore

在自然语言处理(NLP)领域,无论是机器翻译、文本生成,还是问答系统开发,模型性能评估指标始终是开发者绕不开的工具。BLEU、ROUGE、PPL(困惑度)、METEOR 和 BERTScore 是五个最具代表性的指标&am…

idea 自动导包,并且禁止自动导 *(java.io.*)

自动导包配置 进入 idea 设置,可以按下图所示寻找位置,也可以直接输入 auto import 快速定位到配置。 Add unambiguous imports on the fly:自动帮我们优化导入的包Optimize imports on the fly:自动去掉一些没有用到的包 禁止导…

Mac安装及合规无限使用Beyond Compare

文章目录 Beyond CompareBeyond Compare简介Beyond Compare安装Beyond Compare到期后继续免费使用 Beyond Compare Beyond Compare简介 Beyond Compare 是一款由 Scooter Software 开发的文件和文件夹比较工具。它主要用于对比两个文件或文件夹之间的差异,并支持文…