본문 바로가기
컴퓨터 네트워크

컴퓨터 네트워크 25장 - 전송 계층의 기능 -

by ChocoPeanut 2017. 4. 29.

컴퓨터 네트워크 25

- 전송 계층의 기능 -

 

전송 계층네트워크 양 끝단에서 통신을 수행하는 당사자 간의 단대단 연결을 제공한다. 전송 계층은 데이터 링크 계층과 유사하다. 오류 제어, 흐름 제어, 데이터 순서화 등을 제공하는 면에서 비슷하다고 할 수 있다. 하지만 데이터 링크 계층은 물리적으로 1:1 연결된 호스트 사이의 전송을 의미한다면 전송 계층은 논리적으로 1:1 연결된 호스트 사이의 전송을 의미한다.



이제 전송 계층의 주요 기능에 대해 알아보겠다.


흐름 제어송수신 호스트의 전송 과정의 속도 차이를 제어해주는 기능을 한다. 데이터링크 계층에서도 같은 기능을 수행하여 기본 목적을 비롯해 유사한 점이 많지만 다른 버퍼 관리 방법이 필요하다. 수신자가 송신자의 전송 속도보다 느리게 수신을 하므로 버퍼에 저장을 하게 된다. 하지만 버퍼 용량이 초과하게 되면 데이터 분실이 발생한다. 이를 해결하기 위해 타임아웃 기능을 통해 재전송을 유발시켜 데이터를 다시 받는다. 하지만 이 기능은 전체 네트워크의 전송 효율을 떨어뜨린다. 이론적으로 흐름 제어 기능은 수신 호스트가 슬라이딩 윈도우 프로토콜의 윈도우 하단 값을 조정한다. 즉 송신 프로세스가 보낼 수 있는 패킷의 한계를 지정하는 방법으로 문제를 해결한다.


오류 제어데이터 변형, 데이터 분실 오류 시 재전송 기능으로 복구를 수행하는 기능을 말한다. 수신자의 요구 또는 송신자의 판단에 따라 오류가 발생했음을 알게 되어 이를 통해 오류를 처리하는 과정을 의미한다. 수신자의 요구는 부정 응답이라고 할 수 있고 송신자의 판단은 타임아웃을 생각하면 될 것이다. 실제로 전송 계층에서 발생하는 오류는 논리적으로 구축된 각 계층의 소프트웨어가 동작하는 과정에서 데이터를 분실하는 경우가 대부분이다. 예를 들어 네트워크 계층의 기능적 한계나 잘못된 위치/경로 정보에 의한 분실이 많다.


분할과 병합은 상위 계층에서 요구한 데이터 크기가 전송 계층에서 처리할 수 있는 크기보다 큰 경우 이 기능을 수행한다. 분할은 데이터를 전송하기 전에 데이터를 적합한 크기로 나누는 과정이고 병합은 수신한 데이터를 원래 크기로 다시 모으는 과정이다.


서비스 프리미티브전송 계층 서비스를 사용하기 위한 인터페이스이다. 전송 계층에서는 비연결성 서비스뿐만 아니라, 신뢰성이 향상된 연결형 서비스도 제공한다.



전송 계층을 설계하기 위해서는 여러 가지를 고려해야한다.


주소 표현은 네트워크에서 필수적인 사항이다. 전송 계층의 주소를 보통 TSAP라고 한다. 주소 표현에는 구조적 표현과 비구조적 표현으로 나눌 수 있다. 구조적 표현은 여러 개의 계층적 필드로 구분해서 주소를 표현하는 것이다. 이 때 포트 번호를 사용하는데 포트 번호는 통신 프로세스를 구별하는 번호이다. 비구조적 표현은 값만 해석해서는 논리적인 위치를 파악할 수 없는 주소를 나타낸다. TSAP는 네트워크 계층의 호스트 IP 주소와 전송 계층의 포트 번호의 조합으로 나타낸다.


멀티플렉싱개별적으로 설정된 TPDU의 주소가 동일한 경우 하나의 가상회선에 실어 보내는 형태를 말한다. TPDU는 전송 계층 연결에서 전송 데이터의 단위를 말한다. 멀티플렉싱은 두 가지의 종류가 있는데 상방향 멀티플렉싱과 하방향 멀티플렉싱이다. 상방향은 다수의 전송 계층 연결에 대해 하부의 네트워크 계층에서 연결이 하나 형성되는 경우로 네트워크 계층의 가상 회선 연결 수를 줄여 연결 설정에 걸리는 시간을 단축시킬 수 있다. 하방향의 경우는 하나의 전송 연결 설정을 의미하는 포트에 다수의 네트워크 계층의 가상 회선을 할당하는 방식이다. 이 방식은 데이터를 전송하면 데이터의 특성에 따라 개별 가상 회선을 할당하여 효과적인 통신이 가능하다.



연결 설정은 개념적으로 양자 합의가 필요하다. 한쪽에서 연결 설정 요구를 하게 되면 상대방에서 연결 수락 응답을 하는 작용으로 이루어진다. 실제로 프리미티브 전달 과정에서의 분실, 변형, 복사 가능성이 있으므로 이러한 문제들을 고려해서 연결을 설정해야한다. 연결 설정에는 3단계 설정이 있는데 먼저 A 프로세스가 B 프로세스에게 Conn-Req를 통해 연결 설정을 요청한다. 이에 B 프로세스는 A 프로세스에게 Conn_Ack 메시지를 통해 응답을 보낸다. 이 때 순서 번호 y를 보내 자신의 초기 송신 번호를 A 프로세스에 알려준다. 응답을 받은 A 프로세스는 Data_Req를 보내 응답에 해단 응답을 하면서 데이터를 전송하는 기능을 함께 수행한다.



연결 해제의 경우 Disc_Req 메시지를 통해 연결 종료를 할 수 있다. 하지만 Disc_Req를 사용하는데 방식이 두 가지가 존재한다. 일방적 연결 해제 방식과 점진적 연결 해제 방식이 존재한다. 일방적 연결 해제는 프로세스가 전송할 데이터가 남아 있더라도 Disc-Req 메시지가 보내지면 바로 연결 종료가 이루어지는 것을 의미한다. 점진적 연결 해제는 어느 한 쪽에서 해제 요청을 하는 경우 그 프로세스가 송신하는 연결만 해제하고 양쪽 모두 Disc-Req를 전송해야 해제가 된다.