Development/Fundamentals

네트워크 표준 모델 OSI 7 계층 ( OSI 7 Layer)

📝 작성 : 2021.07.22  ⏱ 수정 : 
반응형

네트워크 표준 모델 OSI 7 계층 ( OSI 7 Layer)


The Open Systems Interconnection model (OSI model) is a conceptual model that characterises and standardises the communication functions of a telecommunication or computing system without regard to its underlying internal structure and technology. Its goal is the interoperability of diverse communication systems with standard communication protocols.
- https://en.wikipedia.org/wiki/OSI_model

OSI 모형(Open Systems Interconnection Reference Model)은 국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어서 설명 한 것입니다. 일반적으로는 OSI 7 계층이라고 합니다.

총 7개의 계층으로 이루어 집니다. 

Application Layer
Presentation Layer
Session Layer
Transport Layer
Network Layer
DataLink Layer
Physical Layer

 

이 모델에서 네트워킹 시스템은 여러 계층으로 분리되었습니다. 각 레이어마다 하나 이상의 엔티티가 기능을 구현하고 있으며, 각 엔티티는 자신 아래의 계층과만 통신합니다. 또한 위의 계층에서 사용 할 수 있는 기능을 제공합니다.

 

1. Physical Layer

컴퓨터간에는 0과 1의 데이터를 주고 받음으로서 통신 합니다. 컴퓨터간에 연결이 되었을때 특정 +전압의 전기를 보내면 1의 데이터가, - 전압의 전기를 보내면 0의 데이터가 보내진다고 약속을 한다면, 0과 1의 전송이 가능 할 것 입니다.

특정한 전자기파를 전송 함으로서 통신을 한다는 이론은 아쉽게도 현실화 될 수 없는데요.

전선을 포함한 모든 매질은 모든 주파수를 다 통과시키지 못합니다. 통과시킬 수 있는 대역의 폭이 있습니다.

하지만 수직선과 수평선이 있는 전자기파는 항상 0~ 무한대Hz의 주파수 범위를 갖습니다. 따라서 위와 같은 전기신호를 통과시킬 수 있는 전선은 존재하지 않습니다.

이때, 이 신호를 전송하기 위해서는 아날로그 신호로 변환을 할 필요가 있습니다.

https://techdifferences.com/difference-between-analog-and-digital-signal.html

여기서 그 역할을 하는 계층이 바로 Physical Layer 입니다.

0과 1의 나열을 아날로그 신호로 바꾸고(encoding), 아날로그 신호를 0과 1의 나열인 데이터로 변환(decoding)해줍니다.

Pysical Layer는 이렇게 물리적으로 연결된 두 대의 컴퓨터가 0과 1의 나열을 주고받을 수 있게 해주는 모듈 입니다.

다양한 특징의 하드웨어 기술이 접목되어 있기 때문에 OSI 아키텍처에서 가장 복잡한 계층으로 간주된다고 합니다.

Physical Layer는 위의 그림과 같이 생긴 PHY 칩에 하드웨어적으로 구현되어 있습니다.

 

2. DataLink Layer

데이터 링크 계층은 Point to Point 간 신뢰성 있는 전송을 보장하기 위한 계층 입니다. 주소 값은 물리적으로 할당 받는데, 이는 네트워크 카드가 만들어질 때 부터 정해져 있는 맥 주소(MAC address)입니다. 데이터 링크 계층의 가장 잘 알려진 예는 이더넷 입니다. 

쉽게 비유를 하자면,  A라는 컴퓨터와 연결된 B,C,D 라는 컴퓨터로부터 각각 0101, 0000, 1110 이라는 데이터를 전송받는 다고 했을때, 각각의 데이터를 적당히 끊어 있을 수 있어야 되는데요. 이를 위해 송신자가 데이터의 앞, 뒤에 약속된 특별한 비트열을 붙입니다. 해당 약속이 "1111" 으로 시작해 "0000" 으로 종료하는 것 이라고 했을때,  111101010000111100000000111111100000 이렇게 데이터를 받았을 경우 안에서 데이터들만 골라낼 수 있습니다.

이와 같이 DataLink Layer는 같은 네트워크에 있는 여러대의 컴퓨터들이 데이터를 주고 받기 위해 필요한 모듈입니다. 위에서 prefix로 1111 suffix로 0000을 붙인 것 과 같은 작업을 Framing이라고 하며, Framing은 DataLink Layer에 속하는 작업 중 하나 입니다.

DataLink Layer는 랜카드에 1계층 모듈과 마찬가지로 하드웨어적으로 구현되어 있습니다.

 

3. Network Layer

수 많은 네트워크들의 연결로 이루어진 인터넷 네트워크 속에서 어딘가에 있는 목적지 컴퓨터로 데이터를 전송하기 위해서는

ip 주소를 이용해 그 길을 찾고(routing), 자신 다음의 라우터에게 데이터를 넘겨주는(forwarding) 작업이 필요 합니다.

간단하게 비유를 하자면, 2단계를 거쳐 framing 되어 온 데이터에 어디로 가야 하는지 목적지의 ip주소를 붙여 하나의 "패킷"으로 Wrapping을 하는 과정 입니다.

위에서의 111101010000 데이터가 [(192.168.0.1)111101010000] 과 같은 형태의 패킷이 되는 것 입니다. 물론 실제로 이런 형태는 아닙니다.

정리하자면 네트워크 계층(Network layer)은 여러개의 노드를 거칠 때 마다 경로를 찾아주는 역할을 하는 계층으로, 다양한 길이의 데이터를 네트워크들을 통해 전달하고, 그 과정에서 전송 계층이 요구하는 서비스 품질을 제공하기 위한 기능적, 절차적 수단을 제공 합니다. 논리 적인 주소 구조(IP), 곧 네트워크 관리자가 직접 주소를 할당하는 구조를 가지며, 계층적 입니다.

Network Layer의 기술은 운영체제의 커널에 소프트웨어 적으로 구현되어 있습니다.

 

4. Transport Layer

가장 잘 알려진 전송 계층의 예는 TCP 입니다. 양 끝단의 사용자들이 신뢰성 있는 데이터를 주고 받을 수 있도록 해 주어, 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않아도 되도록 해줍니다.

예를 들어 여러개의 데이터를 받았을 때, 어떤 데이터를 무슨 프로세스에게 줘야 할지를 고민 해 보아야 하는데요. 현재 실행중인 프로세스가 StarCraft(6112port), 카트라이더(39311port)라고 했을때, 자동차 앞에 물폭탄이 떨어졌다는 데이터를 받았을때 해당 데이터를 Starcraft 가 가져갈지, 카트라이더가 가져갈지 알 수가 없습니다. 그런데 데이터를 송신할때 "39311" 이라는 포트 번호를 명확하게 명시해서 보냈을 경우에는 어렵지 않게 카트라이더 프로세스에게 보내진 데이터라는 것을 알 수 있습니다.

 정리하자면, 데이터를 받고자 하는 프로세스 들은 port 번호를 가지며, 송신자는 데이터를 보낼 때 수신자 컴퓨터의 프로세스에 해당하는 port 번호를 붙여서 보냅니다.

Transport Layer는 port number를 사용하여 도착지 컴퓨터의 최종 도착지인 프로세스 까지 데이터가 도달 하게 해주는 모듈 입니다. 

Transport Layer의 기술 또한 운영체제의 커널에 소프트웨어 적으로 구현되어 있습니다.

 

5. Session Layer

세션 계층은 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공합니다.

6. Presentation Layer

표현 계층은 코드 간의 번역을 담당하여 사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을 응용 계층으로 부터 덜어 줍니다. MIME 인코딩이나 암호화 등의 동작이 이 계층에서 이루어집니다.

7. Application Layer

응용 계층은 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행합니다. 응용서비스의 예로 가상터미널(텔넷), JTM 등이 있습니다.

 

현대의 인터넷은 OSI 모델이 아닌 TCP/IP 모델을 따르고 있습니다.

 

TCP/IP 모델에서의 Application에는 우리가 흔히 아는 HTTP, FTP등의 프로토콜이 있습니다. 

 

운영체제의 Transport layer에서 제공하는 API를 활용해서 통신 가능한 프로그램을 만드는 것을 TCP/IP 소켓 프로그래밍, 또는 네트워크 프로그래밍 이라고 합니다. 소켓 프로그래밍 만으로도 클라이언트 , 서버 프로그램을 따로 만들어서 동작 시킬 수 있으며 TCP/IP 소켓프로그래밍으로 누구든 자신만의 Application Layer 프로토콜을 만들어 사용 할 수 있다고 합니다.

 

Layered Architecture를 따르는 대표적인 예가 네트워크 시스템 입니다.

네트워크 시스템은 하나의 커다란 소프트웨어이며, OSI 7 Layer 모델은 거대한 네트워크 소프트웨어의 구조를 설명하는 것 입니다.

 

참고 : https://www.youtube.com/watch?v=1pfTxp25MA8&t=1628s

반응형
1 2 3 4 5 6 7 8