1072. SIP INVITE 기반 핸드셰이크 - Session Initiation Protocol 인터넷 인터넷 전화 VoIP 시그널링 멀티미디어 세션 제어 HTTP 기반 텍스트 프로토콜
핵심 인사이트: (503, 505번 연계) 카카오톡 보이스톡이나 회사 인터넷 전화(VoIP)를 걸면 무슨 일이 일어날까? 목소리를 전파(RTP 패킷)로 쏘기 전에, 상대방 폰을 "따르릉!" 울리게 하고, 상대방이 전화를 받으면 "우리 비디오 해상도는 1080p로 하고 음성 코덱은 MP3로 하자!"라고 협상을 해야 한다. 옛날 통신사들은 이걸 하려고 수백만 원짜리 복잡한 전용 기계(H.323)를 썼다. "야! 전화 거는 것도 결국 웹서핑이랑 똑같잖아! 우리가 맨날 쓰는 웹 브라우저(HTTP) 문법을 그대로 복사해서 써! 상대방 IP 주소로
INVITE(초대할게)라고 텍스트 편지를 쏘면, 상대방이200 OK(콜!)라고 대답하게 만들어!" 웹 개발자들의 상식으로 전화국의 복잡함을 부숴버린 인터넷 전화의 지배자, SIP다.
Ⅰ. 기존 H.323의 몰락과 웹의 승리
- 과거 화상 회의를 연결할 때는 국제통신연합(ITU-T)이 만든 H.323이라는 규격을 썼습니다. 이진수(바이너리) 기반에 문법이 미치도록 복잡해서 장비 개발이 극악이었습니다.
- SIP (Session Initiation Protocol) 🌟: IETF에서 "그냥 462번 HTTP처럼 인간이 읽을 수 있는 텍스트 기반으로 가볍게 만들자!"고 주창하여 대성공을 거둔 멀티미디어 세션 제어(시그널링) 표준입니다.
Ⅱ. SIP의 진짜 역할: "목소리는 안 나른다!"
- 착각 금지: SIP는 내 목소리나 영상을 나르는 덤프트럭이 아닙니다!
- 시그널링 (Signaling) 전용: 전화번호(URI)를 찾아내서 상대방 폰을 따르릉 울리게 하고(Call Setup), 코덱을 맞추고(SDP 교환), 통화를 끊어주는(Call Teardown) '파티 플래너(중매쟁이)' 역할만 깔끔하게 하고 빠집니다.
- 실제 목소리(미디어 트래픽)는 중매가 끝난 후, 폰들끼리 직접 다이렉트(P2P)로 터널을 뚫고 **RTP (Real-time Transport Protocol)**라는 별도의 트럭을 이용해 쏟아붓습니다.
Ⅲ. SIP 핵심 핸드셰이크 3단계 (INVITE 플로우) 🌟 핵심 기출 🌟
HTTP의 GET, 200 OK 구조를 100% 모방했습니다. (면접 단골 질문)
1. INVITE (초대장 발송)
- 철수가 영희에게 보이스톡을 겁니다. (SIP 주소는 이메일처럼 생겼습니다:
sip:younghee@naver.com) - 철수 폰이 SIP 서버를 거쳐 영희 폰에 편지를 던집니다.
- "INVITE! 나랑 전화하자. 내 목소리 코덱은 G.711 쓸게(SDP 탑재)."
2. 180 Ringing과 200 OK (따르릉과 수락)
- 편지를 받은 영희 폰이 진동하며 화면이 켜집니다. 동시에 영희 폰은 철수에게
180 Ringing(전화 울리는 중!) 이라는 상태 코드를 보냅니다. 철수는 뚜루루루~ 통화 연결음을 듣습니다. - 영희가 수락(통화 버튼)을 누릅니다. 영희 폰이
200 OK(콜! 나도 G.711 코덱 쓸게!) 패킷을 던집니다.
3. ACK (확인 완료)와 통화 시작 (RTP)
- 철수가
200 OK를 받고 최종적으로 **ACK(알았어, 이제 진짜 말한다!)**를 영희에게 던지면 SIP의 중매(시그널링)가 완벽히 끝납니다. (TCP 3-way Handshake와 유사) - 이제 철수와 영희 폰이 서로 IP를 알았으니, 중앙 서버를 거치지 않고 RTP 패킷(목소리)을 P2P로 직접 교환하며 신나게 떠듭니다.
- 통화가 끝나면? 종료 버튼을 누르는 쪽에서
BYE(끊자!) 패킷을 쏘고, 상대가200 OK를 쏘면 세션이 완벽히 폭파됩니다.
Ⅳ. SIP 아키텍처 서버 삼총사
철수가 영희 폰의 현재 IP를 어떻게 알까요? SIP 서버들이 찾아줍니다.
- Registrar (등록 서버): 영희 폰이 켜지면 "나 영희인데 현재 IP는 10.x.x.x야"라고 위치를 등록해 둡니다.
- Proxy Server (프록시): 철수가
INVITE를 쏘면, 이 서버가 받아서 Registrar를 조회해 영희의 진짜 IP를 알아낸 뒤, 영희 폰으로INVITE패킷을 꺾어서 토스해 줍니다(라우팅 대행). - Redirect Server: "나 바빠! 영희 진짜 IP 알려줄 테니까 네가 직접 영희한테 다시
INVITE쏴라!" 라며 길만 알려주고 빠집니다.
📢 섹션 요약 비유: 과거 H.323 화상 통화는 상대방과 통화하기 위해 **'암호문으로 된 두꺼운 계약서 100장'**을 주고받으며 도장을 찍어야 하는 고답적인 팩스 통신이었습니다. **SIP(세션 초기화 프로토콜)**는 이 계약서를 찢어버리고, 우리가 흔히 쓰는 **'카카오톡 텍스트 채팅(HTTP 기반)'**으로 전화를 걸게 만든 혁명입니다. 철수가 영희에게
[INVITE: 전화받아!]라고 문자 한 줄을 띡 날립니다. 영희 폰은 따르릉 울리며[180 Ringing: 울리는 중]상태를 보여줍니다. 영희가 통화 버튼을 누르면[200 OK: 응 받을게]를 쏘고, 철수가[ACK: 오케이 시작!]을 날리면 끝입니다. এই 복잡한 통화 연결 과정(시그널링)을 사람이 읽어도 이해할 수 있는 단 3줄의 텍스트(INVITE ➜ 200 OK ➜ ACK)로 압축하여, 전 세계의 모든 인터넷 전화(VoIP)와 카카오 보이스톡의 대문을 열어젖힌 궁극의 중매쟁이(파티 플래너) 프로토콜입니다.