핵심 인사이트 (3줄 요약)

  1. 본질: MPTCP(Multipath TCP)는 내 스마트폰에 연결된 '와이파이(Wi-Fi)'와 'LTE/5G' 두 개의 완전히 다른 인터넷 길(Path)을 하나의 TCP 세션으로 묶어버려, 두 길의 대역폭을 합쳐 다운로드 속도를 두 배로 뻥튀기하거나, 한쪽 길이 끊겨도 다른 길로 통신을 무중단 유지하는 현대 모바일 통신의 마법이다.
  2. 무단절 핸드오버 (Seamless Handover): 기존 TCP는 와이파이 존을 벗어나면 IP가 바뀌면서 기존의 연결(세션)이 툭 끊어졌다. MPTCP는 와이파이가 끊어지더라도 이미 묶여 있던 LTE 길을 통해 다운로드가 0.1초의 끊김도 없이 계속(Seamless) 이어지는 극강의 안정성을 제공한다.
  3. 서브플로우 (Subflow): 이 마법을 부리기 위해 MPTCP는 앱이 보는 가상의 통짜 소켓 1개 아래에, 와이파이용 진짜 소켓(Subflow 1)과 LTE용 진짜 소켓(Subflow 2)을 숨겨두고, 이 두 개의 서브플로우로 데이터를 찢어 보낸 뒤 목적지에서 다시 순서대로 조립하는 고도의 스케줄링을 수행한다.

Ⅰ. 개요 및 필요성 (Context & Necessity)

  • 개념: 단일 전송 계층 연결(TCP Connection) 내에서 다수의 물리적/논리적 경로(Path)를 동시에 사용하여 데이터를 분산 전송하는 IETF 표준 프로토콜 확장 (RFC 6824).

  • 필요성: 요즘 스마트폰은 와이파이 안테나와 5G 안테나를 동시에 켜고 있다. 그런데 일반 TCP는 이 두 개 중 하나만 선택해서 쓴다. (와이파이로 영화를 받으면 5G는 놀고 있다). "아니, 와이파이가 1Gbps고 5G가 1Gbps면, 두 개를 동시에 써서 2Gbps로 받으면 안 돼? 그리고 와이파이 끊길 때마다 넷플릭스 영상 멈추는 거 짜증 나는데, 5G가 백업으로 스무스하게 이어받게 할 수 없나?" 이런 스마트폰 유저들의 간절한 염원이 MPTCP를 스마트폰 OS(iOS, Android)의 기본 탑재 기술로 만들었다.

  • 💡 비유: MPTCP는 **"듀얼 배송 시스템"**과 같습니다.

    • 기존 TCP: 오토바이 1대만 써서 피자 10판을 배달합니다. 오토바이가 고장 나면 배달은 완전히 망합니다.
    • MPTCP: 오토바이(와이파이)와 트럭(5G) 2대를 동시에 부릅니다. 피자 10판 중 5판은 오토바이에, 5판은 트럭에 나눠 싣습니다(서브플로우). 배달 속도가 2배로 빨라집니다. 만약 오토바이가 고장 나도 트럭에 남은 5판을 몰아 실으면 되니까 배달이 절대 취소(세션 끊김)되지 않습니다.

📢 섹션 요약 비유: MPTCP는 **"양손잡이의 서류 작성"**입니다. 한 손(단일 경로)으로만 글씨를 쓰다가 손에 쥐가 나면 펜을 놓아야 했던 과거와 달리, 양손(다중 경로)에 펜을 쥐고 글씨를 써서 속도도 2배로 올리고 한쪽 손을 다쳐도 남은 손으로 멈춤 없이 글을 써 내려가는 궁극의 멀티태스킹입니다.


Ⅱ. MPTCP의 3단계 동작 원리 (Deep Dive)

MPTCP는 기존의 낡은 방화벽이나 멍청한 라우터들을 속이기 위해, 겉보기엔 완벽한 일반 TCP 패킷인 척 위장한다.

1. 첫 번째 길 뚫기 (Primary Subflow)

통신을 시작할 때 스마트폰은 구글 서버에 똑같이 3-Way Handshake를 건다. 단, SYN 패킷의 빈칸(Option)에 MP_CAPABLE 이라는 비밀 암호를 적어 보낸다.

  • 스마트폰: "나 와이파이(IP: 192.168.0.5)로 통신 건다! 덧붙여서 나 MPTCP 할 줄 알아! (MP_CAPABLE)"
  • 구글 서버: "오 나도 MPTCP 할 줄 알아! 일단 와이파이 길(Subflow 1)로 통신 시작하자!"

2. 두 번째 길 뚫기 (Secondary Subflow)

이제 스마트폰이 숨겨뒀던 5G 안테나(IP: 211.x.x.x)를 켠다.

  • 스마트폰은 5G IP를 출발지로 삼아 구글 서버에 또 다른 3-Way Handshake를 건다.
  • 이때 옵션 칸에는 MP_CAPABLE이 아니라 MP_JOIN 이라고 적어 보낸다.
  • 스마트폰: "구글아, 나 아까 와이파이로 접속했던 그놈인데, 이번엔 5G 길(Subflow 2)로 들어왔어. 이 길도 아까 그 세션에 합류(Join)시켜 줘!"
  • 구글 서버: "오케이 확인! 이제 너랑 나 사이에는 길이 2개(와이파이, 5G) 뚫렸다!"

3. 데이터 분산 스케줄링과 조립 (Data Sequence Number)

이제 구글은 1GB짜리 영화를 스마트폰에 쏜다.

  • 구글은 1GB를 잘게 쪼개서, 500MB는 와이파이 길(Subflow 1)로, 나머지 500MB는 5G 길(Subflow 2)로 동시에 쏟아붓는다 (대역폭 결합).
  • 스마트폰은 양쪽 길로 미친 듯이 들어오는 조각들을 받는다.
  • 조립의 마법: 1번 길로 온 조각과 2번 길로 온 조각의 순서가 섞이면 안 된다. 그래서 MPTCP는 기존 TCP의 Seq Number 위에 **DSN (Data Sequence Number)**라는 왕 대가리 번호표를 옵션 칸에 하나 더 붙여서 날린다. 이 DSN 덕분에 스마트폰은 두 길로 들어온 조각들을 100% 완벽하게 원상 복구(Reassembly)해 낸다.
 ┌─────────────────────────────────────────────────────────────┐
 │                MPTCP의 무단절 핸드오버 (Handover) 시나리오        │
 ├─────────────────────────────────────────────────────────────┤
 │                                                             │
 │   [ 내 스마트폰 ]                                 [ 넷플릭스 서버 ] │
 │                                                             │
 │   (Subflow 1: Wi-Fi) ════════(1Gbps 쌩쌩)════════▶        │
 │   (Subflow 2: 5G/LTE) ──────(대기 중 or 보조)──────▶        │
 │                                                             │
 │   * 상황: 내가 집을 나서서 엘리베이터를 탔다! (Wi-Fi 툭 끊김!!)        │
 │                                                             │
 │   * 일반 TCP: Wi-Fi 세션 터짐 ──▶ 넷플릭스 영상 멈춤 (로딩 뱅글뱅글)   │
 │                                                             │
 │   * MPTCP의 기적:                                            │
 │     "Wi-Fi 터졌어? 괜찮아! 이미 5G 터널(Subflow 2)이 묶여있잖아!   │
 │      넷플릭스야! 5G 터널 쪽으로 데이터 100% 다 돌려 쏴!!"             │
 │                                                             │
 │   ▶ 결과: 사용자는 화면의 끊김을 0.001초도 느끼지 못한 채 영상을 본다.│
 └─────────────────────────────────────────────────────────────┘

📢 섹션 요약 비유: MPTCP는 물탱크(서버)에 꽂힌 **"투 갈래 호스"**입니다. 원래는 굵은 정수기 호스(와이파이) 하나만 썼는데, 그 옆에 얇은 수도 호스(5G)를 하나 더 꽂아 물통을 두 배 빨리 채웁니다. 그러다 정수기 호스가 꼬여서 막혀도, 남은 수도 호스에서 계속 물이 나오기 때문에 물통 채우기(다운로드) 작업이 중단되는 일은 절대 없습니다.