안녕하세요.
Hynn 입니다.
Node.js 학습에 앞서, Network 개념에 대해서 몇가지 학습이 되어야, 원활하게 학습이 가능하기 때문에,
이에 이해를 돕기 위해 OSI 7 Layer 에 관련한 포스팅을 게시하게 되었습니다.
본 포스팅에서는 OSI 7 Layer 의 전반적인 사항을 다루고 있으며, 이후 포스팅에서는 실제 개발에서 가장 많이 다루게 될, 4 Layer 에 대해서 별개로 작성을 할 예정입니다.
============
1. OSI 7 Layer 란?
2. Network Interface
3. Internet
4. Transport
5. Application
============
1. OSI 7 Layer 란?
OSI 7 Layer 는 말 그대로, 네트워크 프로토콜의 통신하는 구조를 7개의 계층으로 분리하여,
각 계층간의 상호동작을 표준화 한 모델입니다. 즉 통신이 일어나는 과정을 7단계로 구분하여, 한 눈에 들어올 수 있도록 정의를 했기 때문에, 각 단계가 어떠한 Layer 에 포함되어 있는지 파악할 수 있습니다.
가령 예를 들면, 한가지의 문제가 발생했다고 했을 때, 이러한 계층 구조를 이해하고 있다면, 어떠한 단계에서 발생하는 문제인지만 파악하더라도, 발생한 문제에 대해서 빠르고 효과적인 접근이 가능하다. 또한 개발하는 과정에서도 어떠한 과정에서의 오류인지에 대한 파익이 빠를 수록, 해결하는 시간이 당연하게도 최소화 될 수 있습니다.
이는 표준화 된 계층이기 때문에, 어떠한 분야에서든, 네트워크에 관련된 문제라면 이에 대한 구성을 예측하고 이해할 수 있을 뿐 아니라, 트래픽의 흐름을 꿰뚫어 볼 수 있습니다.
2. Network Interface
이 단계는 주로 하드웨어/물리적 계층으로 분류됩니다. 아래에서 다루게 될 TCP/IP 4계층에는 포함되지 않으나, 물리적으로 가장 근본에 위치한 단계로써, 개략적으로는 알고 계시면 도움이 됩니다.
2-1) Physical Layer - (주요 단위: Bit)
Physical Layer 는 말 그대로, 물리적인 계층으로서, 여기서는 물리적인 장비들을 뜻한다고 생각하시면 좋습니다.
즉 이 단계에서의 구성요소는 우리가 흔히 아는, 10BASE-T, 100BASE-T, 1000BASE-T 와 같은 LAN PORT, 전기적 신호, 랜카드 같은 물리적 장비는 모두 이 단계에 포함됩니다.
2-2) DataLink Layer (주요 단위 : Frame)
물리적 계층을 지나, 이제 데이터를 전송하는 수단을 제공하는 Layer 입니다. 여기서는 주로 스위치, 브리지와 같은 장비가 속해있고, 이를 1홉 통신이라고 합니다. 일반적으로 이를 하나의 라우터에서 다음 라우터까지의 경로를 말하며, 물리적 장치를 식별하는데 사용하며, 이를 개별적으로 장치를 식별하는 대표적 용어로는 "MAC" 이 존재합니다.
3. Internet
이 단계부터는 이제 TCP/IP 4 계층이라고도 표현하며, 실제 우리의 인터넷 통신을 나타내는 단계이기도 합니다.
3-1)Network Layer (주요 단위: Packet)
DataLink 계층에서 1홉 통신이라고 했다면, 이 단계에서부터는 2홉 이상의 통신을 담당합니다. 실제 OSI 7 Layer 에서 가장 복잡한 구조를 가지고 있는 계층이며, 실제 네트워크 간의 "Routing" 을 담당하는 계층입니다. 이는 주어진 네트워크 안에서 통신 데이터를 짜여진 알고리즘에 의해 최적의 경로를 선택하여 가장 빠르게 보내는 경로를 선택하는 과정을 뜻합니다. 또한 이 계층에서는 호스트의 논리적 주소 (ex. IP Address)를 지정하여 확인합니다. 즉 이 단계를 구분하자면 아래의 단계로 나눌 수 있습니다.
- 라우팅
- 흐름 제어
- 세그멘테이션
- 오류제어
- 인터네트워킹
위 단계를 거치는 이 Layer 에서는 추가적으로 일부 라우터나, 스위치가 동작하기도 합니다. 가장 복잡한 단계이기도 합니다.
4. Transport
이 전송계층이야말로, 개발자가 가장 중요하게 이해야할 계층이라고 할 수 있습니다.
이는 하위 계층에 신뢰할 수 있는 데이터 전송 서비스를 제공하는 것입니다.
4-1) Transport Layer (주요단위 : TCP-Segment, UDP-Datagram)
이 단계에서는 컴퓨터와 컴퓨터간의 신뢰성 있는 데이터를 서로 주고받을 수 있도록 해주고, 상위 계층들이 데이터 전달의 유효성,효율성을 생각하지 않도록 부담을 더는 계층입니다. 여기서는 시퀸스 넘버 기반의 오류 제어방식을 사용하고, 흐름제어, 분할/분리 및 오류 제어를 통해 전송 계층은 데이터가 오류 없이 점-점 으로 전달되게 하고, 전송계층은 TCP(연결형 프로토콜) 와, UDP (비 연결형 프로토콜) 을 모두 사용합니다. 적정한 예시로는 프록시 서버나, 특정 방화벽이 포함됩니다.
이 단계에서는 이후의 포스팅에서 별도로 3-way Hand-shaking , 4-way hand-shaking 에 대한 세부 내용을 다룰 예정입니다.
5. Application(주요 단위 Data)
이 단계에서부터는, Back-end Level 의 연결과정을 지나, 세션을 관리하고, 포트연결등을 제공할 뿐 아니라, 데이터를 암호화하고, 사용자가 최종적으로 네트워크의 자원에 접근하는 단계를 총칭합니다. 실제 사용자들이 접하는 단계는 대부분 이 단계의 계층을 사용하게 됩니다.
5-1) Session Layer
두 컴퓨터간의 세션을 관리하며 Port 연결을 담당합니다. 즉 모든 통신 장치간의 연결을 설정하고, 관리 및 종료, 연결이 양방향/단방향인지를 확인하고, Check-Pointing, 재시작 등을 수행하며, 호스트가 정상적으로 연결하는 단계를 뜻합니다.
5-2) Presentation Layer
표현 계층은 응용 계층으로 보내거나, 받아오는 데이터의 인코딩,디코딩을 담당합니다. 이 단계에서는 데이터를 안전하게 사용하기 위해, 암호화와 복호화 역시 담당하게 되는데, 개발자 측면에서는 대표적으로 UTF-8 으로 인코딩 되어 있는 문서를 ASCII 로 인코딩 된 문서로 변환하는 과정등이 이 계층에서 이루어 진다고 이해하면 쉽습니다.
5-3) Application Layer
실제 사용자가 가장 많이 접하고, 사용하는 계층입니다. 즉 사용자가 네트워크 자원에 접근하는 방법을 제공하고, 사용자가 화면으로 직접 마주하는 유일한 계층이기도 합니다. 예를 들면, 대표적으로 사용되는 브라우저인 Chrome, Mail 같은 네트워크 기반의 응용 프로그램들이 이 계층에 포함됩니다.
네트워크에서는 세부적 단위가 있지만, 위 7계층은 말 그대로 네트워크 계층의 표준모델입니다.
물리적 계층까지 전부 이해하고 있을 필요는 없지만, 기본적인 개념은 필요할 것입니다.
다음 포스팅에서는 Network 에서 Back-end 에서 다루어야 할 Transport Layer 에서 다루는 2가지의 주요 개념을 다루어보도록 하겠습니다.
감사합니다.
'개발공부일지 > Network' 카테고리의 다른 글
CSR 과 SSR 알아보기 (0) | 2023.01.05 |
---|---|
Network - 3Way/4Way Hand-Shaking (TCP) (0) | 2022.12.22 |
댓글