Network

[Network] UDP와 TCP

jHoon0223 2024. 3. 5. 17:04


UDP : User Datagram Protocol 란?

비연결 지향적 프로토콜. 데이터 전송 과정에서 통신하는 두 시스템 간에 사전 연결 설정이 필요없다. 데이터그램 기반으로 작동하며, 각 데이터그램은 독립적으로 처리되어 네트워크를 통해 전송된다.

오버헤드를 최소화하고, 가능한 한 빠르게 데이터를 전송하는 것이 목표. 데이터의 순서 보장, 신뢰성 보장, 데이터 손실에 대한 복구 등은 지원하지 않는다.

 

주 용도

- 실시간 어플리케이션

지연시간을 최소화해야 하는 실시간 스트리밍 어플리케이션에 적합하다.

실시간 비디오 스트리밍, 온라인 게임, VoIP같은 데이터가 가능한 빨리 전송돼야 하는 서비스에서 사용

- 방송과 멀티캐스팅

데이터를 여러 수신자에세 동시에 전송할 수 있으므로, 방송 및 멀티캐스팅에 적합하다.

네트워크 트래픽과 서버 부하를 줄이는데도 도움이 된다.

- 단순 파일 전송

신뢰성이나 데이터 순서가 크게 중요하지 않은 경우에는 UDP를 활용한 단순 파일 전송을 수행할 수 있다.

네트워크 진단 도구나 일부 간단한 데이터 전송 어플리케이션이 그 예시.

 

UDP를 사용하는 네트워크 프로토콜

DNS(Domain Name System), SNMP(Simple Network Management Protocol) 트래픽, 그리고 DHCP(Dynamic Host Configuration Protocol) 등 일부 기본 네트워크 프로토콜과 서비스가 UDP를 통해서 구현된다.

 

UDP 헤더 구조


TCP : Transmission Control Protocol 란?

통신하는 두 시스템 간의 연결을 설정한 후 데이터를 전송한다.

데이터가 목적지에 도달했는지 확인하고, 도착하지 않은 데이터는 재전송한다. 데이터 패킷은 순서대로 전송되며, 수신자는 이를 올바른 순서로 재조립한다.

데이터 전송 중에 발생할 수 있는 오류를 감지하고 수정하는 기능을 포함하고 있으며, 흐름 제어와 혼잡 제어를 통해 네트워크의 효율적인 사용을 보장한다.

 

주 용도

- 웹 브라우징

HTTP(HyperText Transfer Protocol)과 같은 웹 프로토콜의 기반으로 사용한다.

웹 페이지와 다른 웹 콘텐츠를 안정적으로 전송하기 위해 사용한다.

- 이메일 전송

SMTP(Simple Mail Transfer Protocol), IMAP(Internet Message Access Protocol), POP3(Post Office Protocol 3)와 같은 이메일 전송 프로토콜에 사용된다.

신뢰성 있는 메시지 전송을 제공한다.

- 파일 전송

파일을 안전하게, 순서대로 전송하는 게 중요한 FTP(File Transfer Protocol)와 같은 파일 전송 애플리케이션에서 사용한다.

- 원격 접속

사용자의 명령어 입력과 서버의 응답을 신뢰성 있게 전송하는 게 중요한 SSH(Secure Shell), Telnet과 같은 원격 접속 프로토콜에서 사용한다.

- 데이터베이스 관리

클라이언트와 서버 간의 데이터베이스 쿼리 및 응답을 처리하기 위해선 데이터의 정확한 전송이 중요하므로 사용한다.

 

3-way Handshake 방식

TCP 통신을 위한 네트워크 연결은 3-way handshake 이라는 방식으로 연결된다. 3-way handshake 방식은 서로의 통신을 위한 관문(port)을 확인하고 연결하기 위하여 3번의 요청/응답 후에 연결이 되는 것을 말한다. (이 과정에서 가장 많은 시간이 소요되어 UDP방식보다 속도가 느려지는 주요 원인으로 지목되기도 한다.)

연결과정
  1. Client에서 Server에 연결 요청을 하기위해 SYN 데이터를 보낸다.
  2. Server에서 해당 포트는 LISTEN 상태에서 SYN 데이터를 받고 SYN_RCV로 상태가 변경된다.
  3. 그리고 요청을 정상적으로 받았다는 대답(ACK)와 Client도 포트를 열어달라는 SYN 을 같이 보낸다.
  4. Client에서는 SYN+ACK 를 받고 ESTABLISHED로 상태를 변경하고 서버에 ACK 를 전송한다.
  5. ACK를 받은 서버는 상태가 ESTABLSHED로 변경된다. 

    위와 같이 3번의 통신이 정상적으로 이루어지면, 서로의 포트가 ESTABLISHED 되면서 연결된다.

 

TCP 헤더

TCP 헤더 구조


 

728x90

'Network' 카테고리의 다른 글

[Network] OSI 7 Layers  (0) 2024.03.05