[네트워크] OSI 7 계층 모델
여러 호스트들을 연결하여 통신하기 위해서는 연결하는 방식을 통일하지 않으면 서로 연결이 될 리가 없습니다.
마치 사람들 간 언어가 다 다르고 언어가 같아도 문법, 예의 등이 갖춰지지 않으면 서로 대화하기 힘든 것처럼
데이터 통신을 위해서도 연결 방식을 표준화합니다. ISO에서는 호스트가 제공하는 네트워크 기능을 연관된
그룹으로 묶어 계층 모델로 정의하였는데 이것을 OSI 7 계층 모델이라고 합니다.
이 모델은 호스트들이 가지고 있는 기본적인 통신 기능이자 방법입니다.
1. 물리 계층
물리 계층은 OSI 7 계층에서 맨 아래의 H/W를 담당하는 계층으로 호스트들이 데이터를 전송하기 위해서는 반드시
물리 계층이 있어야 합니다. 유일하게 H/W로 이루어진 계층으로 각 호스트들의 물리적 인터페이스에 관한 사항을
담당합니다. 따라서 물리적 신호를 사용함에 따라 어떤 상태가 '1'이고 '0'인지를 정의합니다.
2. 데이터 링크 계층
물리 계층에서 데이터를 전송하는 과정에서 노이즈 같은 외부 요인으로 인한 오류가 발생할 수 있습니다.
데이터 링크 계층에서는 이러한 전송 오류를 감지하는 기능을 가지고 있어 데이터 분실과 데이터 변형에 대하여
인지하고 주어진 규정에 따라 처리하도록 합니다.
이 계층에서부터는 데이터를 수신한다면 데이터에 붙은 각 계층에서 사용하는 헤더를 추가/제거 후 다음 계층으로
전송하게 됩니다. 송신 호스트에서 헤더를 붙이는 과정을 캡슐화(Encapsulation)라고 부르며 수신 호스트에서
제거하는 과정을 역 캡슐화(Decapsulation)라고 합니다.
3. 네트워크 계층
일반적으로 송신 호스트가 목표한 수신 호스트로 데이터를 보내게 될 때 여러 중개 시스템을 거치게 됩니다.
이러한 갈림길(중계기)에 들어섰을 때 데이터를 올바른 방향으로 보내줄 수 있도록 지원하는 계층입니다.
네트워크 부하가 증가하면 특정 지역에 혼잡이 발생할 수 있는데, 혼잡 제어도 데이터의 전송 경로와 관계되어
네트워크 계층이 담당합니다. 네트워크 계층도 마찬가지로 헤더의 추가/제거를 한 후에 다음 계층으로 데이터를
전송합니다.
4. 전송 계층
하위 계층들이 시스템 간의 계층을 다루었다면 전송 계층은 시스템 내의 프로세스 사이의 통신을 담당합니다.
전송 계층까지의 기능은 OS에서 시스템 콜 형태로 상위 계층에 제공하며 계층 5~7은 사용자 프로그램으로 작성됩니다.
또한 전송 계층에서는 일반 사용자의 서비스 요구 유형에 대한 고려와 흐름 제어 기능도 제공합니다.
5. 세션 계층
세션에 대한 개념을 잡기 어려워서 이것저것 보면서 정리해봤습니다. 불확실한 정보이니 접은 글 처리해두겠습니다.
세션은 다른 프로세스와 연결돼있음을 인지하고 있는 시간을 뜻한다고 합니다. 위의 그림에서 대화(dialogue)의 그룹이 되어 하나의 세션이 된다고 합니다. 각 세션은 토큰이라는 자원을 가졌을 때 dialogue를 열 권리가 생기고 관리합니다.
또한 동기 기능을 제공하고 있으며 주동 기점과 부동 기점으로 나누어 복구에 소요되는 부담을 최소화합니다.
6. 표현 계층
데이터를 주고 받는 호스트 양쪽에서 이해 가능한 표준 방식으로 코딩하는 문제를 다룹니다.
같은 음악 파일을 받아도 한쪽은 mp3, 다른 한쪽은 flac을 보낼 수 있는 것처럼 서로 사용할 수 있도록 표준 방식에
맞춰주는 역할을 하는 계층입니다. 또한 그 뿐만이 아니라 데이터의 암호화 및 압축도 담당하고 있습니다.
7. 응용 계층
확실하게 어떠한 역할을 맡고 있다기 보다는 여러 서비스들을 모두 칭하는 개념이라고 보시면 됩니다.
채팅 서비스, 파일 공유 서비스, 이메일 등등 같은 서비스를 표현 계층의 데이터를 가져와
사람들에게 보여줄 수 있는 형태로 데이터를 변환하는 역할을 한다고 보시면 될 것 같습니다.
지금까지 간단하게 OSI 7계층에 대해 정리해보았지만 네트워크에 대해 약하다 보니 확실치 않은 개념이 여럿 있습니다.
혹시나 이 글을 보시게 되시는 분들은 더 많은 자료와 책들을 참고로 하시는 게 좋습니다.