관리 메뉴

꾸준히 합시다

TCP, UDP 본문

컴퓨터공학 기초

TCP, UDP

tturbo0824 2021. 12. 7. 16:34

TCP와 UDP 두 프로토콜 모두 패킷을 한 컴퓨터에서 다른 컴퓨터로 전달해주는 IP 프로토콜을 기반으로 구현되었다. 포트 번호를 이용하여 주소를 지정하는 것과 데이터 오류 검사를 위한 체크섬이 존재한다는 두 가지 공통점을 가지고 있지만 신뢰성과 신속성면에서는 각기 다른 특징을 가지고 있다.

 

TCP (Transmission Control Protocol)

  • 주로 IP와 함께 사용되는데, IP가 데이터의 배달 처리를 관장한다면 TCP는 패킷을 추적 및 관리한다. 
  • 신뢰성 있는 데이터 전송을 지원하는 연결 지향형 프로토콜이다.
  • 패킷을 전송하는 데 있어 논리적 경로를 배정하기 위한 가상 회선 방식을 제공한다.
  • 사전에 3-Way Handshake과정을 통해 연결을 설정하고 통신을 시작한다. 
  • 4-Way Handshake 과정을 통해 연결을 해제한다.
  • 흐름 제어, 혼잡 제어, 오류 제어를 통해 신뢰성을 보장한다.
  • 데이터의 전송 순서를 보장하며 수신 여부를 확인할 수 있다. 
  • TCP를 사용하는 예로는 대부분의 웹 HTTP 통신, 이메일, 파일 전송 등이 있다.

 

 

TCP는 데이터를 메시지 형태로 보내기 위해 IP와 함께 사용되는 프로토콜이다. IP가 실제로 데이터의 배달 처리를 관장하는 동안 TCP는 데이터 패킷을 추적 관리한다. TCP는 연결 지향 프로토콜로서 메시지들이 각단의 응용 프로그램들에 의해 교환되는 시간 동안 연결을 확립하고 유지시킨다. 이러한 연결을 위해 TCP에서는 가상 회선 방식이 사용되는데 각각의 기기마다 논리적 연결을 수립하는 것, 이를 가상 회선이라고 한다. 가상 회선 방식에선 패킷이 도착하는 순서와 보낸 순서가 같으며 각 패킷에는 가상 회선을 식별하는 번호가 포함되고 패킷의 전송이 끝나면 연결을 종료하는 과정을 거쳐야 한다. 이 연결 수립과 종료 과정을 Handshaking이라고 말한다.

 

3-Way Handshake

TCP를 통한 클라이언트와 서버 간 연결은 3-Way Handshake 과정으로 이루어진다.

 

연결이 수립되기에 앞서 클라이언트는 서버에 접속을 요청하는 SYN 패킷을 보내고, 이 요청을 받은 서버는 클라이언트에 요청을 수락한다는 ACK와 SYN가 설정된 패킷을 설정하고 클라이언트가 다시 ACK로 응답하기를 기다린다. 마지막으로 클라이언트가 서버에게 ACK를 보내면 비로소 연결이 성립된다. 이처럼 클라이언트와 서버 간 확인 메시지를 보내며 데이터를 주고받음으로써 통신의 신뢰성을 높일 수 있고 데이터의 전달을 보증한다.

 

4-Way Handshake

3-Way Handshake가 TCP의 연결을 초기화할 때 사용한다면, 4-Way Handshake는 세션을 종료하기 위해 수행되는 절차이다. 기존에 성립해두었던 논리적인 접속 상태를 해제하기 위한 과정이며 이 과정을 통해 서버-클라이언트 연결을 위해 사용되었던 리소스의 정리가 일어난다.

 

UDP (User datagram protocol)

  • 비연결형 프로토콜로 발신자가 일방적으로 데이터를 발신한다.
  • 정보를 주고받음을 확인하는 신호 절차를 거치지 않기 때문에 데이터 전달이 보증되지 않는다.
  • UDP 헤더의 체크섬 필드를 통해 최소한의 오류만 검출한다.
  • TCP에 비해 낮은 신뢰도를 가지고 있다.
  • 하지만 별도의 연결 과정이 없는 만큼 TCP에 비해 상대적으로 속도가 빠르다는 장점이 있다. 

 

UDP는 비연결형 프로토콜로 TCP와 마찬가지로 한 컴퓨터에서 다른 컴퓨터로 데이터그램이라고 불리는 실제 데이터 단위를 받기 위해 IP를 사용한다. 하지만 TCP와는 달리 정보를 주고받음을 확인하는 신호 절차를 거치지 않기 때문에 데이터 전달이 보증되지 않는다. 별도의 연결 절차를 거치지 않고 발신자가 일방적으로 데이터를 발신하기 때문에 신뢰성이 보장되지 않는다는 단점이 있지만 추가적인 연결 과정이 없는 만큼 TCP에 비해 속도가 빠르다는 장점이 있다. 

 

UDP는 IP 계층에서 제공되지 않는 두 개의 서비스를 제공하는데 하나는 다른 사용자 요청을 구분하기 위한 포트 번호와 도착한 데이터의 손상여부를 확인하기 위한 체크섬 기능이다.

 

 

정리하자면 TCP와 UDP 두 프로토콜 모두 한 컴퓨터에서 다른 컴퓨터로 데이터를 전달해주는 서비스를 제공하지만 TCP가 데이터의 신뢰성에 초점을 맞춘 방식이라면 UDP는 데이터 전송 속도에 초점 맞춘 방식으로 구현되었다는 차이점을 가지고 있다.

Comments