计算机网络3-可靠传输


title: 计算机网络3 - 可靠传输
mathjax: true
date: 2020-03-19 13:33:04
categories: [计算机网络]
tags: [计算机网络]
keywords: [计算机网络]


UDP

   不可靠传输,Voice-over-IP、DNS、RPC、DHCP???

UDP头

   16位源端口,16位目标端口,16位UDP长度,16位checksum

UDP问题

   长度受限制了,我们要将大文件分割成小文件,哪一层来负责?为什么要分为小块?更可靠,但是可能导致后发送的先到达。

不可靠传输的包的问题

  • 丢失
  • 损坏
  • 乱序到达
  • 延时到达
  • 重复包

什么叫可靠?

  • 正确、及时、高效、公正

正确

   不丢失、不损坏、不乱序

丢失

包丢失解决方案1

  • 频繁而快速地发送单个包
       正确,但效率差,缺乏接收端的反馈,不知道何时停止。

反馈

   ACK:收到包了,
   NACK: 没有收到包(你确定?别人给你发包了吗?) —> 当损坏的时候使用

包丢失解决方案2

   收到ACK以前,一直重复发包,好吗? 优化了时间效率,但浪费了带宽。特别是长延时网络。

包丢失解决方案3

   发送包以后设置时钟,在这段时间内收到ACK则结束,否则重发,但是时间设置为多少????

多个包的问题

   单包方案在局域网不会出现问题,因为距离近,但是在更大的网络呢?效率非常差,带宽利用率过低。

多包的解决方案

   使用流水线+滑动窗口,用窗口大小控制链路上包的数量
   窗口的目的 限制带宽、限制接收端的缓冲区数量
   为什么要限制带宽? 用来拥塞控制

多包的反馈

   累加ACK,ACK的时候回馈未收到的包的最小序号
   完全ACK,回馈所有未收到的包序号,这个不常用,可能会与累加ACK一起使用

如何检测丢包

   累加ACK多次返回同一个值的时候,那个包就丢包了,

如何响应丢包

   检测到5号包丢失的时候,包5肯定要重发,包6呢?

GO-BACK-N算法

   当检测到5号包丢失的时候,把窗口滑向5,然后重新发送窗口中所有的包。

GO-BACK-N缺点

  • 丢失
  • 顺坏
  • 重排
  • 延时
  • 重复

完全应答ACK

   基于窗口,在超时或者多次ACK用一个值后重发。

公正

   基于窗口的AIMD,发现丢包以后滑动窗口减半,成功收到ACK后窗口增大1

猜你喜欢

转载自blog.csdn.net/qq_41157212/article/details/105088562