day10 TCP是如何实现可靠传输的

news2025/1/12 2:55:57

TCP最主要的特点

1、TCP是面向连接的运输层协议。( 每一条TCP连接只能有两个端点(endpoint),每一条TCP连接只能是点对点的(一对一)

2、TCP提供可靠交付的服务。

3、TCP提供全双工通信。  

4、面向字节流。

        TCP中的“流”(stream)指的是流入或流出进程的字节序列。

        面向字节流:虽然应用程序和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据看成仅仅是一连串无结构的字节流。

 

 

(服务器,端口,socket--相当于电源,插排,插排口)

 socket有多种不同的意思:

应用编程接口 API 称为socket API, 简称为socket;

socket API 中使用的一个函数名也叫socket;

调用socket函数的端点称为socket;

调用socket函数时其返回值称为socket描述符,可简称为socket。

TCP是如何实现可靠传输的

1、每发送完一个分组就停止发送,等待对方的确认。在收到确认信息后在发送下一个分组;

2、全双工通信的双方既是发送方也是接收方;

3、假设仅考虑 A 发送数据, 而 B 接受数据并发送确认信息。因此 A 叫做发送方,而 B 叫做接收方;

 A 如何知道 B 是否正确收到了 M1 呢?

解决方法:超时重传
A 为每一个已发送的分组设置一个超时计时器。

A 只要在超时计时器到期之前收到了相应的确认,就撤销该超时计时器,继续发送下一个分组 M2

若 A 在超时计时器规定时间内没有收到 B 的确认,就认为分组错误或丢失,就重发该分组。
 

机制1: 确认丢失

若 B 所发送的对 M1 的确认丢失了,那么 A 在设定的超时重传时间内将不会收到确认,因此 A 在超时计时器到期后重传 M1。

假定 B 正确收到了 A 重传的分组 M1。这时 B 应采取两个行动:

(1) 丢弃这个重复的分组 M1,不向上层交付。

(2) 向 A 发送确认。

机制2:确认迟到
B 对分组 M1 的确认迟到了,因此 A 在超时计时器到期后重传 M1。

B 会收到重复的 M1,丢弃重复的 M1,并重传确认分组。

A 会收到重复的确认。对重复的确认的处理:丢弃。

提高传输效率:流水线传输

 连续 ARQ 协议

发送窗口:发送方维持一个发送窗口,位于发送窗口内的分组都可被连续发送出去,而不需要等待对方的确认。

发送窗口滑动:发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。

累积确认:接收方对按序到达的最后一个分组发送确认,表示:到这个分组为止的所有分组都已正确收到了。

 

TCP报文段的首部格式

 

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

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

相关文章

HTTP第一讲——HTTP是什么?

定义: HTTP 就是超文本传输协议,也就是 HyperText TransferProtocol。 HTTP 的名字是“超文本传输协议”,它可以拆成三个部分,分别是:“超文本”、“传输”和“协议”。 首先,HTTP 是一个协议。不过&…

Swagger使用手册

目录 Swagger 的依赖Swagger 的配置Swagger 生成的测试页面地址Swagger 的注解遇到过的问题提示 documentationPluginsBootstrapper 空指针异常 Swagger 的依赖 <!--swagger2--> <dependency><groupId>io.springfox</groupId><artifactId>sprin…

【MATLAB图像处理实用案例详解(23)】——基于形态学处理的焊缝边缘检测算法

目录 一、问题描述二、图像预处理2.1 中值滤波去噪2.2 白平衡处理 三、焊缝边缘检测3.1 Sobel算子边缘检测3.2 Prewitt算子边缘检测3.3 Canny算子边缘检测3.4 形态学处理边缘检测 四、结果分析 一、问题描述 目前很多机械关键部件均为钢焊接结构&#xff0c;钢焊接结构易出现裂…

SSL证书支持IP改成https地址

我们都知道SSL证书能为域名加密&#xff0c;那么IP地址可以实现https加密吗&#xff1f;答案当然是肯定的。为IP地址进行https加密不仅能保护IP服务器与客户端之间数据传输安全&#xff0c;还能对IP服务器进行身份验证&#xff0c;确保用户信息安全&#xff0c;增强用户对IP地址…

Python每日一练(20230502)

目录 1. 被围绕的区域 &#x1f31f;&#x1f31f; 2. 两数之和 II &#x1f31f; 3. 二叉树展开为链表 &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1…

【操作系统OS】学习笔记:第一章 操作系统基础【哈工大李治军老师】

基于本人观看学习 哈工大李治军老师主讲的操作系统课程 所做的笔记&#xff0c;仅进行交流分享。 特此鸣谢李治军老师&#xff0c;操作系统的神作&#xff01; 如果本篇笔记帮助到了你&#xff0c;还请点赞 关注 支持一下 ♡>&#x16966;<)!! 主页专栏有更多&#xff0…

【前端知识】Cookie, Session,Token和JWT的发展及区别(中)

【前端知识】Cookie, Session&#xff0c;Token和JWT的发展及区别&#xff08;中&#xff09; 4. Session4.1 Session的背景及定义4.2 Session的特点&#x1f44d;4.2.1 Session的特点&#x1f440;4.2.2 Session保存的位置 4.3 Session的一些重要/常用属性4.4 Session的认证流…

算法之美~分治算法

如何理解分治算法&#xff1f; 分治算法&#xff08;divide and conquer&#xff09;的核心思想其实是&#xff0c;分而治之&#xff0c;也就是将原问题划分成n个规模较小&#xff0c;并且结构与原问题相似的子问题&#xff0c;递归第解决这些子问题&#xff0c;然后再合并其结…

什么是 Docker?它能用来做什么?

文章目录 什么是云计算&#xff1f;什么是 Docker&#xff1f;虚拟化技术演变特点架构镜像&#xff08;Image&#xff09;仓库&#xff08;Registry &#xff09;容器&#xff08;Container&#xff09; 应用场景 什么是云计算&#xff1f; 云计算是一种资源的服务模式&#x…

应急响应概述

一、应急响应事件类型 常见的应急响应事件分类&#xff1a; Web 入侵&#xff1a;主页篡改、Webshell 系统入侵&#xff1a;病毒木马、勒索软件、远控后门 网络攻击&#xff1a;DDOS 攻击、DNS 劫持、ARP 欺骗 二、可疑账号排查 2.1Windows 1&#xff09;‘WinR’…

世界坐标系、相机坐标系和图像坐标系的转换

本文转载于&#xff1a;https://blog.csdn.net/weixin_38842821/article/details/125933604?spm1001.2014.3001.5506 1. 世界坐标 世界坐标系是一个特殊坐标系&#xff0c;它建立了描述其他坐标系需要的参考框架。能够用世界坐标系描述其他坐标系的位置&#xff0c;而不能用更…

stack、queue和priority_queue的使用介绍--C++

一、stack介绍 1. stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入与提取操作。 2. stack是作为容器适配器被实现的&#xff0c;容器适配器即是对特定类封装作为其底层的容器&#xff0c;并提供一组…

YOLOv5 更换Neck之 BiFPN:如何替换YOLOv5的Neck实现更强的检测能力?

目录 一、BiFPN是什么&#xff1f;1、什么是BiFPN2、BiFPN的优势 二、为什么要用BiFPN替换YOLOv5的Neck&#xff1f;1、YOLOv5原有的Neck存在的问题2、BiFPN的适用场景 三、如何在YOLOv5中实现BiFPN1、下载并替换BiFPN代码2、修改配置文件3、遇到的问题及解决方法 四、BiFPN超参…

IronOCR 2023.4.13 Crack

IronOCR能够允许用户软件工程师直接从图片中读取文本文章&#xff0c;以及从.NET的程序和互联网网站中读取PDF。从扫描的图像中读取文本和条形码&#xff0c;能够支持多种外语&#xff0c;并且输出为纯文本甚至信息结构。IronOCR库能够供用户在互联网游戏控制台中使用。MVC&…

PyQt6: 多网卡适配器的选择与显示(GPT4帮写)

PyQt6: 多网卡适配器的选择与显示 1. 背景2. Python获取本机网卡适配器信息3. PyQT6 UI显示网卡信息4. PyQT6 后台处理&#xff1a;ButtonComboBox 附&#xff1a;GPT Output&#xff1a;博主热门文章推荐&#xff1a; &#xff08;本文部分文案由ChatGPT生成&#xff0c;但代码…

企企通:为什么成长型企业,需要SaaS采购管理平台?

根据艾瑞咨询发布的《2022年中国企业级SaaS行业研究报告》&#xff0c;未来三年SaaS行业的增长也将与宏观经济恢复速度相挂钩&#xff0c;在中性预期下&#xff0c;到2024年中国企业级SaaS市场规模将有望达到1201亿元。 由于SaaS和云模式出现&#xff0c;采购角色在慢慢发生了变…

perf record对C++程序耗时进行分析

本节将介绍如何使用perf工具的perf record对C代码进行性能分析&#xff0c;一切操作都是在ubuntu 20下进行。 perf工具安装 由于perf工具和内核版本有关&#xff0c;因此直接安装容易出错&#xff0c;建议直接通过如下指令安装&#xff1a; sudo apt-get install linux-tool…

【Access】Access:SQL 语句汇总

目录 一、SQL 的功能 二、考试重点 三、关系的定义 &#xff08;1&#xff09;新建关系 &#xff08;2&#xff09;删除关系 四、SQL 的「数据查询」功能 &#xff08;1&#xff09;基本结构 ① Select 语句的基本结构 ② Select 子句 ③ Where 子句 ④ 空值的处…

HTB-TheNotebook

HTB-TheNotebook 信息收集80端口JWT攻击 立足www-data -> noahnoah -> root 信息收集 80端口 存在一个登录和注册用户业务。先看看登录业务&#xff0c;在登录中如果我输入不存在的用户就会出现&#xff1a; Login Failed! Reason: User doesn’t exist. 如果是存在的用…

Value for SWIFT_VERSION cannot be empty错误解决

出错: 解决方法: 选择后 重新编译成功