TCP 协议如何保证可靠传输 一、综述 1、确认和重传:接收方收到报文就会确认,发送方发送一段时间后没有收到确认就重传。 2、数据校验 3、数据合理分片和排序: UDP:IP数据报大于1500字节,大于MTU.这个时候发送方IP层就需要分片(fragmentation).把数据报分成若干片,使每一片 ...
分类:
其他好文 时间:
2018-03-24 14:29:52
阅读次数:
172
停止等待协议:放送方发送一个数据包,要收到接收方对该包的确认后,才发送下一个数据包。缺点:慢,信道利用率低。ARQAutomaticRepeatreQuest接收方采用累加确认的方式,接收方不必对每一个分组进行缺,只需要对按序到达的最后一个分组发送确认。缺点:当发送方发送了5个分组,中间第3个丢失,那么接收方只对前两个分组进行确认。发送方只好把后面的3个分组都重传一次。这叫做Go-back-N(回
分类:
其他好文 时间:
2018-03-19 18:13:22
阅读次数:
181
这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇《TCP的那些事儿(上)》 上篇中,我们介绍了TCP的协议头、状态机、数据重传中的东西。但是TCP要解决一个很大的事,那就是要在一个网络根据不同的情况来动态调整自己的发包的速度,小则让自己的连接更稳定,大则让整个网络更稳定。在你阅读下篇之 ...
分类:
其他好文 时间:
2018-03-03 22:29:45
阅读次数:
205
差错检测和纠正技术 数据在传输的过程中难免会出现差错(比如经过路由转发时),因此我们需要一些差错检测和纠正技术来检测数据中的差错并纠正,使接收方收到正确的数据,也避免发送方对数据进行重传。 下图是差错检测和纠正的场景示意图。 ...
分类:
其他好文 时间:
2018-02-06 14:58:10
阅读次数:
778
说明: 1).本文以TCP的发展历程解析容易引起混淆,误会的方方面面 2).本文不会贴大量的源码,大多数是以文字形式描述,我相信文字看起来是要比代码更轻松的 3).针对对象:对TCP已经有了全面了解的人。因为本文不会解析TCP头里面的每一个字段或者3次握手的细节,也不会解释慢启动和快速重传的定义 4 ...
分类:
其他好文 时间:
2018-02-05 23:28:00
阅读次数:
160
21.1 引言 可靠性的保证之一就是超时重传 前面两个超时重传的例子 1) ICMP端口不能到达时,TFTP客户使用UDP实现了一个简单的超时和重传机制,假定5s是一个适当是时间间隔,并每隔5s进行重传 2) 在向一个不存在的主机发送ARP的 例子中,可看到当TCP试图建立连接的时候,在每个重传之间 ...
分类:
其他好文 时间:
2018-02-04 22:54:31
阅读次数:
361
先补充一个知识: 1.停止等待协议:是tcp保证传输可靠的重要途径,“停止等待”就是指发送完一个分组就停止发送,等待对方确认之后,才能继续发送下一个分组 停止等待协议的优点是简单,缺点就是信道的利用率太低,一次只发送一个消息,信道大部分时间都是空闲的。 2:超时重传有一下三种情况: 1) 分组丢失: ...
分类:
其他好文 时间:
2018-02-01 23:11:13
阅读次数:
191
TCPTCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送 ...
分类:
其他好文 时间:
2018-02-01 17:25:14
阅读次数:
152
为了应用常驻后台,避免被第三方杀掉的方法 1)Service设置成START-STICKY kill 后会被重启(等待5秒左右),重传Intent,保持与重启前一样 2)通过startForeground将进程设置为前台进程 3)做前台服务,优先级和前台应用一个级别,除非在系统内存非常缺,否则此进程 ...
分类:
其他好文 时间:
2018-01-30 19:47:17
阅读次数:
218
前言:TCP的可靠性大致通过3类方法来保障:1.确认和重传。2.流量控制。3.拥塞避免。其中的流量控制中使用的滑动窗口,使得TCP的发送方和接收方速度得以匹配,从而为传输提供了可靠性支撑。本篇就介绍一下滑动窗口在Linux的大致代码,对于滑动窗口的基本知识已经有无数优秀的文章,更有TCP/IP卷一可 ...
分类:
系统相关 时间:
2018-01-23 23:24:17
阅读次数:
964