일반적으로 복ㅈ바하고 큰 시스템의 기능은 특정 단위의 모듈로 나누어 설계한다. 모듈은 독립적으로 동작하면서도 상호 유기적으로 통합될 수 있어야 한다. 그러므로 모듈 사이에는 적절한 인터페이스가 필요하다.
(a)처럼 전체 시스템을 기능에 따라 세 부분으로 나누어 설계할 수 있는데, 이때 각 모듈은 유기적으로 연결되어야 한다. B 모듈은 A 모듈과 곡선 모양의 인터페이스로 연결되고, C 모듈과는 톱니 모양의 인터페이스로 연결된다. A와 C 모듈은 직접 연결되는 인터페이스가 없으며, B 모듈을 통해 간접적인 관계를 유지한다.
그러나 시스템을 모듈화하지 않았다면 한 부분만 고장나도 전체 시스템을 교체해야 한다. 반면 모듈화하면 (b)처럼 오류가 발생한 B 모듈만 교체해서 버전 2로 대체할 수 있다. 이때 모듈 내부의 처리 과정은 임의로 개선할 수 있으나, A와 C 모듈과의 인터페이스는 동일하게 유지해야 전체 시스템 동작에 영향을 주지 않는다.
분할된 모듈들은 협력 관계를 유지하면서 유기적으로 동작한다. 대부분의 모듈 구조에서는 특정 모듈이 다른 모듈에 서비스를 제공하는 형식의 계층 구조를 이룬다. 네트워크에서도 독립적인 고유 기능을 수행하는 모듈들이 상하위의 계층 구조로 연결되어 동작한다.
계층 구조에서는 상위 계층이 하위 계층에 특정 서비스를 요청하는 방식으로 동작한다. 요청을 받은 하위 계층은 해당 서비스를 실행하여 그 결과를 상위 계층에 돌려준다. 하위 계층의 실행 결과는 상위 계층에 결과 값을 직접 전달하는 방식이 될 수 있고, 주변 환경값을 변경하는 부수 효과 방식일 수도 있다.
네트워크에서는 데이터 송수신 과정에서 오류가 발생할 수 있다. 전송 오류에는 데이터가 깨져서 도착하는 데이터 변형 오류와 데이터가 도착하지 못하는 데이터 분실 오류가 있다. 전송 오류 문제를 해결하는 오류 제어 기능은 통신 프로토콜의 가장 기본적인 기능에 속한다. 오류가 발생하는 1차 원인은 물리 계층의 전송 매체에 의한 물리적인 오류이다. 이를 해결하기 위해서 데이터 링크 계층이 물리적인 전송 오류를 해결한다.
송신 호스트에서 보낸 데이터가 수신 호스트에 도착했을 때 발생할 수 있는 현상을 세 가지 유형으로 설명한다. (a)는 데이터가 오류 없이 도착하는 정상적인 경우이고, (b)는 데이터가 수신 호스트에 도착하지 못하는 데이터 분실 오류이며, (c)는 데이터의 내용이 변경되어 도착하는 데이터 변형 오류이다.
(b)의 경우, 전송 경로가 잘못되어 데이터가 엉뚱한 방향으로 전달되거나, 상위 계층의 논리적 처리 과정에서 데이터를 분실할 수도 있다. 데이터가 변형되거나 분실되는 오류가 발생되어 이를 해결하려면 먼저 오류가 발생한 사실을 인지해야 한다. 수신 호스트가 자신에게 데이터가 보내졌다는 사실을 인지하는 것이 쉽지 않다. 그래서 보통은 송신 호스트에서 오류를 감지하는 방법을 사용한다.
(c)의 경우, 수신 호스트가 여러 방식의 오류 검출 기법을 통해 오류를 검출할 수 있다. 네트워크에서 전송 오류를 해결하는 일반적인 방법은 송신 호스트가 원래 데이터를 재전송하는 것이다.
물리적인 오류 외에도 통신 프로토콜에서 사용하는 알고리즘의 성격에 의해 오류가 발생하기도 한다. 예를 들어, 송신 호스트가 순차적으로 전송한 데이터의 순서가 뒤바뀌어 도착하는 경우이다. 수신 호스트에서 도착 순서를 바로잡으려면 데이터의 논리적인 순서를 의미하는 순서 번호 기능이 필요하다.
전송 매체에서 물리적인 오류가 없었는데도 데이터를 분실하는 경우가 있는데, 이는 송수신 호스트 사이의 데이터 전송/처리 속도 차이 때문에 발생하기도 한다. 수신 호스트에 데이터가 도착하면 일단 내부 버퍼에 보관했다가 처리한다. 그런데 내부 버퍼에 보관할 공간을 확보하지 못하면 데이터를 논리적으로 분실하는 결과가 초래된다.
일반적으로 수신 호스트의 버퍼 처리 속도보다 송신 호스트가 데이터를 전송하는 속도가 빠르면 논리적인 데이터 분실 오류가 발생할 수 있다. 이 문제를 해결하려면 송신 호스트의 전송 속도를 조절하는 흐름 제어 기능이 필요하다.
계층 구조 프로토콜에서 하위 계층이 상위 계층에 제공하는 서비스의 종류에는 연결형과 비연결형이 있으며 프리미티브 형태로 구현된다.
연결형 서비스를 이용하는 3단계
전송할 데이터가 있으면 각 데이터를 독립적으로 목적지 호스트로 전송
통신 프로토콜에서 프리미티브를 올바르게 수행하려면 각 프리미티브를 네 가지 기능을 포함하도록 설계해야한다.
클라이언트에서 서버로 전달되는 오청은 Request와 Indication으로 구현되고, 서버의 응답은 Response와 Confirm으로 구현된다.
클라이언트로부터 Request가 발생하면 서버에 Indication 형태로 전달되어 서버가 인지한다. 서버에서는 해당 프리미티브를 올바르게 수신하였음을 클라이언트에 통보하기 위하여 Response를 응답으로 보내고, 이는 클라이언트에 Confirm 형태로 도착한다. 이와 같은 4단계 절차를 통해 하나의 서비스 프리미티브가 처리된다.
연결된 두 호스트가 각각 7개의 계층으로 구성된 모듈을 수행함으로써 데이터 송수신이 가능하다. 전송 데이터는 송신 호스트의 응용 계층에서 시작해 하위 계층으로 순차적으로 전달되어, 최종적으로 물리 계층에서 수신 호스트에 전달된다. 수신 호스트에서는 데이터를 상위 계층으로 순차적으로 이동시켜 응용 계층까지 보내준다.
데이터가 하위 계층으로 내려갈 때는 각 계층의 프로토콜에서 정의한 헤더 정보가 추가된다. 물리 계층을 제외한 모든 계층에서 헤더 정보가 추가되고, 데이터를 수신하는 호스트에서는 반대로 상위 계층으로 올라가며 순차적으로 헤더 정보를 제거하고 해석한다.
계층n 프로토콜 : 계층 n 모듈끼리 사용하는 통신 규칙
동료 프로세스 : 동일 계층에 위치한 통신 양단 프로세스
인터페이스 : 상하위 계층 사이의 접속 방법
서비스 : 상위 계층이 하위 계층을 사용하는 방법
송신 호스트에서 수신 호스트로 데이터를 전달하려면 중개 역할을 수행하는 중개 노드를 거쳐야 한다. 중개 시스템은 데이터가 목적지까지 올바르게 전달되도록 경로 배정 기능을 수행한다. 중개 시스템에서는 경로 배정 기능을 수행하는 네트워크 계층의 프로토콜이 동작하는데, 이와 같은 경로 배정 기능을 라우팅이라 한다.
중개 노드인 라우터는 자신에게 도착한 데이터의 헤더 정보를 해석해서 적절한 경로로 전달하며, 다음 라우터로 보내기 전에 헤더 정보를 수정하는 작업도 진행한다. 라우터 좌우에 위치한 네트워크는 종류가 다를 수도 있다. 네트워크가 다르면 물리적인 특성뿐 아니라, 하위 계층의 헤더 정보도 다를 수 있다. 따라서 헤더 정보의 값을 해석하여 변환하는 작업은 라우터의 주요 기능에 해당한다.
OSI 7계층 모델의 모든 계층이 중요하지만, 특히 전송 계층이 중요하다. 전송 계층의 하위에 있는 물리 계층, 데이터 링크 계층, 네트워크 계층은 전송 계층의 연결을 설정하고 지원하는 역할을 수행한다. 상위에 있는 세션 계층, 표현 계층, 응용 계층은 전송 계층의 연결을 어떻게 활용할지에 대하여 다룬다. 따라서 OSI 7계층 모델은 전송 계층을 기준으로 두 부분으로 나뉜다고 볼 수 있다.