IP는 신뢰할 수 없는 통신과 비연결형 통신이라는 한계가 있습니다.
전송 계층은 이러한 IP의 한계를 극복하여 신뢰성 있는 통신과 연결형 통신을 제공합니다.
이러한 전송 계층 프로토콜로는 TCP와 UDP가 있습니다.
이번 포스팅에서는 TCP와 UDP의 차이를 알아보고, 연결형 통신 프로토콜인 TCP에서의 연결 수립 과정(3-way Handshake)에 대해 살펴보겠습니다.
TCP와 UDP는 모두 전송 계층에서 데이터를 보내기 위한 프로토콜이지만, 성격이 크게 다릅니다.
| 특징 | TCP | UDP |
|---|---|---|
| 연결 방식 | 연결형 통신 | 비연결형 통신 |
| 신뢰성 | O | X |
| 순서 보장 | O | X |
| 오류 제어 | O | X |
| 속도 | 느림 | 빠름 |
| 용도 | 웹, 이메일, 파일 전송 | 스트리밍, 게임, 실시간 통신 |
먼저 TCP는 연결형 통신입니다. 데이터를 보내기 전에 먼저 상대와 연결을 수립하고, 그 연결을 통해 데이터를 전송합니다.
이 과정 덕분에 TCP는 데이터가 순서대로 도착하는지, 손실된 데이터는 없는지를 확인할 수 있으며, 신뢰성을 제공하는 프로토콜이라고 할 수 있습니다.
또한, 너무 빨리 보내서 수신 측이 처리하지 못하면 속도를 조절하는 흐름 제어와, 네트워크가 혼잡할 때 전송 속도를 조절하는 혼잡 제어 기능도 제공합니다.
그래서 웹 브라우징, 이메일, 파일 전송처럼 정확한 데이터 전달이 중요한 서비스에서 주로 사용됩니다.
반면 UDP는 비연결형 통신이며, 신뢰성이 없는 프로토콜입니다. 데이터를 보내기 전에 별도의 연결을 만들지 않고, 바로 데이터를 전송합니다.
이 때문에 UDP는 데이터가 순서대로 도착하는지 확인하지 않으며, 일부 데이터가 손실될 수도 있습니다.
하지만 연결을 만들고 확인하는 과정이 없으므로 TCP보다 속도가 빠르고 오버헤드가 적습니다.
그래서 실시간 스트리밍, 온라인 게임, 화상 통화처럼 속도가 중요하고 일부 데이터 손실이 허용되는 서비스에서 주로 사용됩니다.
TCP와 UDP는 데이터 전송 방식에서 큰 차이를 보입니다.
TCP는 연결형 통신이므로, 데이터를 보내기 전에 먼저 상대와 연결을 수립합니다.
연결이 수립되면 데이터를 순서대로 전송하며, 손실된 데이터는 재전송하고, 순서를 보장합니다.
데이터를 모두 주고받은 뒤에는 안전하게 연결을 종료합니다.
정리하면 TCP의 전송 과정은 다음과 같습니다.
UDP는 비연결형 통신이므로, 데이터를 보내기 위해 연결을 만들 필요가 없습니다.
데이터를 연결 없이 보내며, 순서나 손실 여부를 확인하지 않습니다.
따라서 전송 속도가 빠르고 오버헤드가 적지만, 신뢰성은 보장되지 않습니다.
TCP는 신뢰성과 순서 보장, UDP는 빠른 전송과 낮은 오버헤드가 특징입니다.
3-Way Handshake는 TCP가 통신을 시작할 때 사용하는 연결 수립 과정입니다.
송신 측과 수신 측이 서로 통신할 준비가 되었는지를 확인하고, 양방향으로 동기화(Synchronize)를 수행합니다.
과정은 총 세 단계로 이루어집니다.
SYN (Synchronize)
SYN + ACK (Synchronize + Acknowledge)
ACK (Acknowledge)
3번의 메시지 교환을 통해 양측이 연결 의사를 확인하고, 시퀀스 번호를 동기화하여 데이터 전송 준비가 완료됨을 보장하는 과정이 바로 3-Way Handshake입니다.
이를 통해 TCP는 신뢰성 있는 연결을 제공합니다.
4-Way Handshake는 TCP 연결을 종료할 때 사용되는 과정입니다.
통신을 끝내려는 쪽과 이를 확인하는 쪽이 서로 연결을 안전하게 닫기 위해 4번의 메시지를 주고받는 절차입니다.
과정은 총 네 단계로 이루어집니다.
FIN (Finish)
ACK (Acknowledge)
FIN (Finish)
ACK (Acknowledge)
4번의 메시지 교환을 통해 양측이 안전하게 데이터를 모두 전송했음을 보장하고, 연결을 정상적으로 종료하는 과정이 바로 4-Way Handshake입니다.
TCP는 데이터를 안정적이고 정확하게 전달하기 위해 여러 가지 기능들을 제공합니다.
주요 기능으로는 재전송을 통한 오류 제어, 순서 보장, 흐름 제어, 혼잡 제어가 있습니다.
TCP는 이러한 기능 덕분에 데이터 손실 없이 안정적인 통신을 보장합니다.
이번 포스팅에서는 TCP와 UDP의 차이와, TCP에서 데이터를 안정적으로 전송하기 위한 연결 수립과 종료 과정(3-Way/4-Way Handshake), 그리고 TCP의 전송 제어 기능에 대해 살펴보았습니다.
이번 포스팅에서 배운 내용을 통해 네트워크 전송 방식 (TCP/UDP)에 대한 개념을 명확히 구분할 수 있을 것입니다.