TCP传输的特点和原理是什么,有哪些要点
Admin 2022-06-09 群英技术资讯 615 次浏览
注意,TCP并不使用停止等待协议来实现可靠传输。
停止等待协议
传输层的数据传输单元称为段。下面,为了方便,都称为分组。
停止等待协议的原理非常简单,发送一个分组后就停止继续发送,等待收到上一个分组的确认后,再继续发送后面的分组。
下面通过几个不同情况来分析:
无差错情况
无差错情况非常简单,如下图。每发送完一个分组后,就停止发送,等待收到该分组的确认后,再继续发送后面的分组。
出现差错
出现差错分两种情况,第一种是发送的分组没有交付成功到目的地址,另一种情况是传送的数据包有差错。通过图例,我们来分析两种情况
首先来看看B的操作:A发送M1分组,该分组如果是错误的,B收到后会丢弃该数分组,然后什么也不做(不会通知A收到了错误分组)。如果B没有收到M1分组,那么它什么也不知道,也不会去做任何动作。
接下来看A是如何做的:A发完分组后,迟迟收不到B对M1分组的确认后,当等待的时间超时了,那么就需要重新发送该M1分组。要实现超时重传,就需要设置一个超时计时器,当发送的一个分组在超时时间前收到了确认,那么就重置超时计时器,否则的话就需要重传分组。
有几点是需要注意的:
A在发送完一个分组后,必须还要保存该分组的副本,以便超时重传。当收到这个分组的确认后,就可以丢弃该分组的副本了。
需要给每一个分组做编号,这样才知道是各个分组的到达情况。
超时时间应该设置的比平均传输时间稍长一些,以免引起不必要的重传。
确认丢失和确认迟到
除了分组在传送过程中会出现差错,在返回确认的时候,也会出现差错——确认丢失和确认迟到。
首先看确认丢失情况,A的分组B收到了,并给A发送了确认,但该确认丢失了,A没有收到。因为A没有收到M1的确认,那么等待超过超时后,就会向B重传M1。这个时候B收到了重复的分组M1,需要做两个操作:
将重复的分组M1丢弃
向A发送M1的确认。因为既然A重传了M1,就表示A没有收到M1的分组。所以B需要继续发送对M1的确认。
再来看另一种情况,对M1的分组确认迟到了(超过超时时间后才收到)。A在收到重复的确认后,会丢弃,其他什么也不做。
通过上述的超时重传机制,就可以实现在不可靠的网络传输上实现可靠的传输。
信道利用率
上述的停止等待协议简单,但它有一个非常大的缺点——信道的利用率太低。在等待收到确认的这段时间,信道是完全空闲的,十分浪费。
为了提高信道利用率,可以使用流水线传输,流水线传输可以连续发送多个分组,这样就可以大大提高信道利用率了。
采用流水线传输的协议有连续ARQ协议和窗口滑动协议。而TCP就是采用滑动窗口协议来完成可靠传输的。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了浅谈为什么磁盘慢会导致Linux负载飙升,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
今天带大家来了解下Linux/Unix目录结构的区别是什么?需要这方面知识点的小伙伴可以看看小编所整理的资料,相信这篇文章一定不会让你失望的。
mac的终端命令和linux的终端命令是不一样的;mac和linux都是基于Unix,其中的终端命令很多都是仿照Unix的,一些常用的命令基本没有区别,但是并不是完全一样的,例如Linux因为是用C语言写的,所以命令需要区分大小写,而Mac是不存在的。
linux中有access函数;该函数用于检查用户对一个文件的权限情况,若指定的存取方式有效,则函数返回0,反之则函数返回“-1”,语法为“int access(const char* pathname, int mode);”。
在linux中,可以利用grep命令的“-v”参数来查找不包含,grep命令用于查找文件中符合条件的字符串,当参数设置为“-v”时,表示反向选择,显示不包含匹配文本的所有行,语法为“grep -v 不包含的字符串 文件名”。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008