由于个人精力和智商有限,又喜欢想太多、钻牛角尖,导致学习系统性知识很痛苦,尝试改变学习方式,慢慢摸索
现在看到 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. php中代码执行&&命令执行函数

    转自i春秋 1.eval()函数 #传入的参数必须为PHP代码,既需要以分号结尾. #命令執行:cmd=system(whoami); #菜刀连接密码:cmd <?php @eval($_POS ...

  2. msf后门之persistence

    在获取得了meterpreter shell后 使用Persistence建立持续性后门 run persistence -h meterpreter > run persistence -h ...

  3. [UWP]使用CompositionLinearGradientBrush实现渐变画笔并制作动画

    1. 什么是 CompositionBrush CompositionBrush(合成画笔)是操作可视化层时用于绘制 SpriteVisual 区域的画笔. 使UWP 应用时可以选择使用 XAML 画 ...

  4. 使用Jersey构建图片服务器

    使用Jersey构建图片服务器 前台页面代码 <form id="jvForm" action="add.do" method="post&qu ...

  5. Leetcode(7)整数反转

    Leetcode(6)Z字形变换 [题目表述]: 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 第一次:转字符串处理 执行用时:40 ms: 内存消耗:11.6MB 效果: ...

  6. Java学习笔记五--String(二)String其他方法

    第一节课 // 清除单位字符串开始和结尾空白的副本 String.trim(); 字符串每次更改都会创建新的对象,而不会覆盖原来的字符串,每次拼接都会产生新的String对象,耗时耗内存. java. ...

  7. The usage of Markdown---引用

    目录 1. 序言 2. 引用与嵌套引用 3. 列表中的引用 更新时间:209.09.14 1. 序言   在本篇,我们来仔细谈一下Markdown的引用. 2. 引用与嵌套引用   在Markdown ...

  8. Java基础(二十九)Java IO(6)对象序列化(Object Serialization)

    参考之前整理过的Java序列化与反序列化:https://www.cnblogs.com/BigJunOba/p/9127414.html 使用对象输入输出流可以实现对象序列化与反序列化,可以直接存取 ...

  9. django-Views之类视图 (六)

    book/urls.py from django.urls import path from . import views urlpatterns = [ path('',views.IndexVie ...

  10. p6spy打印SQL

    一 Springboot项目 <dependency> <groupId>p6spy</groupId> <artifactId>p6spy</a ...