由于个人精力和智商有限,又喜欢想太多、钻牛角尖,导致学习系统性知识很痛苦,尝试改变学习方式,慢慢摸索
现在看到 rdt2.0,又有点看不下去
现在的想法:
要有个目标,且有截止时间(作业模式、考试模式),在过程中,如果遇到对整体没有致命影响的难点,可以暂时跳过,在特定时间内把目标内的其他地方解决即可(即先解决简单的其他部分,在考虑进攻难点,这样的话,前期心态不会太焦灼,而且等回过头进攻难点的时候,有一种从四面八方将难点包围的感觉)
 
写博客也换个思路:
边写博客,边摸索写博客的方式,而且可以把摸索过程也记在博客里
 
 
记录一下本章的说明问题的思路,值得学习
大思路:
由于一个能提供可靠数据传输和拥塞控制的协议必定是复杂的,采用基本原理与 TCP 交替介绍方式(从一般走向具体)
在一般环境下讨论可靠数据传输,然后讨论 TCP 是怎样具体提供可靠数据传输的
在一般环境下讨论拥塞控制,然后讨论 TCP 是怎样实现拥塞控制的
小思路:
在讨论可靠数据传输原理的时候,将底层信道从理想状况逐步向现实情况靠拢,进而逐步引出相关概念
从简单模型到复杂模型,一点点把复杂的事情说清楚
 
 
本章整体情况
 
理想情况到现实情况分别是:
理想:底层信道完全可靠(比特不受损,分组不丢失,比特不会被重排序)
现实一:底层信道会让比特受损(比特受损,分组不丢失,比特不会被重排序)
现实二:底层信道会丢包(比特受损,分组丢失,比特不会被重排序)
注意,本章贯穿始终的一个假设是分组将以它们发送的次序进行交付,某些分组可能会丢失,即底层信道不会对分组重排序
 
理想情况:发送发和接收方只需做简单的发送和接收操作就行了(对应协议:rdt1.0)
现实一需要的技术:检验和、肯定和否定确定、重传、序号、ACK 分组(对应协议:rdt2.0)
现实二需要的技术:检验和、肯定和否定确定、重传、序号、ACK 分组、定时器(对应协议:rdt3.0)
 
由 rdt3.0 的缺点(停等协议,链路利用率低),引入流水线可靠数据传输协议
为了保证是流水线可靠数据传输协议的有效性(主要是为实现其差错回复功能),引入回退 N 步的的方法
而回退 N 步的方法,可能会导致一些性能问题(一个出错,之前的全部需要重传,如果失败率较高,则可能导致信道中充斥着冗余的分组),于是引入了选择重传的方法
 
 
有一点值得注意的是
我们一般写程序都不用考虑这么多,是因为我们选择了 TCP 协议,虽然 IP 层(即网络层)及以下是不可靠的,但是运输层的 TCP 帮助我们解决了这些不可靠,使我们可以专注于开发应用程序,而不用担心数据是否会按照预想、没有误差到达目的地
 
 
以下是对我来说有用的零散知识点:
 
最简运输层功能:
进程到进程的数据交付、差错检查
附加功能:
可靠数据传输、拥塞控制
 
运输层协议只运行在端系统,而不是路由器中,运输层协议将报文在应用进程和网络边缘(即网络层)之间移动(在发送方,移动方向是 应用进程→网络边缘;在接收方,则反过来)
 
网络层为主机之间提供通信,运输层为不同主机上的进程之间提供通信
 
多路复用与多路分解
 
看微信“文件传输助手”中的聊天记录
 
IP 层是不可靠的

把这次看不懂的地方记录一下:

对于协议 rdt2.1,有个问题想不明白:

接收方成功接受了分组 0,向发送方反馈了一个 ACK,而由于比特受损,发送方收到了一个含糊不清的回复,于是发送方重传了分组 0,而此时接收方已经在等待分组 1 到的了,这样的话,当接收方在此接收到分组 0 的时候(与预期的分组 1 不符),会给发送发返回一个 NAK,发送发以为重传分组 0 失败,继续重传分组 0,而接收方此时预期接收的还是分组 1,于是造成了一个死循环

这种情况会发生吗?是不是我没有完全看懂协议 rdt2.1?

《计算机网络 自顶向下方法》 第3章 运输层 Part1的更多相关文章

  1. 计算机网络自顶向下方法第2章-应用层(application-layer).1

    2.1 应用层协议原理 2.1.1网络应用程序体系结构 1)在客户-服务器体系结构 (client-server architecture)中,有一个总是打开的主机称为服务器,它服务于来自许多其他称为 ...

  2. 计算机网络自顶向下方法第3章-传输层 (Transport Layer).1

    3.1 概述和运输层服务 运输层协议为运行在不同主机上的应用进程之间提供了逻辑通信(logic communication)功能. 3.1.1 运输层和网络层的关系 网络层提供了主机之间的逻辑通信,而 ...

  3. 计算机网络自顶向下方法第4章 网络层:数据平面 (Network layer)

    4.1 网络层概述  网络层主要功能为转发(将数据从路由器输入接口转移到合适的输出接口)和路由选择(端到端的路径选择),每台路由器都有一张转发表,用最长前缀匹配规则来转发. 4.1.1 转发和路由选择 ...

  4. 计算机网络自顶向下方法第2章-应用层(application-layer).2

    2.4 DNS:因特网的目录服务 2.4.1 DNS提供的服务 DNS的定义 实体层面看,DNS是一个由分层的DNS服务器实现的分布式数据库 协议层面看,DNS是一个使得主机能够查询分布式数据库的应用 ...

  5. 计算机网络自顶向下方法第3章-传输层 (Transport Layer).2

    3.5 面向连接的运输: TCP 3.5.1 TCP连接 TCP是因特网运输层的面向连接的可靠的运输协议. TCP连接提供全双工服务(full-duplex service). TCP连接是点对点的连 ...

  6. 《计算机网络 自顶向下方法》 第2章 应用层 Part1

    常见的应用层协议有哪些?  HTTP(HyperText Transfer  Protocol):超文本传输协议 FTP(File Transfer Protocol):文件传输协议 SMTP(Sim ...

  7. 《计算机网络 自顶向下方法》 第3章 运输层 Part2

    待补充完善 TCP 相关基本点 1.面向连接 两个不同主机上的进程在通过 TCP 进行通信之前,必须先通过三次握手来建立 TCP 连接 2.全双工服务 即,如果一台主机上的进程 A 与另一台主机上的进 ...

  8. 《计算机网络 自顶向下方法》 第8章 计算机网络中的安全 Part2

    SSL(使 TCP 连接安全) SSL(Secure Socket Layer),即安全套接字层,是对 TCP 的强化 HTTPS 使用 SSL,而 HTTP 不使用 SSL 通过采用机密性.数据完整 ...

  9. 《计算机网络 自顶向下方法》 第6章 链路层和局域网 Part2

    待补充完善 Web 页面的请求历程 应用层     报文.主机 运输层     报文段. 网络层     数据报.路由器.IP 地址 链路层     以太网帧.交换机.MAC 地址 步骤 1)到 4) ...

随机推荐

  1. 浅谈celery的坑

    celery celery的使用以及在Django中的配置,不详细介绍,主要记录在Django中使用的坑点. 坑点 时区问题 celery默认的时区是世界标准时间,比东八区慢了8个小时,如果发布定时任 ...

  2. Python_散点图与折线图绘制

    在数据分析的过程中,经常需要将数据可视化,目前常使用的:散点图  折线图 需要import的外部包  一个是绘图 一个是字体导入 import matplotlib.pyplot as plt fro ...

  3. POWERUP攻击渗透实战2

    准备环境: kali linux 攻击机 已获得靶机meterpreter(非管理)权限 win7 靶机  拥有powershell环境 运用到的模块:Get-RegistryAlwaysInstal ...

  4. [BZOJ3550] [Sdoi2014]数数

    Description 我们称一个正整数N是幸运数,当且仅当它的十进制表示中不包含数字串集合S中任意一个元素作为其子串.例如当S=(22,333,0233)时,233是幸运数,2333.20233.3 ...

  5. C#基础操作符详解(上)

    本节内容: 1.操作符概览: 2.操作符的本质: 3.操作符与运算顺序 4.操作符详解. 1.操作符概览: 操作符(Operator)也译为”运算符” 操作符是用来操作数据的,被操作符操作的数据称为操 ...

  6. 疯狂Java:突破程序员基本功的16课-李刚编著 学习笔记(未完待续)

    突破程序员基本功(16课) 数组 静态语言: 在编译的时候就能确定数据类型的语言,大多静态语言要求在使用变量之前必须声明数据类型(少数具有强推导能力的现代语言不用) 动态语言: 在程序运行时确定数据类 ...

  7. Veins(车载通信仿真框架)入门教程(三)——多跳路由实现指导

    Veins(车载通信仿真框架)入门教程(三)——多跳路由实现指导 Veins(车载通信仿真框架)入门教程(三)——多跳路由实现指导 必要的message类实现 从下面开始是在veins/src/vei ...

  8. MySQL开发篇(4)表类型(存储引擎)的选择

    一.查看支持的存储引擎以及设置修改存储引擎 1.查看默认存储引擎:show variables like '%storage_engine%'; 2.查看当前数据库支持的存储引擎:show ENGIN ...

  9. unity text实现鼠标光标

    由于项目需求,需要在text上实现鼠标的cursor,并且随着点击位置cursor移动.实现方法: 1)新建一个光标的prefab(简单为之,直接在image中添加一个竖线spirte),增加脚本控制 ...

  10. hystrix原理

    一.hystrix 产生背景 微服务是解决复杂服务的一个方案,在功能不变的情况下,对一个复杂的单体服务分解为多个可管理的分支.每个服务作为轻量的子服务,通过RPC实现服务间的关联,将服务简单化.每个服 ...