OSI 7계층

[Network] OSI 7계층


OSI (Open System Interconnection) 7계층은 네트워크 프로토콜 디자인, 통신을 7개의 계층으로 나누어 설명한 모델이다. 국제표준화기구(ISO) 에 의해 정립되었다.

왜 OSI 7계층을 알아야 할까?

OSI 7계층은 네트워크 국제 표준이다. 이는 곧 컴퓨터와 같은 네트워크 장치를 만들 때 이 모델에서 정의한 내용을 준수하여 만들어야 한다는 의미이다. 만약 이 표준과 아예 동떨어진 독단적인 프로토콜을 지닌 네트워크 장치 A를 만든다면, A는 OSI 7계층 프로토콜을 준수하는 다른 네트워크 장치와 정상적인 통신을 할 수 없다.
즉, 현대 네트워크 통신을 공부하고자 한다면 OSI 7계층은 반드시 알아야 하는 내용 중 하나이다.


OSI 7계층 구조

osi-7-layer

OSI 7계층은 위와 같이 7개의 계층으로 구성된다. 송신측은 보내고자 하는 데이터가 각 계층을 지나 내려가면서 헤더가 첨가되고, 수신측에선 수신한 패킷을 위로 올려보내며 헤더를 하나씩 확인, 제거한다.
동일한 계층끼리 헤더를 통해 정보를 주고받는 모습을 보고 “동일한 계층끼리 논리적으로 연결되어 있다” 라고 표현하기도 한다.
지금부터 송신측에서 데이터를 전송하는 상황을 가정하고, 각 계층이 어떤 일을 하는지 알아보자.

7. 애플리케이션 계층 (Application Layer)

사용자들과 직접 상호작용하는 애플리케이션을 말한다.
대표적인 예로 웹 브라우저, 메일, 게임 클라이언트 등이 있다.
사용자가 입력한 데이터를 아래 계층으로 내려보낸다.

6. 표현 계층 (Presentation Layer)

애플리케이션 계층에서 내려보낸 데이터에 추가적인 작업을 진행한다.
여기서 말하는 추가적인 작업이란, 송, 수신 간 시스템 차이를 고려하여 애플리케이션 계층에서 상호 합의된 데이터 표현 방식으로 데이터를 가공하는 작업이다.
표현 계층의 목적은 송신측과 다른 시스템에서 작동하는 애플리케이션에서 송신 데이터를 읽을 수 있도록 가공하는 것이다.

표현 계층에서 진행하는 작업으로는 아래와 같은 것들이 있다.

  • 문자의 인코딩 형식 변환 (ex ASCII → UTF-8)
  • 암호화 (ex TLS/SSL layer)
  • 압축 (ex HTTP gzip, deflate)

5. 세션 계층 (Session Layer)

애플리케이션 간 세션을 구축, 관리, 종료하며, 애플리케이션 간 통신 방법 (전이중, 반이중, 단방향) 을 제시한다. 또한 통신하는 애플리케이션들을 동기화하며 오류 복구 등의 명령을 일괄적으로 다룬다. 즉, 애플리케이션 간 통신이 질서있게 이루어지도록 조정하는 기능을 담당한다.

4. 전송 계층 (Transport Layer)

전송, 수신되는 데이터를 관리하는 역할을 한다. 데이터 관리에는 각 데이터의 흐름제어, 오류검출, 중복 검사 및 너무 큰 데이터를 적절한 크기로 나누는 작업이 포함되어 있다.
대표적인 전송 계층 프로토콜로 TCP, UDP가 있다.
4계층부터 데이터에 헤더를 붙이기 시작한다. 전송 계층 헤더가 붙은 단위를 세그먼트라고 한다. 전송 계층의 헤더에는 애플리케이션이 사용하는 포트 번호가 들어 있다. 수신측 전송 계층에서 이 포트 번호를 보고 어떤 애플리케이션에게 전송된 데이터인지 판단할 수 있다.

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

데이터가 네트워크 상에서 이동할 때 그 경로를 결정하는 역할을 한다.
네트워크 계층의 헤더에는 해당 호스트의 IP가 있다. 네트워크 계층의 헤더까지 붙은 단위를 패킷이라고 한다.

network-layer

서로 다른 LAN에 속해있는 호스트 간 통신은 IP주소에 기반하여 경로가 결정된다. 인터넷 상의 이동중인 패킷의 경로는 라우터가 결정하는데, 이 때 라우터는 네트워크 계층에서 부착한 IP주소를 이용하여 목적지까지의 경로를 결정한다.
대표적인 프로토콜로는 IP, ICMP가 있다. IP (Internet Protocol) 는 송신, 수신 호스트 간 주고받는 정보에 대한 규약을 정의하며, ICMP (Internet Control Message Protocol) 은 이 패킷이 목적지까지 도달하는 과정에서 발생할 수 있는 오류나 흐름 제어 등을 정의하는 프로토콜이다.

네트워크 계층이 서로 다른 LAN에 속한 호스트 간 통신을 위한 계층이라면, 데이터 링크 계층은 동일 LAN에 속한 호스트 간 통신을 위해 존재한다. 모든 네트워킹이 가능한 호스트에는 통신을 위한 랜카드가 필요한데, 이 랜카드의 고유 번호를 MAC 주소라고 한다. 데이터 링크 계층의 헤더까지 붙은 단위를 프레임이라 부르며, 데이터 링크 계층의 헤더에는 호스트의 MAC 주소가 포함되어 있다.

data-link-layer

LAN 내부엔 스위치, 허브와 같은 네트워크 장치가 존재한다. 이들은 각 프레임을 자신과 연결된 장치로 포워딩하는 일을 한다. 이 때 데이터 링크 계층 헤더 (MAC 주소) 를 확인하고, 그에 맞는 회선으로 프레임을 포워딩한다.

1. 물리 계층 (Physical Layer)

2 ~ 7계층을 거쳐오면서 생성된 프레임을 전기적인 신호로 변환하여 전송한다. 물리적인 회선과 직접적으로 맞닿아있는 계층이라고 말할 수 있다. 대표적인 장치로는 리피터, 케이블 등이 있다.

  • 2 ~ 7계층을 거치면서 생성된 프레임의 구조는 아래와 같다.
    프레임 구조

세션 계층 vs 전송 계층

세션 계층을 공부하며 전송 계층과 세션 계층이 헷갈려서 애를 먹었다. 정확히 어떻게 세션 계층을 정의해야할지 고민해 보았고, 나름 나만의 결론을 내려보았다. 비유를 곁들여 최대한 쉽게 생각해보자.

  • 정부에서 A와 B지역은 상호 이동할 수 있고, A와 C지역은 A지역에서 C지역만 갈 수 있도록 만들어 달라는 요청을 건축사에게 했다고 가정하자.
  • 이 건축사는 A와 B지역 사이에는 A → B 이동, B → A 이동이 가능해야 하므로 양방향 이동이 가능한 터널을 계획한다. A와 C지역 사이에는 A → C 이동만 가능해야 하므로 단방향 터널을 계획한다.
  • 건축사는 시공사에게 자신이 계획한 대로 터널을 만들어 줄 것을 요청하고, 시공사는 이에 맞게 터널을 만든다. 이후 시공사는 그 사이에 자동차가 정상적으로 다니는지, 터널에 손상은 없는지, 사고가 나지는 않았는지 등을 관리한다.
  • 시간이 흐르고 정부에서 건축사에게 터널 폐쇄를 요쳥하면, 건축사는 안전하게 터널을 폐쇄할 계획을 세우고, 자신의 계획대로 공사해줄 것을 시공사에게 요청한다.

나름 비유를 통해 전송 계층과 세션 계층간 차이점을 이해해 보았다. 간단하게 정리해보면 세션 계층은 애플리케이션의 의도에 맞게 연결을 어떻게 설립하고, 어떻게 이용할지를 계획하여 전송 계층에 알려주면, 전송 계층에서는 그에 맞게 논리적인 연결을 설립하고 각 연결을 제어하는 것에 집중한다.

KEY POINT

전송 계층은 데이터 관리
세션 계층은 세션 관리

0%