OSI Model(Open Systems Interconnection Reference Model) 이란, 네트워킹 동작을 설명하는 모델입니다. 통신이 이뤄지면서 데이터가 거치는 길을 계층으로 나눈 것입니다.
OSI Model의 모습은 다음과 같습니다.
각 계층끼리 데이터를 주고 받으며 통신이 이뤄집니다.
OSI Model은 어떻게 탄생되었을까요?
1984년에 국제표준기구 ISO(International Organization for Standardization)에서 만들었습니다. 그 이유는 다음과 같습니다.
그렇다면 OSI Model이 탄생함으로써 얻는 이득은 무엇일까요?
송신 데이터와 수신 데이터의 흐름은 다음 그림과 같습니다.
A장비의 7계층에서 B장비의 7계층까지의 데이터 흐름은 다음과 같은 과정을 거쳐 전달됩니다.
A장비 (7-6-5-4-3-2-1) -> B장비 (1-2-3-4-5-6-7)
어떠한 데이터도 물리 계층을 통과하지 않고 다른 장비로 전달될 수 없습니다.
무선통신의 경우, 전파라는 물리적 매체를 통해 데이터가 전달됩니다.
만약, A장비의 3계층에서 B장비의 3 계층으로 데이터 통신이 이뤄진다면 다음과 같은 절차를 거칩니다.
A장비 (3-2-1) -> B장비 (1-2-3)
만약 A 장비와 B 장비 사이에 라우터 장비가 있다면 절차는 다음과 같습니다.
A장비 (7-6-5-4-3-2-1) -> 라우터(1-2-3-2-1)-> B장비(1-2-3-4-5-6-7)
아래 계층으로 데이터를 전송할 때 각각의 층마다 인식할 수 있어야 하는 헤더를 붙이게 되는데 이러한 과정을 encapsulation이라고 합니다.
데이터가 물리 계층에서 전송된 후, 다시 1계층부터 7계층으로 올라가게 되면서 헤더가 벗겨지는데 이러한 과정을 decapsulation이라고 합니다.
헤더를 붙이는 이유는 다음 레이어의 편의성을 위해서입니다. 각 헤더는 도착지의 주소, 어떤 프로토콜이 사용되었는지와 같은 정보가 담겨있습니다.
상위 계층이 전달한 데이터에 붙이는 제어정보를 PDU(Protocol Data Unit)라 부릅니다. 각 PDU는 해당하는 프로토콜의 스펙을 구현한 포맷을 갖습니다.
정보를 추가한 계층에 따라 PDU를 지칭하는 이름과 포함하는 내용이 달라집니다.
Layer | PDU |
---|---|
7 | Message or Data |
6 | Message or Data |
5 | Message or Data |
4 | TCP Segment |
3 | Packet |
2 | Frame |
1 | Bit |
OSI Model의 각 계층과 이들이 의미하는 바는 다음과 같습니다.
Application Layer(응용 계층)은 사용자에게 보이는 부분이고 “최종 사용자에게 가장 가까운” 계층입니다. 7계층에서 작동하는 Application은 사용자와 직접적으로 상호작용합니다.
예를 들어, email 프로그램의 경우 user에 의해 보내질 data(email message)를 생성합니다. 이때, Application Layer는 화면 크기, 글꼴 등의 정보를 포함하는 헤더 필드를 배치(encapsulation)하고, 데이터를 Presentation Layer에 전달합니다.
Presentation Layer(표현 계층)은 코드 간의 번역을 담당하며 Syntax Layer라고도 불립니다.
네트워크 형식으로 변환하거나 네트워크 형식을 응용 프로그램 형식으로 변환하는 역할을 합니다.
다시 말해, 응용 프로그램이나 네트워크를 위해 데이터를 “표현”하는 것입니다. 데이터 포맷 방법을 규정하는 표현 계층의 프로토콜 표준이 있습니다. 대표적인 예로는 데이터를 안전하게 전송하기 위해 암호화, 복호화하는 것인데, 이 작업이 표현 계층에서 처리됩니다.
일부 Presentation Layer Standard는 multimedia operations(멀티미디어 연산 or 구동)와 관련되어 있습니다.
그중 우리에게 친숙한 것이 JPEG입니다.
JPEG는 The Joint Photographic Experts Group의 약어로우리에게 photo standard를 제공합니다.
또한, 문서 파일을 ASCII로 인코딩된 파일로 바꿔 주는 것도 표현 계층의 몫입니다. 그런 다음 데이터를 Session Layer로 전달합니다.
먼저, 세션이 뭔지 이해해야 합니다.
세션(Session)이란, 프로세스들 사이에 메시지 교환을 통해 서로를 인식한 이후부터 통신을 마칠때까지의 논리적 연결입니다. 예를 들어, 한 사용자의 로그인 후부터 로그아웃할 때 까지의 연결을 세션이라고 볼 수 있습니다. JWT를 통해 논리적으로 연결되어 있는 것이죠. (웹사이트에서 일정시간 동안 아무런 동작이 없으면 로그아웃이 되곤 하는데 이것이 Session TimeOut입니다.)
Session Layer는 user 와 application 사이의 Session을 관리하고 opening / closing mechanism을 제공합니다.
Session Layer는 데이터 흐름을 관리하는 정보 등을 5 계층 헤더에 추가하여 Transport Layer(L 4)에 전달합니다.
먼저, TCP/IP에 대해 알아보겠습니다.
TCP란, Transmission Control Protocol의 약어로 네트워크의 정보 전달을 통제하는 프로토콜입니다. TCP는 근거리 통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 바이트를 안정적으로, 순서대로, 에러없이 교환할 수 있게 합니다. 보통 하위 계층에서 사용하는 IP와 엮어서 TCP/IP로 표현하는 경우가 많습니다.
Transport Layer는 최종 시스템 및 호스트 간의 데이터 전송 조율을 담당합니다. 데이터 전송 방식 결정, 보낼 데이터의 용량과 속도, 목적지(포트번호 구분) 등을 처리합니다.
이때, 데이터에는 segment header가 붙습니다.
Network Layer를 설명하기 전에 먼저 패킷과 IP에 대해 알아보겠습니다.
패킷에 대한 설명은 TIL no.90 - Network - Packet을 참조해주세요.
IP는 보통 IP 주소를 떠올리게 되는데 사실 IP은 Internet Protocol의 약어입니다. IP도 Protocol입니다. 송신 호스트와 수신 호스트가 Packet 교환 네트워크에서 데이터를 주고받을 때 사용하는 protocol입니다.
이 계층은 패킷 전달을 담당합니다. 논리적 주소를 구분하고 최적의 경로를 결정하는 것입니다.
라우터 기능 대부분이 여기 네트워크 계층에 자리잡습니다. 보스턴에 있는 컴퓨터가 캘리포니아에 있는 서버에 연결하려고 할 때 그 경로는 수백 만 가지입니다. 이 계층의 라우터가 이 작업을 효율적으로 처리합니다.
이때, 데이터에는 Packet header가 붙습니다.
Data Link Layer는 직접 연결된 두 노드(IP 주소를 가진 Device) 간 데이터 전송을 제공합니다. 예를 들어, 공유기에 많은 기기들이 연결되어 있는 상태일 때, 많은 기기 중에 어떤 기기에 데이터를 전달 할지 물리적 주소를 구분하고 데이터 전송 형태를 결정합니다.
Data Link 계층은 두 가지 SubLayer로 나뉘는데, MAC과 LLC입니다. MAC은 MAC(Media Access Control) 주소를 이용해서 Data를 해당 장비로 보내는 것이고, LLC(Local Link Control)는 각 장비를 논리적으로 연결하고 유지하는 역할을 합니다.
이때, 데이터에는 Frame header와 trailer가 붙습니다.
이 계층의 구현 이름은 "PHY"라는 용어로도 불립니다.
통신 채널을 통해 전송될 디지털 데이터를 신호로 변환하는 계층입니다. 데이터를 비트로 변환하고 비트를 전기적 신호(signal)로 변환해 실제로 물리적인 전송이 이뤄집니다.
여기서 신호란, 구리선이나 광섬유 선을 통해 전달 되는 물리적 신호를 뜻합니다.
네트워킹 문제가 발생하면 많은 네트워크 전문가가 물리 계층으로 바로 가서 모든 케이블이 제대로 연결돼 있는지, 라우터나 스위치 또는 컴퓨터에서 전원 플러그가 빠지지 않았는지 확인합니다.