相对于看RTSP协议,直接抓包分析会对该协议有一个简单的认知。本文在Windows下使用Wireshark抓包,live555服务器使用前些日子搞的工程。
一、RTSP包
RTSP包基于TCP传输。下面按照使用live555的h264测试工程,使用单播方式,按顺序列出RTSP包的格式。先打开Wireshark工具进行抓包,然后用vlc连接,这样才会出现rtsp包。本文live555服务端为自编译,自运行,地址为:rtsp://192.168.18.18:8554/h264ESVideo/
。
1.1、OPTION
客户端(vlc)发送OPTION请求:
1 | Request: OPTIONS rtsp://192.168.18.18:8554/h264ESVideo RTSP/1.0\r\n |
服务器回应包:
1 | Response: RTSP/1.0 200 OK\r\n |
发送option获取服务器支持的方法有哪些。
1.2、DESCRIBE
客户端发送DESCRIBE,请求RTSP服务器描述自身有哪些资源,对应的抓包结果:
1 | Request: DESCRIBE rtsp://192.168.18.18:8554/h264ESVideo RTSP/1.0\r\n |
服务器回应包:
1 | Response: RTSP/1.0 200 OK\r\n |
回应同时有SDP(会话描述协议),SDP内容较多较复杂,不在本文详述。抓包结果如下图所示:
1.3、SETUP
SETUP命令用于确定转输机制,建立RTSP会话。客户端发的包如下:
1 | Request: SETUP rtsp://192.168.18.18:8554/h264ESVideo/track1 RTSP/1.0\r\n |
服务器回应:
1 | Response: RTSP/1.0 200 OK\r\n |
Transport的值表示传输协议,如为“Transport: RTP/AVP/TCP”表示RTP使用TCP来传输。如果是 “RTP/AVP/UDP”则表示使用UDP传输。后面接着的值表示单播(unicast)、多播(multicast)。以及端口号范围。回应包除了上述内容,还有IP地址。
1.4、PLAY
PLAY即开始播放视频,客户端发包:
1 | Request: PLAY rtsp://192.168.18.18:8554/h264ESVideo/ RTSP/1.0\r\n |
服务器回应:
1 | Response: RTSP/1.0 200 OK\r\n |
1.5、GET_PARAMETER
获取参数命令,客户端发包:
1 | Request: GET_PARAMETER rtsp://192.168.18.18:8554/h264ESVideo/ RTSP/1.0\r\n |
服务器回应:
1 | Response: RTSP/1.0 200 OK\r\n |
1.6、TEARDOWN
关闭播放,VLC发TEARDOWN命令:
1 | Request: TEARDOWN rtsp://192.168.18.18:8554/h264ESVideo/ RTSP/1.0\r\n |
服务器回应:
1 | Response: RTSP/1.0 200 OK\r\n |
RTSP还有很多其它的命令,可以参考其它资料,本文不涉及。
二、RTP包
RTP包基于UDP或TCP传输。VLC发PLAY命令就会播放视频,接着就是连续不断的RTP包。下图是一个RTP协议截图:
三、RTCP包
RTP包基于UDP传输。会话参与者会定期发送RTCP包。RTCP包有不同的类型:
Goodbye包
李迟 2016.1.3 晚