티스토리 뷰

면접대비

TCP와 UDP에 대해

빵파레2 2019. 9. 11. 16:20

TCP와 UDP


  • TCP와 UDP는 모두 네트워크의 계층들 중 전송계층에서 사용하는 프로토콜 이다.
  • 전송계층은 송신자와 수신자를 연결하는 통신서비스를 제공하는 계층으로, 쉽게 말해 데이터의 전달을 담당한다.

OSI 7계층과 TCP/IP 4계층

 

TCP/IP란?


  • TCP와 UDP에 대해서 알아보기 전에 먼저 TCP/IP에 대해 알아야 할 필요가 있음
  • 인터넷 표준 프로토콜로서 컴퓨터 간 데이터를 전송할 때 에러가 발생하지 않도록 알맞게 나누어 전송하고 이를 수신하여 다시 기존의 정보로 변환 하는 것을 약속해 놓은 것을 의미
  • 인터넷 프로토콜 중 가장 중요한 역할을 하는 TCP와 IP의 합성어로 데이터 흐름 제어, 정확성 확인, 패킷의 목적지 보장을 담당함
  • 데이터의 정확성 확인은 TCP가, 패킷을 목적지까지 전송하는 역할은 IP가 담당함
  • TCP/IP의 전송(Transport)계층은 IP에 의해 전달되는 패킷의 오류를 검사하고 재전송 요구 등의 제어를 담당하는 계층이다. (바로 이 전송계층에서 TCP와 UDP라는 두 종류의 프로토콜이 사용됨)

 

TCP (Transmission Control Protocol)


TCP란?

  • 인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜
  • TCP는 연결형 서비스를 지원하는 프로토콜로 인터넷 환경에서 기본으로 사용
  • TCP는 연결형 서비스로 신뢰성을 보장

특징

  • 데이터의 흐름 제어 및 혼잡 제어를 담당
  • 높은 신뢰성을 보장한다.
  • UDP보다 속도가 느리다.
  • 연결형 서비스로 가상 회선 방식을 제공한다. (발신지와 수신지를 연결하여 패킷을 전송하기 위한 논리적 경로를 배정한다)
  • 서버와 클라이언트는 1대1로 연결된다.
  • 패킷에 대한 응답을 해야하기 때문에(시간 지연, CPU 소모) 성능이 낮다.
  • Streaming 서비스에 불리하다.(손실된 경우 재전송 요청을 하므로)
  • 패킷을 추적하여 오류 발생 시 (패킷이 손실되거나 제대로 도착하지 않을 경우) 해당 패킷을 재전송한다.

Q) 패킷(Packet)이란?
- 인터넷 내에서 데이터를 전송하기 위한 경로배정(라우팅)을 효율적으로 하기 위해서 데이터를 여러 개의 조각들
  로 나누어 전송을 하는데 이때, 이 조각의 단위를 패킷이라고 한다.
Q) 흐름제어(Flow Control)와 혼잡제어(Congestion Control) 란?
- 흐름제어는 데이터를 송신하는 곳과 수신하는 곳의 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 
  방지하는 것이다.
  송신하는 곳에서 감당이 안되게 데이터를 빠르게 많이 보내면 수신하는 곳에서 문제가 발생 수 있기 때문에 필    요하다.
- 혼잡제어는 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지하는 것이다.
  만약 정보의 소통량이 과다하면 패킷을 조금만 전송하여 혼잡 붕괴 현상이 일어나는 것을 막을 수 있다.

 

 

전송방식

  1. 수신자의 통신 여부 확인 및 연결
  2. 수신자로부터 응답을 얻음
  3. 송신자의 데이터 전송
  4. 수신자가 데이터를 잘 전송 받았는지 확인
  5. 수신자로부터 데이터 전송 확인 메세지를 받음
  6. 수신자와의 연결을 종료

  • 시간이 오래걸리지만 수신자는 송신자가 보내는 모든 데이터를 다 수신 가능

 

UDP (User Datagram Protocol)


UDP란?

  • 데이터를 데이터그램 단위로 처리하는 프로토콜 (데이터그램은 독립적인 관계를 지니는 패킷을 의미)
  • TCP와 달리 비연결형 프로토콜이다.
  • 즉, 연결을 위해 할당되는 논리적인 경로가 없고, 그렇기 때문에 각각의 패킷은 다른 경로로 전송되고, 각각의 패킷은 독립적인 관계를 지닌다.

특징

  • 비연결형 서비스로 데이터그램 방식을 제공한다.
  • 정보를 주고 받을 때 정보를 보내거나 받는다는 신호절차를 거치지 않는다.
  • UDP헤더의 CheckSum 필드를 통해 최소한의 오류만 검출한다.
  • 신뢰성이 낮다.
  • TCP보다 속도가 빠르다.
  • 스트리밍 서비스 환경에 유리하다.

 

전송방식

  1. 송신자가 수신자에게 데이터 전송

  • 상대방이 데이터를 받았는지 안받았는지 확인하지 않기 때문에, 신뢰성이 없음
  • 빠른 데이터 전송에 용이
  • 신뢰성보다는 연속성이 중요한 서비스 (ex. 실시간 서비스)에 자주 사용됨

 

TCP와 UDP의 비교


 

참고자료


https://mangkyu.tistory.com/15?category=762469

https://madplay.github.io/post/network-tcp-udp-tcpip

'면접대비' 카테고리의 다른 글

프록시 서버에 대해  (0) 2019.09.18
Ajax에 대해  (0) 2019.09.14
프로세스와 스레드에 대해  (0) 2019.09.10
싱클톤 패턴에 대해  (0) 2019.09.09
REST API에 대해  (0) 2019.09.06