본문 바로가기

프로그래밍/네트워크

네트워크(5) - 인터넷 전송 프로토콜이 제공하는 서비스(TCP, UDP)

인터넷이 제공하는 애플리케이션 지원 유형을 살펴보자.

 

 

 

인터넷을 포함해서 많은 네트워크는 하나 이상의 트랜스포트 프로토콜을 제공한다.

애플리케이션을 개발할 때는 사용 가능한 트랜스포트 프로토콜 중에서 하나를 선택해야 한다.

 

인터넷은 애플리케이션에게 2개의 전송 프로토콜을 제공한다.

 

TCP

UDP

 

개발자가 새로운 인터넷 애플리케이션을 만들 때 가장 먼저 결정해야 하는 것 중 하나는 UDP와 TCP 중 어느 것을 사용할 것인가이다.

 

이 둘이 애플리케이션들에게 제공할 수 있는 서비스는 무엇인가?

가능한 서비스들을 넓은 범위에서 신뢰적 데이터 전송,처리율,시간,보안 이라는 네가지 차원으로 분류할 수 있다.

 


신뢰적 데이터 전송( data integrity )

패킷(전송되는 데이터) 들은 네트워크 내에서 손실될 수 있다.

일부 앱(파일 전송, 웹 트랜잭션) 에서는 100% 안정적인 데이터 전송이 필요하다.

트랜스포트 계층 프로토콜이 애플리케이션에 제공할 수 있는 한 가지 중요한 서비스는 프로세스 간 신뢰적 데이터 전송이다.

트랜스포트 계층 프로토콜이 신뢰적 데이터 전송을 제공하지 않을 때, 송신 프로세스가 보낸 데이터는 수신 프로세스에

전혀 도착하지 않을 수 있다. 이것을 손실 허용 애플리케이션(loss-tolerant application)이라고 한다.

 

처리율( throughput )

애플리케이션은 어느정도 보장된 처리율이 필요하다. 

처리율 요구사항을 갖는 애플리케이션은 대역폭 민감 애플리케이션(bandwidth-sensitive application)이라고 한다.

반면, 탄력적 애플리케이션(elastic application)은 가용한 처리율을 많으면 많은대로 적으로면 적은 대로 이용가능하다.

 

시간( Timing )

트랜스포트 계층 프로토콜은 또한 시간 보장을 제공할 수 있다.

예를 들어 우리가 통화서비스를 이용할 때, 긴 지연 시간은 부자연스러운 사용을 야기한다.

 

보안(security)

마지막으로, 트랜스포트 프로토콜은 애플리케이션에 하나 이상의 보안 서비스를 제공가능하다.

 

 

 

 

 


TCP Service

일단 TCP는 전송 프로세스와 수신프로세스 간의 안정적인 전송이 장점이다.

그리고 애플리케이션이 TCP 서비스를 사용하면 연결 지향형 서비스신뢰적인 데이터 전송 서비스를  받는다.

 

하지만 타이밍과 보안, 그리고 최소 처리량 보장을 제공하지 않는것이 단점이다.

 

TCP는 혼잡 제어 방식, 즉 통신하는 프로세스의 직접 이득보다는 인터넷의 전체 성능 향상을 위한 서비스이다.

이는 네트워크가 혼잡 상태에 이르면 프로세스(클라이언트 혹은 서버) 속도를 낮춘다.

 

 

UDP Service

UDP는 최소의 서비스 모델을 가진 간단한 전송 프로토콜이다.

이는 송신프로세스와 수신프로세스 간의 비신뢰적인 데이터 전송 서비스를 제공한다.

즉, 하나의 프로세스가 UDP소켓으로 메시지를 보내면, UDP는 그 메세지가 수신 소켓에 도착하는 것을 보장하지 않는다.

 

그리고 신뢰성, 흐름 제어, 혼잡 제어, 타이밍, 처리량 보장, 보안 또는 연결 설정 등을 제공하지 않는다.

 

UDP 는 단점만 있는것 같은데 이를 어디서 사용하는걸까?

다음 표를 보자

대부분의 서비스가 TCP를 이용하지만 인터넷 전화만 UDP를 사용한다.

 

예를 들어 스카이프는 데이터 손실을 허용하지만 효율성을 위해 최소의 전송률을 필요로 하기 때문에, 인터넷 전화 개발자들은

일반적으로 UDP 서비스를 선호한다. 

이를 통해 TCP혼잡 제어 방식과 패킷 오버헤드를 회피할 수 있다.