티스토리 뷰

1. 개념질문에 대한 정확한 답변

 

TCP, UDP는 네트워크 계층 중 전송 계층에서 사용하는 프로토콜이다.

 

2. 네트워크 계층이 뭐지 ? 전송 계층은 또 뭐지 ? 프로토콜은 뭐야 ?

위 답변은 정확하다. 하지만 만약 이때까지 네트워크를 몰랐던 사람한테 위 답변처럼 말하면 못 알아 들을 것이다. 그럼 네트워크 계층이 뭔지, 전송계층은 뭔지, 프로토콜이 뭔지 하나하나씩 파헤쳐보자.

 

2-1. 네트워크 계층

우리는 지금 인스타DM이나 카카오톡 등, 즉 메신저를 통해 10,751km 떨어진 미국에서 지내고 있는 친구와 이야기하듯 소통하고 있다. 이런 일을 가능하게 하는 것이 바로 네트워크 통신인데, 수많은 사람들이 동시에 쉴 틈 없이 계속해서 메세지를 주고 받기 위해선 아주아주아주 체계적이고 표준화 시켜야 한다. 보내고 받는 과정 속에 아주아주아주 체계적이고 표준화된 과정을 7단계로 나눈 것이 바로 네트워크 계층이다.

 

2-2. 전송계층

계층 구조의 네트워크 구성요소와 프로토콜 내에서 송신자와 수신자를 연결하는 통신 서비스를 제공한다. 쉽게 말해서 네트워크 계층 중 한 계층인데, 그 전 계층에선 메세지를 보내는 역할까지만 한다. "보내면 된거 아닌가 ?" 라고 생각할 수 있다.
만약 내가 상대방에게 "밥 줘"라는 메세지를 보낸다고 가정해보자. 보내는 과정에서 데이터가 깨지고 없어진다면 상대방은 내가 무슨 메세지를 보냈는지 알 수 없다. "줘" 만 읽은 상대방은 "줘? 뭘 주라는 거지?" 라고 당황할 수 밖에 없다. 그러면 데이터에 오류가 있는지, 없어진 건 없는지 확인할 필요가 있는데 그 역할을 하는 계층을 전송계층 이라고 부른다.

 

2-3. 프로토콜

이때까지 메세지를 전달하고 받기 위해선 아주아주아주 체계적이고 표준화 되어야 하고 오류가 없어야 한다. 라는 규칙들을 정의한 것을 프로토콜이라 한다.

 

3. 그래서 TCP, UDP가 뭐야 ?

전송계층에서 데이터에 오류가 있는지 없어진 데이터는 없는지 확인한다고 했다. 이 말은 즉, 목적지에 신뢰하는 데이터를 전달 해야한다는 말이다. 목적지에 신뢰하는 데이터 전달하기 위해 두가지 프로토콜이 있는데, 바로 TCP와 UDP이다.

 

3-1. UDP는 신뢰하는 데이터를 전달하지 않는데요 ?

맞다. UDP는 신뢰하는 데이터를 보내지 않아 에플리케이션에서 대신 처리를 해줘야 한다. 좀 더 자세한 설명은 나중에 하겠다.

 

4. TCP

TCP는 네트워크 계층 중 전송 계층에서 사용하는 프로토콜로서, 장치들 사이에 논리적인 접속을 성립(establish)하기 위하여 연결을 설정하여  신뢰성을 보장하는 연결형 서비스이다. TCP는 네트워크에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟 (데이터, 메세지, 세그먼트라는 블록 단위)를 안정적으로 ,순서대로 , 에러없이 교환할 수 있게 한다.

 

쉽게 이해하자. 메세지를 보내거나, 브라우저에서 데이터를 송신하거나, 메일을 보낸다거나 할 때 정확한 데이터가 들어가야 받는 사람이 보낸 사람의 의도를 파악할 수 있고, 만약 감당할 수 없는 데이터가 빠르게 보내면 혼잡해질 수 있다. 그래서 한 마디로 정리하자면, 신뢰할 수 있고, 순서대로 수신. 송신이 가능하고 에러없이 교환할 수 있게 하는것이다.

 

5. UDP

UDP는 IP를 사용하는 네트워크 내에서 컴퓨터들 간 메세지들이 교환될 때
제한된 서비스만을 제공하는 통신 프로토콜이다.
UDP는 "받으면 그만, 안받아도 그만"이다. 그래서 UDP는 신뢰하는 데이터를 전달 하지 않으며, 때문에 오류가 나거나 데이터가 삭제되는 경우가 발생한다.


정리하자면 상대방에게 계속해서 데이터만 보낼 뿐, 신뢰하는 데이터를 보내지 않는다. 

 

6. 그럼 UDP 왜 써요 ? 안전한 TCP 쓰면 되는데요 ?

맞는 말이다. 실제로 대부분의 브라우저에선 TCP를 사용하고 있다. 그럼 UDP는 언제 사용될까 ? UDP는 신뢰하는 데이터를 전달하지 않는다고 했다. 이 말은 오류를 확인하거나 빠진 데이터가 없는지 체크하지 않고 바로 보내기 때문에 속도 측에서 TCP보다 훨씬 빠르다. 그래서 중요하지 않은 메세지를 빠르게 보내는 유튜브 스트리밍, 실시간 방송 등에 사용된다. 반면에 데이터 문제를 확인해야하는 TCP는 UDP에 비해 복잡하고 느리다.

 

6-1. 어떻게 데이터의 오류나 분실하는 것을 확인 할까 ?

순서를 알아보자.

 

  1. 데이터를 여러 개의 패킷으로 나눔
  2. 분리된 패킷이 중복되거나, 분실되거나, 순서가 바뀌는 문제를 해결함
  3. 패킷들을 재조립해 완전한 데이터로 상대방한테 전달함

만약 2번에서 문제가 발생했다면, 다시 데이터를 보낼 수 있게 한다.

 

7. 총 정리

TCP : 신뢰하는 데이터를 보낼 수 있음, UDP에 비해 느림, 복잡함

UDP : 데이터가 어떻게 되든 신경 안쓰고 계속 보냄, 빠름, 간단함

 

8. 뜨고 있는 UDP ?

구글이나 유튜브에서 TCP가 아닌 UDP를 사용하고 있다. 구글, 유튜브 뿐만 아니라 여러 곳에서 TCP를 UDP로 바꾸는 작업을 하고 있다. 어떻게 뜰 수 있었던 걸까 ?

 

8-1. 복잡한 TCP, 뭘 어떻게 건드리지도 못함, 하지만 UDP는 ?

앞에서 TCP는 복잡하다고 했다. 조금만 자세하게 말하면, 데이터를 받은 TCP는 헤더에 다음과 같은 정보를 포함해 보낸다.

 

 

딱 봐도 복잡해 보인다. 지금까지 TCP를 사용했던 이유는 느리다는 단점보다 신뢰할 수 있는 데이터를 보내는 장점이 더 크기 때문이다.

반면에 UDP는 데이터를 전송하는 데 필요한 몇 가지만 포함되어있다.

 

 

비유를 하자면 UDP는 백지상태로, 원한다면 신뢰할 수 있는 데이터를 보낼 수 있게 가능하면서 보내는 속도는 빠르고, TCP는 이미 다 작성 되어있어 건드리지도 못하고 속도는 느리다. 그리고 패킷을 조금만 손실해도 재전송을 해야하고, 매번 Connection을 연결해서 시간 손실이 발생한다

'Computer science' 카테고리의 다른 글

B-tree가 데이터베이스 인덱스에 사용되는 이유  (2) 2024.06.16
HTTP & HTTPS  (0) 2022.07.06
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday