본문 바로가기
Network

TCP와 UDP의 차이(1)

by BTC_김회장 2023. 11. 3.

베하~

 

완연한 가을이 찾아왔어요! 일교차가 심해지는데 여러분 감기조심하세요! ㅎㅎ

오늘은 OSI 7계층에 이어서 Network의 기초라고 볼수있는  TCP와 UDP의 차이에 대해서 알아보겠습니다.

 

여러분 혹시 프로토콜에 대해 아시나요?

프로토콜 (protocol)

컴퓨터와 컴퓨터 사이, 또는 한 장치와 다른 장치 사이에서 데이터를 원활히 주고받기 위하여 약속한 여러 가지 규약(規約). 이 규약에는 신호 송신의 순서, 데이터의 표현법, 오류 검출법 따위가 있다.

 

프로토콜의 사전적인 의미와 같이 프로토콜은 클라이언트와 서버가 정보를 교환할 수 있도록 하는

메시지 형식에 대한 규칙 이라고 보면 됩니다.

 

즉, 받는사람이 전송받은 메세지를 이해하려면 설계된 규칙에 따라 작성된 데이터 형식이어야 이해하기 쉽겠죠?

예를들어 HTTP메세지의 헤더와 IP의 숫자도 규칙이라고 할수있어요!

 

만약 IP가 255.255.255.255안의 범위에서 벗어나 12345.123.14 이런식이면? 

받는사람도 보는 사람도 이해할 수 없는 그냥 의미없는 숫자가 되어버립니다.

 

HTTP는  HTTP의 헤더메세지, IP같은경우에는 192.168.0.1 과 같이 숫자로 이루어져 주소를 나타내고 있다는 것을

알수있습니다.

 

하지만!두둥탁..!

 

TCP와 UDP는 도통 모르겠다는것이죠! 

오늘은 TCP/UDP 알기쉽게 파헤쳐 봅시다.(가보자고,,)

 

먼저 TCP입니다. 

TCP(Transmission Control Protocol)은 IP규칙으로만 통신하기에 부족하거나 불안정하던 여러 단점들을 커버해서 패킷 전송을 제어하여 신뢰성을 보증하는 프로토콜입니다.

 

IP를 통해 써져있는 규칙대로 목적지에 도착하고나서, 다음에 TCP 규칙에 작성이 되어있는대로 올바르게 도착했는지, 정확하게 누구에게 전달 되어야하는지에 대한 상세한 주소라고 보시면 됩니다.

 

그래서 메일과 같이 반드시 보내고자하는 당사자에게 정보가 가야하는 신뢰성 있는 통신이 필요할때 사용이 됩니다.

 

쉽게생각해서 우리가 보내는 프로토콜은 하나의 소포라고 생각하시면 됩니다.한번 보내볼게요!

  • 전송데이터(우리가 보낼물건)를  TCP로 포장한다 
  • TCP로 포장한 전송데이터를 IP 포장
  • IP까지 포장한 전송데이터를 이더넷으로 포장한다
  • 인터넷을 통해 소포 출발
  • 상대방 컴퓨터의 서버에 도달해서 포장된것을 하나씩 풀면서 전송데이터를 받게 된다.

해당 배달이 끝난후에도 TCP는 신뢰성 있는 통신이 필요하기 때문에 배달이 끝나고도 또 한번 확인을 해줍니다..

아주 친절해!

즉, 통신을 시작할때 하고 종료할때 서로 준비가 되어있는지를 반드시 먼저 물어보고

패킷 전송 순서를 서로 정한뒤에 본격적인 통신을 시작합니다..

 

이것이 바로 3 Way Handshake 과정과 4 Way Handshake 입니다!

이 두가지 과정의 차이는 똑같은 핸드쉐이크지만 3way 통신을 시작할때, 4 Way는 통신을 마칠때 거치는 과정입니다.

3-way handshake 접속 과정

  1. 먼저 Client에서 상대에게 접속을 요청하는 SYN 패킷을 보냅니다. 이때 Client는 패킷을 보냄과 동시에SYN/ACK 응답을 기다리게되는데요 그상태가 SYN_SENT 상태입니다.
  2. SERVER는 SYN 요청을 받고 클라이언트에게 요청을 수락하는 ACK 패킷과 SYN패킷을 보내고 SYN_RCVD상태로 변하여 클라이언트가 ACK 패킷을 보낼때까지 기다리게됩니다.
  3. 클라이언트는 서버에 ACK 패킷을 보내고 이후에 ESTABLISHED 상태가 되어 데이터통신이 가능해집니다!

ESTABLISHED 이후의 데이터 전송 과정

  1. ESTABLISHED이 된 상태에서 서버에 데이터를 보냅니다.
  2. 서버는 잘 받았다고 ACK 를 보내 응답합니다.
  3. 만약에 Client가 서버로 부터 ACK를 못 받았으면 제대로 송신하지 못한것으로 판단하고 데이터를 재전송 합니다.

4-way handshake 이후의 데이터 전송 과정

  1. 서버와 클라이언트가 TCP 연결이 되어있는 상태에서 클라이언트가 접속을 끊기 위해 CLOSE()함수를 호출하게 됩니다.
  2. 서버는 클라이언트가 CLOSE()한다는것을 알게 되고 CLOSE_WAIT로 바꾼후에 ACK를 전송합니다. 이말인 즉슨! 클라이언트가 끊을 것이라는 신호를 받았다는 의미이고 CLOSE_WAIT를 통해 자신의 통신이 끝날때까지 기다리는 상태가 된다.
  3. ACK 를 받은 클라이언트는 FIN_WAIT2로 변환되고 이때 서버는 CLOSE() 함수를 호출하고  FIN을 클라이언트에게 보냅니다.
  4. 서버도 연결을 닫았다는 신호를 클라이언트가 수신하면 ACK segment를 보낸후에 TIME_WAIT상태로 전환이 되고 이모든것이 끝나면 CLOSED상태로 변합니다.

이런식으로 TCP는 서로 신뢰성 있는 통신을 추구합니다.

세 줄 요약

  • TCP는 안정적인 데이터 전송을 담당하는 프로토콜입니다.
  • IP는 데이터를 정확한 주소로 전달하는 데 목적을 두는 것에 비해 TCP는 데이터를 손실 없이 안전하게 전달하는 것을 목적으로 합니다.
  • TCP는 3 way handshake 기법을 이용해 송신자와 수신자가 연결된 상태인지 확인한 뒤 데이터를 주고받는다. 그 대신 속도가 느리다는 단점이 있으며 이를 보완하기 위한 UDP가 있습니다.

다음시간에는 이어서 UDP에 대해 알아보도록할게요! 

베빠~!

'Network' 카테고리의 다른 글

URI, URL, URN  (0) 2023.11.05
TCP와 UDP의 차이(2)  (0) 2023.11.03
TCP 패킷  (0) 2023.10.27
3계층 구조 (3-Tier)  (0) 2023.10.27
3-way Handshake & 4-way Handshake  (1) 2023.10.19

댓글