본문 바로가기
Study/OS & Network

[Network] OSI 7계층

by DawIT 2021. 12. 8.
320x100

정의

OSI(Open Systems Interconnection Reference Model) 7계층이란, 네트워크 프로토콜이 통신하는 구조를 7개의 계층으로 나누어 표현한 구조를 일컫는다.

 

구조

 

OSI 7계층은 아래에서부터 물리-데이터 링크-네트워크-전송-세션-표현-응용 계층의 구조를 가지고 있다.

이중 위쪽 4개의 계층은 payload(실제 전송 데이터), 아래 3개의 계층은 header를 포함한다.

 

OSI 7계층의 각 계층들은 독립적이지만, 상하구조를 띄고 있기 때문에 상위의 계층이 동작하려면 하위의 모든 계층이 제대로 동작해야만 한다.

 

왜 이렇게 나누었는가?

초기에 인터넷이 세상에 나오고 사람들이 네트워크 망에 처음 접할 때는 네트워크상의 체계가 없는 상태였으며, 이에 따라 큰 혼란이 있었다고 한다. 이때문에 이후 네트워크 개발을 더욱 편하게 하기 위하여 OSI 7 계층을 정하고 사용하였다고 한다.

 

어떠한 장점이 있는가?

  • 계층으로 구분되어 있기 때문에, 설계하기 쉽다.
    • 각 층은 모두 자신의 역할이 있고, 이를 충실하게 수행하도록 구현되면 된다.
  • 확장하기 쉽다.
    • 계층이 지금은 7개지만, 필요하다면 새로운 계층을 만들어 더 많은 기능을 추가하는데에 용이하다.

각 계층의 역할

각 계층의 역할을 데이터를 보내는 관점에서 살펴본다. 받는 과정에서는 해당 계층은 보내는 과정에서 했던 작업을 반대로 한다고 생각하면 쉽다.

1계층: 물리 계층(Physical Layer) - 단위: Bit

물리 계층은 말 그대로 물리적인 통신을 하는 계층이다. 디지털 데이터는 0과 1로 표현되는데, 이를 목적지 까지 전달하기 위해 이러한 비트 데이터들을 아날로그 데이터로 전환(인코딩)하여 전송한다. 또한 외부에서 온 아날로그 데이터를 비트 데이터로 전환(디코딩)하기도 한다. 이렇게 아날로그 데이터로 변환된 데이터들은 물리적인 전선을 통해 이동한다.(물론 무선 통신이라면 신호가 공기중으로 이동할 것이다)

 

물리 계층은 전기 신호를 전환하여 결국 실제로 전환하는 계층이기 때문에, 많은 하드웨어 아키텍쳐들과 연관되어있어서 OSI 7계층 중 가장 복잡한 계층이다.

 

2계층: 데이터 링크 계층(Data Link Layer) - 단위: Frame

 

데이터 링크 계층같은 네트워크 내에 있는 여러 컴퓨터들이 서로 데이터를 주고받기 위해 필요한 모듈이다. 이 데이터 링크 모듈은 1계층 만으로는 여러 대가 얽힌 엄청나게 넓은 네트워크에서 원하는 컴퓨터들끼리 데이터를 통신하기 어렵기 때문에 존재하는 모듈이다. 실제로 엄청나게 멀리 있는 컴퓨터까지 전송하기 위해서는, 먼저 가까이 있는 컴퓨터와의 연결이 보장되어야 한다. 이를 담당하는게 데이터 링크 계층이다.

 

데이터 링크 계층은 Framing 이라는 작업을 수행한다. 이는 보내는 데이터의 앞과 뒤에 어떠한 정보를 추가하여 해당 데이터의 시작과 끝을 알리는 작업이다. 이는 동시에 많은 데이터가 들어올 수 있기 때문에 각각의 데이터를 서로 구분할 수 있게 하기 위함이다. 이때 앞과 뒤에 추가하는 정보를 프레임(Frame) 이라고 한다.

 

또한 데이터 링크 계층은 보내는 측과 받는 측의 속도를 측정하여, 만약 보내는 측의 속도가 너무 빠르다면, 받는 측에서 이를 처리할 수 없을 수도 있으므로 속도를 적절히 제어하는 역할도 한다. 이를 흐름 제어 라고 한다.

 

이외에 오류 제어도 이 계층에서 담당한다고 한다.

 

3계층: 네트워크 계층(Network Layer) - 단위: Packet

 

네트워크 계층은 복잡한 네트워크 상에서 어디로 데이터를 보내야 할지를 정의하는 계층이다. 네트워크 안에서 통신할 데이터를 어디로 보낼지 선택하는 것을 라우팅 이라고 한다. 보내는 측에서는 데이터와 IP 를 합쳐서 하나의 패킷을 구성하고 데이터를 전송한다. 이 패킷이 이동하면서 수많은 라우터들을 거쳐가게 되는데, 거쳐가는 라우터 마다 해당 패킷을 확인하여 IP를 확인하고, 다음 라우터로 라우팅을 진행한다. 실제로 라우팅이 어떻게 이루어지는지는 라우팅 알고리즘을 통해 알 수 있다.

 

또한 네트워크 계층에서는 혼잡 제어를 담당한다. 혼잡 제어란 간단히 이야기해서 하나의 컴퓨터에 너무 많은 패킷이 한번에 몰려서 처리 능력이 감당하지 못하고 느려지는 것을 막는 작업이다.

 

3계층부터는 소프트웨어적으로 구현되어 있다.

 

4계층: 전송 계층(Transport Layer) - 단위: Segment or Datagram

전송 계층은 멀리 떨어진 두 컴퓨터 간의 신뢰성 있는 정보 전달을 담당한다. 전송 계층에서는 수신자 컴퓨터까지 정보가 손실되지 않고 제대로 도착했는지 확인한다. 또한 전송 속도를 맞추는 흐름 제어도 담당한다. 이 계층은 데이터를 끝에서 끝까지 전송하는 역할을 하기 때문에 전체 계층중 가장 중요한 역할을 한다고 할 수 있다.

 

대표적인 4계층의 프로토콜로 TCP(연결지향) 프로토콜과 UDP(비연결지향) 프로토콜이 존재한다. 이들 각각의 데이터 전송 단위는 Segment 와 Datagram 이다.

 

이 계층에서는 헤더에 Port 번호를 포함하여 보내게 되는데, 이를 통해 세션 계층에서 수신자와 발신자의 컴퓨터를 연결한 후 어플리케이션에서 어플리케이션까지 연결하는 역할을 한다.

 

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

세션 계층은 통신 세션을 구성하는 계층으로써, 두 컴퓨터 간의 연결을 유지하며 동기화하는 역할을 한다. 이러한 연결을 세션 이라고 하며, 해당 계층에서는 세션 생성, 세션 종료, 오류 발생시 복구 기능 등을 담당한다.

 

4계층에서 있었던 Port를 사용해 어플리케이션끼리의 연결이 지속적으로 이루어질 수 있도록 한다.

 

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

표현 계층에서는 정보의 표현 방식을 관리한다. 구체적으로는 암호화/복호화 혹은 데이터 압축/해제 등을 담당하게 된다. 또한 이후에 나오는 응용 계층에서 해당 데이터를 이해할 수 있도록 데이터를 변환해주기도 한다.

 

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

응용 계층은 실제로 컴퓨터를 사용하는 사용자가 네트워크를 접근하게 해주는 인터페이스를 제공해준다. 가장 익숙한 HTTP가 이러한 응용 계층의 한 예이다. HTTP 외에도 FTP, SMTP, TELNET 등등이 존재한다.

댓글