RTP 프로토콜 사용예

andro000의 이미지

인용:
"그러나 인터넷을 기반으로 실시간 영상 및 음성을 전송하는 경우에는 얘기가 조금 다르다. 멀티미디어 데이터는 그 특성상 일부가 손실이 되어도 크게 문제가 되지 않는다. 잠깐 동안의 화면 떨림 내지는 아주 작은 잡음 정도는 그냥 넘어가 줄만하다. 하지만 실시간 서비스를 해야 하므로 속도는 상당히 중요한 요소가 된다. 이러한 경우가 UDP소켓을 사용해야 하는 좋은 후보가 된다"

이 부분에서는 패킷손실을 허가하는 방향을 묘사하고 있습니다.
즉, 패킷이 도달하지 않아도, 재전송하지 않음(또는, 1번이나 아주 작은 재전송시도만을 수행함)에 대한 내용으로 보입니다. 재전송을 최소화(또는 없음)하는 전략이라고 봐야겠지요?

인용:
1. 전송하는 소스
Remote에서 원하는 데이터(Video/Audio)를 전송한다.
전송한 패킷(seqnum)에 대해 timer를 설정한다.
전송한 후에 응답을 기다리는데 응답이 정해진 시간내에 오지 않으면 재전송
한다. 그리고 다시 timer를 설정한다.

2. 수신하는 소스
데이터를 수신한다.
수신하면 응답을 전송한다.
원하는 데이터가 오지 않을시 버퍼에 저장해 두고 원하는 데이터에 대한
seqnum을 재전송 요구한다. 그리고 timer를 설정한다.

그러나, 님이 제시한, 이 알고리즘에서는 재전송을 수행하는 부분에 대한 언급만이 있습니다. 재전송을 중단하는 전략에 대해서는 언급이 없습니다. 즉, 신뢰성있는전송(reliability)에 대해 기술하고 있습니다. 신뢰성있는 전송이란, 보내면 언젠가는 간다!라는 명제를 구현한 것인데, 즉, 타임아웃걸고 재전송을 반복수행하는 시나리오지요. 이 부분에 대한 참고자료는 Stevens의 Unix Network Programming에서 볼수 있습니다. 책에서 UDP와 Reliable(-ity) 이 두단어를 키워드로 책을 찾아보시면 한개의 Chapter에서 언급과 소스를 볼 수 있습니다. 약간 진보된 UDP라는 부분에 대체로 위치할 것입니다. 정확한 장수를 기억하지 못하네요--; 물론, Stevens의 구현에서는 ARQ방식중 가장 단순한 방법으로 구현되어 있습니다만 공부에는 보탬이 될것입니다..

* 둘다를 만족시키는(님의 목적을 만족하는?) 참조 프로그램으로는 RTP를 추천합니다. RTP는 검색하면 널렸습니다. 참고로 RTP는 바로 UDP상에서 구현한 프로토콜입니다. 님이 구현하고자 하는 프로토콜인듯한데요. 아니면 님이 이의 축소판을 구현하시고자 하는것 같군요. 참고하세요.
--------------------------------------------------------------------------------------------------

답변 감사드립니다. 조금 RTP에 대해 찾아봤는데 프로토콜 형식만 나왔지 이걸
코딩한 예는 나오지 않았더군요. RTP의 사용예를 부탁드립니다.

Kari의 이미지

예전에 RTP관련 프로젝트를 했었는데 그와 관련해서
소스를 구할 수 있는 사이트들입니다. 아래는 전부 packetization을
RTP포맷으로 하고 있습니다.

http://developer.apple.com/darwin/projects/streaming/

http://nms.lcs.mit.edu/software/videocm/

http://www.mpeg4ip.net/

Secure RTP 구현 : RTP 중에서도 보안기능을 강화하여 최근까지
draft상태인 버전을 구현한 라이브러리입니다.
제가 예전에 이거 배껴서 숙제 했었습니다 ㅡ.ㅡ;;;
http://srtp.sourceforge.net/srtp.html

도움이 되었으면 하네요.

익명 사용자의 이미지

스마일 이라는 언어를 한번 보세요.

꽤 형식이 잘 되어 있는거 같습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.