[CS / Network] TCP vs UDP

문승연·2024년 1월 12일
0

Computer Science

목록 보기
2/2

최근 기술 면접을 보러 간 회사에서 TCP 통신과 UDP 통신의 차이점에 대해서 설명해주세요라는 질문을 받았는데 순간 말문이 턱 막혔다.

생각해보니까 안드로이드 개발자라고 안드로이드나 객체지향 프로그래밍 쪽 공부만 하다보니 다른 CS 지식에 소홀했다는 생각이 들었다.

게다가 학부생 시절에도 네트워크 쪽은 워낙 좋아하지 않았어서... 특히 약한 부분이었는데 허를 제대로 찔렸다는 느낌이었다.

다행히 다른 질문에는 잘 대답해서 면접은 통과했지만 공부는 필요하다고 느꼈다.

1. OSI 7계층


TCP, UDP 이야기에 앞서 네트워크 통신 과정에 대한 이해가 필요하다. OSI 7계층 모델은 바로 이 네트워크 통신 과정을 총 7개의 계츠응로 구분한 산업 표준 모델이다.

왜 계층으로 나눌까?

  • 통신이 일어나는 과정을 단계별로 알 수 있고, 특정한 곳에 이상이 생기면 그 단계만 수정할 수 있기 때문이다.

OSI 7계층은 각각 밑에서부터 순서대로 다음과 같이 구성되어있다.
1. 물리 계층 (Physical Layer): 데이터를 전기적인 신호로 변환해서 주고받는 기능을 담당
2. 링크 계층 (Link Layer): 물리 계층으로 송수신되는 정보를 관리하여 안전하게 전달되도록 도와주는 역할
3. 네트워크 계층 (Network Layer): 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능 담당
4. 전송 계층 (Transport Layer): TCP와 UDP 프로토콜을 통해 통신 활성화. 포트를 개방하고 프로그램들이 전송할 수 있도록 제공
5. 세션 계층 (Session Layer): 데이터가 통신하기 위한 논리적 연결 담당. TCP/IP 세션을 만들고 없애는 책임
6. 표현 계층 (Presentation Layer): 데이터 표현에 대한 독립성 제공 및 암호화 역할 담당
7. 응용 계층 (Application Layer): 통신의 최종 목적지. 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행. 사용자 인터페이스, 전자우편, 데이터베이스 관리 등의 서비스 제공.

2. TCP/IP 모델

위의 OSI 7계층 모델은 어디까지나 참조 모델일뿐 실제 인터넷 프로토콜은 이 구조를 완전히 따르지는 않는다. 인터넷 프로토콜 스택(Internet Protocol Stack)은 현재 대부분 TCP/IP를 따른다.

TCP/IP는 인터넷 프로토콜 중 가장 중요한 역할을 하는 TCPIP의 합성어로 데이터의 흐름 관리, 정확성 확인, 패킷의 목적지 보장을 담당한다. 데이터의 정확성 확인은 TCP가, 패킷을 목적지까지 전송하는 일은 IP가 담당한다.

  • TCP/IP 모델은 위 이미지처럼 OSI 7계층과 다르게 4계층으로 구성되어있다.
  • OSI 모델의 응용, 표현, 세션 계층의 구현은 TCP/IP 모델에서 응용 계층 안에 다 이루어진다.

3. TCP vs UDP

TCP (Transmission Control Protocol), UDP (User Datagram Protocol). 둘 모두 TCP/IP 모델의 전송계층에서 사용되는 프로토콜의 한 종류이다. 전송계층은 IP애 의해 전달되는 패킷의 오류를 검사하고 재전송 요구 등의 제어를 담당하는 계층이다.

따라서 TCP와 UDP의 차이점은 IP에 의해 패킷을 전달하고 이 과정에서 오류 검사 및 재전송 등을 하는 방법의 차이점과 같다.

간단하게 요약하자면 TCP는 신뢰성, 연결지향적이고 UDP는 비신뢰성, 비연결성을 지향한다.

이는 두 프로토콜의 데이터 송신 방법의 차이를 비교한 그림으로 이해할 수 있다.

TCP는 데이터(패킷)의 전송 과정의 신뢰성을 보장하기 위해 수신자에게 수신 가능여부를 확인하고 송신한 후에는 정상 수신 여부를 계속 확인한다. (흐름제어 / 혼잡제어)
반면 UDP는 수신자의 상태에 상관없이 일방적으로 데이터를 송신한다.

따라서 신뢰성이 요구되는 애플리케이션에서는 TCP를 사용하고 간단한 데이터를 빠른 속도로 전송하고자 하는 애플리케이션에서는 UDP를 사용한다.

4. 정리

TCPUDP
연결지향형 프로토콜비 연결지향형 프로토콜
바이트 스트림을 통한 연결메세지 스트림을 통한 연결
혼잡제어, 흐름제어혼잡제어와 흐름제어 지원 X
순서 보장, 상대적으로 느림순서 보장되지 않음, 상대적으로 빠름
신뢰성 있는 데이터 전송 - 안정적데이터 전송 보장 X
세그먼트 TCP 패킷데이터그램 UDP 패킷
HTTP, Email, File transfer에서 사용DNS, Broadcasting (도메인, 실시간 동영상 서비스에서 사용)

출처
1. "데이터가 전달되는 원리" OSI 7계층 모델과 TCP/IP 모델
2. TCP와 UDP 차이를 자세히 알아보자
3. OSI 7계층
4. TCP/IP (흐름제어/혼잡제어)
5. UDP
6. [Network] TCP 연결과정에 대해 알아보자

profile
"비몽(Bemong)"이라는 앱을 개발 및 운영 중인 안드로이드 개발자입니다.

0개의 댓글