各种协议的探究

网络协议

网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。例如,网络中一个微机用户和一个大型主机的操作员进行通信,由于这两个数据终端所用字符集不同,因此操作员所输入的命令彼此不认识。为了能进行通信,规定每个终端都要将各自字符集中的字符先变换为标准字符集的字符后,才进入网络传送,到达目的终端之后,再变换为该终端字符集的字符。当然,对于不相容终端,除了需变换字符集字符外还需转换其他特性,如显示格式、行长、行数、屏幕滚动方式等也需作相应的变换。
网络协议的三要素:语义,语法,时序。语义表示做什么,语法表示如何做,时序表示做的顺序

RTMP:Real Time Messaging Protocol(实时消息传送协议)

RTMP协议作为客户端和服务器端的传输协议,这是一个专门为高效传输视频、音频和数据而数据的TCP/IP协议,使用RTMP协议传输的数据是未加密的,包括用户名和密码等认证信息。它通过建立一个二进制TCP连接或者连接HTTP隧道实现实时的视频和声音传输。共享对象是RTMP数据中一种比较重要的数据类型,任何客户端改变数据时,共享对象能够及时更新服务器端的数据,这样,每个客户端都能够及时了解到数据的变化。
RTMP比传统媒介服务器流出的媒介协议支持更多。它支持可能包含声音,影像和脚本数据从服务器到客户和从客户到服务器多条线路的动态传输。RTMP对声音、影像和脚本数据分别处理。
声音和视频数据被分开地缓冲在服务器中。如果声音数据在声音缓冲器中达到某一极限,所有在缓冲器中的数据将被丢掉,并且最近到达的数据被允许开始收集在缓冲中并被送到各个客户。视频数据被以相似的方式处理,不同是当新的关键帧到达时,缓冲器中数据才被清除。在丢掉旧的帧数据时,如果发现客户端的数据有误,则将新旧两个不同的帧进行拟合。
RTMP对数据给予不同的优先级别。在实时交谈中,声音是最重要的,影像给予低优先级,而脚本数据被给予的优先权介于声音和影像中间。
RTMP协议可以创建多个数据流,但是每个数据流只能有一个方向。
使用RTMP可以构建这样的一个系统,客户端可以同时与RTMP服务器和应用服务器进行交互,使得服务端的负荷得以分散,虽然在这种改进的系统结构中,RTMP服务器的性能要求比较高。

TCP

TCP为点对点的协议,这意味着各个客户需要分开客户机/服务器链接,因而无法在网络级实现对多个客户机的数据广播。如果有一个数据流必须同时被传送到多个客户机,服务器必须传送数据流的副本到各个客户机,TCP能够根据网络带宽和拥挤程度动态地调节传送速度并重新发送丢失的数据包,这样虽然保证了数据传输的可靠性,但是对服务器资源耗费较大,在数据流大的场合难以保证数据流传输的实时性。

链接,三次握手


三次握手

断开链接,四次握手


四次握手

总结

Tcp层标示,Tcp有Flags字段,其常用标识
 SYN(synchronous建立联机) 

 ACK(acknowledgement 确认)

 PSH(push传送) 

 FIN(finish结束)

 RST(reset重置) 

 URG(urgent紧急)

 ACK (Acknowledge number 确认号码)
端口状态
  • 1.LISTENING状态 :服务端口启动后处于的状态
  • 2.ESTABLISHED状态:服务端与客户端建立连接成功的状态.表示两台机器可以通信
  • 3.CLOSE_WAIT:对方主动关闭连接或者网络异常导致连接中断,此时我方要调用close来使连接正确关闭
  • 4.TIME_WAIT:调用close方法,并成功收到对方确认后变为TIME_WAIT,测试端口资源不会立即释放
  • 5.SYN_SENT:请求连接时客户端首先要发送同步信号给要访问的机器,此时状态为SYN_SENT,如果连接成功了就变为ESTABLISHED,正常情况下SYN_SENT状态非常短暂
  • 6.SYN_RCVD:当服务器收到客户端发送的同步信号时,将标志位ACK和SYN置1发送给客户端,此时服务器端处于SYN_RCVD状态,如果连接成功了就变为ESTABLISHED,正常情况下SYN_RCVD状态非常短暂
UDP

UDP为不可靠传输协议,在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度,计算机的能力和传输带宽的限制;在接收端,uDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
UDP协议不需要维护连接状态,也不认为每个数据包都必须到达接受端,因此网络负荷比TCP小,传输速度也要比TCP快;但在网络越拥挤时,越有更多的数据包丢失。

需要注意的地方

6/3/2015 4:42:04 PM

Android支持播放网络上的视频。在播放网络上的视频时,牵涉到视频流的传输,往往有两种协议,一种是HTTP,一种是RTSP。这
两种协议最大的不同是,HTTP协议,不支持实时流媒体的播放,而RTSP协议就支持。Android中自带的播放器,以及VideoView等都支持上述两种协议,因此,可以直接播放网络上的视频,唯一不同的就是URI。
Android当前支持两种协议来传输视频流一种是Http协议,另一种是RTSP协议
Http协议最常用于视频下载等,但是目前还不支持边传输边播放的实时流媒体
同时,在使用Http协议 传输视频时,需要根据不同的网络方式来选择合适的编码方式,
比如对于GPRS网络,其带宽只有20kbps,我们需要使视频流的传输速度在此范围内。
比如,对于GPRS来说,如果多媒体的编码速度是400kbps,那么对于一秒钟的视频来说,就需要20秒的时间。这显然是无法忍受的
Http下载时,在设备上进行缓存,只有当缓存到一定程度时,才能开始播放。

所以,在不需要实时播放的场合,我们可以使用Http协议

RTSP:Real Time Streaming Protocal,实时流媒体传输控制协议。
使用RTSP时,流媒体的格式需要是RTP。
RTSP和RTP是结合使用的,RTP单独在Android中式无法使用的。

RTSP和RTP就是为实时流媒体设计的,支持边传输边播放。

同样的对于不同的网络类型(GPRS,3G等),RTSP的编码速度也相差很大。根据实际情况来

使用前面介绍的三种方式,都可以播放网络上的视频,唯一不同的就是URI

本例中使用VideoView来播放网络上的视频

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值