由于TCP序列号采用的是累计确认的方式,接收方没有收到报文5,但是收到了报文6 7 8,它只能反复的给发送方说我还需要报文5,这样发送方其实是不知道报文5没有发过去,到底6 7 8有没有发过去呢?

所以发送方要么采用积极的方法,重传5 6 7 8,要么采用乐观的方法,只重传5,下面将介绍选择性确认协议将更加有效的仅仅重传丢失的报文段。

仅重传丢失段


保守乐观

• 累积确认 Sequence 序号的问题
• Client 无法告知收到了 Part4
• Server 发送窗口/Client 接收窗口停止

当server连续发送4个报文给client,而第三个报文丢失的时候,而我们的server是在第七步收到ACK,这个ACK是说第三个报文没有收到,接下来server怎么处理,这就有两种方式,第一种采用保守和乐观的方式,所谓乐观就是认为第四个帧应该是被对方收到了,seq序号是用累计确认的方式的,所以client没有办法去告诉server其实第四个帧我是收到了,server尽量乐观,所以仅仅发送第三个部分。

如果第四个报文也丢失的情况下,这里的效率就出现了问题。

重传所有段  --积极悲观


重传所有段:积极悲观  可能浪费带宽

仅重传丢失段:保守乐观 大量丢包时效率低下

第二种方式就是积极悲观的态度,比如第三个报文没有发送过去,那么就将第三个和第四个报文都重发一次,这样我们认为整个网络丢包比较严重,所以我们的态度是比较悲观的。所以积极的将所有的段都发出去,带来的问题是可能浪费带宽,因为其实第4个报文是发送给client的。

如果整个网络当中真的在大量丢包的时候我们现在重发所有的段,那么会导致效率更加的低下。

怎么解决保守乐观和积极悲观各自的问题呢?TCP引入了选择性确认。

SACK:TCP Selective Acknowledgment


option部分演示过,如果type选为4,那么表示我们将支持SACK这个功能,如果类型是5,我们后面总长度字节数就可以去携带以及收到哪些失序的报文段。

引入SACK


有了sack选择性确认技术之后,当我们server连续发送4个报文,而client先收到第四个部分,没有收到第三个报文时候,他就可以在ACK确认帧中,对于ack的number仍然说的是第三个报文我没有收到,但是加了sack说361-500,也就是第四个报文的序列号我收到了,这个时候server就可以针对性的知道第四个报文已经收到了,我们只需要发第三个报文。

所以server不用陷入选择悲观和乐观的方式。

• 选择性确认

SACK


  • Left Edge of Block
  • Right Edge of Block

在实际的抓包报文当中可以看到SACK,在option当中有left和right。

传输层 SACK与选择性重传算法相关推荐

  1. 网络协议从入门到底层原理(5)传输层(UDP、TCP - 可靠传输、流量控制、拥塞控制、建立连接、释放连接)

    传输层( Transport) 传输层( Transport) UDP 协议(数据格式.检验和) 端口(Port) TCP TCP - 数据偏移.保留 TCP - 检验和( CheckSum) TCP ...

  2. 自顶向下计算机网络 传输层

    自顶向下计算机网络学习 传输层 一.概述和传输层服务 1.1 传输层提供的服务 1.2传输层和网络层的关系 1.3 传输层协议 可靠的.保序的传输:TCP 不可靠.不保序的传输:UDP 二.多路复用与 ...

  3. 计算机网络传输层课件,计算机网络基椽第八章(传输层)(全)ppt培训课件

    计算机网络基椽第八章(传输层)(全)ppt培训课件 (25页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 第八章 传输层,传输层的地位. ...

  4. 【计算机网络】传输层 : TCP 可靠传输 ( 可靠传输机制 | 快速重传机制 )

    文章目录 一.TCP 可靠传输 二.TCP 可靠传输机制 三.TCP 快速重传 机制 一.TCP 可靠传输 可靠性 : 保证 接收方进程 从 TCP 缓冲区 中读取的数据 与 发送方进程 发送的数据 ...

  5. 5.3.3 计算机网络传输层之TCP拥塞控制(慢开始与拥塞避免、快重传和快恢复)

    文章目录 1.什么是拥塞控制? 2.拥塞控制与流量控制的区别 3.拥塞控制的4种算法 (1)慢开始与拥塞避免 (2)快重传和快恢复 1.什么是拥塞控制? 所谓拥塞控制,是指防止过多的数据注入网络,保证 ...

  6. Linux_网络_传输层协议 TCP通信滑动窗口(快重传),流量控制,拥塞控制(慢启动),延迟应答,捎带应答,TCP常见问题(字节流,粘包),Listen半连接队列

    紧跟Linux_网络_传输层协议 TCP/UDP继续补充 文章目录 1. TCP通信时滑动窗口(效率) 2. 流量控制(可靠性) 3. 拥塞控制(慢启动) 4. 延迟应答 5. 捎带应答(提高通信效率 ...

  7. 【计算机网络】传输层 : TCP 拥塞控制 ( 慢开始 | 拥塞避免 | 快重传 | 快恢复 )

    文章目录 一.TCP 拥塞控制 二.TCP 拥塞控制算法 三.慢开始 和 拥塞避免 算法 四.快重传 和 快回复 算法 一.TCP 拥塞控制 TCP 拥塞控制 : ① 拥塞出现表现 : 资源需求总和 ...

  8. 网络原理 --- 传输层Ⅱ TCP协议中的确认应答,超时重传和连接管理

    文章目录 网络原理 传输层 TCP 协议 TCP的基本特性 1.确认应答 2.超时重传 3.连接管理 ❗❗①建立连接(三次握手) ②断开连接(四次挥手) 总结 网络原理 介绍TCP/IP协议中每一层里 ...

  9. java实现ip首部校验和算法,理解传输层中UDP协议首部校验和以及校验和计算方法的Java实现...

    UDP,全称User Datagram Protocol,用户数据报协议,是TCP/IP四层参考模型中传输层的一种面向报文的.无连接的.不能保证可靠的.无拥塞控制的协议.UDP协议因为传输效率高,常用 ...

最新文章

  1. 确认过眼神,这就是你要的路由库
  2. IntelliJ IDEA自动导入包去除星号(import xxx.*)
  3. 一步一步学Ruby(九):Ruby正则表达式(上)
  4. python语法怎么读-python语法技巧
  5. mysql连接报错:The server time zone value ‘Öйú±ê׼ʱ¼ä‘ is unrecognized or represents more than one time
  6. java stdout库_Java重写StdOut并将日语写入文件
  7. docker server 容器连接sql_Docker 容器的网络连接
  8. 如何跨服务器访问html 页面,html页面如何跨域访问另一页面内容,并将部分内容呈现出来?...
  9. linux运行出现断错误,在linux下代码运行出现段错误,求大神
  10. Java BIO 聊天程序
  11. Android学习系列(一)初识安卓
  12. 14.mac apche
  13. mouseenter 事件
  14. 中信银行c语言笔试题库,中信银行笔试IT类复习题参考资料带答案解析.doc
  15. 固态硬盘测试软件有哪些,常用的固态硬盘测试软件有哪几种
  16. 麦田守望者--走出软件作坊:三五个人十来条枪 如何成为开发正规军(四十三)
  17. cpu、socket、core、thread 等术语之间的关系
  18. 滴水三期:day16.2-结构体数组赋值
  19. android jnl的mk文件,动态语言与静态语言
  20. 7kbscan御剑版下载及使用

热门文章

  1. html 漂浮浏览器,HTML5浏览器嵌入窗口程序解决方案 | Hoverlees#39; Blog
  2. 数据库数据导入word文档
  3. Problem E: 薪酬计算
  4. 【一】综合架构(web网站架构)
  5. 鼓励自己最有效的10个方法
  6. 什么是蜘蛛统计 有什么作用?
  7. 改善内部客户服务的 3 个技巧
  8. 偏移变色lisp_直线偏移联动 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...
  9. Box3 代码教程 (一)
  10. 小程序实现正计时和倒计时