사전 정의: 컴퓨터 통신 분야에서 다양한 표준에 대한 국제적인 표준 정의를 위한 골격
일상으로 예를 들어서
만약 선생님이 동물에 대해 조사해온 것을 가져오라고 숙제를 내주었다고 가정해봅니다.
각 학생들은 저마다 조사를 해서 숙제를 제출했고, 선생님은 숙제에 평가를 하기 위해 학생들이 조사한 내용들을 모두 살펴봅니다.
이때 어떤 학생은 동물의 생김새에 대해 깊이 조사를 했고, 어떤 학생은 동물의 종류에 대해 조사를 하고, 어떤 학생은 동물의 역사에 대해 조사를 했습니다.
그러면 학생 입장에서는 동물에 대해 어떤것을 조사해야 하는지 고민을 할 것이고,
선생님 입장에서는 어떤 기준을 주지 않았으니 다양한 주제를 가지고 해석하고 평가해야하기 때문에 시간도 오래 걸리고 객관적인 평가가 힘들어질 수도 있습니다.
이렇게 네트워크 통신도 마찬가지로 어떤 기준을 정해두지 않으면 무엇을 보내야 하는지, 받은 정보들이 무엇인지 혼선이 되어 오류가 발생하거나 차단이 될 수도 있습니다.
때문에 네트워크 통신을 할 때 국제적으로 어떠한 규격을 정해두고 그 규격에 맞게 서로 다른 개발 규격들이 서로 통신을 하게끔 만든 것을 OSI 계층 모델이라고 합니다.
우리가 네트워크를 통해 어떤 데이터를 보낸다고 했을 때, 필요한 정보는 어떤것이 있을까?
만약 웹에서 로그인을 한다고 가정해보자.
로그인을 하기 위해 아이디와 비밀번호, 웹인지 앱인지 등, 어느 서버에 보낼것인지, 요청하는 도메인은 어떤건지, 어디서 보내는지 등 다양한 정보들이 있을 것입니다.
이러한 정보들을 각 7계층을 통해 단계를 나누어서 보낸다고 생각하면 됩니다.
7 계층에는 위 사진처럼 1 Layer (1 계층) 부터
으로 나누어집니다.
물리 계층은 OSI 7 계층 모델 상의 최하위 계층입니다.
이 계층에서는 전기적, 기계적, 기능적인 특성을 이용해 통신 케이블로 데이터를 전송합니다.
통신 케이블이라고 한다면 우리가 아는 랜선이 대표적이고, 그것을 내 위치(IP)에서 내보내기 위해서는 리피터, 허브 등을 사용하여 데이터를 전송하게 될 것입니다.
또한, 물리 계층에서는 어떤 데이터 전송이든 에러를 신경쓰지 않고 모두 받아내고, 비트 단위로 통신을 주고받습니다.
데이터 링크 계층은 물리계층을 통해 송수신된 데이터들을 다음 계층으로 보내기 위해 신뢰되는 데이터인지, 오류가 없는지를 파악하고, 일련번호를 통한 순서를 매기고 정보를 전달하는 역할을 합니다.
프레이밍 (Framing) 이라는 과정을 통해 물리계층에서 전달받은 데이터를 패킷 혹은 프레임화를 시켜 링크로 변환하게 되고, 브리지, 스위치와 같은 장비로 송수신을 받으며 MAC 주소를 사용합니다.
2 계층은 HDLC, PPP, FDDI, PDH/SDH, ATM, 이더넷, 무선LAN, 이동통신 등 매우 다양하게 구현되어있습니다.
네트워크 계층에서는 2계층을 통해 묶어진 패킷을 각 패킷의 목적지에 갈 수 있도록 경로를 배정하고 어떻게 전달이 되는지 흐름을 제어 하는 역할을 합니다.
이 때, 이러한 패킷을 목적지까지 전달하는 과정 중 외부에서 경로나 어떤 데이터가 보내지는지 볼 수 없도록 또한 데이터를 가로채지 못하도록 중계를 하는 역할도 수행합니다.
이러한 과정을 사용하는 대표적인 장비는 라우터가 되며, 요즘은 2계층 장비인 스위치에서 라우팅 기능이 있는 Layer3 스위치도 있습니다.
네트워크 계층에서 IP를 사용하여 패킷의 목적지를 전달하고 책임지는 역할을 하게 됩니다.
OSI 7계층모델 관점에서는 IP계층이 네트워크 계층에 해당되고, IP패킷의 전달 및 라우팅을 담당하는 계층입니다.
TCP/IP 기반의 인터넷 망을 통해 데이터그램의 전달을 담당하는 프로토콜입니다.
TCP/IP 기반은 컴퓨터 사이의 통신 표준 및 네트워크의 라우팅 및 상호연결에 대한 자세한 규칙을 지정하는 프로토콜 스위트
라고 하며, 쉽게 컴퓨터 사이에서 통신하기 위한 약속들의 모음이라고 생각하면 됩니다.
인터넷 망을 통해 송수신을 받을 때에는 IP를 기반으로 IP Routing을 이용해 목적지에 전달하고 TCP의 특성을 활용해서 송신자와 수신자의 논리적 연결과 신뢰성을 유지할 수 있도록 하겠다는 것을 의미합니다.
즉, 네트워크 계층에서는 IP 계층을 통해 패킷의 목적지를 설정하게 되는데 IP 프로토콜을 활용하여 목적지를 설정하고 IP 주소를 지정할 수 있게 되는겁니다.
IP 프로토콜에서 나왔던 TCP가 여기서 사용되며, 통신을 활성화하기 위한 계층입니다.
위에서 설명했듯 TCP 프로토콜의 송신자와 수신자의 논리적 연결을 담당하는 부분이며 신뢰성 있는 연결을 유지할 수 있도록 합니다.
송신자 수신자의 끝단(End to end) 그리고 그 끝단을 사용자(Endpoint)라고 하며 데이터를 전송할 때 패킷들의 전송이 유효한지, 제대로 보내졌는지, 속도는 맞는지, 제대로 받았는지에 대해 확인합니다.
여기서 중요한 것은 양 끝단 사용자들의 Port 가 맞는지 확인하고, 접근이 허용되어 있어야 연결이 제대로 이루어집니다.
마찬가지로 전달되는 데이터들의 투명성도 보장해줍니다.
TCP가 뿐만 아니라 UDP, SCTP 등 다른 프로토콜도 존재합니다.
하지만 게임 서버는 보통 TCP/IP 기반의 TCP 프로토콜을 사용하여 서버를 구성합니다.
4계층에선 컴퓨터와 컴퓨터자체의 연결을 유지해주고 이어주는 역할이었다면 세션 계층은 응용프로그램(애플리케이션)에서의 통신을 유지하게 해주는 역할을 수행합니다.
즉, 1-4 계층까지는 컴퓨터를 연결해준다고 한다면 5계층부터는 컴퓨터안에 프로세스(애플리케이션)간의 연결을 유지하고 송수신하게 해준다고 생각하면 됩니다.
세션 계층에서는 두 애플리케이션간의 연결 설정, 유지 및 종료를 최소한으로하며 전송이 잘못이루어지거나 오류가 발생한 경우 복구지점을 설정하여 동기화하고, 네트워크 오류를 검사하는 기능을 수행합니다.
정리하자면 세션계층에서는 애플리케이션 간 세션을 구축하고 연결을 유지하거나 종료하는 역할을 하는 층이고, 다음 계층인 프레젠테이션 계층 사이의 대화를 동기하고 데이터 교환을 관리하는 역할도 합니다.
여기는 세션계층을 통해 받은 데이터들을 잘 통신할 수 있도록 변환하고 필터를 하는 층입니다.
애플리케이션에서 이해할 수 있도록 정해진 기준대로 형식을 공통화하고 변환해줍니다.
공통화를 하는 이유는 사용자의 시스템이 모두 다르다는 점을 고려하여 데이터의 형식 차이가 일어날 수 있기 때문에 이러한 부분을 7계층인 응용 계층에서 해석하는 부담을 줄여주기 위함입니다.
공통화 작업은 인코딩이나 암호화를 통해 이루어집니다.
응용 게층은 유저와 가장 맞닿는 층입니다.
응용프로그램을 통해 사용자에게 서비스를 제공하고, 사용자가 제공한 정보나 명령을 하위 계층에 전달하는 역할을 수행합니다.
telnet, FTP, SMTP, POP, SNMP, WWW, IMAP, HTTP 같은 프로토콜이 있는데 우리가 사용하는 메일 프로그램이나 파일전송 프로그램 등이 이러한 프로토콜을 보다 쉽게 사용하게 해주는 응용프로그램입니다.
OSI 7 계층 모델을 사용하면 우리가 네트워크 통신을 하는 과정에서 발생한 에러나 이슈를 어떤 지점에서 오류가 발생하는지? 어떻게 데이터가 송수신이 되는지 알 수 있는 점이 있습니다.
간단히 예를 들면,
온라인 게임을 하는데 네트워크가 끊겼다.
이러면 일단 물리적, 기계적 이슈가 있는지 랜선, 허브 등 체크를 한다 (문제가 있다면 1계층)
게임에서 서버가 셧다운이 되거나 게임 서버에 문제가 있다 (7계층)
게임 서버 구동 및 연결은 되지만 데이터 전송이 제대로 이루어지지 않는다 (5-6계층)
이렇게 소프트웨어와 하드웨어적 이슈가 어떻게 있는지 확인하여 다른 계층의 장비를 체크하지 않아도 되는 것이 장점입니다.