[면접 대비/네트워크] TCP와 UDP

AmeriKano·2023년 10월 22일
0

시작하며

부트캠프를 수료하고 슬슬 지원하던 중, 감사하게도 생각보다 빨리 면접을 보게 됐다. 잠시 소홀하고 있던 CS 지식을 다시 공부하면서 간단하게 정리해 보고, 예상 질문도 한번 생각해 봤다.
우선, 가장 취약하다고 생각하는 네트워크에서부터(대학에서 전공으로 듣지 못했었다) 정리해볼까 한다.

TCP와 UDP

TCP와 UDP는 전송 계층(OSI 7계층 중 4계층)에서 사용하는 대표적인 프로토콜이다.

TCP

연결형 서비스를 지원하고 데이터의 신뢰성을 보장한다. 전반적으로 다음과 같은 특징이 있다.

  • 송신부와 수신부의 연결을 확인하는 연결형 서비스다.
  • 패킷 교환 방식은 패킷이 전달되는 회선이 정해져 있는 가상 회선 방식이다.
  • 패킷의 전송 순서가 보장된다.
  • 패킷의 수신 여부를 확인한다.
  • 송신부와 수신부는 1:1 통신을 한다.
  • 데이터 손실이 없음을 보장하므로 신뢰성이 높다.
  • 데이터의 송수신 속도가 느리다.

이외에, TCP는 연결형 서비스를 지원하기 위해 송신부와 수신부를 연결하는 과정을 거치는데 연결을 시작할 때(세션을 수립할 때)에는 3-way handshaking(핸드셰이킹, 요청과 응답을 총 3번 주고받음)을, 종료할 때에는 4-way handshaking을 한다.

TCP 제어 방법

TCP의 데이터 신뢰성을 보장하기 위한 제어 방법으로는 흐름 제어, 혼잡 제어, 오류 제어가 있다.

  • 흐름 제어 : 데이터 송신부와 수신부에서 데이터 처리 속도의 차이 때문에 생기는 데이터 손실을 방지하는 방법으로, 정지-대기슬라이딩 윈도우 방식이 있다.
  • 혼잡 제어 : 송신부의 데이터 전달 속도와 네트워크 속도 차이로 데이터 손실이 발생하는 것을 방지하기 위한 방법으로 AIMD, 느린 시작 방식이 있다.

    AIMD 는 합 증가 곱 감소 방식으로, 윈도우의 크기를 증가시킬 때에는 더하며 증가시키지만 데이터 손실이 발생하면 1/2 배와 같이 배수 단위로 줄이는 방식을 말한다.

  • 오류 제어 : 통신 중 데이터에 오류 또는 유실이 발생할 때 데이터의 신뢰성을 보장하기 위해 오류를 제어하는 방식으로, 정지-대기(수신 확인 메세지(ACK) 를 일정 시간 동안 받지 못해 타임아웃이 발생하면 해당 패킷을 다시 보내는 방식), GO-Back-N ARQ(송신부에서 연속적으로 데이터를 보냈는데 누락된 데이터가 있다면 송신부에서 해당 데이터부터 재전송하는 방식) 방식 등이 있다.

UDP

송신부와 수신부 간 연결을 지원하지 않고 데이터그램 형태의 통신을 지원한다. 따로 연결 과정 없이 패킷을 바로 송수신하게 되며, 신뢰성이 낮지만 속도가 빠르다는 장점이 있다. 전반적인 특징은 다음과 같다.

  • 송신부와 수신부의 연결이 보장되지 않는 비연결형 서비스다.
  • 패킷이 서로 다른 회선으로 교환될 수 있는 데이터그램 패킷 교환 방식이다.
  • 송신부에서 전달한 패킷 순서와 수신부에서 받은 패킷 순서가 다를 수 있다.
  • 패킷의 수신 여부를 확인하지 않는다.
  • 1:1, 1:N, N:N 통신 모두 가능하다.
  • 데이터의 신뢰성이 낮다.
  • 데이터의 전송 속도가 빠르다.

체크섬

UDP는 신뢰성이 낮지만, 최소한의 신뢰성을 보장하기 위해 checksum(체크섬) 방식으로 오류를 검출한다. 체크섬은 데이터의 무결성을 보장하는 간단한 방법으로, 체크섬을 만들기 위한 데이터를 모두 더한 뒤 오버플로되는 자릿수를 떼어 데이터에 다시 더한 후 1의 보수를 취해서 만든다. 이를 송신부에 넣어 수신부로 보내 수신부에서 송신부와 동일한 체크섬 값이 나오는지 확인하는 방식이다. 그러나 이 방법으로 100% 오류를 검출할 수 있는 것은 아니며, UDP의 체크섬은 선택 사항이므로 보내지 않을 수도 있다.

예상 질문

TCP 방식과 UDP 방식을 각각 사용할 수 있는 서비스는 어떤 것이 있을까요?

TCP 방식은 연결 과정이 필요하며, 순서가 보장되고 신뢰성이 높다. 그러므로 파일 전송(FTP) 등 보내는 내용의 신뢰성이 중요한 서비스에서 사용할 수 있다.
UDP 방식은 연결 과정이 필요 없고, TCP 방식에 비해 신뢰성을 확인하는 과정이 필요 없으므로 네트워크의 부하가 적고 속도가 빠르다. 그러므로 신뢰성보다는 데이터가 끊기지 않는 연속성을 더 중요하게 고려해야 하는 스트리밍(음악, 영상 등) 서비스에서 사용할 수 있다.

TCP와 UDP에서 패킷을 교환하는 방식에 대해 각각 설명하세요.

TCP 방식에서는 가상 회선 방식을 사용한다. 가상 회선 방식은 데이터를 주고받기 전에 패킷을 전송할 가상 회선 경로를 설정하여 모든 패킷을 하나의 경로로 전송한다. 이를 통해 패킷의 전송 순서를 보장할 수 있다.
UDP 방식에서는 데이터그램 방식을 사용한다. 데이터그램 방식은 패킷마다 최적의 경로로 전송되는 방식으로, 전송 속도가 더 빨라질 수 있지만 송신부의 패킷 순서와 수신부의 패킷 순서가 다를 수 있다.

profile
똑똑한 사람이 되게 해주세요

0개의 댓글