2016-04-04 14:58:32 u011026329 阅读数 4659
  • FFmpeg音视频开发实战6 iOS/Android/windows/Linux

    本课程为《FFmpeg音视频开发实战5》的进阶课程,也是终结篇。从第6部分开始,我们进入高阶课程的学习。针对音视频核心功能进一步深化讲解,更多的实际案例,从FFmpeg本地音视频处理,深入UDP网络通讯协议,UDP高效实时视频传输,丢包处理,到OpenGL/ES 特效,滤镜,到webRTC,SIP重量级网络通讯协议框架.以及当前比较流行,未来人才需求量非常大的机器学习,深度学习,移动端人工智能,投入更多的内容。

    1223 人正在学习 去看看 陈超

SIP注册过程如下图所示:
SIP注册过程

SIP 协议中使用了一个构件叫做注册服务器。它不仅能够接收 REGISTER消息请求,还能够将收到的消息包中的信息保存到管理对应域名的定位服务器上面。 SIP 协议具有发现能力;换句话说,就是如果一个用户要与另外一个用户开始会话,那么 SIP 协议必须要发现这个用户能够到达的主机存在。由于定位服务器可以收到请求消息并找到向什么地方发送,所以这个发现过程由定位服务器来完成。而这则是基于管理每个域的定位服务器维护着一个定位数据库的事实来实现的。注册服务器不仅可以接收客户端的 IP 地址,还能够接收其他类型的消息。比如,能够收到服务器上面的 CPL( Call Processing Language)脚本。

在一台话机能够接收一通通话之前,它需要在定位数据库中有注册信息。在这个数据库中我们要拥有所有电话的各自的相关的 IP 地址。在我们的例子中,你将看到 SIP 用户 8590@voffice.com.br 注册到 200.180.1.1 上面的过程(即SIP用户的UAC所在的IP地址为200.180.1.1)。

RFC3665 定义实现了一个最小的功能集合,这是使得 SIP 进行 IP 网络交互时的最好实践。按照 rfc3665 中所说,与注册一个用户代理的过程相关的有五个基本的流程,如下所述:

  1. 一个新的成功的注册( A successful new registration) ——用户代理在发送 Register 请求后,将收到认证过程的挑战。我们将在阐述验证过程的章节中看到这个过程的细节。
    这里写图片描述

  2. 联系列表的更新( An update of the contact list) ——由于不再是新的注册,消息中已经包含了摘要( digest),那么不会返回 401 消息。为了改变联系列表,用户代理仅仅需要发送一条在CONTACT 头中带有新的联系信息的注册信息即可。
    这里写图片描述

  3. 请求获得当前的联系列表——在这种情况下,用户代理将把发送消息中的 CONTACT 头置空,表明用户希望向服务器询问当前的联系列表。在回复的 200OK 消息中, SIP 服务器将把当前的联系列表放在其 CONTACT 的头中。
    这里写图片描述

  4. 取消注册( Cancellation of a registration) ——用户代理在发送的消息中将 EXPIRES 头置成 0,并且将 CONTACT 头设置为*表示将此过程应用到所有存在的联系信息。
    这里写图片描述

  5. 不成功的注册( Unsuccessful Registration) ——用户代理客户端( UAC)发送一条 Register请求消息,收到一条―401 Unauthorized‖消息,事实上,这个过程同成功注册过程相同。但是接下来,它进行哈希运算尝试进行认证。而服务器检测到的是一个无效的密码,继续发送401Unauthorized消息。这个过程一直重复直到重复次数超过在 UAC 设置的最大值。
    这里写图片描述


应用示例:待续(后面在写)

2018-03-20 15:51:17 qq_36840162 阅读数 807
  • FFmpeg音视频开发实战6 iOS/Android/windows/Linux

    本课程为《FFmpeg音视频开发实战5》的进阶课程,也是终结篇。从第6部分开始,我们进入高阶课程的学习。针对音视频核心功能进一步深化讲解,更多的实际案例,从FFmpeg本地音视频处理,深入UDP网络通讯协议,UDP高效实时视频传输,丢包处理,到OpenGL/ES 特效,滤镜,到webRTC,SIP重量级网络通讯协议框架.以及当前比较流行,未来人才需求量非常大的机器学习,深度学习,移动端人工智能,投入更多的内容。

    1223 人正在学习 去看看 陈超

最近需要用到python3+pyqt5。

然而在Linux(Ubuntu)下make安装SIP怎么也报错。

错误提示如下:

$ sudo make
make[1]: Entering directory '/home/mz/Downloads/sip-4.18.1/sipgen'
g++  -o sip main.o transform.o gencode.o extracts.o export.o type_hints.o heap.o parser.o lexer.o 
make[1]: g++:命令未找到
Makefile:36: recipe for target 'sip' failed
make[1]: *** [sip] Error 127
make[1]: Leaving directory '/home/mz/Downloads/sip-4.18.1/sipgen'
Makefile:3: recipe for target 'all' failed
make: *** [all] Error 2

后台经过查阅

那些什么先安装qt4都是假的

最后发现需要安装g++,因为系统默认没有自带。

最后通过命令解决:

 sudo apt-get install g++

2012-12-31 19:54:18 lyyslsw 阅读数 785
  • FFmpeg音视频开发实战6 iOS/Android/windows/Linux

    本课程为《FFmpeg音视频开发实战5》的进阶课程,也是终结篇。从第6部分开始,我们进入高阶课程的学习。针对音视频核心功能进一步深化讲解,更多的实际案例,从FFmpeg本地音视频处理,深入UDP网络通讯协议,UDP高效实时视频传输,丢包处理,到OpenGL/ES 特效,滤镜,到webRTC,SIP重量级网络通讯协议框架.以及当前比较流行,未来人才需求量非常大的机器学习,深度学习,移动端人工智能,投入更多的内容。

    1223 人正在学习 去看看 陈超

上一篇中讲述了SIP注册,但并不是谁都可以注册的。如果一个正常使用的用户alice@sip.com已经注册了,此时一个非法用户截取了alice的信息。并修改了to域,将自己的物理设备地址作为联系地址。那岂不是出现了大的错误,所有信息都跑到自己的设备上。所以在注册服务器中要有相应的认证机制来确保注册用户可以注册。简单说,也就是用户向注册服务器注册,但服务器怎么知道来注册就是正确身份的用户,而不是冒名来注册的。

以上是攻击者冒充别的用户进行注册。还有一种情况是攻击者冒充注册服务器,这样攻击者就可以拦截注册者的注册信息。

攻击者拦截注册信息,给注册者应答301响应,

301:当不能在Request-URI指定的地址找到用户的时候,请求的客户端应当使用Contact头域(20.10)所指出的新的地址重新尝试。请求者应当用这个新的值来更新本地的目录,地址本,和用户地址cache,并且在后续请求中,发送到这个/这些列出的地址

 

还有一种攻击,他既不模仿注册者,也不模仿注册服务器,而是直接篡改消息体。这种情况比较复杂,还没搞懂。再看

2018-07-20 20:57:12 paopaolele 阅读数 493
  • FFmpeg音视频开发实战6 iOS/Android/windows/Linux

    本课程为《FFmpeg音视频开发实战5》的进阶课程,也是终结篇。从第6部分开始,我们进入高阶课程的学习。针对音视频核心功能进一步深化讲解,更多的实际案例,从FFmpeg本地音视频处理,深入UDP网络通讯协议,UDP高效实时视频传输,丢包处理,到OpenGL/ES 特效,滤镜,到webRTC,SIP重量级网络通讯协议框架.以及当前比较流行,未来人才需求量非常大的机器学习,深度学习,移动端人工智能,投入更多的内容。

    1223 人正在学习 去看看 陈超

2018年7月20日,2018年工作主要以NAT开发为主,补充之前NAT 不支持的特性,本篇文章主要总结SIP ALG开发过程的总结和收获。

环境:

1:我司网关产品配置SIP功能,phone1-----SIP网关----NAT设备------SIP网关----mss mini服务器

                                                                                                                  |

                                                                                                              phone2

     遇到的问题:1)网关设备配置问题,

                           2)mss mini服务器 版本问题,不检查sip报文中的端口号和地址协商是否正确的问题。服务器在安装时识别的网                                    卡不可修改问题,解决办法:下载了mss mini的最新版本

                           3)媒体报文由phone1发送给phone2,不经过 mss mini服务器,phone1 在信令报文中获取mss mini服务器的信息

2:使用x-lite 和mss mini服务器,安装在win7的虚拟机环境中搭建linux虚拟机的环境

                                           x-lite -------NAT-------x-lite -------mss mini服务器

      x-lite的设置问题请网络中查找,注意X-lite的安装需要声卡

3: 测试仪模拟sip报文,由于测试仪口资源有限导致使用前两种方法折腾耽误了比较久的时间。

代码:

使用LINUX3.10.1版本的代码,适配到我司的平台下

遇到的问题:1.对linux NAT的整体架构不够熟悉,netfilter的整个架构不熟悉,ct exp的引用计数导致死机的问题,

                         2.移植到虚拟环境中,环境大小端的问题,x86为小端,导致配置需要做一个大小端的转换

                         做事情要足够细心

 

学习LINUX NAT需要做的准备

1.一套linxu的代码

2.netfilter 的架构,NAT的代码

3.NAT ALG代码调试,先了解整个协议和交互流程,以及交互中需要ALG的参数

4.LINUX系统的搭建,GDB的学习,come on ,上坡就会比较吃力

2015-07-10 15:43:37 dayenglish 阅读数 3670
  • FFmpeg音视频开发实战6 iOS/Android/windows/Linux

    本课程为《FFmpeg音视频开发实战5》的进阶课程,也是终结篇。从第6部分开始,我们进入高阶课程的学习。针对音视频核心功能进一步深化讲解,更多的实际案例,从FFmpeg本地音视频处理,深入UDP网络通讯协议,UDP高效实时视频传输,丢包处理,到OpenGL/ES 特效,滤镜,到webRTC,SIP重量级网络通讯协议框架.以及当前比较流行,未来人才需求量非常大的机器学习,深度学习,移动端人工智能,投入更多的内容。

    1223 人正在学习 去看看 陈超
SIP协议包含两种类型的消息,一种是请求行用于发出邀请,而另一种则是状态行,用于标明当前通信的状态。请求行和状态行军包含三部分,其中每一部分以空格隔开,不论是请求行还是状态行均以CRLF换行符结束。在请求行中,三部分内容分别为Method 请求URI和SIP版本号。如下例所示:
Request-Line: REGISTER sip:192.169.1.150 SIP/2.0
在这里方法是REGISTER,也就是注册。空格之后的sip:192.169.1.150则是请求到达的URI目的地址,SIP/2.0则是SIP的版本号。
Status-Line: SIP/2.0 407 Proxy Authentication Required
状态行的例子如上所示,第一个部分和请求行的解释一样被作为SIP的版本号,第二部分则是一个状态码,类似于浏览器访问出现的404;最后一个部分则是对第二部分状态码进行一个简单的解释。
在上面两种行消息之后是消息头部,消息头部的组成也是以文本字符进行编码的。同样的,消息头部的每一个字段都是以CRLF换行作为结尾符。而每一个字段的格式如下:
Via: SIP/2.0/UDP 192.169.1.147:39814;rport;branch=z9hG4bK80051
上面是定义SIP消息头部字段格式的一种示例,冒号前面的是字段的名称,这里表示消息传递出去经过的路径;而第二部分则是传递的使用到的协议——基于UDP的SIP(SIP也可以基于TCP进行实现),第三部分则是起始地址的IP地址和端口号。第四部分的rport告诉服务器,哪里来的消息从哪里发送回去——IP和端口号都不会改变。第五部分则是一个标志ID,标志ID的前七个字母类似于一个魔数用于区别其他的协议。

下面看一个完整的SIP用户和用户代理之间的鉴权认证过程。

Session Initiation Protocol (REGISTER)
    Request-Line: REGISTER sip:192.169.1.150 SIP/2.0
        Method: REGISTER
        Request-URI: sip:192.169.1.150
        [Resent Packet: False]
    Message Header
        Via: SIP/2.0/UDP 192.169.1.147:39814;rport;branch=z9hG4bK80051
        Max-Forwards: 70
        To: <sip:102@192.169.1.150>
            SIP to address: sip:102@192.169.1.150
        From: <sip:102@192.169.1.150>;tag=z9hG4bK17086172
            SIP from address: sip:102@192.169.1.150
            SIP from tag: z9hG4bK17086172
        Call-ID: 281574552997@192.169.1.147
        CSeq: 1 REGISTER
            Sequence Number: 1
            Method: REGISTER
        Contact: <sip:102@192.169.1.147:39814;transport=udp>
            Contact URI: sip:102@192.169.1.147:39814;transport=udp
        Expires: 3600
        User-Agent: Sipdroid/3.6 beta
        Content-Length: 0


Session Initiation Protocol (407)
    Status-Line: SIP/2.0 407 Proxy Authentication Required
        Status-Code: 407
        [Resent Packet: False]
        [Request Frame: 1322]
        [Response Time (ms): 0]
    Message Header
        Via: SIP/2.0/UDP 192.169.1.147:39814;branch=z9hG4bK80051;received=192.169.1.147;rport=39814
        From: <sip:102@192.169.1.150>;tag=z9hG4bK17086172
            SIP from address: sip:102@192.169.1.150
            SIP from tag: z9hG4bK17086172
        To: <sip:102@192.169.1.150>;tag=13d0075e
            SIP to address: sip:102@192.169.1.150
            SIP to tag: 13d0075e
        CSeq: 1 REGISTER
            Sequence Number: 1
            Method: REGISTER
        Call-ID: 281574552997@192.169.1.147
        Allow: ACK, BYE, CANCEL, INFO, INVITE, MESSAGE, NOTIFY, OPTIONS, REFER, SUBSCRIBE
        User-Agent: miniSIPServer V16.0.7 (100 clients) build 20150324
        Proxy-Authenticate: Digest realm="myvoipapp.com",algorithm=MD5,nonce="328E3DAF06BC5374001D626160CB1C21",stale=FALSE
            Authentication Scheme: Digest
            Realm: "myvoipapp.com"
            Algorithm: MD5
            Nonce Value: "328E3DAF06BC5374001D626160CB1C21"
            Stale Flag: FALSE
        Content-Length: 0



Session Initiation Protocol (REGISTER)
    Request-Line: REGISTER sip:192.169.1.150 SIP/2.0
        Method: REGISTER
        Request-URI: sip:192.169.1.150
        [Resent Packet: False]
    Message Header
        Via: SIP/2.0/UDP 192.169.1.147:39814;rport;branch=z9hG4bK99109
        Max-Forwards: 70
        To: <sip:102@192.169.1.150>
            SIP to address: sip:102@192.169.1.150
        From: <sip:102@192.169.1.150>;tag=z9hG4bK17086172
            SIP from address: sip:102@192.169.1.150
            SIP from tag: z9hG4bK17086172
        Call-ID: 281574552997@192.169.1.147
        CSeq: 2 REGISTER
            Sequence Number: 2
            Method: REGISTER
        Contact: <sip:102@192.169.1.147:39814;transport=udp>
            Contact URI: sip:102@192.169.1.147:39814;transport=udp
        Expires: 3600
        User-Agent: Sipdroid/3.6 beta
        Proxy-Authorization: Digest username="102", realm="myvoipapp.com", nonce="328E3DAF06BC5374001D626160CB1C21", uri="sip:192.169.1.150", algorithm=MD5, response="bdf9504e7f2e0d6c685e57f9eef22f43"
            Authentication Scheme: Digest
            Username: "102"
            Realm: "myvoipapp.com"
            Nonce Value: "328E3DAF06BC5374001D626160CB1C21"
            Authentication URI: "sip:192.169.1.150"
            Algorithm: MD5
            Digest Authentication Response: "bdf9504e7f2e0d6c685e57f9eef22f43"
        Content-Length: 0



Session Initiation Protocol (200)
    Status-Line: SIP/2.0 200 OK
        Status-Code: 200
        [Resent Packet: False]
        [Request Frame: 1324]
        [Response Time (ms): 0]
    Message Header
        Via: SIP/2.0/UDP 192.169.1.147:39814;branch=z9hG4bK99109;received=192.169.1.147;rport=39814
        From: <sip:102@192.169.1.150>;tag=z9hG4bK17086172
            SIP from address: sip:102@192.169.1.150
            SIP from tag: z9hG4bK17086172
        To: <sip:102@192.169.1.150>;tag=55d70430
            SIP to address: sip:102@192.169.1.150
            SIP to tag: 55d70430
        CSeq: 2 REGISTER
            Sequence Number: 2
            Method: REGISTER
        Call-ID: 281574552997@192.169.1.147
        Allow: ACK, BYE, CANCEL, INFO, INVITE, MESSAGE, NOTIFY, OPTIONS, REFER, SUBSCRIBE
        User-Agent: miniSIPServer V16.0.7 (100 clients) build 20150324
        Contact: <sip:102@192.169.1.147:39814;transport=udp>
            Contact URI: sip:102@192.169.1.147:39814;transport=udp
        Expires: 180
        Content-Length: 0

sip注册协议格式

阅读数 15

SIP注册

阅读数 74

博文 来自: WY1468840047
没有更多推荐了,返回首页