l8-d10 TCP协议是如何实现可靠传输的

一、TCP主要特点

TCP 是面向连接的运输层协议,在无连接的、不可靠的 IP 网络服务基础之上提供可靠交付的服务。为此,在 IP 的数据报服务基础之上,增加了保证可靠性的一系列措施。

TCP主要特点

1.TCP 是面向连接的运输层协议。

        每一条 TCP 连接只能有两个端点 (endpoint),每一条 TCP 连接只能是点对点的(一对一)

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

3.TCP 提供全双工通信。

4.面向字节流

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

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

面向流的概念

 

Socket 有多种不同的意思

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

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

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

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

二、TCP是如何实现可靠传输的

如何实现可靠传输?

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

        全双工通信的双方既是发送方也是接收方。

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

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

解决方法:超时重传

        A 为每一个已发送的分组设置一个超时计时器。

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

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

 

确认丢失 

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

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

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

                (2) 向 A 发送确认。

确认迟到

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

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

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

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

连续 ARQ 协议

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

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

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

 

三、TCP包头

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

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

相关文章

franka_ros中的一些子包的使用

franka_visualization包 该软件包包含连接到机器人并发布机器人和夹爪关节状态以在 RViz 中进行可视化的发布者。要运行此包启动&#xff1a; roslaunch franka_visualization franka_visualization.launch robot_ip:<fci-ip> \load_gripper:<true|false> 比如&a…

Unity的UI管理器

1、代码 public class UIManager {private static UIManager instance new UIManager();public static UIManager Instance > instance;//存储显示着的面板脚本&#xff08;不是面板Gameobject&#xff09;&#xff0c;每显示一个面板就存入字典//隐藏的时候获取字典中对…

【C语言】每日一题(杨氏矩阵查找数)

目录 杨氏矩阵介绍&#xff1a;方法&#xff1a;思路&#xff1a;代码实现&#xff1a; 杨氏矩阵介绍&#xff1a; 既然在杨氏矩阵中查找数&#xff0c;那什么是杨氏矩阵呢&#xff1f; 矩阵的每行从左到右是递增的&#xff0c;矩阵从上到下是递增的。 例如&#xff1a; 方法…

Opencv 图像金字塔----高斯和拉普拉斯

原文&#xff1a;图像金字塔----高斯和拉普拉斯 图像金字塔是图像中多尺度表达的一种&#xff0c;最初用于机器视觉和图像压缩&#xff0c;最主要用于图像的分割、融合。 高斯金字塔 ( Gaussian pyramid): 高斯金字塔是由底部的最大分辨率图像逐次向下采样得到的一系列图像…

Spring系列文章:Spring中的设计模式

一、简单⼯⼚模式 BeanFactory的getBean()⽅法&#xff0c;通过唯⼀标识来获取Bean对象。是典型的简单⼯⼚模式&#xff08;静态⼯⼚模 式&#xff09;&#xff1b; 二、⼯⼚⽅法模式 FactoryBean是典型的⼯⼚⽅法模式。在配置⽂件中通过factory-method属性来指定⼯⼚⽅法&a…

MySQL——读写分离

简介 读写分离&#xff0c;基本的原理是让主数据库处理事务性增、改、删操作&#xff08;INSERT、UPDATE、DELETE&#xff09;&#xff0c;而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。一般来说都是通过 主从复制&#xff…

高频知识汇总 |【计算机网络】面试题汇总(万字长文通俗易懂)

我之前也已经在写了好几篇高频知识点汇总&#xff0c;简要介绍一下&#xff0c;有需要的同学可以点进去先收藏&#xff0c;之后用到时可以看一看。如果有帮助的话&#xff0c;希望大家给个赞&#xff0c;给个收藏&#xff01;有疑问的也可以在评论区留言讨论&#xff0c;能帮的…

阻塞队列学习总结

ArrayBlockingQueue&#xff1a;一个由数组结构组成的有界阻塞队列。 LinkedBlockingQueue&#xff1a;一个由链表结构组成的有界阻塞队列。 PriorityBlockingQueue&#xff1a;一个支持优先级排序的无界阻塞队列。 DelayQueue&#xff1a;一个使用优先级队列实现的延迟无界…

【Java基础篇 | 类和对象】--- 聊聊什么是内部类

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【JavaSE_primary】 本专栏旨在分享学习Java的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 前言 当一个事物的内部&…

iOS 17新功能:教你轻松掌握锁定屏幕快捷方式

通过iOS 17&#xff0c;苹果为iPhone用户提供了使用快捷方式锁定手机屏幕的能力。 为什么你需要学习如何使用iOS锁定屏幕快捷方式&#xff1f;按下iPhone上的电源按钮激活这个屏幕肯定是最简单的吗&#xff1f;嗯&#xff0c;这并不总是正确的。如果你在按下物理按钮时遇到困难…

你真的了解 Docker 日志吗?

目录 前言排查总结 前言 今天服务器发送了磁盘告警通知&#xff0c;于是打开了尘封已久的电脑连上了公司服务器&#xff0c;服务器跑的是一个 Docker Swarm 集群&#xff08;正是集群中的某一台服务器发生告警&#xff09;&#xff0c;告警的服务器上运行了多个游戏后台程序。…

时序预测 | MATLAB实现TCN-GRU时间卷积门控循环单元时间序列预测

时序预测 | MATLAB实现TCN-GRU时间卷积门控循环单元时间序列预测 目录 时序预测 | MATLAB实现TCN-GRU时间卷积门控循环单元时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现TCN-GRU时间卷积门控循环单元时间序列预测&#xff1b; 2.运行环…

A Yet Another Remainder The 2022 ICPC Asia Regionals Online Contest (II)

PTA | 程序设计类实验辅助教学平台 题目大意&#xff1a;有一个n位长的隐藏数x&#xff0c;从高位到低位依次标号为1到n&#xff0c;sum[i][j]表示从第i为开始每j位上的数的和&#xff0c;有q次询问&#xff0c;每次给出一个100以内除了5以外的质数p&#xff0c;问这个数%p等于…

网络原理,了解xml, json,protobuffer的特点

目录 外卖服务器场景带入 大佬们通用的规范格式 一、&#x1f466; 外卖服务器场景 外面服务器沟通有很多模式——展示商家列表等等&#xff0c;只是其中一个&#xff0c;因此需要一个统一的规划了——不同应用程序&#xff0c;里面的自定义格式是不一样的&#xff0c;这样的…

前端组件库造轮子——Message组件开发教程

前端组件库造轮子——Message组件开发教程 前言 本系列旨在记录前端组件库开发经验&#xff0c;我们的组件库项目目前已在Github开源&#xff0c;下面是项目的部分组件。文章会详细介绍一些造组件库轮子的技巧并且最后会给出完整的演示demo。 文章旨在总结经验&#xff0c;开…

算法刷题记录-其他类型(LeetCode)

57 57. Insert Interval 思路 模拟 用指针去扫 intervals&#xff0c;最多可能有三个阶段&#xff1a; 不重叠的绿区间&#xff0c;在蓝区间的左边有重叠的绿区间不重叠的绿区间&#xff0c;在蓝区间的右边 逐个分析 不重叠&#xff0c;需满足&#xff1a;绿区间的右端&…

JVM之堆和方法区

目录 1.堆 1.1 堆的结构 1.1.1 新生代&#xff08;Young Generation&#xff09; 1.1.2 年老代&#xff08;Old Generation&#xff09; 1.1.3 永久代/元空间&#xff08;Permanent Generation/Metaspace&#xff09; 1.2 堆的内存溢出 1.3 堆内存诊断 1.3.1 jmap 1.3.2…

HTML5-3-表格

文章目录 属性边框属性标题跨行和跨列单元格边距 HTML 表格由 <table> 标签来定义。 tr&#xff1a;tr 是 table row 的缩写&#xff0c;表示表格的一行。td&#xff1a;td 是 table data 的缩写&#xff0c;表示表格的数据单元格。th&#xff1a;th 是 table header的缩…

黑盒测试中的决策表设计

前言 在软件开发中&#xff0c;测试是不可或缺的一个环节。其中&#xff0c;黑盒测试是一种比较常用的测试方法。它强调测试人员不需要知道程序内部结构&#xff0c;只需根据程序规格说明书来设计测试用例进行测试。本文将介绍黑盒测试中的一种决策表设计方法。 同时&#xf…

Games202(P6、P7)环境光照与PRT全局光照

P6、实时环境光照 RealTime Environment Mapping 不同于全局光照 (1) IBL 我的Blog&#xff1a; QT with OpenGL&#xff08;IBL-漫反射辐照&#xff09;IBL-镜面反射&#xff08;预滤波篇&#xff09;IBL-镜面反射&#xff08;LUT篇&#xff09;QT with OpenGL(IBL-镜面反…