안녕하세요, iOS 개발하는 루피입니다.
오늘은 OSI 7 Layer와 TCP/IP 에 대해 정리해 보는 시간을 가져보려 합니다. 특히 왜 OSI가 나중에 만들어졌는데도 TCP/IP가 표준이 되었는지에 대한 역사도 함께 살펴보겠습니다. 바로 시작합니다.
1. Internet
인터넷(Internet)은 전 세계 컴퓨터들이 TCP/IP 프로토콜이라는 공통된 "약속"을 사용해 정보를 주고받는 거대한 네트워크입니다.
1973년 TCP/IP를 정립한 빈튼 서프와 밥 간이 네트워크의 네트워크를 구현하려는 비전에서 인터넷(Internet)이라는 이름이 탄생했습니다. 즉 네트워크를 연결한 것을 인터넷이라고 합니다.

2. 초기 인터넷 : 혼돈 그 자체
1) 1970년대-1980년대
초기에 인터넷이 개발될 당시에는 네트워크를 구성하는 방법이 여러 가지 있었습니다. 각 회사마다 자신들만의 독자적인 프로토콜을 사용했기 때문에, 서로 다른 네트워크에 있는 PC끼리 정보를 주고받는 과정이 거의 불가능했습니다.
- IBM SNA: IBM 컴퓨터끼리만 통신 가능
- DEC DECnet: DEC 컴퓨터끼리만 통신 가능
- Novell IPX/SPX: Novell 네트워크끼리만 통신 가능
- Apple AppleTalk: 매킨토시끼리만 통신 가능
- Microsoft NetBIOS: Windows끼리만 통신 가능
마치 현재 카카오톡 사용자가 라인 사용자와 메시지를 주고받을 수 없는 것과 같은 상황이었습니다!
2) internet vs Internet의 차이
- internet(소문자): 네트워크들을 연결하는 일반적인 방식을 의미합니다.
- Internet(대문자): TCP/IP를 사용하는 특정한 글로벌 네트워크 (이게 우리가 아는 그 인터넷입니다.)
TCP/IP는 이 혼돈 상황을 해결하기 위한 하나의 시도였습니다. 수많은 internet 방식들 중에서 TCP/IP를 사용하는 Internet이 결국 시장의 98%를 차지하며 표준으로 자리 잡게 되었습니다.
3. 네트워크 간 전달 방식
네트워크 간 전달 방식은 크게는 2가지로 나눠볼 수 있다.
- 중앙제어 전달 방식 (Circuit Switching Network)
- KTX나 지하철처럼 중앙 관제 시스템이 모든 것을 통제하고 관리하는 방식입니다.
- 목적지 주소 전달 방식 (Packet Switching Network)
- 우리가 자동차를 타고 CGV에 갈 때 누구에게 보고하지 않고 내비게이션을 따라 스스로 찾아가는 것과 같습니다. 데이터가 스스로 목적지 주소를 보고 알아서 찾아가는 분산적인 방식입니다.
인터넷은 본래 군사적 목적으로 개발되었습니다. 그래서 전쟁 시 중앙 시스템이 공격받아 전체 네트워크가 마비되는 것을 막아야 했죠. 이러한 이유로 인터넷은 중앙 통제가 없는 목적지 주소 전달 방식을 채택했고, 덕분에 일부가 파괴되어도 문제없이 작동하는 강력한 생존력을 갖게 되었습니다.
4. OSI 7 Layer : 이상적인 표준의 탄생과 실패
1) OSI가 만들어진 배경 (1984년)
TCP/IP가 먼저 개발되었지만(1970년대), OSI 7 Layer는 나중에 만들어졌습니다(1984년). 왜일까요?
- 정치적 이유: 유럽 국가들이 "왜 미국이 만든 TCP/IP를 써야 하지?"라고 생각
- 기술적 완성도: TCP/IP보다 더 체계적이고 이론적으로 완벽한 모델을 원함
- 기존 업체들의 이해관계: IBM 등 대기업들이 기존 투자를 보호하려 함
2) OSI 7 Layer란?
OSI 7 Layer는 ISO(국제표준화기구)에서 만든 네트워크 통신 표준 모델입니다. "전 세계 모든 컴퓨터가 서로 통신할 수 있는 완벽한 표준을 만들어보자!"라는 야심찬 목표로 설계되었습니다.

각 계층이 명확히 분리되어 있어서 이론적으로는 완벽했습니다!
3) 택배로 비유해 보자
OSI 7 계층은 택배 시스템과 아주 비슷합니다. 우리가 누군가에게 물건을 보낼 때 직접 가져다줄 수도 있지만, 그건 너무 비효율적이죠. 그래서 우리는 택배 회사를 이용합니다.

택배를 보내면 물건이 컨베이어 벨트에 올라타 바로 목적지로 날아가는 것이 아닙니다. 어느 지역 터미널로 보낼지, 어떤 트럭에 실을지, 허브 터미널에서는 어떻게 분류할지 등 여러 복잡한 규칙과 단계를 거치게 됩니다.
이처럼 데이터가 전송되는 복잡한 과정을 기능별로 7개의 계층으로 나누어 모듈화 한 것이 바로 OSI 7 계층 모델입니다.
4) 데이터 전송 과정
디바이스 A 라는컴퓨터에서 디바이스 B라는 컴퓨터로 데이터를 전송해야 하는 과정일 생각해 봅시다. 만약 같은 네트워크 안에 묶여 있다면, 쉽게 전달이 가능하지만, 다른 네트워크에 있다면, 장비를 걸쳐서 전달이 되어야 합니다. 이때, 그 장비가 Intermediate node, 즉 네트워크와 네트워크를 연결하는 장비인 Router입니다.

데이터는 각 계층을 지날 때마다 해당 계층에 필요한 정보가 담긴 Header를 포장지처럼 덧붙입니다. 받는 쪽에서는 이 포장지를 한 겹씩 벗겨내며(헤더를 읽으며) 데이터를 처리하게 되죠. 이것을 캡슐화(Encapsulation)라고 합니다.

5) 각 Layer의 역할

5. TCP/IP : 실용성이 이론을 이김
1) TCP/IP의 승리 이유
OSI 7 계층은 훌륭한 이론 모델이었지만, 실제 인터넷은 그보다 더 단순화된 TCP/IP 5 계층 모델을 기반으로 동작합니다. 왜 TCP/IP가 이겼을까요?
TCP/IP의 강점
- 개방형 표준: 누구나 구현 가능
- 단순함: 구현하기 쉬움
- 실용성: 실제로 잘 작동함
- 확장성: 다양한 네트워크를 연결 가능
OSI의 약점
- 너무 복잡: 7계층을 모두 거치는 오버헤드
- 성능 문제: TCP/IP보다 느림
- 시기가 늦음: 이미 TCP/IP가 널리 사용 중
- 정치적 고려: 실용성보다 이해관계 우선
2) 결정적 순간: 1990년대 인터넷 폭발
1990년대에 일어난 일
- 월드 와이드 웹(WWW) 등장 - HTTP over TCP/IP 사용
- PC 보급 확산 - 모든 기기가 인터넷에 연결
- 상용 인터넷 서비스 시작
- 자연스러운 TCP/IP 표준화
이때부터 "인터넷에 연결하려면 TCP/IP를 써야 한다"는 현실적 필요에 의해 TCP/IP가 사실상 표준이 되었습니다.
3) TCP/IP
TCP/IP 모델은 OSI 7 계층의 응용(Application), 표현(Presentation), 세션(Session) 계층을 하나의 응용 계층(Application Layer)으로 통합한 구조입니다. 훨씬 더 직관적이고 실용적이죠.
이제 A 컴퓨터에서 B 컴퓨터로 데이터가 전송되는 과정을 TCP/IP 5 계층 모델을 통해 단계별로 살펴보겠습니다.

4) 데이터 전송 방식
전체적인 큰 과정은 다음과 같이 가정해 보고 봐봅시다. Link로 표시된 부분이 네트워크이고, A에서 B로 데이터를 보내는 과정입니다. 이때, R는 Router를 의미하며, 네트워크 연결을 도와주는 장치입니다.

5) Physical Layer
Physical Layer는 데이터를 0과 1의 비트(bit) 신호로 변환하여 케이블, 전파 등 물리적인 매체를 통해 다음 노드(컴퓨터나 라우터)로 전송하는 역할을 합니다. 즉, '어떻게 전송할 것인가?'를 책임집니다.
데이터 단위 "Bit"

6) Data Link Layer
DataLink Layer는 같은 네트워크(Link) 안에서 데이터가 올바른 장치로 전달되도록 경로를 결정합니다. 라우터에 도착한 데이터가 다음 목적지로 가기 위해 어느 경로로 나가야 할지 판단하는 것이죠. 이를 hop-to-hop (홉과 홉 사이) 전달이라고 합니다.
데이터 단위 "Frame"

7) Network Layer
Network Layer는 여러 네트워크를 거쳐 최종 목적지까지 데이터가 도달하도록 경로를 설정하고 주소를 부여합니다. 택배 송장에 보내는 사람과 받는 사람 주소를 적는 것과 같습니다. IP 주소가 바로 이 계층에서 사용됩니다.
데이터 단위 "Datagram 또는 Packet"

8) Transport Layer
Transport Layer는 데이터 전송의 신뢰성을 보장하고 데이터가 올바른 순서로 전달되도록 관리합니다. 예를 들어, 100페이지짜리 문서를 보낼 때 각 페이지에 1, 2, 3... 번호를 붙이는 것과 같습니다. 만약 받는 쪽에서 특정 페이지를 못 받았다면, 재전송을 요청하죠.
Transport Layer에는 엄밀하게 말하면 2개의 프로토콜이 존재합니다. 2개 이상이지만, 우리가 가장 흔하게 사용하는 방식이 2가지입니다. 이게 바로 TCP와 UDP입니다. 이 녀석이 가장 많은 일을 하기에 가장 복잡합니다.
데이터 단위 "Segment(TCP), User Datagram(UDP)"

9) Application Layer
Application Layer는 사용자가 직접 사용하는 응용 프로그램과 상호작용하며 데이터를 생성하고 처리합니다. 우리가 웹사이트에 접속할 때 사용하는 HTTP, 이메일을 보낼 때 쓰는 SMTP 등이 모두 이 계층의 프로토콜입니다.
데이터 단위 "Message"

마무리
원래 기존 네트워크를 연결하는 방식(internet) 에는 여러 가지 방식이 존재하고, 여러 회사가 자신의 방식을 고수했기 때문에, 서로 다른 네트워크 끼리 연결하는 것이 너무 어려웠다. 그리고 이걸 해결하고자 OSI 7 Layer를 만들어 internet 방식을 통합하고자 했으나, 너무 이론적인 내용이었고, 90 년대 부터 컴퓨터가 보급되면서 Internet이 주류로 자리 잡게 되자 굳이 OSI 7 Layer 방식이 아닌 기존에 존재하던 TCP/IP 방식 효율적이기에 실용적인 접근으로 지금까지 사용하게 되었다.
그렇다면 우리는 왜 이것을 공부해야할까? 저는 iOS 개발자니깐 iOS 관점에서 적어보겠습니다.
// 우리가 실제로 사용하는 것들
URLSession.shared.dataTask(with: url) // HTTP over TCP/IP
Network.framework // TCP/IP 기반
하지만 만약 앱에서 서버 통신이 안 되는 문제점이 발생했을때는...?
// 앱에서 서버 통신 안 될 때
1. WiFi 연결 확인 (Physical)
2. 라우터 문제 (Network)
3. 방화벽/포트 (Transport)
4. API 엔드포인트 (Application)
이런 식으로 각 Layer에 따른 문제점을 하나하나 해결해 나갈 수 있는 힘이 길러질 수 있다.
오늘도 화이팅입니다!
'CS' 카테고리의 다른 글
| [CS] 파일 시스템에 대해 알아보자 (3) | 2025.07.23 |
|---|---|
| [CS] OOP란 무엇인가? (1) | 2025.07.21 |
| [CS] 메모리 분석하는 방법 (3) (2) | 2025.07.21 |
| [CS] 가상메모리 동작원리 (2) (0) | 2025.07.20 |
| [CS] 가상 메모리는 왜 필요할까? (1) (0) | 2025.07.20 |