네트워크 프로토콜: TCP vs UDP (feat 면접 준비)

2025. 6. 25. 18:46·Deep Dives/CS Fundamentals

네트워크 프로토콜: TCP vs UDP

TCP (Transmission Control Protocol)

  • 연결 지향적(Connection-Oriented) 프로토콜
  • 데이터 전송 신뢰성이 높음
  • 순서가 보장됨
  • 흐름 제어, 혼잡 제어 가능
  • 예시 사용처: 웹 브라우징(HTTP/HTTPS), 이메일(SMTP), 파일 전송(FTP)

UDP (User Datagram Protocol)

  • 비연결형(Connectionless) 프로토콜
  • 데이터 전송 속도가 빠름
  • 신뢰성 보장하지 않음 (패킷 손실 가능)
  • 순서가 보장되지 않음
  • 빠르고 간단한 통신이 필요한 서비스에 적합
  • 예시 사용처: 스트리밍 서비스, 온라인 게임, VoIP(음성 통화)

주요 차이점 요약

특징 TCP UDP
연결 방식 연결 지향형 비연결형
신뢰성 높음 (데이터 손실 없음) 낮음 (데이터 손실 가능)
속도 느림 (오버헤드 많음) 빠름 (오버헤드 적음)
순서 보장 보장됨 보장되지 않음
적합 서비스 웹 브라우징, 이메일, 파일 전송 스트리밍, 게임, VoIP

면접 기본 질문

Q1: UDP와 TCP의 차이점에 대해 설명해보세요.

답변 예시:
TCP(Transmission Control Protocol)는 연결 지향적 프로토콜로, 신뢰성 있는 데이터 전송을 보장합니다. 데이터를 보내기 전에 연결 설정 과정인 3-way handshake를 거치며, 전송 중에 데이터가 손상되거나 유실되면 재전송합니다. 순서대로 데이터가 도착하도록 보장합니다.

반면, UDP(User Datagram Protocol)는 비연결형 프로토콜로, 신뢰성을 보장하지 않습니다. 데이터를 보내기 전 별도의 연결 설정이 필요 없고, 빠른 속도를 가지며 지연이 적습니다. 따라서 실시간 통신처럼 빠른 응답이 중요한 상황에서 자주 사용됩니다.


꼬리 질문

Q2: TCP의 신뢰성은 어떻게 보장되나요?

답변 예시:
TCP는 다음과 같은 방법으로 신뢰성을 보장합니다.

  1. 3-way handshake를 통한 연결 설정
    • 통신 상대방과 연결을 확립하여 서로 데이터를 보낼 준비가 되었는지 확인합니다.
  2. ACK(확인 응답) 및 재전송 메커니즘
    • 전송된 데이터가 상대에게 제대로 도착했는지 ACK를 통해 확인합니다. ACK를 받지 못하면 재전송합니다.
  3. 순서 제어(sequence number)
    • 데이터가 전송되는 순서를 유지하여, 상대가 데이터를 받은 순서를 정확히 알 수 있도록 합니다.

Q3: UDP는 신뢰성을 보장하지 않는데 어떤 상황에서 사용되나요? 예를 들어보세요.

답변 예시:
UDP는 빠른 속도와 낮은 지연이 중요한 서비스에서 주로 사용됩니다. 예를 들어:

  • 실시간 스트리밍(화상 통화, 영상 스트리밍): 일부 데이터가 유실되어도 실시간으로 빠르게 전달하는 것이 중요합니다.
  • 온라인 게임: 지연 시간이 중요한 환경에서 즉시 업데이트가 필요합니다.
  • DNS(Domain Name System): 작은 데이터를 빠르게 전달하는 것이 우선인 서비스입니다.

Q4: UDP가 데이터를 보낼 때 손실된 데이터는 어떻게 처리하나요?

답변 예시:
UDP는 기본적으로 데이터 손실을 처리하지 않습니다. 만약 손실된 데이터에 대한 처리가 필요하면 애플리케이션 계층에서 이를 직접 구현해야 합니다. 예를 들어, 데이터가 손실된 경우를 대비하여 재전송이나 오류 처리를 직접 프로그램 코드에서 구현해야 합니다.


Q5: TCP의 3-way handshake 과정에 대해 간단히 설명해보세요.

답변 예시:
TCP의 3-way handshake는 다음 세 단계로 구성됩니다.

  1. SYN(Synchronize):
    클라이언트가 서버에게 연결 요청(SYN)을 보냅니다.
  2. SYN-ACK(Synchronize-Acknowledgement):
    서버는 클라이언트의 SYN 요청에 대한 응답으로 SYN과 ACK를 함께 보냅니다.
  3. ACK(Acknowledgement):
    클라이언트가 서버의 SYN-ACK에 응답으로 ACK를 보냅니다. 이로써 연결이 성립됩니다.

난이도 있는 꼬리 질문

Q6: TCP의 혼잡 제어(Congestion Control)는 무엇이며, 왜 필요할까요?

답변 예시:
혼잡 제어는 네트워크 내 트래픽 과부하를 막기 위한 TCP의 메커니즘으로, 네트워크가 데이터를 처리할 수 있는 용량 이상으로 전송하여 병목 현상이 발생하는 것을 방지합니다. 혼잡이 발생하면 네트워크 전송 효율이 떨어지고 패킷 손실률이 높아지므로 이를 예방하기 위해 TCP는 전송률을 조정합니다. 대표적인 혼잡 제어 알고리즘으로는 Slow Start, Congestion Avoidance, Fast Retransmit 등이 있습니다.


Q7: UDP에도 혼잡 제어가 존재하나요? 없다면 어떻게 처리해야 할까요?

답변 예시:
UDP 자체는 혼잡 제어 기능을 제공하지 않습니다. 따라서 UDP를 사용하는 서비스는 필요하다면 애플리케이션 계층에서 직접 혼잡을 관리하거나, 전송 속도를 제어하는 로직을 구현해야 합니다. 예를 들어, 실시간 스트리밍 서비스는 네트워크 상태를 주기적으로 모니터링하며 스트리밍 품질을 조정하는 방식으로 혼잡을 관리합니다.

이후에도 이렇게 면접관련 질문들을 정리 할 계획이다 ! 파이팅

'Deep Dives > CS Fundamentals' 카테고리의 다른 글

가상 메모리(Virtual Memory)  (1) 2025.06.06
레이스 컨디션 동기화  (2) 2025.06.05
레이스 컨디션 데드락  (3) 2025.06.02
컨텍스트 스위칭  (3) 2025.06.01
프로세스와 스레드  (0) 2025.05.31
'Deep Dives/CS Fundamentals' 카테고리의 다른 글
  • 가상 메모리(Virtual Memory)
  • 레이스 컨디션 동기화
  • 레이스 컨디션 데드락
  • 컨텍스트 스위칭
Jcob.moon
Jcob.moon
반가워요~ 하루하루 꾸준히 코딩 작성하는 곳입니다 !!
  • Jcob.moon
    Pixelated Thoughts
    Jcob.moon
  • 전체
    오늘
    어제
    • HelloWorld (174) N
      • Daily Logs (123) N
        • TIL (Today I Learned) (64) N
        • Algorithm Practice (55)
        • Dev Book Notes (4)
      • Deep Dives (36)
        • 문제 해결 (Troubleshooting) (3)
        • CS Fundamentals (22)
        • Career Prep (4)
        • Technical Notes (7)
      • Project Log (7)
      • Any (3)
      • Cooperation (4)
        • Github (2)
        • Conventions (1)
        • Git (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
Jcob.moon
네트워크 프로토콜: TCP vs UDP (feat 면접 준비)
상단으로

티스토리툴바