SS之IIS Smooth Streaming Transport Protocol 消息交互

来源:互联网 发布:软件测试技术提高 编辑:程序博客网 时间:2024/04/28 18:20

IIS Smooth Streaming Transport Protocol [2009]

http://www.iis.net/community/files/media/smoothspecs/[MS-SMTH].pdf

另外还找到一篇[MS-SSTR] Smooth Streaming Protocol Specification, 感觉跟上面链接的内容几乎一样,但是时间是2011年12月,所以看的是这个新的。

MSDN:http://msdn.microsoft.com/en-us/library/ee673436(v=VS.90).aspx

这篇博客仍旧是读文档笔记,但不像上一篇是逐渐变薄的记录,这篇摘抄了一些重点,补充了一点自己原创的材料。


SS protocols provides a means of delivering media from servers to clients in a way that can be cached by standardHTTP cache proxies in the communication chain. Allowing standard HTTP cache proxies to respond to requests on behalf of the server in creases the number of clients that can be served by a single server.

cache的机制在下面的实验中表现出来了。

SS Transport protocol 的消息交互序列:


把HTTP cache proxies 的角色放进去:


    不同的client,同样请求同一块fragment,第二次直接从cache返回。

    自己搭建了一个SS web server,抓包看了一下消息的内容,以BigBuckBunny举例吧。抓包软件最开始用的wireshark,可是不知道为什么总是收不到本来期望能收到的包,后来改用Windows network monitor,很容易上手很好用,还会列出哪些消息是在哪些进程里面。

1. Manifest request

在浏览器中输入http://[server_name]/[virtual_addr]/bigbuckbunny.ism/manifest,client向server发送HTTP请求。


协议中要求的(manifest/fragment request):HTTP方法必须是GET,HTTP协议版本必须是HTTP/1.1

2. Manifest response

Server 将bigbuckbunny.ismc 发回给client,可以在浏览器中显示出来。(用了另外的URL展示)


协议中要求的(manifest/fragment response):HTTP 状态码必须是200,HTTP协议版本必须是HTTP/1.1。payload中就是ismc文件的内容了。

这时如果再次请求(在浏览器中刷新页面),得到的响应却是304:


304 not modified,数据内容跟上一次比没有变化。这个应该跟cache-control的值有关,没研究过不深究了。这篇先不研究manifest文件的具体element和attribute,只看消息交互。

3. Fragment request

在浏览器中输入:http://[server_name]/[virtual_add]/SmoothStreamingPlayer.html


server的响应:


client收到的第一个响应,会是manifest,然后才能根据manifest里面的信息来构建fragment request。


URL里面包含了具体的QualityLevels 和Fragments 值。client向server请求bit rate是2962000,fragments偏移是400000000的video chunk。


4. Fragment response

由于之前已经执行过,播放过了,所以得到的响应时304。Server说还是老数据,自己从cache里面拿吧。

5. Continue

下一个Fragment request 请求的offset是420000000。


终于等到一个不是304的响应。


返回的状态码是200,类型是video/mp4。HTTPPayloadLine是空的,内容包含在下一个响应中:


一般在200 ok响应之后,要接着发好几个带有HTTPPayloadLine的包,见下图,一对一的都是304响应。


    用Microsoft Network Monitor 抓包,协议列,请求都是PCCRTP,在wireshark中直接是HTTP。PCCRTP:Peer Content Caching and Retrieval: HTTP extension.

    有时候client会收到 412 响应,代表fragment not yet available。

原创粉丝点击