[네트워크 network] OSI7계층 이란?

resilient

·

2021. 7. 9. 01:49

728x90
반응형

 

 

0 . 이번 시간에는 네트워크를 공부한다면 당연히 알고 있어야 할 OSI 7 계층에 대해서 정리해보려고 합니다.

 

먼저 OSI 7 계층이 왜 만들어졌는지 간단하게 알아볼까요?

 

1980년대 컴퓨터가 널리 보급되면서 통신망이 확산됐고 여러 시스템이 서로 다른 통신망을 이용해 통신을 하게 됐습니다.

하지만 통신망 별로 다른 통신 절차가 필요하다거나 통신하는 방법이 너무 달라서 어려움을 겪었죠. 
이에 ISO(국제표준화기구)에서 서로 다른 컴퓨터끼리 네트워크를 통해 안전하고 쉽게 통신을 할 수 있게 하기 위해서 OSI 7 계층이라는 규격화된 네트워크 모델을 발표하게 된 것이죠. 


예를 들자면, 다른 나라 사람들끼리 대화를 할 때 (통신을 할 때) 같은 언어 ( 같은 네트워크 모델)를 사용하도록 만든 규약이라고 할 수 있습니다.

 

 

1. OSI7계층이란?

 

OSI는 Open Systems Interconnection의 약자로 개방형 시스템이라는 뜻으로 개방이 되어 있기 때문에 누구나 어디서든 다 자유롭게 참조해서 장치를 만들 수 있다는 의미입니다.

OSI 7 계층은 OSI 참조 모델이라고 얘기를 하는데, 위에서 언급했듯이 통신용 규약을 하나의 규약으로 통합한 것이 OSI계층이라고 생각하면 됩니다. 컴퓨터 장치나 네트워크를 사용하는 장치를 만들 때, OSI 참조모델을 참조해서 만들어야 하는 것이죠.

 

 

2. 그렇다면 왜 OSI 7 계층을 참조해서 만들까?

 

첫 번째는 통신용 규약을 하나의 규약으로 통합해야 통신이 쉬워지기 때문입니다. 같은 말을 여러 번 반복하지만 그만큼 중요하다는 거겠죠?

 

두 번 째는 OSI 7 계층은 우리가 통신할 때, 데이터 흐름을 파악하기 쉽게 계층 하나하나가 모듈화 되어 조립되어 있습니다.

 

모듈화의 장점은 7단계 중에서 한 레이어에 문제가 생기면 다른 레이어를 신경 쓰지 않고 문제가 생긴 계층에서만 문제를 해결하면 되기 때문에 유지보수가 쉽죠. 엇 그럼 왜 OSI 7 모듈이라고 하지 않고 OSI 7 계층이라는 이름을 붙였을까요?

바로 상하구조를 가지기 때문입니다. 상하구조 계층이라는 의미는 상의 계층의 프로토콜이 제대로 동작하기 위해서 하위의 모든 계층이 제대로 동작해야만 한다는 것이죠. 당연한 얘기겠지만, 물리적 회선이 연결이 안 되어 있으면 당연히 소프트웨어도 동작하지 않고 통신도 할 수없겠죠?

 

위 과정을 예를 들어볼까요?

 

제가 친구와  PC방에서 스타크래프트를 하고 있다고 가정하겠습니다.

스타크래프트를 하는데 갑자기 연결이 끊겼다고 하네요? 왜 연결이 끊겼는지 알아보려고 합니다.

 

1. 저도 끊기고 친구도끊겼다면 -> 라우터 문제( 3 계층 / 네트워크 계층 ) 이거나 광랜을 제공하는 과정에서의 회선 문제( 1 계층 / 물리계층) 이겠죠?

2. 친구는 멀쩡한데 저만 끊겼다면 -> 스타크래프트 소프트웨어에 문제가 있다면 ( 7 계층 / 애플리케이션 계층) 문제

 

위의 예시처럼 계층이 쪼개져 있으면 어느 계층에서 문제가 발생했는지 한눈에 확인할 수 있고 다른 계층을 건들지 않은 채 빠르게 해결이 가능하겠죠?

 

 

3.  OSI 7 계층은 어떻게 이루어져 있나??

 

사진출처: it엔지니어를 위한 네트워크 입문

 

OSI 7 계층은 크게 두 가지 계층으로 나눌 수 있습니다.

  • 1~4 계층 : 데이터 플로 계층(Data Flow Layer)/하위계층(Lower Layer)
  • 5~7 계층 : 애플리케이션 계층(Application Layer)/상위계층(Upper Layer)

 

그럼 1 계층부터 7 계층까지 자세하게 알아보겠습니다.

 

1 계층 - 물리(피지컬) 계층 (Physical Layer)

 

1 계층은 물리계층으로 전기적, 기계적은 특성을 이용해서 통신 케이블로 데이터를 전송하게 됩니다. 이 계층에서

1 계층에서는 들어온 전기 신호를 그대로 전달하는 것만이 목적이기 때문에 전기 신호가 1 계층 장비에 들어오면 전기 신호를 재생성해서 내보냅니다. 이 과정에서 데이터가 무엇인지, 어떤 에러가 있는지 등에는 전혀 신경을 쓰지 않죠.

 

1 계층에서는 케이블 , 허브, 리피터, 커넥터 등을 이용해서 데이터를 전송합니다.

 

2 계층 - 데이터 링크 계층 (Data Link Layer)

 

2 계층에서는 물리 계층을 통해 주고받는 데이터의 오류와 흐름을 관리하고, 물리 계층과는 달리 MAC 주소 체계가 생기기 때문에 안전한 정보의 전달을 수행할 수 있도록 도와주는 역할을 합니다. MAC 주소는 네트워크 카드가 만들어질 때부터 정해져 있는 변하지 않는 고유 주소를 의미하죠. 1 계층 물리 계층과 3 계층 네트워크 계층 사이에 껴서 연결하는 역할을 하며, 하드웨어, 소프트웨어 두 가지 성격을 모두 가지고 있습니다. 2 계층에서는 브리지, 스위치를 통해 MAC 주소를 가지고 물리계층에서 받은 정보를 전달하게 되죠.

 

데이터 링크 계층은 안전한 정보의 전달을 수행하기 위해서 CRC 기반의 오류 제어와 흐름 제어가 필요합니다. 여기서 CRC란 순환 중복 검사로, 데이터를 전송할 때 전송된 데이터에 오류가 있는지 확인하기 위해서 상태 값을 넣어서 확인하는 방식입니다.

 

2 계층을 한 문장으로 정리하자면, 직접 연결된 서로 다른 2개의 네트워크 장치 간의 데이터 전송을 담당하는 계층이라고 할 수 있습니다. 데이터 링크는 말 그대로 직접 연결된 바로 옆 노드의 장치하고만 통신하는 역할을 하지 맞는지 틀린지는 IP라는 네트워크 계층의 프로토콜이 역할을 수행하죠.

 

3 계층 - 네트워크 계층(Network Layer)

 

2 계층 데이터 링크 계층에서 바로 옆 노드와 통신하는 역할을 수행하고 있다고 했습니다. 그렇다면 먼 곳에 있는 사람들과 통신하기 위해서는 바로 옆 노드를 넘어서 먼 노드까지 길을 찾아서 통신을 해야겠죠? 데이터 링크와는 달리 옆 노드가 아닌 출발지에서 목적지까지 길을 찾아주는 역할을 네트워크 계층이 수행하게 됩니다.

여기서 길을 찾아서 목적지까지 가장 안전하고 빠르게 데이터를 전달하는 라우팅 기능을 해주는 곳이 네트워크 계층인 것이죠.

 

그림1

 

 

위 그림의 왼쪽에서 오른쪽으로 메일을 전송한다고 가정해보겠습니다.

그림에 나와있지는 않지만 7 계층 애플리케이션 레이어에서 메일이 작성됩니다. 데이터를 보내는 과정에서 결국엔 물리계층까지 가야 하는데, 하나하나 계층을 내려갈 때 통신하기 위해 필요한 데이터들을 앞 뒤로 붙여야 해요.

4 계층인 전송 계층에서 네트워크 계층으로 내려올 때는 헤더에 IP주소 같은 정보를 넣고 데이터를 감싸게 됩니다. IP주소는 이후에 설명하겠지만 간단히 말하면 메일을 받는 사람 주소라고 할 수 있습니다. 

 

그림2

 

하나하나 네트워크 계층을 내려갈 때마다 데이터들이 앞 뒤로 붙으면서 애플리케이션에서 'hello world'라는 메시지만 보냈을 때 물리 계층에 도착했을 때는 데이터가 덕지덕지 붙어있는 것이죠. 이렇게 감싸서 처리를 하는 것을 캡슐화라고 합니다.

 

네트워크 계층의 특징을 정리해보겠습니다.

 

첫 번째는 패킷을 전달합니다. 패킷은 네트워크 계층에서의 데이터를 의미하죠. 참고로 전송 계층의 데이터 단위는 세그먼트, 데이터 링크 계층의 데이터 단위는 프레임이라고 합니다.

두 번째는 라우팅 기능을 수행합니다. 출발점과 목적지가 있을 때 라우팅 프로토콜을 기반으로 효율적인 경로를 선택해서 패킷을 전송할 수 있게 하죠.

세 번째는 3 계층 네트워크 계층부터 논리적인 주소를 사용합니다. 논리적인 IP 주소를 사용해서 사용자 데이터를 목적지까지 전달하고 전송 계층으로부터 받은 세그먼트에 IP 프로토콜 헤더를 붙여서 캡슐화를 진행한 후 패킷을 전송합니다.

 

4계층 - 전송(트랜스포트) 계층 ( Transport Layer )

 

3계층에서는 패킷 전송이라는 중요한 역할을 담당한다고 했습니다. 하지만 최적의 경로를 찾아 목적지까지 패킷을 전송해줄 뿐 패킷을 받을 컴퓨터가 인터넷에 있는지,  패킷을 받을 준비가 되어있는지, 전송하는 과정에서 패킷이 유실되지는 않았는지 등의 문제는 신경쓰지 않죠.

즉, 3계층의 IP 프로토콜은 통신하는 호스트간 패킷을 전달하는데에만 최선을 다하고 패킷의 전송 순서, 패킷의 상태 등을 보장하지 않기 때문에 비신뢰형 서비스라고도 합니다.

 

그렇다면 패킷의 전송에 대한 모든 제어는 누가 담당할까요? 바로, 전송 계층에서 담당합니다.

 

전체 계층을 통틀어서 데이터를 전송하는 목적은 애플리케이션 계층에서 데이터를 안전하게 받고, 데이터를 처리해서 애플리케이션의 목적에 따른 서비스를 제공하기 위한 것입니다. 

전송 계층은, 다양한 애플리케이션이 동작하는 컴퓨터 내에서 어떤 애플리케이션이 사용하는 데이터인지 식별해서 수신하는 컴퓨터에 도착한 데이터를 수신한 컴퓨터 내의 애플리케이션이 보내주는 역할을 수행합니다. 

3계층인 네트워크 계층은 IP주소를 사용해서 컴퓨터 간의 데이터 통신을 담당하고 전송 계층에서는 포트번호를 사용해서 애플리케이션 간의 데이터 통신을 담당한다고 볼 수있죠.

 

여기서 포트 번호는 동일한 컴퓨터 안에서 통신을 하고 있는 어플리케이션을 식별할 때 사용되는 어플리케이션의 주소라고 할 수 있습니다.
네트워크 계층에서 IP 주소를 보고 컴퓨터로 데이터를 전송하면 전송 계층에서 포트 번호를 보고 어떤 어플리케이션이 사용할 데이터인지 구별하는 방식이죠.

 

5계층 - 세션 계층 ( Session Layer)

 

세션 계층에서는 양 끝단 어플리케이션 응용 프로세스의 연결을 도와주고, 연결이 안정적으로 유지되도록 관리합니다.

관리 후, 작업이 완료가 되면 연결을 끊어주는 역할 또한 하게되죠. 이 과정을 요약하자면 프로그램간의 동기화를 안정적으로 제공해준다고 할 수 있습니다.

 

TCP/IP 세션 연결의 설정과 해제, 세션 메세지 전송 등의 기능을 수행합니다. 우리가 흔히 아는 쿠키, 세션 할 때 세션이 여기서 나오는 세션입니다.

 

6계층 - 표현 계층 (Presentation Layer)

 

표현 계층의 역할은 통신하는 애플리케이션들이 다루게 될 정보들을 통신에 알맞은 형태로 만들거나, 하위 계층에서 온 데이터를 사용자가 이해하기 쉬운 형태로 만드는 역할을 담당합니다. 수신자 컴퓨터에서 적합한 어플리케이션을 사용해서 응용계층에서 온 데이터를 해석하는 역할도 합니다.

 

대표적인 프로토콜로는 JPEG, MPEG 등이 있습니다.

 

7계층 - 응용 계층 (Application Layer)

 

응용 계층은 사용자가 실제로 사용하면서 체감할 수 있는 서비스를 의미합니다. 응용 프로세스와 직접 연관이 있으며 서비스를 수행하는 역할을 합니다. 서비스를 제공하기 위해 서버와 클라이언트 사이에서 다양한 메세지나 명령을 주고 받죠.

 

 

4. 정리

 

자 오늘은 OSI 7 계층에 대해서 정리를 해봤습니다. 다음 시간에는 OSI 7 계층에서 많이 사용하는 프토토콜인 TCP/IP를 중심으로 요약된 TCP/IP 4계층에 대해서 알아보겠습니다. 감사합니다.

 

 

반응형