TCP学习前的准备——可靠数据传输协议
由于传输层所依赖的网络层是不可靠的,通过逐渐考虑实际情况不断引入新技术来实现可靠数据传输。
完全可信的信道
有比特差错的信道
新的协议功能:
1. 差错检测:检验和
2. 接收方反馈:序号,ACK分组
3. 重传
会产生丢包的信道
超时重传:冗余数据分组
流水线可靠数据传输
1. 增加序号范围
2. 发送方和接收方都需要缓存分组
3. 差错恢复:选择重传/回退N步
回退N步(GBN):
发送方:
- 发送发维护如图所示的结构,窗口长度的含义即为已发送未确认的最大分组数
- 上层调用:如果窗口未满,则产生分组并发送;如果窗口已满则不发送
- 收到ACK:将base置为确认号+1,即向前移动窗口,为最早的已发送未确认分组启动定时器
- 超时:定时器只为最早的已发送未确认的分组定时。超时后重发所有已发送未确认的分组,并重启定时器
接收方:
- 维护期望序号,收到则发送ACK,否则丢弃并按最近的按序接受的分组发送ACK
选择重传(SR):
发送方:
- 维护如图的序号空间
- 上层调用:如果窗口未满,则产生分组并发送;如果窗口已满则不发送
- 收到ACK:如果确认号是base,则将base前移到最小的已发送未确认分组处,并发送新的落在窗口内的序号;如果确认号落在窗口内,则将该分组标记为已确认
- 超时:每个分组有自己的定时器,超时时重发该分组
接收方:
- 维护如图的序号空间
- 接收的序号在[rcv_base,rcv_base+N-1]:发送ACK。如果没有接收过则缓存。如果是base,则将从base开始已缓存的序号连续的分组交付给上层,移动base
- 接收的序号在[rcv_base-N,rcv_base-1]:发送对应的ACK,表示已经确认过。9里之所以是rcv_base-N是因为这是发送方可能的最小的期待确认号
- 其他:忽略
TCP学习前的准备——可靠数据传输协议的更多相关文章
- 哈工大 计算机网络 实验二 可靠数据传输协议(停等协议与GBN协议)
计算机网络实验代码与文件可见github:计算机网络实验整理 实验名称 可靠数据传输协议(停等协议与GBN协议) 实验目的: 本次实验的主要目的. 理解可靠数据传输的基本原理:掌握停等协议的工作原理: ...
- 无连接运输的UDP、可靠数据传输原理、面向连接运输的TCP
由[RFC 768]定义的UDP只是做了运输协议能够做的最少工作.除了复用/分解功能极少量的差错检测外,它几乎没有对IP增加别的东西.如果应用程序开发人员选择UDP而不是TCP,则该应用程序差不多就是 ...
- TCP可靠数据传输
TCP可靠数据传输 在TCP在IP不可靠的尽力而为的服务之上,创建了一条可靠数据传输服务(reliable data transfer service).TCP提供的可靠数据传输的方法涉及到可靠数 ...
- TCP为什么是个可靠的协议
一直以来,我们都被告知TCP是可靠的.但为什么是可靠的,很多人都会说“三次握手.四次挥手”.然后我们就进入一个误区:TCP可靠是因为它在建立链路时进行了“多次”地确认.然后又有人问,“多次确认就可靠了 ...
- 【T09】要认识到TCP是一个可靠的,但不是绝对可靠的协议
1.稍微想一下就知道,TCP不是绝对可靠的协议,比如:网络断开,主机崩溃,无论TCP如何努力,都无法将数据传给对方. 2.考虑应用程序A向应用程序B发送数据的TCP流程,数据流从应用程序A通过他所在主 ...
- 高效开发之SASS篇 灵异留白事件——图片下方无故留白 你会用::before、::after吗 link 与 @import之对比 学习前端前必知的——HTTP协议详解 深入了解——CSS3新增属性 菜鸟进阶——grunt $(#form :input)与$(#form input)的区别
高效开发之SASS篇 作为通往前端大神之路的普通的一只学鸟,最近接触了一样稍微高逼格一点的神器,特与大家分享~ 他是谁? 作为前端开发人员,你肯定对css很熟悉,但是你知道css可以自定义吗?大家 ...
- TCP/IP详解学习笔记(3)IP协议ARP协议和RARP协议
把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数 ...
- TCP学习总结(一)
在学习的过程中,相信大家都有过“学了就忘“这种经历,又特别是TCP/IP知识点密集的通信协议,所以在此总结一下自己学到的皮毛,希望对自己对大家也有所帮助. 这篇博客主要讲运输层TCP和UDP的东西,I ...
- TCP学习笔记
TCP/IP 协议分层模型 TCP/IP 协议族按层次分别分为以下 4 层:应用层.传输层.网络层和数据链路层.层次化之后,每个层级只需要考虑自己的任务就可以了,不再需要弄清其他层级的功能了. TCP ...
随机推荐
- xBIM 实战02 在浏览器中加载IFC模型文件并设置特效
系列目录 [已更新最新开发文章,点击查看详细] 在模型浏览器中加载模型后,可以对模型做一些特殊操作.下图是常用的设置. 都是通过 xbim-viewer.js 中的 API 来设置以达到一定的 ...
- hexo创建的tags和categories页面为空的解决办法
title: hexo创建的tags和categories页面为空的解决办法 toc: false date: 2018-04-16 02:26:10 主题:landscape 添加type以及men ...
- Nginx域名配置文件bak
server { listen 80; server_name m.abd.com; rewrite ^(.*)$ https://$host$1 permanent; } server { list ...
- PHP SOAP 教程
一.SoapServer 服务器 1.__construct 作用:创建 SoapServer 对象 用法:__construct ( mixed wsdl [, array options] ) 参 ...
- 【Paper Reading】Improved Textured Networks: Maximizing quality and diversity in Feed-Forward Stylization and Texture Synthesis
Improved Textured Networks: Maximizing quality and diversity in Feed-Forward Stylization and Texture ...
- 单机Mongo复制集安装配置(数据库版本:4.x)
官方文档: https://docs.mongodb.com/manual/tutorial/deploy-replica-set-with-keyfile-access-control/#dep ...
- 通过唯一ID实现简单的日志跟踪实现
在实际项目中,通知我们需要记录一些日志,方便问题核查.但是日志多了就很容易混乱,请求,响应,执行中的日志无法对应,这时就需要为请求进行标记唯一ID来进行跟踪. /** * 记录请求日志 * * Cla ...
- Laravel关联模型中过滤结果为空的结果集(has和with区别)
首先看代码: $userCoupons = UserCoupons::with(['coupon' => function($query) use($groupId){ return $quer ...
- C语言实现的minixml解析库入门教程
minixml的中文说明手册:MiniXML中文文档.dochttp://wenku.baidu.com/view/25fd7d7f31b765ce050814f7.html xml源代码: < ...
- ZOJ 1825 Compound Words
Compound Words Time Limit: 5000ms Memory Limit: 32768KB This problem will be judged on ZJU. Original ...