사전 OSI 참조 모델
표준

OSI 참조 모델

gabury1고친 사람 github-actions[bot]

OSI 참조 모델은 네트워크 통신에 드는 일을 일곱 계층으로 나눠 부르게 해 줍니다. 계층마다 한 가지 일을 맡기고 번호를 붙였습니다. 덕분에 어떤 장비나 프로그램이 통신의 어느 일을 하는지 같은 번호로 가리킬 수 있습니다. 실무에서 듣는 4계층이나 7계층 같은 말이 이 모델의 번호입니다.

쉽고 빠른 이해

OSI 참조 모델은 통신에 드는 일을 일곱 칸으로 나눠 그린 지도입니다. 「7계층 로드 밸런서」라는 장비 이름의 7이 이 지도의 칸 번호입니다. 그 장비가 맨 위 칸의 내용까지 읽고 일한다는 뜻입니다.

이 지도가 없으면 장비와 프로그램이 하는 일을 저마다 다른 말로 설명하게 됩니다. 칸을 정해 두면 「이 장비는 몇 번 칸까지 본다」로 짧게 말할 수 있습니다. 한 칸의 방식을 바꿔도 다른 칸은 손대지 않아도 됩니다.

  1. 보내는 프로그램이 맨 위 칸에 데이터를 넘깁니다
  2. 한 칸 내려갈 때마다 그 칸의 배달 정보가 앞에 붙습니다
  3. 받는 쪽은 맨 아래 칸부터 그 정보를 떼어 내며 위로 올립니다

대가는 지도와 실물이 딱 맞지 않는다는 것입니다. 오늘날 인터넷은 이 지도에 맞춰 만든 통신 규칙을 쓰지 않습니다. 그래서 몇 번 칸인지 하나로 정해지지 않는 규칙도 있습니다.

상세

이 절은 OSI 참조 모델이 정한 일곱 계층과 그 쓰임을 차례로 봅니다.

개방형 시스템과 참조 모델

프로토콜은 두 컴퓨터가 데이터를 주고받을 때 지키기로 한 약속입니다. 무엇을 어떤 모양으로 보내고 어떻게 답할지를 정합니다. 통신 한 번에도 이런 약속이 여럿 겹쳐 쓰입니다.

OSI(Open Systems Interconnection, 개방형 시스템 상호연결) 참조 모델은 이 약속들을 설명하는 틀입니다. 참조 모델은 프로토콜 자체가 아닙니다. 프로토콜을 설명하고 서로 견줄 때 기준으로 삼는 틀입니다.

개방형 시스템은 공개된 규칙만 지키면 어느 회사가 만든 것이든 서로 이어지는 시스템을 말합니다. 이 틀이 나오기 전에는 컴퓨터 회사마다 자기 장비끼리만 통하는 네트워크 방식을 따로 두었습니다. 다른 회사 장비를 섞으면 서로 알아듣지 못했습니다.

그래서 이 틀은 통신에 드는 일을 일곱 계층으로 나눕니다. 계층은 위아래로 쌓인 일의 칸입니다. 계층마다 맡을 일을 공개해 두면 계층 하나를 다른 회사 것으로 바꿔 끼울 수 있습니다.

이 틀은 ISO(International Organization for Standardization, 국제 표준화 기구)의 국제 표준입니다. ISO 는 IEC(International Electrotechnical Commission, 국제전기기술위원회)와 함께 이 문서를 ISO/IEC 7498-1 이라는 번호로 냈습니다.

ITU-T(International Telecommunication Union, 국제전기통신연합의 표준화 부문)는 통신망 표준을 정하는 국제 기구입니다. 이 기구도 같은 내용을 X.200 이라는 번호로 냈습니다.

일곱 계층이 맡는 일

아래 표는 일곱 계층을 위에서부터 적은 것입니다. 위로 갈수록 프로그램이 다루는 내용에 가깝습니다. 아래로 갈수록 전선과 전파에 가깝습니다.

번호 계층 맡는 일
7 응용 계층 프로그램이 주고받는 메시지의 뜻을 정합니다
6 표현 계층 데이터를 적는 형식을 양쪽이 맞춥니다
5 세션 계층 두 프로그램 사이의 대화를 열고 이어 가고 닫습니다
4 전송 계층 상대 컴퓨터 안의 알맞은 프로그램까지 데이터를 건넵니다
3 네트워크 계층 여러 네트워크를 건너 목적지 컴퓨터까지 길을 찾습니다
2 데이터 링크 계층 선 하나로 바로 이어진 옆 장비까지 데이터를 건넵니다
1 물리 계층 비트를 전기 · 빛 · 전파 신호로 바꿔 보냅니다

표의 일을 실물에 대 보면 이렇습니다. 웹 브라우저가 쓰는 HTTP(HyperText Transfer Protocol, 하이퍼텍스트 전송 프로토콜)는 7계층의 약속입니다. 데이터를 빠짐없이 순서대로 나르는 TCP(Transmission Control Protocol, 전송 제어 프로토콜)는 4계층에 놓입니다.

인터넷에서 컴퓨터 한 대를 찾아가는 IP(Internet Protocol, 인터넷 프로토콜)는 3계층입니다. 유선 랜의 이더넷은 2계층과 1계층에 걸칩니다.

서비스와 프로토콜

이 소절은 계층들이 서로 어떻게 기대는지를 봅니다. 참조 모델은 계층 사이의 관계를 위아래 방향과 옆 방향으로 나눠 정합니다.

첫째는 위아래 방향입니다. 한 컴퓨터 안에서 아래 계층은 바로 위 계층에 서비스를 내줍니다. 서비스는 「이 데이터를 저쪽 컴퓨터의 같은 계층까지 건네 달라」 같은 일을 맡아 주는 것입니다. 위 계층은 아래 계층이 그 일을 어떻게 해내는지 모릅니다.

서비스를 주고받는 경계를 인터페이스라고 부릅니다. 이 경계만 지키면 아래 계층의 속을 다 바꿔도 위 계층은 고칠 것이 없습니다.

둘째는 옆 방향입니다. 보내는 컴퓨터의 4계층은 받는 컴퓨터의 4계층과 이야기합니다. 이렇게 짝을 이루는 상대 계층을 대등 계층(peer layer)이라고 부릅니다. 대등 계층끼리 지키는 약속이 그 계층의 프로토콜입니다.

옆 방향 대화는 겉보기입니다. 4계층이 보낸 데이터는 선을 타고 바로 건너가지 않습니다. 아래 계층들을 거쳐 1계층에서 신호가 되어 나갑니다. 그런데도 4계층은 상대 4계층과 직접 이야기하는 것처럼 일합니다.

캡슐화와 계층별 데이터 단위

이 소절은 옆 방향 대화가 어떻게 이뤄지는지를 봅니다. 계층마다 상대 계층에게 전할 말을 데이터 앞에 붙여 아래로 넘깁니다.

데이터 앞에 붙이는 이 배달용 정보를 헤더라고 부릅니다. 받는 쪽의 같은 계층은 헤더만 읽고 안의 데이터는 열지 않습니다. 헤더를 읽고 나면 떼어 냅니다. 남은 것은 위로 올립니다.

이 문서에서는 4계층이 붙인 헤더를 전송 헤더, 3계층이 붙인 헤더를 네트워크 헤더라고 하겠습니다. 2계층이 붙인 헤더는 링크 헤더라고 하겠습니다.

보내는 쪽에서는 한 계층을 내려갈 때마다 이런 헤더가 한 겹씩 늘어납니다. 위에서 받은 덩어리를 열지 않고 겉을 한 번 더 감싸는 방식입니다. 이 방식을 캡슐화라고 합니다.

2계층은 앞에 링크 헤더를 붙입니다. 뒤에도 꼬리를 하나 붙입니다. 이 꼬리를 트레일러라고 부릅니다. 받는 쪽은 트레일러에 담긴 검사 값으로 오는 도중 비트가 깨졌는지 확인합니다.

아래 그림은 4계층부터 그립니다. 7·6·5계층이 만든 결과는 통째로 4계층이 받는 「데이터」에 들어 있습니다. 4계층은 그 안을 열지 않으므로 위 세 계층의 결과를 한 덩어리로 다룹니다. 인터넷에서 6·5계층의 일이 따로 보이지 않는 까닭은 뒤의 「인터넷 프로토콜 스위트와 맞춰 본 계층」에서 봅니다.

flowchart TD
    A["4 전송 · 전송 헤더 + 데이터(7~5계층의 결과)"] --> B["3 네트워크 · 네트워크 헤더 + 전송 헤더 + 데이터"]
    B --> C["2 데이터 링크 · 링크 헤더 + 네트워크 헤더 + 전송 헤더 + 데이터 + 트레일러"]
    C --> D["1 물리 · 덩어리 전체를 비트 신호로 내보냄"]

그림처럼 계층끼리 주고받는 덩어리를 통틀어 PDU(Protocol Data Unit, 프로토콜 데이터 단위)라고 합니다. PDU 는 계층마다 따로 부르는 이름이 있습니다. 아래 표는 흔히 쓰는 이름입니다.

계층 덩어리 이름
4 전송 세그먼트
3 네트워크 패킷
2 데이터 링크 프레임
1 물리 비트

이 이름만 들어도 몇 번 계층 이야기인지 알 수 있습니다. 「패킷을 본다」는 3계층 헤더까지 읽는다는 뜻으로 통합니다. 「프레임」이라고 하면 2계층 이야기입니다.

중간 장비가 읽는 계층

이 소절은 데이터가 목적지까지 가는 동안 거치는 장비를 봅니다. 장비마다 몇 번 계층까지 열어 보는지가 다릅니다.

보내는 컴퓨터와 받는 컴퓨터는 일곱 계층을 전부 거칩니다. 그 사이의 장비는 자기 일에 필요한 계층까지만 헤더를 엽니다.

라우터는 여러 네트워크를 잇는 장비입니다. 라우터는 네트워크 헤더의 목적지 주소를 보고 다음에 보낼 곳을 고릅니다. 전송 헤더와 그 안의 데이터는 열지 않습니다.

flowchart TD
    subgraph SEND["보내는 컴퓨터"]
        S1["7 → 1 계층으로 내려감"]
    end
    subgraph ROUTER["라우터"]
        R1["1 → 2 → 3 계층으로 올라가 목적지 주소를 읽음"]
        R2["다음 길을 고른 뒤 3 → 2 → 1 계층으로 다시 내려감"]
    end
    subgraph RECV["받는 컴퓨터"]
        D1["1 → 7 계층으로 올라감"]
    end
    S1 --> R1 --> R2 --> D1

그림처럼 라우터는 3계층에서 돌아 나갑니다. 4계층부터 위의 헤더는 양 끝 컴퓨터가 서로 읽으려고 붙인 것입니다.

스위치는 한 네트워크 안의 장비들을 잇는 장비입니다. 스위치는 보통 2계층까지만 엽니다. 링크 헤더에 적힌 장비 주소를 보고 프레임을 알맞은 선으로 내보냅니다.

라우터 일까지 하는 스위치도 있습니다. 이런 스위치는 3계층까지 열고 네트워크 헤더의 목적지 주소를 봅니다. 그래서 3계층 스위치라고 부릅니다.

실무에 남은 계층 번호

백엔드 일을 하다 보면 L4(Layer 4, 4계층)나 L7(Layer 7, 7계층) 같은 말을 자주 듣습니다. 여기 붙은 숫자가 OSI 참조 모델의 계층 번호입니다. 번호는 그 장비가 몇 번 계층의 헤더까지 읽고 판단하는지를 알려 줍니다.

전송 헤더에는 받는 컴퓨터 안의 어느 프로그램에 줄지 가리키는 포트 번호가 들어 있습니다. 그래서 4계층까지 읽는 장비는 포트 번호를 보고 판단할 수 있습니다.

부르는 이름 읽는 데까지 판단에 쓰는 정보
2계층 스위치 2계층 링크 헤더의 장비 주소
3계층 스위치 · 라우터 3계층 네트워크 헤더의 IP 주소
L4 로드 밸런서 4계층 IP 주소와 포트 번호
L7 로드 밸런서 7계층 HTTP 요청의 경로 · 헤더 · 쿠키

표에서 보듯 L4 로드 밸런서는 요청 내용을 모른 채 연결을 서버들에 나눕니다. L7 로드 밸런서는 HTTP 요청을 끝까지 읽습니다. /api 로 시작하는 요청과 이미지 요청을 다른 서버로 보내는 일은 L7 에서만 됩니다. 대신 L7 장비는 요청을 끝까지 읽어야 하므로 L4 장비보다 할 일이 많습니다.

장애를 좇을 때도 이 번호로 말합니다. 「3계층까지는 통한다」는 상대 컴퓨터까지 길은 이어졌다는 뜻입니다. 남은 문제는 4계층 위에서 찾습니다. 포트가 열려 있는지, 프로그램이 응답하는지를 봅니다.

인터넷 프로토콜 스위트와 맞춰 본 계층

이 소절은 OSI 참조 모델과 오늘날 인터넷이 쓰는 프로토콜 묶음이 어디서 겹치고 어긋나는지 봅니다.

인터넷은 인터넷 프로토콜 스위트를 씁니다. TCP 와 IP 를 중심으로 한 프로토콜 묶음입니다. 중심인 두 프로토콜의 이름을 따서 TCP/IP 라고도 부릅니다.

이 묶음을 설명할 때는 일을 네 계층으로 나눕니다. 이 네 계층의 틀을 TCP/IP 모델이라고 합니다. 묶음이 실제로 쓰는 프로토콜들이라면, 모델은 그 프로토콜들을 칸으로 나눈 틀입니다.

OSI 참조 모델의 계층 TCP/IP 모델의 계층
7 응용 · 6 표현 · 5 세션 응용 계층
4 전송 전송 계층
3 네트워크 인터넷 계층
2 데이터 링크 · 1 물리 링크 계층

표처럼 OSI 의 여러 계층이 TCP/IP 모델의 한 계층에 겹칩니다. 어긋나는 까닭은 만든 순서에 있습니다.

OSI 쪽은 계층 구분을 먼저 짰습니다. 거기에 맞출 프로토콜은 나중에 만들었습니다. 인터넷 쪽은 돌아가는 프로토콜이 먼저 있었습니다. 계층 구분은 그 프로토콜들을 설명하려고 뒤에 붙었습니다.

널리 퍼진 것은 인터넷 쪽 프로토콜입니다. OSI 참조 모델에 맞춰 만든 프로토콜들은 일부 분야 밖에서는 거의 쓰이지 않습니다. 그래서 오늘날 OSI 참조 모델은 프로토콜이 아니라 계층을 부르는 번호로 남았습니다.

이 어긋남 때문에 인터넷 프로토콜을 일곱 칸에 딱 맞춰 넣기 어렵습니다. 세션 계층과 표현 계층의 일은 대개 따로 떨어진 프로토콜로 나타나지 않습니다. 응용 프로그램이나 라이브러리가 7계층의 일과 함께 처리합니다.

TLS(Transport Layer Security, 전송 계층 보안)가 걸리는 예입니다. TLS 는 TCP 위에서 데이터를 암호화합니다.

TLS 가 몇 번 계층인지는 하나로 정해져 있지 않습니다. 4계층으로 보기도 합니다. 5계층이나 6계층으로 보기도 합니다.

그래서 이 모델은 장비와 문제가 어느 계층에 있는지 짚는 공통 말로 쓸 때 잘 맞습니다. 프로토콜 하나가 몇 번 계층인지 딱 잘라 정하려 할 때는 잘 안 맞습니다.

관련 항목

OSI 참조 모델이 속하는 상위 분류

네트워크 · 컴퓨터 네트워크 · 프로토콜 · 표준 · 참조 모델

OSI 참조 모델을 이루는 일곱 계층

응용 계층 · 표현 계층 · 세션 계층 · 전송 계층 · 네트워크 계층 · 데이터 링크 계층 · 물리 계층 · 계층

이 모델이 계층 사이의 관계를 설명하는 개념

서비스 · 인터페이스 · 대등 계층 · 캡슐화 · 역다중화 · 헤더 · 트레일러 · PDU

계층마다 데이터 덩어리를 부르는 이름

비트 · 프레임 · 패킷 · 세그먼트 · 데이터그램

각 계층에 놓이는 대표 프로토콜

HTTP · DNS · TLS · TCP · UDP · IP · ICMP · 이더넷 · 와이파이 · ARP

계층 주소로 상대를 가리키는 번호

포트 · IP 주소 · MAC 주소 · 프로토콜 번호

계층 번호로 갈리는 네트워크 장비

라우터 · 스위치 · L2 스위치 · L3 스위치 · 로드 밸런서 · L4 로드 밸런서 · L7 로드 밸런서 · 방화벽 · 허브

이 모델과 견주는 계층 모델과 설계 원칙

인터넷 프로토콜 스위트 · TCP-IP 모델 · 프로토콜 스택 · 모래시계 모델 · 종단 간 원칙 · 레이어드

통신 계층 모델을 정하는 표준 기구

ISO · IEC · ITU-T · IETF

계층을 짚어 보는 진단 도구

ping · traceroute · tcpdump · Wireshark

다른 이름: OSI reference model · OSI model · OSI Basic Reference Model · Basic Reference Model · OSI 모델 · OSI 7계층 · OSI 7계층 모델 · OSI 기본 참조 모델 · 개방형 시스템 상호연결 참조 모델