[Network/Bridge] OSI Model & TCP/IP Model

녹차·2026년 2월 25일

Network

목록 보기
12/15
post-thumbnail

Introduction

C++ 게임 서버를 개발하기 위해서는 네트워크 통신 구조에 대한 이해가 필수적입니다. 그리고 네트워크 통신을 제대로 다루기 위해서는, 그 기반이 되는 OSI ModelTCP/IP Model에 대한 기본적인 지식이 선행되어야 합니다.

이전 글에서 OSI 모델의 각 계층이 왜 중요한지 간략히 언급했습니다. 비록 게임 서버를 개발하면서 모든 계층을 직접 구현하거나 다루는 일은 많지 않지만, OSI 모델의 역할을 알고 개발하는 것과 모른 채 코드를 작성하는 것은 큰 차이가 있습니다.

이는 마치 어떤 씨앗인지도 모른 채 나무를 심는 것과 같다고 생각합니다. 겉으로는 동작하더라도, 내부에서 어떤 원리로 흘러가는지 모른다면 문제 상황에서 올바르게 대응하기 어렵습니다.

그렇기에 이번 글에서는 OSI Model, TCP/IP Model에 대해 살펴보며, 이후 각 계층이 어떤 역할을 담당하는지 자세히 학습해 보겠습니다.

(이 글은 여러 기술 문서와 교재 등 다양한 자료를 참고하였습니다.)

Body

Why OSI Model was Introduced?

OSI 모델 도입 이전 1970년대 말과 ~1980 초에는 통신 규칙, 전송 방식, 오류 처리 방식 등이 벤더별로 제각각이었기 때문에 A사의 컴퓨터가 B사의 컴퓨터와 직접 통신하기 어려웠습니다.

이러한 문제를 해결하기 위해 1984년 국제표준화기구인 ISO(International Organization for Standardization)는, 어떤 회사의 장비나 어떤 시스템이든 동일한 규칙으로 통신할 수 있도록 OSI(Open Systems Interconnection) 모델을 제안하였습니다.

OSI Model Concept

즉, 오픈 시스템 상호 연결(OSI) 모델이란? 네트워크 통신과 상호 운용성을 7개의 추상 계층으로 나눈 개념적 모델입니다. OSI 참조 모델이라고도 불리는 이 모델은 서로 다른 애플리케이션, 컴퓨터 시스템, 네트워크 간의 통신을 가능하게 하는 표준화된 구조를 제공합니다.

[Cloudflare]
개방형 시스템 상호 연결(OSI) 모델은 표준 프로토콜을 사용하여 다양한 통신 시스템이 통신할 수 있도록 국제표준화기구에서 만든 개념 모델입니다.

[wikipedia]
OSI 모형(Open Systems Interconnection Reference Model)은 국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것이다

각 계층의 역할은 아래와 같으며, 이후 글에서 자세히 다루겠습니다.

컴퓨터 A사와 컴퓨터 B사가 통신을 수행할 경우, 데이터는 아래와 같은 과정을 거쳐 전달됩니다.

송신 측에서는 데이터를 전송하기 위해 응용 계층부터 시작하여 하위 계층 방향으로 데이터를 전달합니다. 이 과정에서 각 계층은 자신의 역할에 맞는 처리를 수행한 뒤, 데이터를 바로 아래 계층으로 넘깁니다. OSI 모델의 각 계층은 서로 독립적으로 동작하기 때문에, 데이터가 전달되는 동안 다른 계층의 내부 동작에 직접적인 영향을 받지 않습니다.

반대로 수신 측에서는 하위 계층에서 수신한 데이터를 상위 계층 방향으로 전달하며, 각 계층은 송신 측에서 수행된 처리의 역과정을 거쳐 최종적으로 응용 계층에 데이터를 전달하게 됩니다.

Why TCP/IP Model was Introduced?

TCP/IP는 1960년대 후반, 미국 방위고등연구계획국인 DARPA에서 서로 다른 컴퓨터 네트워크 간 통신을 목표로 패킷 교환 기술을 연구하면서 시작되었습니다. 이후 1974년, Vint CerfBob Kahn은 「A Protocol for Packet Network Intercommunication」 논문을 통해 서로 다른 네트워크를 연결하기 위한 TCP/IP 프로토콜 개념을 제안하였습니다.

이러한 연구 성과를 바탕으로, 1983년 ARPANET 프로젝트는 기존 NCP 프로토콜에서 TCP/IP로 공식 전환되었으며, 이는 현대 인터넷의 기술적 기반이 되는 결정적인 전환점이 되었습니다.

Q1. TCP/IP 모델이 이미 있었는데, 왜 OSI 모델이 등장했을까요?

TCP/IP는 1970년대부터 실제 네트워크 환경에서 사용되며 인터넷의 기반 기술로 자리 잡았습니다. 다만 “통신이 잘 된다”는 점에 초점이 맞춰져 있었기 때문에, 네트워크 구조를 계층별로 깔끔하게 설명하기에는 다소 부족한 부분이 있었습니다. 각 기능이 어떤 역할을 담당하는지 명확한 기준으로 나누어 설명하기가 쉽지 않았기 때문입니다.

이러한 배경에서 국제표준화기구 ISO는 TCP/IP를 대체하기 위한 모델이 아니라, 네트워크 통신을 보다 이해하기 쉽게 정리하기 위한 참조 모델로 OSI(Open Systems Interconnection) 모델을 제안했습니다. OSI 모델은 실제 구현보다는 네트워크를 계층별로 나누어 구조를 이해하고, 설계나 문제 분석을 수월하게 하는 데 목적이 있으며, 서로 다른 네트워크 기술을 공통된 관점에서 설명할 수 있도록 도와주는 역할을 합니다.

How do I send & receive DATA?

앞서 설명했듯이 컴퓨터 A사와 컴퓨터 B사가 통신할 때, 송신 측은 OSI 모델의 상위 계층에서 하위 계층 방향으로 데이터를 전달하고, 수신 측은 하위 계층에서 상위 계층 방향으로 데이터를 전달받습니다.

이 과정에서 단순히 데이터만 내려보내는 것이 아니라, 각 계층은 데이터 전달에 필요한 정보를 데이터 앞부분에 추가한 뒤 다음 계층으로 전달합니다. 이렇게 각 계층에서 추가되는 정보들을 헤더(Header)라고 하며, 헤더에는 목적지 주소, 전송 제어 정보 등 데이터가 올바르게 전달되기 위한 메타데이터가 포함됩니다.

이처럼 데이터에 헤더를 하나씩 붙여가며 내려보내는 과정을 캡슐화(Encapsulation)라고 합니다. 반대로, 수신 측에서는 하위 계층부터 데이터를 받아오면서 각 계층의 헤더를 제거하고 필요한 정보만 처리한 뒤 상위 계층으로 전달하는데, 이 과정을 역캡슐화(Decapsulation)라고 합니다.

이처럼 헤더를 붙여 나가는걸 캡슐화라고 해여 한편 데이터를 받는 쪽에서는 헤더를 제거하면서 데이터를 읽기에 이를 역캡슐화 라고 합니다.

[Note]
OOP에서 말하는 캡슐화는 데이터와 함수를 하나의 객체로 묶어 내부 구현을 숨기는 개념을 의미합니다. 네트워크에서 사용하는 캡슐화는 데이터 전달 과정에서 헤더를 붙이고 제거하는 과정을 의미하므로, 동일한 용어이지만 맥락과 의미는 서로 다릅니다.

이때 트레일러(trailer)는 데이터를 전달할 때 데이터의 마지막에 추가되는 제어 정보를 의미합니다. 주로 오류 검출을 위한 정보(FCS, CRC 등) 가 포함되며, 수신 측에서는 이 트레일러를 통해 전송 중 데이터가 손상되지 않았는지를 확인합니다.

이렇게 데이터 링크 계층에서 헤더와 트레일러가 모두 붙은 데이터는 하나의 프레임(Frame) 이라고 합니다. 일부 서적에서는 네트워크를 통해 전송되는 데이터 덩어리를 통칭해 패킷(Packet) 이라고 부르기도 합니다.

[Note]
OSI 모델에서는 같은 데이터라도 계층마다 부르는 이름이 다릅니다.

수신 측에 도착한 신호는 다시 비트 데이터로 복원되고, 데이터 링크 계층부터 상위 계층으로 올라가며 트레일러와 헤더가 순차적으로 제거되는 역캡슐화 과정을 거치게 됩니다.

Conclusion

이번 글에서는 OSI 모델과 TCP/IP 모델의 등장 배경과 역사, 그리고 두 모델이 어떤 목적과 철학을 가지고 만들어졌는지를 전체적으로 살펴보았습니다.

특히 다음과 같은 점들을 이해하는 것이 중요합니다.

  • TCP/IP 모델은 실제 구현과 실사용을 중심으로 발전한 모델로, 오늘날 인터넷의 표준으로 자리 잡았다
  • OSI 모델은 특정 프로토콜이 아닌, 네트워크를 체계적으로 이해하기 위한 참조 모델로 제안되었다
  • OSI 모델의 계층 구조는 네트워크 통신 흐름을 이해하고, 문제를 분석·설명하는 데 매우 유용하다

다음 글에서는 OSI 모델의 1계층인 물리 계층(Physical Layer) 을 중심으로, 데이터가 실제로 어떤 형태의 신호로 변환되어 전송 매체를 통해 전달되는지를 자세히 살펴볼 예정입니다. 네트워크 통신의 가장 기초가 되는 계층인 만큼, 이후 모든 계층을 이해하기 위한 중요한 출발점이 될 것입니다.

Reference

[Cloudflare]

[IBM]

[wikipedia]

[AWS]

profile
CK23 Game programmer

0개의 댓글