TCP와 UDP는 OSI 7 계층의 전송 계층에서 사용되는 프로토콜이다. TCP와 UDP는 데이터를 전달하는데 사용되지만 정확성을 추구하는 TCP와 신속성을 추구하는 UDP는 각각 방식이 다르다. 이번에 TCP와 UDP의 차이를 알아보고 UDP가 어디에 사용되는지 알아보자.
TCP
TCP는 클라이언트와 서버가 연결된 상태에서 데이터를 주고받는 연결 지향적 프로토콜이다. 연결을 위해서 3-way handshake를 사용하며 클라이언트가 연결 요청을 하면 서버는 연결을 수락한다. 서버가 연결을 수락했다면 고정적인 통신 선로가 생기고 이를 통해 데이터를 주고받을 수 있다. 이를 통해 TCP는 1:1 통신만 가능하다는 것을 알 수 있다.
TCP는 신뢰성있는 데이터 전송을 하기 때문에 클라이언트가 전송하는 모든 데이터는 정확하고 안전하게 서버까지 전달된다. 패킷을 성공적으로 전송했다면 ACK 신호를 통해 확인하는데 일정 시간 동안 ACK가 도착하지 않는다면 패킷이 중간에 손실되었다고 판단하여 패킷을 재전송한다. 이처럼 TCP는 데이터를 전송할 때마다 확인 응답을 받기 때문에 통신의 신뢰성이 올라가지만 속도는 UDP에 비해 상대적으로 낮다.
UDP
UDP는 클라이언트와 서버가 연결 설정을 거치지 않고 전송하는 비연결 지향적 프로토콜이다. 따라서 클라이언트가 일방적으로 데이터를 전송하며 연결 과정이 없기 때문에 TCP보다 빠르게 데이터를 전송할 수 있다. 따라서 실시간성을 보장해야 하는 라이브 방송이나 VoIP(Voice over IP), 실시간 채팅에서 사용된다.
하지만 TCP와 달리 패킷이 정상적으로 도착했는지 확인을 하지 않기 때문에 신뢰성이 떨어진다. 먼저 보낸 패킷이 나중에 도착하고 늦게 보낸 패킷이 가장 빠르게 도착할 수도 있다. 따라서 서버에서 패킷을 관리해야하는 단점이 존재한다.
정리
TCP | UDP | |
연결방식 | 연결 지향적 | 비연결 지향적 |
패킷 교환 방식 | 가상 회선 방식 | 데이터그램 방식 |
통신 방식 | 1:1 통신만 가능 | 1:1 / 1:N / N:M 통신 모두 가능 |
신뢰성 | 높음 | 낮음 |
속도 | 느림 | 빠름 |
'CS > 네트워크' 카테고리의 다른 글
[네트워크] HTTPS의 개념과 동작 원리 (0) | 2021.09.24 |
---|---|
[네트워크] HTTP의 특성 (0) | 2021.09.23 |
[네트워크] 프록시 서버를 사용하는 이유 (0) | 2021.07.21 |
[네트워크] 서버의 부하를 분산하는 방법 (0) | 2021.07.20 |
[네트워크] 방화벽의 동작원리 (0) | 2021.07.19 |