IT 도서 리뷰/개발자가 되기 위해 꼭 알아야 하는 IT 용어

[PART2] 네트워크/통신/데이터 - TERMS 2

goldenkiwi-coder 2024. 11. 20. 21:11

[ TERMS 02 ] TCP / UDP

1. TCP / UDP의 정의

 TCP와  UDP는 '수신 측에 데이터를 전달한다'는 목표를 갖고 있지만 성질이 다른 트랜스포트 층의 프로토콜이다.

 

2. TCP / UDP는 어디서 접하게 될까?

 TCP/UDP는 눈에 보이지 않지만 웹 사이트 접속, 모바일 게임, 이미지 다운로드, 영상 재생, 이메일 등 일상에서 자주 사용되고 있다. TCP/UDP를 설명하기 전에 먼저 알아야 할 배경지식에 대해서 소개하겠다.

 

>  네트워크

 '네트워크'라고 하면 컴퓨터 용어 또는 시민단체나 동아리 등 일반적인 의미가 떠오른다. 네트워크는 한 단어이지만 '통신망', '관계', 

방송'등 다양한 뜻을 가진다. 사전을 찾아보면 네트워크에는 '망'이라는 의미가 있다. 앞서 언급한 의미와 연결하여 생각해 보면 '무언가 주고받을 수 있는 체계'라고 바꿔 말할 수 있다.  이러한 네트워크에는 규칙이 필요한데, 컴퓨터에서 사용하는 규칙을 TCP/IP라고 한다.

 

>  TCP / IP 5계층

TCP / IP 5계층을 설명하는 이미지 (출처 : https://developerhelp.microchip.com/xwiki/bin/view/applications/tcp-ip/five-layer-model-and-apps/)

 TCP / IP는 네트워크를 통해 데이터를 송수신하는 일련의 과정을 하나로 모아 놓은 것으로, 5계층으로 정리할 수 있다. 이는 커피늘 ㄹ주문하는 과정과 같다.

  • 고객이 메뉴판을 읽고 커피를  주문하고
  • 카페 사장이 고객에게 주문을 받아 바리스타에게 주문을 전달하면
  • 바리스타는 사장의 주문에 따라 커피를 만들어 종업원에게 전달하고
  • 종업원은 바리스타에게 커피를 받아 고객에게 커피를 가져다 준다.

 위 과정을 보면 각각의 업무에 지침이 있고 고객, 카페 사장, 바리스타, 종업원의 업무가 분리되어 있다. 네 사람 모두 각자의 역할을 잘 수행해야 카페가 잘 운영되고 고객도 원하는 커피를 마실 수 있다. TCP/IP는 물리층, 데이터 링크층, 네트워크층, 트랜스포트층, 앱층으로 이루어져 있고 앞에서 언급한 예와 마찬가지로 모든 계층이 정상적으로 제 기능을 해야 통신이 이루어진다. 또한 카페 사장이 바리스타에게 주문서를 전달할 때 한 번에 전달하지 않고 1장씩 전달하듯이 TCP / IP가 데이터를 전송할 때는 데이터를 일정한 크기로 분할해서 보낸다. 분할된 작은 데이터 하나를 '패킷'이라고 하고, 이러한 통신 방법을 '패킷 통신'이라고 한다. TCP와 UDP는 TCP/IP 계층 중 트랜스포트 층에 속하는 프로토콜이다.

계층명 역할
애플리케이션층(FTP, HTTP, SMTP, SNMP, TELNET...) 애플리케이션의 기능을 구현한다.
트랜스포트층(TCP, UDP) 데이터를 수신측 애플리케이션 층에 전달한다.
네트워크층(IP) 직접 연결되지 않은 컴퓨터간에 데이터를 전달한다.
데이터 링크층(ATM, PPP, Ethernet) 네트워크에 직접 연결된 기기 간에 통신할 수 있도록 한다.
물리층 비트열을 데이터로 변환한다.

 

3. TCP / UDP 알아보기

>  TCP의 개념

 TCP는 '데이터를 확실하고 안전하게 전달하는 것'을 목표로 하는 프로토콜이다. 데이터를 확실히 전달하기 위해 일대일로 통신한다.

 

>  TCP의 통신절차

  • 컨트롤 플래그(control flag)

 TCP 헤더에는 6비트의 컨트롤 플래그가 있는데 이를 통해 통신 상대에게 상태를 전한다. 상대에게 전하고 싶은 항목은 '1'로 나머지는 '0'으로 만든다.

  • URG(Urgent) : 1이면 세그먼트가 긴급한 데이터를 갖고 있는 것이다.
  • ACK(Acknowledgement) : 1이면 응답한 것이다.
  • PSH(Push) : 주로 대화형 패킷에 사용되고 1이면 세그먼트를 바로 앱층에 전달한다.
  • RST(Reset) : 1이면 통신을 강제적으로 해제한다.
  • SYN(Synchronize) : 1이면 통신 개시를 요청한다
  • FIN(Fin) : 1이면 통신 종료를 요청한다.

TCP 헤더에 6비트 컨트롤 플래그를 설명하는 이미지 (출처 : https://www.firewall.cx/networking/network-protocols/tcp-udp-protocol/tcp-flag-options.html)

 

  • 핸드셰이크(handshake)

핸드셰이크는 '악수'를 뜻하는데, 합의를 이끌어 냈을 때 악수를 하는 것처럼 상대방과 서로 정보를 확인하면서 주고받는것을 의미한다. TCP에서는 통신을 시작할 때 '3Way 핸드셰이크'라는 방법을 사용한다. 3Way 핸드셰이크의 절차는 다음과 같다.

  • 접속하는 쪽에서 상대방에게 SYN 패킷을 보낸다.
  • 받은 상대는 SYN + ACK 패킷을 되돌려 보낸다.
  • 받은 상대는 ACK 패킷을 보내고 이 과정이 정상적으로 이루어지면 접속이 완료되었다고 간주한다.

연결을 해제할 때도 마찬가지다. 또한 TCP 헤더에는 데이터 순서를 나타내는 번호가 적혀 있는데 이 번호를 사용하여 데이터가 무사히 전달되었는지 하나씩 확인한다. 중간에 문제가 발생해서 확인 응답이 없으면 송신 측은 데이터를 재전송한다.

TCP 연결 및 해제 절차를 설명하는 이미지 (출처 : https://www.firewall.cx/networking/network-protocols/tcp-udp-protocol/tcp-flag-options.html)

 

>  TCP의 사용 예

  • Web을 위한 HTTP

 HTTP는 주로 문서를 주고받을 때 사용하는 프로토콜이다. 주로 TCP를 사용하고 HTTP/3부터는 UDP를 사용한다.

 

  • 메일 송수신을 위한 SMTP

 SMTP는 인터넷에서 이메일을 보낼 때 사용하는 프로토콜이다. 예를 들어 지메일을 사용하는 사람이 네이버 메일을 사용하는 친구에게 메일을 전송하는 경우, '보내기' 버튼을 누르면 지메일의 SMTP 서버에서 네이버 메일 SMTP 서버로 패킷을 전송하는데, 이떄 패킷을 전송하는 방식으로 TCP를 사용한다.

 

>  UDP의 개념

 UDP는 '데이터를 빠르게 전달하는 것'을 목표로 하는 프로토콜이다.  대화하는 것처럼 데이터를 주고받는 TCP와 달리 UDP는 사전에 의논하지 않고 일방적으로 데이터를 보낸다. 또한 여러 상대에게 동시에 데이터를 보낼 수 있고 크기가 큰 데이터를 나누지 못해 실시간으로 데이터를 전송하는 것이 중요한 통신이거나 데이터가 작은 네트워크 관리의 통신에서 사용된다.

TCP와 UDP의 통신방식 차이를 설명하는 이미지(출처 : https://www.whatismyip.com/tcp-vs-udp/)

 

>  UDP의 사용 예

 음악이나 동영상 스트리밍, 인터넷 전화 등 실시간으로 데이터가 오고 가는 서비스에 주로 사용된다.

 

4. TCP / UDP를 알아야 하는 이유

데이터 간의 신뢰성이 중요한 프로그램의 통신을 개발해야 한다고 가정했을때 TCP 대신 UDP를 이용해 개발을 완료하거나 UDP로 개발하면서 UDP의 특징을 이해하지 못해서 데이터 간의 신뢰성을 보완해 줄 어떤 대비책도 마련하지 않으면 데이터가 소실되어 문제가 생길 수 있다. TCP와 UDP를 잘 알면 적절한 프로토콜을 사용하여 효율적으로 개발할 수 있다.

 

5. TCP / UDP 더 알아보기

>  함께 알아 두면 좋은 용어

  • 프로토콜
  • 포트
  • HTTP
  • OSI 7계층

>  혼동하기 쉬운 용어

  • 세그먼트
  • 데이터
  • 패킷
  • 프레임