计算机网络之传输层

UDP

特点:无连接

用于:流媒体、DNS、SNMP

 

rdt

rdt1.0

特点

  • 下层的信道是完全可靠的

    • 没有比特出错

    • 没有分组丢失

rdt2.0

特点

  • 下层信道可能会出错:将分组中的比特翻转

    • 用校验和来检测比特差错

恢复方法

  • 确认 (ACK) :接收方显式地告诉发送方分组已被正确接收

  • 否定确认 ( NAK): 接收方显式地告诉发送方分组发生了差错

    • 发送方收到 NAK 后,发送方重传分组

缺陷

  • 不能解决ACK、NAK出错的情况

rdt2.1

特点

  • 引入序号(0和1)机制

    • 发送方在每个分组中加入序号,如果 ACK/NAK 出错,发送方重传当前分组,接收方丢弃(不发给上 层)重复分组

发送方:

  • 在分组中加入序列号

  • 一次只发送一个未经确认的分组

rdt2.2

特点:

  • 无NAK

  • 接收方对最后正确接收的分组发 ACK ,以替代 NAK

    • 接收方必须显式地包含被正确接收分组的序号

  • 当收到重复的 ACK (如:再次收到 ack0 )时,发送方与收到 NAK 采取相同的动作:重传当前分组

rdt3.0

特点:

  • 具有比特差错和分组丢失的信道

下层信道可能会丢失分组(数据或 ACK )

解决方法:

  • 发送方等待 ACK 一段合理的时间

  • 发送端超时重传:如果到时没有收到 ACK-> 重传

  • 问题:如果分组(或 ACK )只是被延迟了:

    • 重传将会导致数据重复,但利用序列号已经可以处理这个问题

    • 接收方必须指明被正确接收的序列号

  • 需要一个倒计数定时器

滑动窗口协议

GBN协议

在这里插入图片描述

 

特点

  • 超时重传

  • 累计确认

    • 分组1接收之后,分组2丢失,分组3发送之后服务器返回ack1,表示1以及1之前的分组已经成功接收,要求客户端发送分组2。当分组2成功发送并成功接收之后,客户端再重新发送发送分组3

    • 客户端收到ack1,ack3,ack8表示8以及8之前的分组(0~8)成功被接收。

解析:由于收到了3号帧的确认,也就是ACK 3,那么由累计确认机制可知:0、1、2、3号帧都成功传送。因此,只有4、5、6、7号帧需要重发。所以选C.4。

SR协议

 

特点

  • 具有缓存机制

    • 失序的分组将会被缓存,当丢失的分组被重发且成功接收后,无需重发失序的分组,即可直接进行窗口滑动。

对比

GBNSR
优点简单,所需资源少(接收方一个缓存单元)出错时,重传一个代价小
缺点一旦出错,回退 N 步代价大复杂,所需要资源多(接收方多个缓存单元)

TCP(传输控制协议)

特点

  • 点对点:一个接收方和一个发送方

  • 可靠的、面向字节流的协议

  • 全双工连接

  • 可靠性

    • 拥塞控制

    • 流量控制

    • 确认号

    • 序列号

    • 超时重传

    • 校验和

TCP报文段

 

三次握手

在这里插入图片描述

 

 

  • 为什么不用两次握手?

    主要是为了防止已经失效的连接请求报文突然又传送到了服务器,从而产生错误。如果使用的是两次握手建立连接,客户端发送的第一个请求连接并且没有丢失,只是因为在网络中滞留的时间太长了,由于TCP的客户端迟迟没有收到确认报文,以为服务器没有收到,此时重新向服务器发送这条报文,此后客户端和服务器经过两次握手完成连接,传输数据,然后关闭连接。此时之前滞留的那一次请求连接,因为网络通畅了, 到达了服务器,这个报文本该是失效的,但是,两次握手的机制将会让客户端和服务器再次建立连接,这将导致不必要的错误和资源浪费

四次挥手

 

 

  • 为什么最后客户端还要等待 2*MSL的时间呢?

    保证客户端发送的最后一个ACK报文能够到达服务器,因为这个ACK报文可能丢失,站在服务器的角度看来,我已经发送了FIN+ACK报文请求断开了,客户端还没有给我回应,应该是我发送的请求断开报文它没有收到,于是服务器又会重新发送一次,而客户端就能在这个2MSL时间段内收到这个重传的报文,接着给出回应报文,并且会重启2MSL计时器。

拥塞控制

拥塞控制四种算法

  • 慢开始

  • 拥塞避免

  • 快重传

  • 快恢复

慢开始

假设当前发送方拥塞窗口cwnd的值为1,而发送窗口swnd等于拥塞窗口cwnd,因此发送方当前只能发送一个数据报文段(拥塞窗口cwnd的值是几,就能发送几个数据报文段),接收方收到该数据报文段后,给发送方回复一个确认报文段,发送方收到该确认报文后,将拥塞窗口的值变为原来窗口的2倍

拥塞避免

当cwnd>ssthresh 时,采用拥塞避免算法,每次收到ack后将发送窗口增加1,直到发生丢包。此时更新ssthresh=ssthresh/2,cwnd=1,重新采用慢开始算法,直到cwnd>ssthresh时继续采用拥塞避免算法

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值