TCP如何实现可靠性传输
1、UDP与TCP的区别
TCP(TransmissionControl Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
UDP是User Datagram Protocol,一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。可靠性由上层应用实现,所以要实现udp可靠性传输,必须通过应用层来实现和控制。
2、TCP如何实现可靠性传输?
确认机制、重传机制、滑动窗口。
3、可靠性
1.应用层数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的数据长度将保持不变。由TCP传递给IP的信息单位称为报文段或段(segment)。
2.当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。当TCP收到发自TCP连接另一端的数据,它将发送一个确认。TCP有延迟确认的功能,在此功能没有打开,则是立即确认。功能打开,则由定时器触发确认时间点。
3.TCP将保持它首部和数据的检验。这是一个端到端的检验,目的是检测数据在传输过程中的任何变化。如果收到段的检验有差错,TCP将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)。
4.既然TCP报文段作为IP数据报来传输,而IP数据报文到达可能会失序,因此TCP报文段的到达也可能会失序。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。
5.既然IP数据报文会发生重复,TCP的接收端必须丢弃重复的数据。
6.TCP还能提供流量控制。TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。
4、重传策略
TCP协议用于控制数据段是否需要重传的依据是设立重发定时器。在发送一个数据段的同时启动一个重传,如果在重传超时前收到确认(Acknowlegement)就关闭该重传,如果重传超时前没有收到确认,则重传该数据段。在选择重发时间的过程中,TCP必须具有自适应性。它需要根据互联网当时的通信情况,给出合适的重发时间。
这种重传策略的关键是对定时器初值的设定。采用较多的算法是Jacobson于1988年提出的一种不断调整超时时间间隔的动态算法。其工作原理是:对每条连接TCP都保持一个变量RTT(Round Trip Time),用于存放当前到目的端往返所需要时间最接近的估计值。当发送一个数据段时,同时启动连接的定时器,如果在定时器超时前确认到达,则记录所需要的时间(M),并修正 RTT的值,如果定时器超时前没有收到确认,则将RTT的值增加1倍。通过测量一系列的RTT(往返时间)值,TCP协议可以估算数据包重发前需要等待的时间。在估计该连接所需的当前延迟时通常利用一些统计学的原理和算法(如Karn算法),从而得到TCP重发之前需要等待的时间值。
5、窗口确认
TCP的一项功能就是确保每个数据段都能到达目的地。位于目的主机的TCP服务对接受到的数据进行确认,并向源应用程序发送确认信息。使用数据报头序列号以及确认号来确认已收到包含在数据段的相关的数据字节。
TCP在发回源设备的数据段中使用确认号,指示接收设备期待接收的下一字节。这个过程称为期待确认。
源主机在收到确认消息之前可以传输的数据的大小称为窗口大小。用于管理丢失数据和流量控制。
UDP它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。
TCP如何实现可靠性传输相关推荐
- 公开课:TCP协议的可靠性传输机制-王达-专题视频课程
公开课:TCP协议的可靠性传输机制-11821人已学习 课程介绍 本课程是2015年10月14号晚上在CSDN学院进行的一场公开课,主讲TCP协议的几个方面的传输机制,主要包括以下几个 ...
- TCP如何保证可靠性,TCP如何实现可靠性传输的
tcp 如何保证可靠性 大家都知道TCP是可靠性传输协议,既然是可靠的,就需要解决比如包丢失了.数据被破坏了.包重复了.乱序了等等这样的问题.下面将从几个方面介绍TCP的可靠性. 1. 校验和 TCP ...
- tcp重复的确认_TCP如何实现可靠性传输
1.UDP与TCP的区别 TCP(TransmissionControl Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议. UDP是User Datagram P ...
- TCP/IP 协议就是传输洋葱?一文带你深入了解
一. 计算机网络体系结构分层 计算机网络体系结构分层 计算机网络体系结构分层 不难看出,TCP/IP 与 OSI 在分层模块上稍有区别.OSI 参考模型注重"通信协议必要的功能是什么&quo ...
- UDP与TCP对比,TCP保证可靠性传输的详细说明
目录 1 UDP 2 TCP 2.1 TCP协议如何保证可靠传输 2.2 流量控制 2.2.1 TCP的滑动窗口 2.3 拥塞控制 2.3.1 慢开始 2.3.2 拥塞避免 2.3.3 快重传 2.3 ...
- 【TCP专题】TCP的可靠性传输
目录 排序 MSS和MTU 分段与分片 序列号 确认机制 重传机制 RTT和RTO 快速重传机制 SACK TCP"三次握手"和"四次挥手"中的可靠性保障 三次 ...
- android 判断byte值_Android开发之UDP可靠性传输
轩羽:Android开发之UDPzhuanlan.zhihu.com 在这一篇文章里,小编说到UDP是不可靠的,故,我们要自己写一套协议,来使UDP实现可靠性传输,这里,小编和小编的小伙伴一起,写了 ...
- C++TCP和UDP属于传输层协议
TCP和UDP属于传输层协议.其中TCP提供IP环境下的数据可靠传输,它事先为要发送的数据开辟好连接通道(三次握手),然后再进行数据发送:而UDP则不为IP提供可靠性,一般用于实时的视频流传输,像rt ...
- TCP如何保证可靠性
TCP传输控制协议 TCP 协议是一种面向连接的,为不同主机进程间提供可靠数据传输的协议.TCP 协议假定其所使用的网络栈下层协议(如IP 协议)是非可靠的,其自身提供机制保证数据的可靠性传输.在目 ...
最新文章
- MVC/MVP/MVVM区别——MVVM就是angular,视图和数据双向绑定
- python中json模块博客园_Python中的Json模块详解
- reactjs使用eject暴露webpack核心配置
- Spring Boot 整合Mybatis (一)
- 利用SQL*Loader将 Excel 数据导出到 Oracle 数据库中
- Go底层剖析 | 好书中秋赠送中
- 20120918-LIST类定义《数据结构与算法分析》
- 基于容器的虚拟化资源调度系统架构设计 | 原力计划
- windows如何把exe注册服务器,Win7将SVN注册为系统服务的方法(图文)
- python 帮助文档下载地址
- golang html转成pdf,使用_go-wkhtmltopdf_将html转pdf
- Windows安全中心打不开,无法启动
- SQL语句记了又忘?常用的SQL语句,配语句和图解超详细o
- python处理netcdf_Python处理netCDF文件
- 在计算机网络的s,在计算机网络中传输二进制信息时,经常使用的速率单位有“kb/s”、“Mb/s”等。其中,1Mb/s=1000kb/s...
- 计算机怎么升级64位操作系统,32位系统怎么升级64位系统
- 修改ptrace_scope
- 当生活真的过得很艰难的时候,你是怎么熬过来的?(内容来自知乎,用于自省)...
- 冰封王座人工只能_魔兽争霸3冰封王座不会玩?怎样玩?新手教程
- MySQL8.0 InnoDB并行查询特性
热门文章
- ​苏宁回应股权质押给淘宝:正常合作;苹果App Store被越狱商店指控垄断;Docker 20.10.0发布|极客日报...
- API 安全最佳实践,不要等出事后“捶胸顿足”
- 形态学上的图像顶帽运算和黑帽运算是什么?
- 注意了!清华官宣:大数据人才缺口高达150万!网友:机会来了!
- 一文带你看网络协议之因特网中的转发和编址! | 原力计划
- 联合国为何 Pick 腾讯?
- 突破性能极限,阿里云神龙最新ASPLOS论文解读
- Kafka 的生产者优秀架构设计
- 捐款捐物捐技术,14 家科技巨头抗疫在行动!
- 为什么 Kubernetes 是微服务发展的必然产物?