네트워크 통신 과정을 단계적으로 나눈 OSI 7계층 중 4번째 계층에 속한다.
통신을 활성화하기 위한 단계로, 목적지까지 신뢰 가능한 데이터를 전달하기 위해 존재한다.
네트워크 구성 요소와 프로토콜 내에서 송신자/수신자를 연결하는 통신 서비스를 제공하며, 이 프로토콜은 사용 목적에 따라 크게 연결형 통신 TCP와 비연결형 통신 UDP로 나눌 수 있다.
TCP는 연결 지향적, UDP는 속도지향적인 프로토콜이다 라고 간단히 말할 수도 있겠다.
이 프로토콜은 데이터 송수신 과정의 일종이라고 해도 네트워크 라우터가 아닌 '종단(end - to - end) 시스템' 에서 구현되는데, 프로세스로부터 수신한 메세지를 이 전송 계층 세그먼트(segment)인 패킷을 변환해서 네트워크 계층에 전달하는 것이다.
네트워크 라우터는 3계층인 네트워크 계층에서 라우팅(routing) 과정 중에 사용된다.
데이터를 세그먼트로 만들기 위해 작은 조각으로 분할하고, 이 분할된 조각에 '헤더(header)'를 추가하여 수행한다.
이후 세그먼트가 네트워크 계층 패킷 안에 캡슐화되어 목적지로 전달된다.
이 전송 계층은 데이터를 송수신하는 관점에서 네트워크 계층과 상당히 밀접한 관계를 갖고 있다.
전송 계층 프로토콜은 서로 다른 호스트에서 동작하는 '프로세스(process)' 사이의 논리적 통신을 제공하고,
네트워크 프로토콜은 호스트 사이의 논리적 통신을 제공한다.
비유하자면 집A와 집B의 우편물 배송 과정을 떠올릴 수 있다.
A가 B에게 우편물을 전달한다고 할 때, 이 우편물이 데이터 패킷이 될 것이다. A와 B는 종단 시스템의 '호스트'에 해당된다.
우편물을 전달하는 서비스, 우체국 택배나 쿠팡 등이 '네트워크 계층 프로토콜' 이며 전달되는 과정 자체를 '전송 계층 프로토콜' 이라고 볼 수 있다.
따라서 전송 계층이 제공 가능한 서비스는 자연스럽게 네트워크 계층 서비스 모델에 의해 제약을 받을 수 있다.
만약 우체국 택배, 네트워크 계층 프로토콜이 호스트 사이에서 전송되는 전송 계층 세그먼트에 지연 보장이나 대역폭 보장을 제공할 수 없다면, 전송 계층 프토콜은 프로세스끼리 전송하는 데이터에 대한 지연 보장이나 대역폭 보장을 덩달아 제공할 수 없다는 것을 의미한다.
네트워크 통신에서 데이터를 송수신하기 위한 규칙이나 절차를 정의한 표준 규약을 말한다.
여러 계층에서 프로토콜들을 사용하지만 전송 계층에서는 대표적으로 2가지, 데이터를 안정적이고 효율적으로 전달하는 TCP와 UDP 프로토콜을 사용한다.
데이터의 신뢰성과 안전을 우선시한 프로토콜로 연결형 통신 규약이다. 데이터가 정확히, 순서에 맞게 도착하도록 보장한다.
주요 특징으로는 4가지, 연결 지향적, 데이터의 신뢰성 보장, 흐름제어와 혼잡제어, 데이터 분할 및 조립 이 있다.
1. 연결 지향적
클라이언트와 서버를 예시로 든 송/수신 관계의 연결 지향적 통신 방법의 3-Way HandShake 이미지다.
신뢰성 있는 연결을 설정하기 위해 클라이언트와 서버 간에 수행되는 과정으로, 양쪽이 데이터를 주고받을 준비가 되었음을 확인하고 통신 시작 전 동기화를 진행한다.
1. SYN(Synchronize) : 클라이언트가 서버에 연결 요청(SYN패킷)을 보낸다.
2. SYN-ACK( ~ Acknowledgment) : 서버는 클라이언트의 요청을 받고 연결 가능하다는 응답(SYN-ACK패킷) 을 보낸다. 또한 이 과정에서 SYN 요청을 수락하면서 자신의 SYN 요청을 보낸다.
3. ACK (~) : 클라이언트는 서버의 응답 확인 후 ACK 패킷을 다시 서버에 보내 양쪽의 연결이 완료되었음을 인지한다.
여기까지가 연결 지향적이라는 특징 중 그 사례인 3way-handshake 를 설명한 내용인데, 이러한 절차를 거치면서 데이터를 전송하기 전 송수신자 간 연결을 설정해 신뢰성을 확보한다.
2. 데이터의 신뢰성 보장
데이터의 손실, 중복, 순서 변경을 감지해 수정할 수 없도록 설계되는 특징이다.
손질된 데이터는 재전송 메커니즘을 통해 복구해 데이터의 무결성, 신뢰성을 보장한다.
3. 흐름 제어와 혼잡 제어
두 가지는 얼핏 보기에는 유사한 내용이지만, 그 과정과 목적에 있어 다른 면이 있다.
흐름제어는 송수신 간 데이터 처리 속도의 차이를 조정하기 위해 사용되는 기법으로, 송신자의 전송 속도가 수신자를 압도하지 않도록 하는 통신 기술이다.
혼잡제어는 네트워크 과부하를 방지하기 위해 트래픽 양을 조절하는 기법으로, 네트워크 내의 패킷 수를 조절하여 오버플로우를 방지하는 목적을 가지고 있다.
이러한 기법들을 사용해 데이터의 안전과 순서를 보장한다.
4. 데이터 분할 및 조립
큰 데이터를 작은 세그먼트로 나누고, 수신 측에서는 이를 조립하여 원본 데이터를 복원해 조회하는 기법이다.
네트워크 상에는 한번에 전송할 수 있는 데이터 크기(MTU)에는 제한이 있어 큰 데이터를 분할하지 않고 전송할 경우 네트워크 병목 현상이나 손실 등의 현상이 나타날 수 있다.
해서 송신 측 프로세서는 데이터를 TCP 세그먼트로 나눈 후 데이터에 '헤더'를 포함한다. 이 헤더에는 송수신 포트, 데이터 순서, 플래그, 체크섬 등이 포함된다.
수신 측 프로세서는 전달받은 TCP 세그먼트를 헤더에 포함된 데이터 순서를 참조하여 올바른 순서대로 버퍼에 저장하고 이 데이터를 기반으로 누락된 데이터가 있으면 재전송 요청을 보낸다.
이 과정으로 큰 데이터를 누락 없이 안전하게 전달하며 신뢰성 높은 데이터 전송을 보장할 수 있다.
이러한 TCP 프로토콜은 데이터의 신뢰성과 정확성을 보장하여 주요한 데이터 전송에 적합하다는 장점을 가지고 있다.
다만 연결 설정 과정이 복잡하고 유지, 신뢰성 확보를 위한 오버헤드로 인해 속도가 느릴 수 있다는 단점 또한 존재한다.
주로 정확성과 안정성이 중요한 어플리케이션(HTTP, FTP, SMTP 등) 에서 사용된다.
데이터의 신뢰성보다는 전송 속도의 효율에 중점을 둔 프로토콜이라고 볼 수 있다.
비연결형 통신의 일종으로 수신 측이 데이터를 받았는지의 여부에 상관없이 데이터를 전송한다.
이를 통해 불특정 다수에게 데이터를 일괄적으로 보내는 'BroadCast' 기능이 가능하다.
또한 응답을 받을 필요가 없기 때문에 TCP에 비해 작은 크기의 UDP헤더를 가지고 있고, 이 데이터를 'UDP 데이터그램' 이라고 한다.
내용이 비교적 간단한데, 그만큼 장점과 단점이 확연하게 두드러지는 프로토콜이라고 볼 수 있다.
장점으로는 연결 설정 과정이 없어 나타나는 빠른 전송 속도, 적은 오버헤드와 수신자를 고려하지 않은 데이터 전송으로 BroadCast와 Multicast 가 가능하다는 점으로 결과적으로 구조적 단순성이 뛰어나다고 볼 수 있다.
다만 그만큼 데이터의 손실이나 순서를 고려하지 않아 신뢰성이 부족하고, 혼잡 제어 기법이 없는 만큼 패킷 손실 가능성이 높다는 것과 수신 여부를 확인하지 않아 전송 상태를 확인할 수 없다는 단점 또한 존재한다.
참고