OSI 7계층(Open Systems Interconnection Reference Model)은 네트워크에서 통신이 일어나는 과정을 7단계로
나눈 것을 말한다. 이 모델은 프로토콜을 기능 별로 나눈 것이다.
<프로토콜: 프로토콜은 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계입니다.
기기 간 통신은 교환되는 데이터의 형식에 대해 상호 합의를 요구합니다. 이런 형식을 정의하는 규칙의 집합을
프로토콜이라고 합니다.>
각 계층은 하위 계층의 기능 만을 이용하고, 상위계층으로 넘어갈 땐 기능만 제공한다. 일반적으로
상위 계층은 소프트웨어로 하위계층은 하드웨어로 구현된다.
실제 어플리케이션이 어떻게 전달 되는지 예시를 들기 위해 7계층 부터 설명하겠다.
계층 7: 어플리케이션 계층 (응용 계층)
이 계층은 사용자의 데이터와 직접 상호작용 하는 유일한 계층이다. 웹 브라우저 및 이메일 클라이언트,
롤 클라이언트 등 소프트웨어 어플리케이션은 통신을 하기 위해 어플리케이션 계층을 거친다.
하지만 "클라이언트 소프트웨어 = 어플리케이션 계층" 은 아니다.
만약 우리가 롤을 실행하려고 한다면 롤 클라이언트가 사용자에게 의미 있는 데이터를 실시간으로
통신하기 위해선 통신 방법이 정의 되어 있을 텐데 그 규칙들이 있는 곳이 어플리케이션 계층이다.
어플리케이션 계층에는 HTTP 뿐만 아니라 이메일 통신을 가능하게 하는 SMTP도 포함된다.
응용 계층은 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다.
응용 서비스의 예로는 가상 터미널 (텔넷 같은) 등이 있다. 즉 응용 계층은 클라이언트에서 통신하기
위해 데이터를 보내기 위해 설계가 된 프로토콜이 있는 곳이다. 응용 계층에 전달된
데이터는 해당 프로토콜을 통해 전송될 준비를 하여 그 다음 계층인 프레젠테이션 계층으로 넘긴다.
계층 6: 프레젠테이션 계층
프레젠테이션 계층 , 표현 계층 이라고도 하는데 이곳은 쉽게 압축과 암호화 하는 곳이라고 정의할 수
있겠다. 표현 계층은 애플리케이션이 소비할 수 있도록 데이터를 프레젠테이션한다. 프레젠테이션 계층은
데이터의 변환, 암호화, 압축을 담당한다.
서로 통신하는 두 개의 통신 장치는 서로 다른 인코딩 방법을 사용하고 있음으로
받는 쪽은 받는 쪽의 어플리케이션 계층이 이해할수 있는 구문으로 변환하는 일을 한다(복호화).
또 압축된 내용을 원래대로 바꾸는 작업도 진행한다.
반대로 보내는 쪽은 중간에 데이터의 정보들이 노출되지 않도록 암호화를 하거나 속도의 향상을 위해
압축하는 작업도 한다.
MIME 인코딩이나 암호화 등의 동작이 이 계층에서 이루어진다. 예를 들면, EBCDIC로 인코딩된 문서
파일을 ASCII로 인코딩된 파일로 바꿔 주는 것이 표현 계층의 몫이다.
계층 5: 세션 계층
세션 계층(Session layer)은 간단하게 말하면 통신을 유지하고 만들고, 중단하는 곳이다. 두 기기 사이의
통신을 시작하고 종료하는 일을 담당하는 계층입니다. 통신이 시작될 때부터 종료될 때까지의 시간을
세션이라고 한다.
세션 계층은 교환되고 있는 모든 데이터를 전송할 수 있도록 충분히 오랫동안 세션을 개방한 다음 리소스를
낭비하지 않기 위해 세션을 즉시 닫을 수 있도록 보장한다. 세션 계층은 데이터 전송을 체크포인트와 동기화를
한다. 100MB의 데이터 파일을 전송할 때 5MB 마다 체크포인트를 설정할 수 있다. 만약 전송이 끊기거나
문제가 생기고 다시 받으면 체크 포인트 부터 다시 받을 수 있도록 하는 것이다.
세션 계층(Session layer)은 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공한다. 동시 송수신
방식(duplex), 반이중 방식(half-duplex), 전이중 방식(Full Duplex)의 통신과 함께, 체크 포인팅과 유휴, 종료,
다시 시작 과정 등을 수행한다. 이 계층은 TCP/IP 세션을 만들고 없애는 책임을 진다.
우리가 한번 로그인을 한 후 다른 페이지를 다녀왔다가 돌아와도 로그인 상태가 유지되는 것은 세션에서
로그인 정보를 기억하고 있기 때문이다. 한번 로그인에 대한 권한이 부여된 연결을 하고 그 권한이 유지
된 상태로 연결을 지속할 수 있는 것은 세션 계층의 덕이다.
계층 4:전송계층
전송 계층(Transport layer)은 양 끝 단(End to end)의 사용자들이 신뢰성 있는 데이터를 주고 받을 수 있도록
해 주어, 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해준다.
쉽게 말해 TCP가 있는 계층이다.
전송계층은 암호화나 암축이 된 원본 데이터를 세그먼트라는 조각으로 분할하여 운송하기 적합하게 작게
만든다. 반대로 데이터를 받아올 때에는 세그먼트 조각을 모아 원본 데이터로 합치는 작업을 한다. IP주소를
기반으로 통신을 할 때 TCP가 하는 일은 결국 신뢰성을 유지하는 것이다.
전송계층에선 데이터의 흐름 제어 나 오류 제어를 담당하는데, 데이터를 받아 드리는 속도를 확인하고 네트워크
상태가 안 좋을 경우 수신 쪽에서 부담이 안되는 정도로 수신속도를 결정하는 방법으로 흐름 제어를 하거나
데이터의 순서나 상태를 체크하여 오류를 제어한다.
이 곳에 L4 로드 밸런서가 존재한다.
계층 3: 네트워크 계층
네트워크에서 가장 중요한 부분은 바로 IP부여와 경로 설정(라우팅)이다. 네트워크 계층에서는 전송 계층으로 부터
받은 세그먼트를 패킷이라는 더 작은 단위로 분리하고 반대로 수신할 떈 이를 재조립 한다.
그리고 네트워크 계층에선 데이터가 전달 될수 있는 최상의 물리적 경로를 찾는 라우팅을 한다.
네트워크 계층은 여러 개의 노드를 거칠 때마다 경로를 찾아주는 역할을 하는 계층으로 다양한 길이의 데이터를
네트워크들을 통해 전달하고, 그 과정에서 전송 계층이 요구하는 서비스 품질(QoS)을 제공하기 위한 기능적,
절차적 수단을 제공한다. 네트워크 계층은 라우팅, 패킷 포워딩, 세그멘테이션(segmentation/desegmentation),
인터네트워킹(Internetworking) 등을 수행한다. 데이터를 다른 네트워크를 통해 전달함으로 인터넷이 가능하게
하는 계층이다.
계층 2: 데이터 링크 계층
네트워크 계층에서 패킷 단위로 데이터가 데이터 링크 계층으로 전달된다.
데이터 링크 계층(Data Link layer)은 쉽게 주소를 부여하고 오류를 감지하는 곳이다.
들어올 때는 네트워크 계층에서 받은 데이터를 프레임이란 단위로 나누고 나갈 때는 주소를 물리적 주
소를 부여하는 곳이다. 각 랜 카드에는 MAC address 라는 장치 고유 주소가 있는데 이를 바탕으로 48 비트
길이의 주소를 가진다.
데이터 링크 역시 패킷 단위로 도착한 데이터를 프레임화 하여 물리계층으로 전송하고 신뢰성 있는 데이터를
전송하기 위해 순환 중복 검사(CRC)를 기반으로 오류 제어와 흐름제어를 한다.
데이터링크 계층과 유사하지만 네트워크에 있는 다 기기의 전송을 촉진하고 프레임이라는 더 작은 조각으로
나눈다는 차이점이 존재한다.
데이터 링크의 가장 좋은 예는 이더넷이다.
계층 1: 물리 계층
데이터 링크에서 프레임으로 만들어진 데이터가 물리계층으로 전달된다.
물리 계층(Physical layer)은 네트워크의 기본 네트워크 하드웨어 전송 기술을 이룬다. 우리가 컴퓨터를 떠올려
보면 랜 카드에 네트워크 연결을 위해 랜선이 꽂혀있다. 비트로 이루어진 데이터를 즉 기계어를 전기적 신호로
바꾸어 와이어에 실어주는 과정을 말한다.
네트워크의 높은 수준의 기능의 데이터 구조를 기초로 하는 필수 계층이고 다양한 하드웨어 기술이
점목되어 있기 때문에 OSI 아키텍처에서 가장 복잡한 계층이라고 한다.