![Android APP开发实战:从规划到上线全程详解](https://wfqqreader-1252317822.image.myqcloud.com/cover/677/22655677/b_22655677.jpg)
上QQ阅读APP看书,第一时间看更新
5.2 TCP和UDP的区别
5.2.1 面向连接服务
TCP提供的是面向连接服务,传输数据要经过以下3个阶段。
· 数据传输前先建立连接。
· 连接建立后再传输数据。
· 数据传送完后,释放连接。
TCP所做的工作包括将应用程序交给它的数据分成合适的小块交给下面的网络层、确认接收到的分组和设置发送最后确认分组的超时时钟等,从而确保数据传送的次序和传输的可靠性。由于传输层提供了高可靠性的端到端的通信,应用层可以忽略这些细节。
5.2.2 无连接服务
UDP提供的是无连接服务,即只有传输数据阶段,消除了除数据通信外的其他开销,只要发送实体是活跃的,无须接收实体是活跃的。UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,当然也不用重发。UDP只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性由应用层来提供。
UDP在底层协议的封装上没有采用类似TCP的“三次握手”,且不必进行收发数据的确认。其优点是开销小、数据传输速率高、实时性更好;但无连接服务不能防止报文的丢失、重复或失序,是一种不可靠的数据传输协议。
开发人员可以自己实现对UDP的数据收发进行验证,比如发送方对每个数据包进行编号,然后由接收方进行验证,确保数据传送的次序和传输的可靠性。
区分TCP和UDP特别简单,就好比打电话和写信。两个人如果要通电话,必须先建立连接——拨号,等待应答后才能相互传递信息,最后还要释放连接——挂电话;写信就没有那么复杂了,地址和姓名填好以后直接往邮筒一扔就可以了。