可靠性问题与解决方案/可靠性理解

简介: 计算机网络 网络 可靠 TCP

概念

在学习TCP之前,我们需要推敲一下可靠的字面意思。

解释

下面是百度百科对“可靠”的解释:

1. 可以信赖依靠。 清 史致谔《禀左宗棠》:“至属吏中结实可靠之员,职道於十月中旬曾具禀加考密陈。” 老舍 《四世同堂》四七:“她看出来朋友们确是比瑞丰还更亲近,更加可靠。”
2. 真实可信。 鲁迅《书信集·致台静农》:“最可恨地是所闻的多不可靠。” 曹禺《日出》第二幕:“你怎么知道谣言一定可靠?”

我觉得两个解释已经可以涵盖了通信的两个问题了。

  1. 真实可信

你接收的信息是否是真实的可以被信任的? 信息会被完全或近似的复现吗?-信息差错

  1. 可以信赖依靠

你的通信过程可以完全信任依赖下层的传输吗?下层会丢失你传送的信息吗?-信息丢失

可靠可以描述计算机或者其他事物,毕竟信息传递任何事物都是一样的。

问题

不可靠性的来源:信道的噪声。因为信息传递过程中总会被各种各样的噪声干扰,所以信息传递是不可靠的。

例子

现实世界

  1. 人与人的对话。

人与人讲话会听不清楚,比如:你在一个KTV包间中,你用平时的音量向另一个人讲话,另一个人可能根本听不到或清不清楚或断断续续等等各种情况。因为你的信息在信道传播时被噪声干扰导致信息由差错或信息丢失。

  1. 领导对下属安排工作。

领导对下属说明了一系列的任务列表:A、B、C、...、Z二十六个任务,下属可能只得到A、B、D、Z四个。因为领导的信息在员工这个信道中丢失。

计算机世界

  1. 手机打电话。手机打电话信息传递使用的是波,波在空中传播,传播过程中可能会被屏蔽或其他东西干扰,导致电话双方听不到信息或听到断断续续的信息。因为你的信息在信道传播时被噪声干扰导致信息由差错或信息丢失。
  2. 电脑通信

你的电脑在和其他电脑通信过程中可能由于你的网卡故障、网线松动、路由器故障、路由器丢包等等一系列原因导致信息由差错或信息丢失。

  1. 黑客攻击。

综上:信息传递主要会有信息差错和信息丢失。

解决方案

信息差错

  1. 差错检测

知道此次收到的信息是否有差错就需要一个检测手段,通过了检测就被认为信息没有差错,没有通过就被认为信息有差错。

  1. 信宿反馈

检测到了信息由差错,直接反馈这个错误给信源,由信源来根据场景解决这个差错。

  1. 重新发送信息

收到了差错反馈,信源一般会选择重新发送这个信息或者有其他解决方案。

信息丢失

  1. 信息多个副本

传送信息的时候,将一个信息发N遍(就像一句话说N遍一样)。

  1. 重传

重传需要检测是否丢失,丢失了就重新发送。

参考

  1. https://baike.baidu.com/item/%E5%8F%AF%E9%9D%A0/3444426
  2. 计算机网络-自顶向下方案(原书第七版)
目录
相关文章
|
8月前
|
Python
探索Python虚拟环境:virtualenv、venv与pipenv比较
在Python开发中,有效的环境管理至关重要。virtualenv、venv和pipenv是常用的虚拟环境管理工具。virtualenv支持Python 2.7+和3.3+,可创建独立环境;venv为Python 3.3+内置库,简单轻量但功能有限;pipenv则结合了包管理和虚拟环境管理,生成Pipfile.lock确保依赖确定性和安全性,推荐作为首选工具。
315 2
|
关系型数据库 网络安全 对象存储
Flink报错问题之Flink报错java.io.EOFException: SSL peer shut down incorrectly如何解决
Flink报错通常是指在使用Apache Flink进行实时数据处理时遇到的错误和异常情况;本合集致力于收集Flink运行中的报错信息和解决策略,以便开发者及时排查和修复问题,优化Flink作业的稳定性。
|
11月前
|
编译器 API C语言
【QT速成】半小时入门QT6之QT前置知识扫盲(一)
【QT速成】半小时入门QT6之QT前置知识扫盲(一)
804 0
|
数据采集 Web App开发 存储
Python-数据爬取(爬虫)
【7月更文挑战第24天】
209 7
|
图形学 开发者
【unity小技巧】两种办法解决FPS游戏枪或者人物穿墙穿模问题
【unity小技巧】两种办法解决FPS游戏枪或者人物穿墙穿模问题
773 0
|
SQL 数据库 数据安全/隐私保护
harbor修改密码
在Harbor `v2.9.0`中,忘记密码可使用以下方法强制重置:通过`docker exec`进入harbor-db容器,使用SQL命令`update harbor_user set salt='',password='' where user_id = 1;`清空admin密码。然后重启Harbor,系统将要求初始化新密码。注意此操作涉及数据库交互,需谨慎执行。
1237 0
|
缓存 开发框架 JavaScript
GIS 功能模块实现
GIS 功能模块实现
171 3
|
SQL 监控 druid
Druid数据库连接池的详细解析!分析说明数据库连接池Druid的参数配置和基本架构
本篇文章中介绍了数据库连接池Alibaba Druid的组成部分以及Druid的作用和基本配置。详细说明了Druid的基本架构,分别介绍了Druid中的实时节点,历史节点,查询节点,协调节点以及索引服务。通过本篇文章的学习,可以对数据库连接池Druid的参数配置和基本架构有清楚的认识。
2251 34
Druid数据库连接池的详细解析!分析说明数据库连接池Druid的参数配置和基本架构
第九层(4):STL之duque类
第九层(4):STL之duque类
第九层(4):STL之duque类