개발/네트워크

TCP, UDP란? (+ 패킷도 모른다면 이 글 꼭 보세요)

IT의 타이탄 2024. 2. 13. 22:05
SMALL

안녕하세요 IT의 모든것을 알려드리는 IT의 타이탄입니다.

 

 

이번 글에서는 TCP 및 UDP와 패킷에 대해 가르쳐드릴까 합니다. 만약 아래에 해당하신다면 이 글을 반드시 보는 것을 추천드립니다

 

1. TCP, UDP, 패킷등 개념조차 알지 못한다.
2. 각 단어의 개념을 어느정도 알고 있지만 누군가에게 설명은 못하낟.
3. 각 단어의 풀네임이 잘 안떠오르고 헷갈린다.

 

 

TCP와 UDP를 알기 위해서는 먼저 IP에 대해 알아야하는데요! 개념을 건너

 

 

IP란, 인터넷 프로토콜로 제가 이전글에 자세하게 정리해 놓았으니 모르신다면 반드시 읽고 오는 것을 추천드립니다.

 

👉 ip란? i에 i자도 모르는 분이라면 반드시 읽어보세요

 

 

해당 글의 목차는 다음과 같습니다.

 

 

[목차]

  1. 패킷이란 무엇인가?
  2. TCP와 UDP는 무엇인가?

 

 

목차를 보시고 여러분에게 필요한 정보만 가져가시길 바라며 글을 시작하도록 하겠습니다.

 

 

TCP, UDP란? (+ 패킷도 모른다면 이 글 꼭 보세요)

1. 패킷이란 무엇인가?

패킷을 알기 위해선 앞서 말씀드린 것처럼 IP, 즉 인터넷 프로토콜에 대해 알아야 하는데요

 

 

인터넷 프로토콜이란 컴퓨터 사이끼리 통신을 하기 위한 약속이라고 생각하시면 됩니다. 우리가 통신을 하는과정에서 전달하는것은 과연 무엇일까요?

 

 

바로 데이터입니다. 대화에서 우리가 말을 전달하는 것처럼 컴퓨터끼리 통신하는 과정에서 전달하는것이 바로 데이터인데요.

 

 

이 데이터를 우리는 패킷이라고 부르고 메시지라고 부릅니다.

 

 

패킷은 패키지 + 버킷의 합성어로 하나의 덩어리라고 생각하시면 되는데요

 

패킷 = package + bucket

 

 

 

컴퓨터들끼리는 고유의 주소를 가지고 있을때, 고유의 주소를 IP주소라고 부르고 이 주소사이에서 건네주고 받는것이 바로 패킷입니다.

 

 

패킷은 언제 사용될까? : IP주소 사이에 통신을 할때 전달하는 것

 

 

 

이 패킷안에는 다양한 정보가 들어가 있는데요. 우리가 편지를 받을 때, 누가 받고 ,누가 전달하고, 그안에 내용은 무엇인지가 담겨있는 것처럼 패킷안에도 어떤 컴퓨터가 받고 어떤 컴퓨터가 보내는지 등의 내용이 들어가있습니다.

 

 

하지만 이 데이터를 주고 받는 과정에서는 다양한 문제가 발생할 수 있습니다.

 

 

예를 들어, 데이터가 중간에 손실되거나 순서가 뒤바뀌는 등의 문제가 그 중 하나입니다.

 

 

구글 검색엔진에 "TCP UDP 패킷" 이 3개를 검색했는데 구글 검색엔진의 서버에서는 "패킷 TCP UDP" 순서로 잘못 해석 할 수 있는 것입니다.

 

 

물론 구글에서는 큰 문제는 없지만 만약 은행 통장잔고에 금액의 데이터가 유실된다면, 정말 큰일나는 문제가 일어나게 되는것입니다.

 

 

이러한 패킷 문제를 해결하기 위해 등장한 것이 바로 'TCP(Transmission Control Protocol)' 와 'UDP(User Datagram Protocol)' 입니다.

 

 

2. TCP와 UDP는 무엇인가?

TCP와 UDP란?

 

TCP는 앞서 말씀드린 패킷사이에서 데이터 전달과 관련된 문제를 해결해주는 역할을 합니다.

 

 

이는 데이터가 보내지고 받는 동안에도 중간에 어떠한 문제가 생겨도 안정적으로 데이터를 주고 받을 수 있도록 해주는데요.

 

 

어떻게 가능할까요? 바로 3 way handshake 방식을 TCP가 채택하고 있기 때문입니다.

 

 

우리측 컴퓨터를 클라이언트, 응답을 받아주는 컴퓨터를 서버라고 했을 때, TCP에서 출발지와 목적지 (클라와서버)가 연결되어있는지를 확인하곤합니다.

 

 

[3 way handshake방식]

  1. 접속요청 (SYN) ⇒ 싱크로나이즈
  2. SYN + ACK (서버) (ACK : 확인했어 (요청수락))
  3. ACK (클라이언트)

 

그렇다면 데이터를 보내는과정에서 서버가 끊겼을때, 데이터가 유실되는 문제도 사라지게 되고 TCP 안에 순서 정보도 넣어놓기에 순서까지 보장하곤합니다.

 

 

하지만 한번 소통을 할때 3번을 주고 받아야하기 때문에 속도가 느려지고 최적화를 하기 어렵습니다. 그런 문제를 해결하기 위해 UDP라는 방식이 채택되곤 하는데요.

 

 

UDP는 사용자 데이터그램 프로토콜로 기능이 거의 없지만 딱 하나인 단순하고 빠르다는 점에서 채택되곤합니다.

 

 

즉, TCP와는 달리 데이터 유실 문제를 해결해주지 않습니다. IP방식인 패킷에 PORT와 체크섬정도만 추가되는 것이라고 생각하시면됩니다.

 

 

PORT란 항구라는 의미로 우리가 한 컴퓨터에서 화상채팅을 하면서 유튜브도 보고 카카오톡도 할수 있도록 만들어주는 굉장히 고마운 친구인데요!

 

 

이에 대한 내용은 제가 추후에 자세하게 정리해드리도록 하겠습니다!

 

 

본론으로 돌아와 TCP와 UDP에 대한 각각의 장단점을 정리하자면 다음과 같습니다.

 

 

TCP와 UDP의 장단점

TCP와 UDP의 장단점

 

TCP와 UDP는 데이터를 주고 받는 과정에서 각각의 장단점을 가지고 있습니다.

 

 

UDP는 빠른 전송이 중요한 경우에 주로 사용되며, TCP보다 속도가 빠르다는 장점이 있습니다.

 

 

TCP는 데이터 전송과 관련된 다양한 문제를 해결해주는 역할을 하며, 데이터의 신뢰성과 안정성을 보장합니다. 즉, 순서를 보장하고 데이터 전달을 보장해줍니다. (3 way handshake 방식)

 

 

반면에 UDP는 데이터 전송 속도가 중요한 경우에 유용하며, 신속한 전송이 요구되는 경우에 많이 사용됩니다. 즉, 순서를 보장하지 않고 데이터 전달을 보장하지 않습니다.

 

 

따라서 사용하고자 하는 상황에 맞게 TCP와 UDP 중 적합한 프로토콜을 선택하여야 합니다.

 

 


 

 

지금까지 TCP 및 UDP와 패킷에 대한 글을 작성해보았습니다.

 

 

해당 글을 보시고 궁금한 내용 있으시면 댓글 달아주시면 최대한 빠르고 정확하게 달아드리도록 하겠습니다.

 

 

긴 글 읽어주셔서 감사드립니다

LIST