最近在学习reSIProcate,而且主要是在学习SIP Proxy部分(代理服务器端)。通过自己的断点调试和抓包,我按自己的理解,大致画出了proxy接收一个ua_A(456@10.10.10.30)的请求,并与ua_B(123@10.10.10.98)建立一个连接的流程图。我的reSIProcate的是在10.10.10.98上运行的。
下面的图1是我自己画的uml流程图,主要是ReSIProcate中几个关键类之间的时序图。
图1
图2是我在10.10.10.30上抓的包。
图2
但是,目前还有几个问题没有弄清楚:
- 在建立连接的过程中,proxy是在哪里发出100 trying响应的?
- 建立连接后,proxy为什么会收到两个200 OK相应?是如何处理这个200 OK请求的?
- 在一方(ua_A)请求挂断连接(bye)的时候,为什么不通过proxy,而是直接向另一方(ua_B)发送bye请求?
上面的UML图是我对源码根据断点调试画出来的,有什么错误或者不足请批评指正。如果有研究SIP协议,尤其是学习reSIProcate的朋友,咱们可以一起交流。我的邮箱是endlessbao@gmail.com。我的QQ是:442130973(非诚勿扰~~)
谢谢大家!!!