일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 패키지설치에러
- aiapi
- Github
- 클래스
- chatGPTAPI
- 클라우드
- 버킷생성
- class
- Database
- openaiapi
- 웹소켓재시작
- Express
- 노드버전
- nodejs
- aws
- nvmrc
- gitlab
- db
- java
- 웹소켓연결
- 웹소켓연결끊김
- 자바
- iam사용자
- gpt3.5turbo
- ChatGPT
- javascript
- GPT3.5
- 호스팅영역
- gptapi
- git
- Today
- Total
IT's Jenna
TCP vs UDP 본문
네트워크에서 데이터를 주고받을 때 사용하는 프로토콜은 TCP와 UDP이다. 이때 프로토콜이란, 원거리 통신 장비에서 데이터를 주고받을 때 사용하는 규칙과 양식의 체계를 말한다.
우선 TCP와 UDP의 가장 큰 차이점은 TCP는 데이터의 송수신 확인이 가능하지만, UDP는 송신만 할 뿐 수신 확인은 하지 않는다는 것이다. 아래 그림을 보자.
1. TCP ( Transmission Control Protocol )
위 그림처럼 TCP 통신 방식이 송수신 확인이 가능한 이유는 TCP는 연결형 가상회선 방식을 제공하기 때문이다. 가상 회선 방식이란 송신지부터 수신지까지 데이터 패킷을 어떻게 보낼지에 대해서 가상으로 경로를 배정한다는 의미다.
여기서 패킷이란, 원활한 데이터의 흐름을 위해 맞춰진 데이터의 형식화된 블록이다. 데이터는 패킷이라는 블록 형태로 나눠져서 수신부로 보내진다.
위 그림에서처럼 나눠진 패킷들이 가상으로 생성된 경로를 따라 전달된다. 패킷교환이 시작될 때 처음 경로 설정을 하면 통신하는 동안에는 해당 경로가 고정되어 있어 해당 경로 상에서만 통신한다. 또한 지속적으로 송신부와 수신부가 통신하기 때문에 데이터의 처리 속도를 조절하고 데이터가 넘치지 않도록 관리할 수 있다. 하지만 지속적으로 연결이 되어야 하기 때문에 1대 1 방식으로 밖에 사용하지 못한다. 따라서 데이터의 신뢰성은 높지만 그만큼 속도가 느리고 CPU를 많이 소모한다는 단점이 있다.
2. UDP ( User Datagram Protocol )
UDP는 패킷들이 독립적으로 움직인다. 이때 독립적으로 움직이는 각각의 패킷들을 Datagram이라 부른다. TCP는 처음 회선 설정시에 한 번만 경로를 배정하고 패킷들이 그 경로를 따라가지만 UDP는 모든 패킷들이 각자 최적의 경로를 설정해서 간다. 그렇기 때문에 송신은 순차적으로 하더라도 수신은 순서대로 되지 않는 경우가 있는데 그럴 땐 패킷이 가지고 있는 순서정보를 토대로 수신 호스트에서 패킷을 재배치한다. 이러한 UDP의 데이터 전송 방식을 비연결형 데이터그램 방식이라고 한다.
하지만 서버와 클라이언트간 연결이 없기 때문에 데이터가 잘 도착했는지 중간에 오류가 발생했는지에 관한 정보는 알 수 없다. 또한 연결이 없기 때문에 1대 1이 아닌 다대다 방식으로도 사용이 가능하다. UDP는 데이터의 신뢰성은 낮지만 그만큼 속도적인 측면에선 빠르다.
마지막으로 두 프로토콜의 특징을 잘 비교해둔 표로 정리할 수 있다.
결과적으로 TCP는 연속성은 낮으나 신뢰성이 중요한 서비스(파일 전송 등)에 사용하고 UDP는 신뢰성은 낮으나 연속성이 중요한 서비스(영상 통화 등)에 사용한다.
<참고>
'Backend > Backend 기본' 카테고리의 다른 글
Socket IO 활용해서 채팅페이지 만들기 (0) | 2021.04.29 |
---|---|
Swagger (0) | 2021.02.28 |
서버 API 만들기 (0) | 2021.02.18 |
데이터베이스 모델링 (0) | 2021.02.18 |
formidable로 파일 업로드하기 (0) | 2021.02.18 |