[출처] https://medium.com/@sreekanth.thummala/osi-model-7-layers-dataflow-example-b711dbca5eff
개방형 시스템 상호 연결(Open Systems Interconnection)은 표준 프로토콜을 사용하여 다양한 통신 시스템이 통신 할 수 있도록 국제표준화기구(ISO)에서 만든 개념.
OSI는 네트워크 통신 기능을 7개의 추상적 계층으로 나누고 각 계층은 다음 계층 위에 쌓입니다.
OSI의 각 계층은 특정 작업을 처리하고 그 위와 아래의 계층과 통신한다.
OSI 모델을 사용하는 모든 시스템이 모든 계층을 구현하는 것은 아니다.
복잡한 시스템에 대한 이해 공유
복잡한 네트워크 시스템 아키텍처를 구성하고 모델링 가능하다.
주요 기능에 따라 각 시스템 구성 요소의 운영 계층을 분리할 수 있다.
추상화를 통해 시스템을 더 작고 관리 가능한 부분으로 분해하는 기능을 한다.
더 빠른 연구 및 개발
서로 통신해야 하는 네트워크로 연결된 새로운 시스템을 만들 때 어떤 기술 계층을 대상으로 개발하는지 알기 쉽다.
네트워크로 연결된 시스템을 개발하고 반복 가능한 일련의 프로세스 및 프로토콜을 활용할 수 있다.
유연한 표준화
레벨 간에 사용할 프로토콜을 지정하지 않고 프로토콜이 수행하는 작업을 지정한다.
네트워크 통신 개발을 표준화하여 사전 지식 없이 시스템을 신속하게 이해, 구축 및 분해할 수 있도록 한다.
세부 사항을 추상화하기 때문에 기술자가 모델의 모든 측면을 이해할 필요가 없다.
낮은 수준의 네트워킹 및 프로토콜을 추상화하여 시스템 설계 및 개발을 단순화한다.
물리 계층 (Physical layer)
물리적 통신 매체와 해당 매체를 통해 데이터를 전송하는 기술.
bluetooth, NFC, 데이터 전송 속도 등
데이터 링크 계층 (Data link layer)
물리 계층이 이미 존재하는 네트워크를 통해 두 시스템을 연결하는 데 사용되는 기술이다.
네트워크 계층에서 패킷을 가져와서 프레임이라는 단위로 세분화한다.
데이터의 흐름 제어 및 오류 제어를 담당한다.
네트워크 계층 (Network layer)
서로 다른 두 네트워크 간 데이터 전송을 용이하게 하는 역할을 한다.
여러 개의 노드를 거칠 때마다 경로를 찾아주는 역할을 한다.
통신하는 두 장치가 동일한 네트워크 내에 존재할 경우 네트워크 계층이 필요하지 않다.
전송 계층의 세그먼트를 패킷이라 불리는 단위로 세분화하여 수신 장치에서 패킷을 다시 조립한다.
데이터가 표적에 도달하기 위한 최상의 물리적 경로를 찾는데, 이를 라우팅이라한다.
전송 계층 (Transport layer)
데이터 패킷이 손실이나 오류 없이 올바른 순서로 도착하는 것이나 필요한 경우 데이터 패킷을 원활하게 복구하는 역할을 한다.
일반적으로 사용되는 프로토콜은 전송 제어 프로토콜(TCP)과 사용자 데이터그램 프로토콜(UDP)가 있다.
세션 계층에서 데이터를 가져와 세그먼트로 분할하는 일도 한다. 재조립도 수행
흐름 제어 및 오류 제어의 역할도 수행한다. 전송 속도 결정, 재전송 요청 등
세션 계층 (Session layer)
한 세션에서 서로 다른 두 애플리케이션 간의 네트워크 조정을 담당한다.
통신이 시작될 때부터 종료될 때까지의 시간을 세션이라고 한다.
데이터 전송 시 체크 포인트와 동기화를 지원한다.
프레젠테이션 계층 (Presentation layer)
데이터를 준비하는 역할을 하여 애플리케이션 계층이 이를 사용할 수 있게 한다.
수신 장치의 애플리케이션 계층이 이해할 수 있는 구문으로 수신 데이터를 변환한다.
데이터의 변환, 암호화, 압축을 담당한다.
HTML, JSON, CSV 등은 프레젠테이션 계층의 데이터 구조를 설명하는 모델링 언어이다.
애플리케이션 계층 (Application layer)
사용자의 데이터와 직접 상호 작용하는 유일한 계층이다.
클라이언트는 통신을 개시하기 위해 애플리케이션 계층에 의지한다.
소프트웨어가 사용자에게 의미 있는 데이터를 제공하기 위해 의존하는 프로토콜과 데이터를 조작하는 역할을 한다.
주요 프로토콜은 HTTP, SMTP 등이 있다.