UDP : User Datagram Protocol 란?
비연결 지향적 프로토콜. 데이터 전송 과정에서 통신하는 두 시스템 간에 사전 연결 설정이 필요없다. 데이터그램 기반으로 작동하며, 각 데이터그램은 독립적으로 처리되어 네트워크를 통해 전송된다.
오버헤드를 최소화하고, 가능한 한 빠르게 데이터를 전송하는 것이 목표. 데이터의 순서 보장, 신뢰성 보장, 데이터 손실에 대한 복구 등은 지원하지 않는다.
주 용도
- 실시간 어플리케이션
지연시간을 최소화해야 하는 실시간 스트리밍 어플리케이션에 적합하다.
실시간 비디오 스트리밍, 온라인 게임, VoIP같은 데이터가 가능한 빨리 전송돼야 하는 서비스에서 사용
- 방송과 멀티캐스팅
데이터를 여러 수신자에세 동시에 전송할 수 있으므로, 방송 및 멀티캐스팅에 적합하다.
네트워크 트래픽과 서버 부하를 줄이는데도 도움이 된다.
- 단순 파일 전송
신뢰성이나 데이터 순서가 크게 중요하지 않은 경우에는 UDP를 활용한 단순 파일 전송을 수행할 수 있다.
네트워크 진단 도구나 일부 간단한 데이터 전송 어플리케이션이 그 예시.
UDP를 사용하는 네트워크 프로토콜
DNS(Domain Name System), SNMP(Simple Network Management Protocol) 트래픽, 그리고 DHCP(Dynamic Host Configuration Protocol) 등 일부 기본 네트워크 프로토콜과 서비스가 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방식보다 속도가 느려지는 주요 원인으로 지목되기도 한다.)
연결과정
- Client에서 Server에 연결 요청을 하기위해 SYN 데이터를 보낸다.
- Server에서 해당 포트는 LISTEN 상태에서 SYN 데이터를 받고 SYN_RCV로 상태가 변경된다.
- 그리고 요청을 정상적으로 받았다는 대답(ACK)와 Client도 포트를 열어달라는 SYN 을 같이 보낸다.
- Client에서는 SYN+ACK 를 받고 ESTABLISHED로 상태를 변경하고 서버에 ACK 를 전송한다.
- ACK를 받은 서버는 상태가 ESTABLSHED로 변경된다.
위와 같이 3번의 통신이 정상적으로 이루어지면, 서로의 포트가 ESTABLISHED 되면서 연결된다.
TCP 헤더
'Network' 카테고리의 다른 글
[Network] OSI 7 Layers (0) | 2024.03.05 |
---|