IPHONE手机电视提示缓冲而无法继续观看问题分析1月4日马鞍山分公司反映使用IPHONE手机看电视时经常数据缓冲而无法继续观看,经分析初步判断是RAB拆链可能会引起IPHONE和手机电视平台间TCP会话问题,而导致业务异常终止。继续分析TCP会话过程,产生问题的原因是IPHONE在RAB没有拆除后发的TCP连接时会发两个重复的建链请求(两个一样的SYN报文),电视平台侧可能有负载分担机制,可能会把这两个请求转到不同的电视服务器上,可能导致TCP会话异常。一、IPHONE看手机电视流程分析通过消息看IPHONE连接手机电视时通过3GNET连接到公网itv.wo.com.cn网站。过程如下:1、手机通过3GNET进行PDP上下文激活2、打开www.wo.com.cn页面时,返回网页脚本如下:if(site_host==site_url1||site_host==site_url2){if(userAgent.indexOf("iPhone")>0){window.location="http://iphone.wo.com.cn";}else{window.location="http://www.10010.com";}普通手机会直接转到www.10010.com,IPHONE手机会转到iPhone.wo.com.cn,然后在点击手机电视后连接到itv.wo.com.cn网站。然后点击WEB网页中的电视节目消息,通过不断获取节目数据块文件名,通过TCP方式收看数据文件(普通手机一般使用RTP方式)。过程如下:1、获取电视节目最新数据块文件名。GET/video1/index_128k.m3u8?username=&random=20100106140807039102&ip=58.243.254.6&date=20100106180807&key=f730484fdaeae3243da2e3f3d32e072b得到结果为:#EXTM3U#EXT-X-TARGETDURATION:10#EXT-X-MEDIA-SEQUENCE:1739#EXTINF:10http://cctv1.itv.wo.com.cn/video1/sample_128k-01739.ts#EXTINF:10http://cctv1.itv.wo.com.cn/video1/sample_128k-01740.ts#EXTINF:10http://cctv1.itv.wo.com.cn/video1/sample_128k-01741.ts#EXTINF:10http://cctv1.itv.wo.com.cn/video1/sample_128k-01742.ts#EXTINF:10http://cctv1.itv.wo.com.cn/video1/sample_128k-01743.ts#EXTINF:10http://cctv1.itv.wo.com.cn/video1/sample_128k-01744.ts#EXTINF:10http://cctv1.itv.wo.com.cn/video1/sample_128k-01745.ts#EXTINF:10http://cctv1.itv.wo.com.cn/video1/sample_128k-01746.ts#EXTINF:10http://cctv1.itv.wo.com.cn/video1/sample_128k-01747.ts#EXTINF:10http://cctv1.itv.wo.com.cn/video1/sample_128k-01748.ts#EXTINF:10http://cctv1.itv.wo.com.cn/video1/sample_128k-01749.ts#EXTINF:10http://cctv1.itv.wo.com.cn/video1/sample_128k-01750.ts#EXTINF:10http://cctv1.itv.wo.com.cn/video1/sample_128k-01751.ts#EXTINF:10http://cctv1.itv.wo.com.cn/video1/sample_128k-01752.ts#EXTINF:10http://cctv1.itv.wo.com.cn/video1/sample_128k-01753.ts2、下载最新的数据块文件,第一次从倒数第三个开始,并在IPHONE手机实时观看(每个文件块约为500K左右,10秒钟播放时间)GET/video1/sample_128k-01751.tsGET/video1/sample_128k-01752.tsGET/video1/sample_128k-01753.ts3、再次获取最新数据块文件名,GET/video1/index_128k.m3u8?username=&random=20100106140807039102&ip=58.243.254.6&date=20100106180807&key=f730484fdaeae3243da2e3f3d32e072b二、问题分析测试中发现异常情况出现在手机重复获取M3U8文件的过程中,该文件含有最新数据块文件列表。异常情况出现在手机和电视平台TCP三次握手后,发GET请求,平台不回应,手机在重复三次GET请求后认为平台异常终止了请求,并终止了本次手机电视业务。该TCP会话过程如下:第一个包是平台发给手机的TCP握手信号但ACK=0(正常情况下ACK应该=1),同时随后还发了一个带SYN的握手信号而SEQ很大(正常情况下应该为0)。IPHONE因为收到第一个包,所以认为与平台的TCP连接已建立起来,随后就发送GET请求。但平台重复发送带SYN的ACK=0的消息,导致手机不能获取正常结果,在GET请求重复三次后断开,并终止了手机电视业务。一般情况下服务器回应【SYNACK】报文中ACK=1,但在实际测试中也发现ACK=0时能获取业务的情况,如:和异常情况比较TCP会话过程一样,不同的是异常情况下客户GET后,平台返回依然返回ACK=0,似乎没有...