Look into the OSI 7 Layers
OSI 7 Layers 살펴보기
이번 포스팅에서는 OSI 7계층 모형(Open Systems Interconnection Reference Model)에 대해서 알아보는 시간을 갖도록 하겠다. Web Application을 개발하는 데 있어서 OSI 7 Layers를 알고, 어떤 식으로 동작하는 지에 대해 이해하는 것이 필요하다는 생각에 이번 기회를 통해 정리해보도록 하겠다. 컴퓨터공학 전공자라면 한번쯤은 OSI 7계층 모형에 대해 들어보았지만 막상 설명하기는 어려운 개념이라고 할 수 있다. OSI 7계층에 대해 알고는 있지만 확실하게 개념이 확립되지 않은 분들이 이 글을 통해 각자 나름의 정리가 되었으면 한다.
1. OSI 7계층 모델
OSI 7계층 모델이란 국제 표준화 기구 ISO(International Standard Organization)에서 만든 원활한 통신을 위한 약속, 규약 혹은 절차를 의미한다. 데이터 교환 및 통신시에 기종마다 방식이 다르다면 혼선이 생기고 어려움이 있기 때문에 공통 표준의 필요성에 의해 생겨났다고 볼 수 있다. 데이터 교환 및 통신에 있어서 신뢰성이 있으며, 오류가 없고 복구가 가능하는 것을 포함한다. 각 계층구조마다 하는 역할이 있으며, 이러한 계층구조가 7계층으로 구성되어 있다.
2. 통신 기초
각 계층마다 하는 역할과 기능에 대해서 알아보기 전에 통신 시스템의 흐름 및 통신이 어떤 식으로 동작하는 지에 대해 잠시 집고 넘어가도록 하자. 상위 계층과 하위 계층 간의 하는 역할에 대해 살펴보겠다.
상위 계층에서 하위 계층에게 필요 서비스를 요청하면, 하위 계층에서는 상위 계층에게 해당 서비스를 제공하고 제공받은 서비스를 이용하여 통신에 사용한다.
또한, 호스트 A와 호스트 B가 통신을 한다고 가정하였을 때 자신의 n계층은 상대방의 n계층과 통신을 한다. 다시말해 자신의 n계층은 상대방의 n계층과 통신을 하고, n-1계층은 n-1계층에 해당하는 상대방의 계층과 대등하게 통신을 한다는 것을 뜻한다.
아래 그림에서 호스트 A에서 하나의 데이터를 호스트 B로 전송할 때, 상위 계층에서 하위 계층 순으로 각 계층별로 제어할 수 있고 각 계층별 중요한 정보를 프로토콜 헤더에 넣어서 하위 계층에 전달한다. 하위 계층으로 갈수록 계속해서 붙여진 헤더가 물리 계층에 도달하였을 때, 상대방에게 전송이 된다. 데이터를 수신한 호스트는 각 계층에 해당하는 헤더 파일을 열어 정보를 확인하고, 상위 계층에게로 전달하는 과정을 거치는 것이 OSI 7계층에서의 데이터 송수신을 의미한다.
3. Physical Layer 물리 계층
물리 계층은 쉽게 이야기하면 전송 매체를 뜻한다. 전송 매체마다 데이터 전송 속도의 차이가 난다. 전송매체는 유선 매체와 무선 매체로 나눠서 살펴 볼 수 있는데 유선 매체는 케이블(광, 동축 케이블 등)을 말하고, 무선 매체는 빛 혹은 전파(Wi-fi, Bluetooth 등)을 말한다.
어떤 식으로 연결되어 있는지(규격 등), 물리적 연결 형태, 전송시 신호를 구분하기 위한 클록 동기화 방법 등이 물리 계층에 해당한다.
4. Data Link Layer 데이터 링크 계층
일대일 통신으로써 물리 계층의 물리적 전송 오류, 문제를 해결한다. 오류 제어 및 흐름 제어라고도 한다. 데이터 링크 계층에서의 전송하는 데이터의 명칭을 프레임이라고 한다(전송의 단위).
CSMA / CD (Carrier Sensing Mutiple Access / Collision Detection) : MAC(Medium Access Control)의 한 종류로써, 누구나 쓸 수 있는 공유 자원인 네트워크를 이용하여 언제, 어떠한 방법으로 데이터를 주고 받을 것인지를 통제 및 제어하는 방식을 말한다.
호스트 A에서 호스트 B로 데이터를 전송한다고 가정해보자. 네트워크를 같이 사용하는 자신을 제외한 나머지 호스트들이 네트워크를 아무도 사용하지 않을 때, 데이터를 전송한다. 만일 자신이 데이터를 전송하는 도중 누군가 네트워크를 사용한다면 충돌이 일어날 것이고, 충돌이 일어난 일정 시간 후에 다시 시도를 하려고 할 것이다. 아무도 네트워크를 사용하지 않는 것을 확인 한 뒤에 데이터의 전송이 이루어지지만, 중간에 누군가 네트워크를 사용한다면 충돌이 일어날 수 있다는 것이다.
5. Network Layer 네트워크 계층
Router를 통해 데이터의 전송 경로를 결정한다. 각각의 호스트 구분을 위한 주소 개념 필요(IP Address)하며, 네트워크 계층에서의 전송하는 데이터의 명칭을 패킷이라고 한다(전송의 단위). 데이터 전송 경로의 선택에 따라 네트워크 혼잡에 영향을 미친다.
데이터의 전송 경로를 결정하고 찾아가는 작업을 Routing이라고 한다. Routing을 통해 경로를 결정한 뒤, 데이터 전송을 위한 목적지 호스트의 컴퓨터까지 찾아가는 작업을 진행한다.
6. Transport Layer 전송 계층
송수신 프로세스 사이의 단대단 통신 기능을 지원한다. 프로세스 구분을 위한 주소 개념이 필요하다(Port Number). 전송 계층에서의 전송하는 데이터의 명칭을 세그먼트라고 한다(전송의 단위).
해당 목적지 호스트의 컴퓨터까지 찾아온 데이터는 해당 호스트 컴퓨터의 프로세스로 가는 작업을 진행한다.
7. Session Layer 세션 계층
송수신자 사이에 상위적 연결 개념인 세션을 지원한다.
사실 세션 계층부터 응용 계층까지의 구분은 앞서 나눈 계층들보다는 기준이 모호하고 애매하여 세션 계층부터 응용 계층을 하나로 응용 계층으로 보고 있는 상황이다.
8. Presentation Layer 표현 계층
데이터의 의미와 표현 방법들을 처리한다. 암호화 및 압축 기능을 처리한다.
웹 페이지의 URL이 http에서 https로의 변환하는 이유 중의 하나로써, HTTPS(HyperText Transfer Protocol over Secure Socket Layer, HTTP over TLS, HTTP over SSL, HTTP Secure)는 웹 통신 프로토콜인 HTTP의 보안이 강화된 버전이다. HTTPS는 소켓 통신에서 일반 텍스트를 이용하는 대신에, SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화한다. 따라서 POST 메소드 방식으로 데이터를 전송 및 요청한 내용인 body부분을 암호화하여, Key값을 알고 있는 사람만이 데이터를 볼 수 있도록 하였다.
9. Application Layer 응용 계층
대표적인 인터넷 서비스로 HTTP, FTP, Telenet, E-mail 등을 포함한다.
해당 프로세스로 전달된, 받아온 데이터를 열어본다. 데이터가 전달 될때, Get 메소드 혹은 Post 메소드를 통해 전달될 가능성이 높은데 해당 메소드에 맞게 처리하여 데이터를 열어보고 처리하는 작업을 진행한다.
Framework를 통해 Web Application의 개발 및 동작 원리에 포스팅을 하기 전 OSI 7계층 모형에 대해 간단히 정리를 하려고 했으나 글이 매우 길어진 것 같다. OSI 7계층 모형을 간단히 정리하는 것은 정말 만만치가 않았고, 얕잡아 본 나를 반성하는 시간이 되었다. 물론 계층마다 설명을 많이 생략하여 부족한 부분이 있다는 걸 알지만 설명을 하기 시작하면 끝이 없을거라 판단하여 이 포스팅은 여기서 마치도록 하겠다. 넘어간 부분 중 공부를 하면서 정리를 해야겠다고 판단되는 부분은 수시로 채우고 업데이트 하는 과정을 거치도록 하겠다.