北邮《计算机网络》蒋老师思考题及答案-传输层

蒋yj老师yyds!
答案自制,仅供参考,欢迎质疑讨论

问题一览

      • 传输层思考题
          • P2P和E2E的区别
          • 使用socket的c/s模式通信,流控如何反映到编程模型
          • 三次握手解决什么问题
          • 举一个两次握手失败的例子
          • 为什么链路层是两次握手而非三次?
          • 两军问题在TCP实践中怎么解决
          • 传输层怎么处理流控
          • 传输层拥塞控制算法的四个基本目标的含义
          • AIMD解决什么问题
          • TCP中如何调节某个TCP连接的发送速率并体现AIMD思想
          • 了解TCP拥塞控制算法的区别
          • TCP Tahoe和TCP Reno的区别
          • TCP选项NACK和SACK是如何提高效率的
          • 链路层丢包率10%会对TCP有什么影响
          • 现代互联网TCP可以做到效率接近90%吗
          • 两台主机间所有连接线路的链路层误码率均为0%,TCP就不会出现重传了吗
          • 理解TCP报头各个字段的用途
          • TCP报头Window最大取值65535,是不是意味着接收窗口最大只能说65535字节
          • Nagle解决了什么问题?优缺点
          • Clark解决了什么问题
          • TCP超时定时器是如何动态确定的
          • 当接收方缓冲区满,TCP通过什么机制通知发方别发了

传输层思考题

在这里插入图片描述

P2P和E2E的区别
  • 相邻 or 有子网
使用socket的c/s模式通信,流控如何反映到编程模型
  • 编程时cs双方自己定义了buffer
三次握手解决什么问题
  • 子网丢/重/乱的问题
举一个两次握手失败的例子
  • 链路上突然出现A对B握手的一个Seg(之前遗留的),B回复A,此时B已经建立连接,而A对此事毫不知情,这就产生了一个half-open的连接
为什么链路层是两次握手而非三次?
  • 因为链路层是p2p的,不会重复和乱序
两军问题在TCP实践中怎么解决
  • 对于先断开的一方,收到对方的FIN后发送ACK并等待一个TIME WAIT,在这个时间之内,如果对方继续发来FIN,那么继续回ACK。超时则关闭。对于后断开的一方,如果没收到ACK,就一直发送。
  • 如果产生了半开,那么经过一个固定时长自动关闭。
传输层怎么处理流控
  • AIMD
传输层拥塞控制算法的四个基本目标的含义
  • 预防
  • 高效
  • 公平
  • 收敛
AIMD解决什么问题
  • 快速找到公平点
TCP中如何调节某个TCP连接的发送速率并体现AIMD思想
  • 慢启动算法

了解TCP拥塞控制算法的区别
  • ACK Clock 确认时钟:通过使用一个确认时钟, TCP平滑输出流量和避免不必要的路由器队列。
  • Slow Start 慢启动:每个RTT内发送的数据包数目指数增长,使用确认时钟将发送端的传输速率与网络路径相匹配
  • Add Increase:当slow start后超过了slow start threshold, TCP 就从慢速启动切换到线性增加,每个RTT内,收一ACK发出一包,最后一个ACK连发两包。
  • Muilt Decrease: 当收到三个重复ACK后,cwin减半(快恢复)
  • Fast retransmission:当收到三个重复ACK后,门限减半,慢启动
  • Fast recovery:门限减半,cwin减半(具体做法:确认时钟)
TCP Tahoe和TCP Reno的区别
  • Tahoe用的fast retransmission

  • Reno用的fast recovery

TCP选项NACK和SACK是如何提高效率的
  • SACK (Selective ACKnowledgement) 选择确认:该确认列出了3个己接收的字节范围。有了这个信息,发送端在实现拥塞窗口时可以更直接地确定哪些数据包需要重传,并跟踪那些还在途中的数据包。
  • NACK ``:
链路层丢包率10%会对TCP有什么影响
  • TCP会认为子网拥塞,从而把发送速度降到很慢
现代互联网TCP可以做到效率接近90%吗
  • 能,《计算机网络(第5版)》 Tanenbaum & Wetherall 著 严伟 潘爱民 译 Page 456
    在这里插入图片描述
两台主机间所有连接线路的链路层误码率均为0%,TCP就不会出现重传了吗
  • 路由器可能发生拥塞,也有可能选择不合适的路由,导致超时
理解TCP报头各个字段的用途

在这里插入图片描述

  • 实验二中做了分析,此处略
TCP报头Window最大取值65535,是不是意味着接收窗口最大只能说65535字节
  • 不是,选项( Options )字段提供了一些可选项。P431
    在这里插入图片描述

在这里插入图片描述

Nagle解决了什么问题?优缺点
  • 用粘包的方式避免T层每次只传很少的字节导致各层开销占比很大
  • 优点:
  • 减小开销占比
  • 实现了self-clocking: ACK返回的越快,数据传输地也就越快
  • 使得单位时间内发送的报文段的数目更少
  • 缺点:某些消息不及时传送,对于应用层来说,响应变慢
Clark解决了什么问题
  • 愚蠢窗口(Silly Window Syndrome)
TCP超时定时器是如何动态确定的
  • 注意是超时定时器

  • 几个公式,由Jacobson贡献,第三个式子的系数4是 J 大佬认定的,没有为什么

  • S R T T = α S R T T 旧 + ( 1 − α ) R T T 本次 SRTT = \alpha SRTT_旧 + (1-\alpha) RTT_{本次} SRTT=αSRTT+(1α)RTT本次

  • R T T V A R = β R T T V A R 旧 + ( 1 − β ) ∣ S R T T − R T T 本次 ∣ RTTVAR = \beta RTTVAR_旧 + (1-\beta)|SRTT-RTT_{本次}| RTTVAR=βRTTVAR+(1β)SRTTRTT本次

  • R T O = S R T T + 4 × R T T V A R RTO = SRTT + 4 × RTTVAR RTO=SRTT+4×RTTVAR

当接收方缓冲区满,TCP通过什么机制通知发方别发了
  • 捎带window size

如果随后收方缓冲区空闲,收方如何通知

  • 窗口更新段
  • 窗口更新报文段是一个不包含数据的纯ACK(只有ACK标志位被置位), 用于通告发送端可以继续发送数据,纯ACK不会被重传, TCP必须采取相应措施来处理这些丢包

如果这个通知丢失,会导致发方长久等待吗

  • TCP对此主要有两个设计来避免死锁:

  • 发送端可以发送1字节的段,以便强制接收端重新宣告下一个期望的字节和窗口大小。这种

    数据包称为窗口探测(window probe )。

  • 持续计时器(persistence timer )的设计。当持续计时器超时后,发送端给接收端发送一个探询消息。接收端对探询消息的响应是将窗口大小告诉发送端。如果它仍然为0 ,则重置持续计时器,并开始下一轮循环。如果它非0 ,则现在可以发送数据了。

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

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

相关文章

在整合spring boot+layui中解决Could not parse as expression: “的问题

首先查看报错信息,这里提示我们78行有问题 这里是[[]] 这个内联表达式出了问题,在当前所在的script标签中加入th:inlinenone,然后重启项目,成功解决!

2>/dev/null 怎么理解

2>/dev/null 是一个重定向操作符,用于将命令执行过程中产生的错误输出(标准错误流)重定向到 /dev/null,从而忽略这些错误信息。 具体来说,Linux 系统中的文件描述符有以下几种: 0:标准输入…

RabbitMQ使用交换机进行消息转发

使用交换机进行转发到队列 第一步:创建队列 第二步:创建交换机 第三步:交换机绑定队列 第四步:修改消息生产者发送业务 第五步:修改消息接收者业务代码 RabbitListener(queues "fanout.queue1")public vo…

人工智能与大数据:新时代的技术融合与未来展望

引言 在信息化和数字化迅猛发展的今天,人工智能(AI)和大数据(Big Data)已成为推动社会变革和技术进步的两大支柱。随着互联网的普及、计算能力的提升以及数据获取手段的多样化,AI和大数据技术的应用愈发广泛…

守护公共安全,从可燃气体报警器检验周期开始:国家法规的解读

在现代社会,安全始终是首要考虑的问题。随着工业化、城市化的快速发展,各种潜在的安全隐患也逐渐浮现,尤其是可燃气体泄漏所带来的火灾和爆炸风险。 为了确保公众和企业的生命财产安全,可燃气体报警器作为一种重要的安全监测设备…

达梦(DM8)数据库备份与还原(逻辑备份)二

一、达梦数据库的逻辑备份分四种级别的导出(dexp)与导入(dimp)的备份 第一种是:数据库级:导出或导入数据库中所有的对象。主要参数是:FULL 第二种是:用户级别:导出或导…

软件工程——保护手段

软件工程——保护手段 1 容灾 容灾保护,也称为容灾(Disaster Tolerance),是指在自然灾害、设备故障、人为操作破坏等灾难发生时,通过一系列技术手段和策略,保证生产系统的数据尽量少丢失,同时…

中霖教育怎么样?中霖教育好吗?

中霖教育怎么样?中霖教育好吗? 中霖教育包括师资力量、课程设置、教学方法等都是经过不断完善来制定的,我们拥有专业且经验丰富的师资队伍,在教学过程中更注重个性化教学方式,针对每个学员的需求和学习情况制定专属的学习计划。 无论是在…

MySQL角色使用详解

在MySQL数据库管理系统中,角色是一种命名的权限集合,类似于用户账户,可以向其授予或撤销权限。通过将权限集以角色的形式分配给用户账户,MySQL提供了一种概念化和实现所需权限分配的便捷方式,替代了单独授予每个权限的…

QFile文件操作详解

QFile文件操作 一、QFile的基本操作2.1. 打开和关闭文件2.2. 文件读取和写入2.3. 文件重命名和移动2.4. 删除文件 二、QFile 错误处理和状态检查三、QIODevice详细说明总结 在Qt框架中,QFile类提供了对文件的操作,包括读取、写入、重命名、移动和删除等功…

掌握 PostgreSQL 的 LISTEN 和 NOTIFY 机制:实时数据库通知的艺术

掌握 PostgreSQL 的 LISTEN 和 NOTIFY 机制:实时数据库通知的艺术 引言 在现代应用架构中,数据库扮演着核心角色,而 PostgreSQL 以其强大的功能和灵活性成为开发者的首选。PostgreSQL 的 LISTEN 和 NOTIFY 机制为开发者提供了一种在数据库层…

AI绘画Stable Diffusion - 功能性LoRA推荐!年龄调整、衣服增减、人物距离调整一键搞定!

大家好,我是画画的小强 AI绘画工具 **Stable Diffusion(SD)**以其强大的图片生成能力被越来越多的爱好者使用,而LoRA技术,作为SD中的一个关键组件,为创作者提供了更多的灵活性和控制力。今天,我…

C#面:详细举例阐述什么是多态性?

多态性是面向对象编程中的一个重要概念,它允许一个对象可以以多种不同的方式工作。在C#中,多态性通过虚函数来实现。 举个例子来说明多态性的概念。假设我们有一个基类Animal,它有一个虚方法MakeSound(),并…

pandas将dataframe展开/拉伸成一个series

pandas提供了一个函数实现这个操作: dataframe.stack()示例程序: import pandas as pd import numpy as npdf pd.DataFrame(np.random.randint(0, 10, size(2, 4)), columns[col_1, "col_2", "col_3", "col_4"]) # 展…

Arduino 红外线控制器

Arduino 红外线控制器 红外线小车 You’ve likely encountered the infrared remote controller, also known as the IR remote controller, while using home electronic devices like TVs and air conditioners… In this tutorial, we are going to learn how to use infra…

Jedis基本操作

Jedis库提供了对Redis数据库的丰富操作,包括但不限于基本的CRUD操作、事务、管道、发布订阅、哈希、列表、集合、有序集合操作等。由于篇幅限制,我将介绍一些最常用的方法,并为每个方法提供示例说明。 Jedis连接和基础操作 连接Redis Jedi…

【机器学习】基于Gumbel-Sinkhorn网络的“潜在排列问题”求解

1. 引言 1.1.“潜在排列”问题 本文将深入探索一种特殊的神经网络方法,该方法在处理离散对象时展现出卓越的能力,尤其是针对潜在排列问题的解决方案。在现代机器学习和深度学习的领域中,处理离散数据一直是一个挑战,因为传统的神经网络架构通常是为连续数据设计的。然而,…

scroll-view标签里引入弹窗层级问题

小程序scroll-view标签里引入弹窗(model)层级问题 在使用scroll-view组件时,在其内部嵌套了一个弹窗(如modal),但是弹窗无法正确显示在最上层。这是因为scroll-view默认的层级(z-index&#xf…

自然语言处理(NLP)—— Rasa中config.yml

调整你的NLU模型:选择合适的处理管道 在启动一个新的项目时,Rasa 会为你提供一个建议的自然语言理解(NLU)配置。然而,随着项目的不断发展,你可能需要对配置进行调整,以更好地适应不断扩展的训练…

使用JAVA代码实现发送订阅消息以及模板消息

今天写了一个商品到货提醒的job任务,具体效果如下 这里用到了微信的发送订阅消息,主要代码是这一块的,最后我把发送了消息的订单存到表里,因为是定时任务,大家可不存 发送订阅消息 | 微信开放文档 /*** 微信平台-商品…