[네트워크] tcp와 udp의 개념 및 차이점
⏺ TCP / UDP 란?
: 전송계층에서 데이터 전달을 담당하는 전송계층의 프로토콜이며, 목적지 장비까지 전송한 패킷을 상위의 특정 응용 프로토콜에게 전달하는 것에 목적이 있습니다. -> 전송방식으로는 TCP와 UDP가 있습니다.
* 전송계층
: 송신자와 수신자를 연결하는 통신 서비스를 제공하는 계층. (데이터의 전달을 담당)
📌 TCP (Transmission Control Protocol) 란?
- TCP는 연결형 서비스를 지원하는 전송 계층 프로토콜로써, 전송 제어 프로토콜이라고 불리며 서버와 클라이언트간 신뢰성 있는 데이터 전달과 흐름제어를 한다. (인터넷 환경에서 기본으로 사용)
- 일반적으로 인터넷 상에서 데이터를 메시지 형태로 보내기위해 IP와 함께 사용한다. 여기서 IP는 데이터의 배달을 한다면 TCP는 패킷을 추적 및 관리한다.
- 데이터는 네트워크 선로를 통해 전달되는 과정에서 손실되거나 순서가 뒤바뀌어서 전달될 수 있는데, TCP는 손실을 검색하고 이를 교정하고 순서를 재조합 할 수 있도록 해준다.
▶️ TCP 특징
1. 신뢰성
: TCP는 연속성보다 신뢰성 있는 전송이 중요할 때 사용한다.
2. 가상회선 방식
: 발신지와 수신지를 연결하여 패킷을 전송하기 위한 논리적 경로로 배정하는 가상회선 방식을 제공한다.
3. 흐름 제어
: TCP 데이터를 송수신할 때 컴퓨터는 CPU와 네트워크 대역폭의 차이 때문에 서로 다른 데이터 속도로 작동할 수 있다.
결국 수신자가 처리할 수 있는 것처럼 훨씬 더 빠른 속도로 송신자가 데이터를 보낼 가능성이 있다. 이러한 가능성 때문에 TCP는 송신자가 보낸 데이터의 양을 제어하는 흐름 제어 메커니즘을 구현한다.
4. 다중화
: TCP에서는 한개의 라우터에 많은 프로세스가 TCP 통신 서비스를 동시에 사용할 수 있다(TCP 다중화).
5. 데이터의 양방향
: TCP는 하나의 전송선로에서 데이터가 동시에 양방향으로 전송할 수 있다.
📌 UDP (User Datagram Protocol) 란?
- UDP는 비연결형 서비스를 지원하는 전송계층 프로토콜이며, 인터넷 상에서 서로 정보를 주고받을 때 정보를 보낸다는 신호나 받는다는 신호의 절차를 거치지 않고, 보내는 쪽에서 일방적으로 데이터를 전달하는 통신 프로토콜이다.
- Host - Host 통신, Process - Process 통신을 제공하는 것 이외에는 IP 서비스에 추가하는 것이 없다. 그리고 수신된 패킷에서 오류를 탐지하면 이를 폐기하는 정도의 오류제어 기능만 제공한다.
▶️ UDP 특징
1. 연속성 (신뢰성은 낮다)
: 신뢰성보다는 연속성이 중요한 서비스에 사용된다. (ex. 온라인게임, 실시간방송, 스트리밍 서비스)
2. 데이터그램 방식 제공
: 비연결형 서비스로 데이터그램 방식 제공
3. 전송속도가 빠르다
: 1000개의 패킷을 전송할 경우 1-개의 패킷이 손상되거나 분실되었다고 가정해볼 때, TCP는 이 10개의 패킷을 재전송하기 위해 시간이 더 걸릴 것이다. 하지만 UDP의 경우 이 10개의 패킷을 무시하고 전송하기 때문에 TCP보다 전송률이 더 좋을 것이다.
그렇기 때문에 소수 패킷들의 손실은 크게 영향을 미치지 않는 온라인 게임이나, 실시간 방송, 스트리밍 서비스 등에 주로 이용된다.
💡 차이점
TCP | UDP | |
연결방식 | 연결형 서비스 | 비연결형 서비스 |
패킷 교환 방식 | 가상 회선 방식 | 데이터그램 방식 |
전송 순서 | 전송 순서 보장 | 전송 순서가 바뀔수있다 |
수신 여부 확인 | 수신여부 확인 | 수신 여부 확인x |
통신 방식 | 1:1통신 | 1:1 or 1:N or N:N 통신 |
신뢰성 | 높다 | 낮다 |
속도 | 느리다 | 빠르다 |
TCP는 연속성보다 신뢰성있는 전송이 중요할 때에 사용하는 프로토콜이며,
UDP는 TCP보다 속도가 빠르며 네트워크 부하가 적다는 장점이 있지만, 신뢰성있는 데이터 전송을 보장하지는 않기 때문에 신뢰성보다는 연속성이 중요한 서비스 (온라인게임, 스트리밍 서비스)에 자주 사용된다.
이외에 다루지 않은 3 - way handshake 등의 개념이 있으나 해당 포스트에서는 다루지 않았습니다.
내용이 궁금하시면 다른 고수 블로그 분들을 참고하시면 될 것 같네요
감사합니다~~
'IT knowledge > Network' 카테고리의 다른 글
[네트워크] 패킷(packet)이란 무엇인가? (0) | 2023.04.07 |
---|