⛏️ 삽시일반

[아프리카TV 분석] 다른 시청자에게 스트리밍 영상 요청하기 (3부)

안녕하세요. 구독자님, 이제 '아프리카TV 프로그램 분석'의 마지막 이야기입니다. 저도 오랜만에 프로그램 분석을 제대로 해본 듯 한데요. 덕분에 많은 공부가 되었네요. 마지막편도 재밌게 봐주시고, 다음에 새로운 시리즈로 또 돌아올 수 있도록 하겠습니다 :)

2024.04.19 | 조회 169 |
0
|

Hello.Stranger

출근길에 읽을 수 있도록 매일 아침에 개발 및 IT 소식을 전해드립니다. 🛸

안녕하세요. 구독자님, 이제 '아프리카TV 프로그램 분석'의 마지막 이야기입니다. 저도 오랜만에 프로그램 분석을 제대로 해본 듯 한데요. 덕분에 많은 공부가 되었네요. 마지막편도 재밌게 봐주시고, 다음에 새로운 시리즈로 또 돌아올 수 있도록 하겠습니다 :)

이번 포스팅의 주제는 P2P 패킷에 대해 분석한 내용을 다루었습니다. 나름의 Handshake 과정이 있었으며, 이번 분석으로 실제 미디어 파일을 받기까지 어떠한 작업이 이루어졌는지 알 수 있었는데요. 프로그램이 좀 방대하지만 이 포스팅에서는 720p 영상에 한하여 분석한 내용이 있으니 참고하셔서 봐주세요 :D

 

목차

  • 1부 (보러가기)
    • '고화질 스트리머' 프로그램이란?
    • 그리드를 위한 초기 네트워크 설정
  • 2부 (보러가기)
    • Client Center 서버간의 통신
    • Client와 Client 간의 통신
    • Frida를 이용한 타시청자의 IP/Port 정보 획득 POC
  • 3부 
    • 아프리카TV에서의 P2P 프로토콜 통신 순서
    • 아프리카TV의 P2P 패킷 뜯어보기
    • 타시청자에게 스트리밍 영상 요청하는 코드 짜보기

1. 아프리카TV에서의 P2P 프로토콜 통신 순서

이 프로그램에서 P2P 통신을 할 때 나름의 명칭이 있었는데요.(물론, 다른 P2P에서도 동일한 네이밍을 쓸수도 있음)

데이터를 요청하는 시청자를 Child, 영상 데이터를 제공해주는 시청자를 Parent라고 합니다. 나의 역할이 무엇인지에 따라서 Child와 Parent로 나뉘지만, 이 글에서는 Child 입장에서 글을 풀어가겠습니다.

Child 시청자는 인터넷 방송을 보기위해 방송을 들어갑니다. 이 때는 [아프리카TV 분석] 시청자의 IP,PORT 추출하기 (2) 글에서 다루었다시피, 각종 정보를 주고받고 Parent시청자의 정보도 획득하게 되는데요. Parent 시청자 정보를 받게된 후에는 아래 그림과 같은 Flow로 통신이 이루어지며, 실시간 스트리밍 영상을 전달받게 됩니다.

Communication with Parent Host
Communication with Parent Host

각 Flow 별 설명이 간단히 풀어보면 아래와 같습니다. 참고로 Command로 적힌 항목은 이 프로그램에서 정의해둔 2Byte 정수인데요. 아프리카TV 프로그램을 분석하다보면 매우 다양한 Command가 있지만, 기본적인 통신에 필요한 아래 4개의 Command만 다루겠습니다.


 

멤버십 구독자만 읽을 수 있어요

가입하시려면 아래를 클릭해주세요

댓글

의견을 남겨주세요

확인
의견이 있으신가요? 제일 먼저 댓글을 달아보세요 !

© 2024 Hello.Stranger

출근길에 읽을 수 있도록 매일 아침에 개발 및 IT 소식을 전해드립니다. 🛸

뉴스레터 문의 : hello.stranger1337@gmail.com

자주 묻는 질문 오류 및 기능 관련 제보

서비스 이용 문의admin@team.maily.so

메일리 (대표자: 이한결) | 사업자번호: 717-47-00705 | 서울 서초구 강남대로53길 8, 8층 11-7호

이용약관 | 개인정보처리방침 | 정기결제 이용약관 | 070-8027-2840