티스토리 뷰

Network

[Network] TCP와 UDP

메성 2020. 5. 11. 00:31
반응형

네트워크 계층들 중 전송 계층에서 사용하는 프로토콜에 대해서 알아보자.

전송계층은 송신자와 수신자를 연결하는 통신서비스를 제공하는 계층으로서 쉽게 말하면 데이터의 전달을 담당하는 것이다.

그리고 데이터를 보내기 위해 사용하는 프로토콜이 있는데, 해당 프로토콜이 바로 UDP와 TCP이다.

TCP와 UDP : 데이터를 전송하기 위해 사용하는 프로토콜

 

 

TCP

인터넷 상에서 데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜

일반적으로 TCP와 IP를 함께 사용하는데, IP가 데이터의 배달을 처리한다면 TCP는 패킷을 추적 및 관리하는 역할을 한다.

  • 패킷 : 인터넷 내에서 데이터를 보내기 위한 경로배정(라우팅)을 효율적으로 하기 위해 데이터를 여러 개의 조각들로 나누어 전송하는데, 이 조각을 패킷이라고 한다. TCP에서는 해당 패킷에 번호를 부여하여 수신지에서 올바르게 패킷을 조립하여 사용할 수 있도록 제공한다.

전화라는 예와 함꼐 TCP 통신을 살펴보자.

  • TCP 통신은 전화를 거는 것처럼 TCP 통신을 하기 위해서는 상대방의 IP 주소와 Port를 알고 있어야 연결을 요청할 수 있다. 그리고 전화를 받아주지 않으면 계속 대기하듯이, 서버가 응답하지 않으면 계속적으로 요청을 하게 된다. 그럼 이제, 전화를 받았다고 생각했을 때, 전화는 양방향 통화가 가능하다. 즉, TCP 통신에서도 계속적으로 소켓을 통해서 데이터를 주고 받을 수 있다는 것이다. 또한, 전화를 할 때 상대방의 목소리가 안들릴 때 우리는 '여보세요?'라고 다시 한번 묻는 경우가 있듯이, TCP 프로토콜도 자료를 받지 못했다면 다시 요청하는 메커니즘을 가지고 있다.

TCP는 발신지와 수신지를 연결하여 패킷을 전송하기 위한 논리적 경로를 배정한다. 이 말은 TCP가 가상 회선 방식을 제공한다는 것이다. 또한, 목적지와 수신지를 확실히 하여 전송을 보장하기 위해 세션을 수립하는 3-way handshake 과정을 가지고 있다.

이런 특징을 갖는 것은 바로, TCP는 연결형 서비스로 신뢰성을 보장하기 때문이다.

TCP의 특징을 살펴보자.

  • 연결형 서비스로 가상 회선 방식을 제공한다.
  • 3-way handshake 과정을 통해 연결을 설정하고 4-way handshake를 통해 해제한다.
  • 흐름 제어 및 혼잡 제어를 한다.
    • 흐름 제어 : 데이터를 송수신하는 곳의 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지하는 것이다.
    • 혼잡 제어 : 네트워크 내의 패킷 수가 넘치제 증가하지 않도록 방지하는 것이다.
  • 높을 신뢰성을 보장한다.
  • CPU를 사용하기 때문에 UDP보다 속도가 느리다.
  • 전이중, 점대점 방식을 사용한다.

TCP 서버는 서버와 클라이언트의 1대1로 연결이 되며, 전송 데이터의 크기는 무제한이다. 또한, 패킷에 대한 응답을 진행해야 하기 때문에 시간이 지연되고 CPU를 많이 소모하여 성능이 낮은 편이다. TCP는 데이터 전송 중 데이터가 손실되며 재전송을 하는 즉, 신뢰성이 높은 프로토콜로서 Streaming 서비스에 불리한 특징을 가지고 있다.

TCP는 연속성보다 신뢰성있는 전송이 중요할 때에 사용하는 프로토콜이다.

 

 

UDP

데이터를 데이터그램 단위로 처리하는 프로토콜

데이터그램은 독립적인 관계를 지닌 패킷이라는 뜻을 가지고 있다.

이번에는 UDP를 편지라는 예로 살펴보자.

  • 우리는 예전에 편지를 쓸 때, 편지지에 데이터를 기록하고, 편지봉투에 나의 주소와 상대방의 주소를 입력한 후 편지를 보내버린다. 그 후 우리는 편지가 도착했는지 안 했는지는 답장을 받아야만 알 수 있었다. UDP도 같은 방식으로 볼 수 있다. UDP는 먼저 데이터를 생성한 후 상대방의 주소와 나의 주소를 기록하고 보내버리면 해당 데이터를 받았는지 확인할 받ㅇ법이 없다. 즉, UDP의 통신 자체는 상대방과 연결되어 있는 개념이 아니다.
  • 편지를 받는 사람 입장에서는 편지가 왔는지 안 왔는지 확인하는 방법은 편지함을 여는 것 뿐이다. 마찬가지로 UDP에서도 송신지에서 데이터를 보냈다 하더라도 UDP 소켓을 통해 자신의 포트를 열어보기 전까지는 데이터가 왔는지 안 왔는지 알 수가 없다. 즉, 자신의 로컬 머신에 소켓을 개설하고 데이터가 들어왔는지 안 들어왔는지 확인하는 매커니즘이 된다.

UDP는 상대방과 연결되어 있지 않은 비연결형 서비스이기 때문에 연결을 설정하고 해제하는 과정이 존재하지 않는다. 서로 다른 경로로 독립적으로 처리하기 때문에, 패킷에 번호를 부여하여 재조립하거나 흐름 제어나 혼잡 제어 같은 기능을 처리하지 않아 TCP 보다 속도가 빠르며 네트워크 부하가 적다는 장점이 있다. 하지만, 데이터의 전송을 보장하지는 못한다.

UDP의 특징을 살펴보자.

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

UDP 서버는 UDP의 연결 자체가 없어 서버 소켓과 클라이언트 소켓의 구분이 없고, 소켓 대신 IP를 기반으로 데이터를 전송한다. 서버와 클라이언트는 1대1 뿐만 아니라 1대N, N대M 등으로 연결될 수 있다. 데이터그램 단위로 전송되며 크기는 65535바이트로서, 기준 바이트의 크기가 초과되면 잘라서 보낸다. 흐름제어가 따로 없어 패킷이 정상적으로 전송되었는지는 몰라 파일 전송과 같은 신뢰성이 필요한 서비스보다는 성능이 중요시 되는 경우에 사용된다.

UDP는 신뢰성 보다는 연속성이 중요한 서비스에 사용되는 프로토콜이다. (예를들면 실시간 서비스 - Streaming)

 

 

 

 

[TCP/UDP] TCP와 UDP의 특징과 차이

오늘은 네트워크의 계층들 중 전송 계층에서 사용하는 프로토콜에 대해서 알아보려고 합니다. 전송계층은 송신자와 수신자를 연결하는 통신서비스를 제공하는 계층으로, 쉽게 말해 데이터의 ��

mangkyu.tistory.com

 

 

[정보] TCP 통신과 UDP 통신 차이

소켓통신에는 기본적으로 2가지의 통신방법이 있습니다. 신뢰성 프로토콜인 TCP(Transfer Control Protocol)와 비신뢰성 프로토콜인 UDP(User Datagram Protocol)가 그것입니다. ◈ TCP 통신의 개념 TCP(Transmiss..

roazium.tistory.com

 

반응형

'Network' 카테고리의 다른 글

[Network] DNS 과정  (0) 2020.06.08
[Network] 3-way Handshake & 4-way Handshake  (0) 2020.05.11
[Network] SSL 인증서  (0) 2020.05.10
[Network] HTTP 1.1 vs HTTP 2.0  (0) 2020.05.03
[Network] SSL(대칭키와 공개키)  (0) 2020.04.28
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함