학습 공간 개념 · 판단 · 실험

Fanta Lab

질문 138 · 실전 면접 답변

TCP는 구체적으로 무엇을 신뢰성 있게 전달하며, 반대로 무엇까지는 보장하지 않나요?

이렇게 답해 보세요 (핵심 답변)

TCP는 순서 번호, 확인 응답(ACK), 재전송, 중복 제거를 통해 보낸 순서대로 바이트 스트림을 전달하고, 흐름 제어와 혼잡 제어로 수신자와 네트워크 부담을 조절합니다. 하지만 바이트 스트림에는 메시지 경계가 없으며, 연결이 영원히 유지된다거나 서버의 비즈니스 로직이 정확히 한 번만 실행되었다는 사실까지는 보장하지 않습니다. 따라서 메시지 경계 구분(프레이밍)과 중복 요청 방지는 HTTP나 애플리케이션 계층에서 직접 설계해야 합니다.

함께 설명하면 좋은 이유 (꼬리질문 대비)

  1. 송신 측에서 send()를 한 번 호출했더라도 수신 측에서는 여러 번의 read()로 나뉘어 읽히거나 여러 메시지가 합쳐져 읽힐 수 있습니다.
  2. 운영체제 커널이 TCP ACK를 보낸 것은 수신 버퍼에 바이트가 도착했다는 뜻일 뿐, 서버 애플리케이션이 DB 저장이나 결제를 완료했다는 확인이 아닙니다.

면접에서 자주 하는 실수

TCP가 신뢰성 있는 프로토콜이라는 말을 '네트워크가 끊겨도 주문이나 결제가 유실·중복 없이 자동으로 정확히 한 번 처리된다'는 뜻으로 확대 해석하면 안 됩니다.

원리와 예제까지 읽기

공식 참고 자료

질문 목록 출처 ↗ · 원본 138번을 바탕으로 질문과 답변을 새로 정리했습니다.

← 네트워크