OSI란?
OSI는 Open System Interconnection의 약자로, ISO(국제 표준화 기구)에서 1984년 발행한 네트워크 통신을 계층적으로 설명하기 위해 만든 네트워크 모델이다. OSI 7계층은 역할 별로 7개의 계층으로 계층화하여 나타낸 것이다. 이 계층들은 각각 특정한 역할을 담당하며 상위 계층과 하위 계층은 유기적으로 연결된다.
위에 있는 층을 상위 계층, 아래에 있는 층을 하위 계층이라 한다. (1계층, 2계층을 기준으로 하면 2계층이 상위, 1계층이 하위 계층에 해당된다.)
위 사진처럼 7개의 계층으로 나누어져 있고, 각각의 계층들이 특정 역할을 맡아서 처리하게 된다.
OSI 7계층 모델이 중요한 이유?
네트워크 간 통신에 대한 표준을 제공한다. 그렇기에 다른 네트워크 모델들에서도 OSI 모델을 기반으로 하기에 잘 이해하는 게 중요하다. 물론, OSI 모델은 실용적이라기보다는 방법론에 가깝기 때문에, 실무에서 각 7개의 계층을 모두 고수하는 건 오히려 불필요한 경우가 많다. 그래서 실무에서는 4계층으로 구성된 TCP/IP라는 모델을 많이 사용한다고 한다. 이에 대해서는 마지막에 간단히 알아보자.
알아둬야 될 용어
캡슐화 & 역캡슐화 : 상위 계층과 하위 계층이 유기적으로 연결이 된다고 했는데, 이 때 '캡슐화'라는 과정이 필요하다. 쉽게 말하면 기존의 데이터를 감싸서 새로운 데이터처럼 보이게 만드는 것이다. 각각의 계층(Layer)에서 맡은 역할이 다른데, OSI 계층에서는 상위 계층에서 만든 데이터를 하위 계층으로 전달을 해서 해당 계층에서 맡은 역할에 맞게 추가적인 정보를 더하거나 작업을 한 후 다시 감싸서 다음 계층으로 전달하는 형태로 이루어진다. 이처럼 데이터를 감싸는 작업을 '캡슐화'라고 한다. 반면, 역캡슐화는 캡슐화와 반대로 감싸진 데이터를 하나씩 분해하는 과정을 말한다. 이렇게 함으로써 각 계층 별로 역할과 책임을 분담하여 추후 기능 등을 추가한다고 해도 해당되는 계층에서 쉽게 처리가 가능하다.
프로토콜 : 컴퓨터나 네트워크 장치 간 데이터 통신을 하기 위한 규칙 혹은 약속을 말한다. 즉, 서로 다른 기기나 시스템이 원활하게 통신할 수 있도록 하기 위한 규칙이다.
위 사진에서 왼 쪽은 캡슐화를 오른 쪽은 역캡슐화를 하는 과정을 보여주고 있다. 왼 쪽은 상위 계층에서 하위 계층으로 데이터를 보내면, 하위 계층은 상위 계층에서 보낸 데이터를 받고, 해당 계층에서 맡은 작업을 수행하기 위해 데이터를 추가 혹은 변형하여 캡슐화를 거쳐 그 다음 하위 계층으로 보내는 과정을 보여주고 있다. 오른 쪽은 그와는 반대로 받은 감싸진 데이터 안에 들어 있는 값들을 보기 위해, 캡슐화된 데이터를 하나씩 벗겨 그 안의 데이터를 확인해 가는, 즉 역캡슐화를 하는 과정을 보여주고 있다.
OSI 7계층별 세부 설명
애플리케이션 계층(응용 계층, 7계층)
애플리케이션 계층은 가장 상위 계층으로, 다른 컴퓨터 시스템 혹은 네트워크에서의 애플리케이션과 상호작용 할 수 있도록 해주는 역할을 한다. 주요 역할은 아래와 같다.
- 응용 프로그램과 네트워크 간 인터페이스 제공 : 사용자가 입력한 데이터를 네트워크에서 처리가 가능하도록 한다. 예). 웹 브라우저에서 URL을 입력하면 HTTP 요청이 되도록 하는 것.
- 데이터 형식 변환 및 표준화 : 서로 다른 시스템 간 데이터가 이해 가능하도록 변환을 해준다. 예). HTML, CSS 등을 이용해 받은 데이터를 화면에 그리는 것.
- 서버와 사용자 간 통신 가능하도록 응답 및 요청을 주고받도록 해준다.
애플리케이션 계층에서는 여러 서비스가 제공되는데, 각각의 서비스에 맞는 프로토콜을 사용해야 한다. 대표적인 프로토콜로는 웹에서는 HTTP, 파일 전송을 할 때는 FTP, 이메일을 주고 받을 때는 SMTP 등이 있다. 여기서는 HTTP 즉, 웹 통신을 대표로 해서 설명을 해보려한다.
HTTP 프로토콜
HTTP 프로토콜은 클라이언트(브라우저)와 서버 간 통신을 규정하는 프로토콜이다. 사용자 입장에서는 HTTP 프로토콜에 대해 알지 못 해도 브라우저가 관련 처리를 모두 해준다.
사용자가 웹 브라우저 주소창에 https://test.com을 입력했다고 해보자. 브라우저는 이를 HTTP 프로토콜 형식에 맞는 데이터로 변환을 하게 된다. 이 때의 요청 데이터 안에는 HTTP 메소드 정보, 헤더, URL, 경로 등의 정보들이 포함되어 있다. 그럼 서버에서는 추후 이 HTTP 형태의 데이터를 가지고 그에 맞는 응답 데이터를 보내줄 것이다.
이러한 HTTP 요청 데이터로는 네트워크로 바로 보낼 수가 없기 때문에 하위 계층들에서 추가적인 작업을 거쳐 네트워크로 전송될 수 있도록 변환 작업 및 경로 설정 등을 해줘야 한다.
HTTP 요청 데이터는 위와 같은 형태로 이루어져 있다.
프레젠테이션 계층(6계층)
프레젠테이션 계층은 데이터를 변환하고 암호화 혹은 복호화를 하는 계층이다. 애플리케이션 계층에서 보낸 HTTP 요청 데이터를 직접 전송하게 되면 전송되는 데이터가 의도치 않게 노출될 때, 안에 어떤 정보가 들어가 있는지 쉽게 알려질 수가 있다. 그래서 이 계층에서 암호화를 할 수가 있는데, 웹 통신의 경우 HTTP 요청 데이터에 TLS를 적용해, 데이터에 암호화를 할 수가 있다. 이게 흔히 쓰는 HTTPS가 된다.
*TLS : Transport Layer Security로 데이터를 안전하게 전송하기 위한 암호화 프로토콜이다.
프레젠테이션 계층에서 하는 역할들을 몇 가지 살펴보면 아래와 같다.
- 데이터 변환: 서로 다른 시스템 간 데이터 형식 차이를 맞춰준다. ex). 문자 인코딩 변환 (UTF-8 ↔ ASCII), JSON ↔ XML 변환)
- 데이터 암호화 & 복호화
- 데이터 압축 / 압축해제 : 압축을 통해 전송 속도를 높일 수 있고, 네트워크 대역폭 사용을 줄이기 위해 데이터 압축을 수행할 수 있다. HTTP의 경우 Gzip 형태로 압축(html, css, js 파일을 줄여서 빠르게 전송이 가능)
세션 계층(5계층)
세션 계층은 두 애플리케이션 간의 세션을 설정, 관리, 종료하는 역할을 담당한다. 웹의 경우 클라이언트(브라우저)와 서버 간 연결을 관리하게 된다. 그래서 이 연결된 두 애플리케이션 간 데이터 교환을 원활하게 한다. 즉, 통신을 위한 대화 세션을 유지하고, 중간에 발생할 수 있는 오류를 처리합니다. 쉽게 말하면 두 통신 장치 간에 원활한 대화(통신)가 가능하도록 하는 계층이다.
*세션 : 사용자와 서버 간 연결을 맺고 있는 상태를 말한다.
전송 계층(4계층)
전송 계층은 호스트 간 데이터 전송의 신뢰성 및 흐름 제어를 담당하는 계층으로, 두 시스템 간의 데이터 전송을 관리하고 보장한다. 주로 데이터의 순서, 신뢰성, 흐름 제어 및 오류 검출을 담당하며, 데이터를 ‘세그먼트’라는 단위로 나누어 보내는 역할을 한다.
-> 웹을 통해 전송을 하는 상황에서는, 호스트라고 하면 브라우저와 서버가 될 것이다. 브라우저에서 보낸 HTTP 요청 데이터는 암호화를 거쳐 서버와의 세션이 유지되고 있을 것인데, 그럼 이 전송 계층에서는 브라우저에서 보낸 HTTP 요청 데이터가 서버까지 전송이 잘 되도록 ‘세그먼트’라는 단위로 나누고 추가적인 정보를 더해서 캡슐화를 한다.
* '세그먼트'는 그냥 전송 계층에서 캡슐화한 데이터를 부르는 단위
* 이 때 추가되는 정보들은 데이터가 잘 순서대로 오류 없이 잘 전송됐는지를 확인할 때 사용된다.
TCP와 UDP
전송 계층에서 사용하는 대표적인 프로토콜로는 TCP와 UDP가 있다. 어느 프로토콜을 사용하는 지에 따라 HTTP 요청 데이터에 추가되는 데이터가 다르다. 큰 차이점은 TCP는 신뢰적 전송 즉, 다른 호스트에 데이터가 순서대로 오류 없이 잘 도착할 수 있도록 하기 위해 추가적인 데이터가 많이 들어가고, 이를 받은 호스트에서도 잘 도착했는 지 데이터를 확인해야 하기에 신뢰적이지만 느리다는 단점이 있다. 반면 UDP의 경우 비신뢰적 전송 방식이기에 추가되는 데이터가 별로 없이 전달된다. 그래서 세그먼트를 받을 때도 확인할 것이 많이 없어서 빠른 전송이 가능하지만 일부 데이터 손실이 될 수 있다.
위 사진에서 TCP와 UDP의 차이를 보여주고 있다.
또한 위처럼 TCP와 UDP의 속도 차이가 크다는 걸 볼 수 있다. 빨간 색 선은 동일 시간 동안 전송된 TCP 방식에서의 데이터고, 파란 색은 동일 시간 동안 전송된 UDP 데이터다.
이러한 전송 계층에서 수행되는 역할을 몇 가지 정리해보면 아래와 같다.
- 신뢰적 데이터 전송 보장(TCP만 해당) : TCP 프로토콜은 데이터가 손실 없이 목적지까지 정확하게 전달되도록 보장한다. 또한 세그먼트 손실, 전송된 세그먼트의 순서 변경, 오류를 처리할 수 있다.
- 흐름 제어 & 혼잡 제어 (TCP만 해당) : 송신자가 수신자의 처리 속도에 맞춰 전송할 수 있다. (수신자의 상태에 따라)
- 오류 검출 및 복구 (TCP만 해당) : 데이터 전송 중 오류가 발생하면 감지하고 재전송 및 복구를 한다.
- 세그먼트화 & 재조합 (TCP, UDP) : 대용량 데이터를 작은 세그먼트 단위로 나누어 전송하고 수신 측에서는 이를 재조합하여 원본 데이터로 복원한다.
* 정확히는 TCP에서는 나눈 단위를 '세그먼트'라 하고, UDP에서는 '데이터그램'이라 한다.
TCP / UDP 사용 예시
TCP 사용 예시 :
웹 브라우저와 웹 서버 간 HTTP 요청/응답을 할 때는 TCP 프로토콜을 사용한다. 이 경우 요청한 웹 페이지가 손실되거나 하면 안 되기 때문에 신뢰적 방식인 TCP를 사용한다.
UDP 사용 예시 :
스트리밍과 같은 경우 UDP를 사용한다. 스트리밍 중 일부 프레임 데이터가 빠졌다고 해도 시청에는 큰 영향도 없고 스트리밍의 경우 신속한 전송이 중요하기 때문에 UDP를 사용한다.
네트워크 계층 (3계층)
네트워크 계층에서는 전송계층에서 보낸 세그먼트에, 목적지 호스트의 IP 정보 등을 추가하여 캡슐화한다. 이 때 캡슐화된 데이터 단위를 ‘패킷’이라 한다. 여기에 추가된 IP 정보는 라우터에서 주로 사용된다.
라우터란? 데이터를 보내게 되면 네트워크를 통해 목적지 단말이 있는 곳까지 찾아가야 되는데, 이 때 목적지까지 길을 잘 찾아갈 수 있도록 해주는 게 ‘라우터’다. 라우터에서는 라우팅을 사용하는데, 이는 네트워크 계층에서 추가한 IP 정보를 활용해 목적지까지 가는 최적의 방향을 찾고 보내는 과정이다. 출발지 호스트부터 목적지 호스트 사이에는 여러 라우터가 있고, 하나의 라우터에서 목적지 방향으로 가는 다음 라우터로 보내고, 다음 라우터에서는 또 다음 라우터로 보내는 것을 반복하여 최종적으로 데이터가 목적지로 도착할 수 있도록 하는데 IP 정보가 사용된다.
네트워크 계층에서 사용되는 대표적인 프로토콜로는 IP(Internet Protocol), ICMP, ARP 등이 있다.
IP 프로토콜에서는 세그먼트에 단순 IP 정보만 추가하는 게 아니라, IP 프로토콜의 버전, 헤더 길이, 서비스 유형, 출발지 IP 주소, 목적지 IP 주소 등 다양한 데이터를 추가하여 '패킷'으로 캡슐화를 하게 된다.
*IP 프로토콜에서 사용하는 버전에 따라 IPv4, IPv6로 나뉘어 지는데, 6이 4에 비해 포함할 수 있는 정보의 범위가 훨씬 크다.
ARP는 Address Resolution Protocol로 논리적 주소(IP 주소)를 물리 주소(MAC 주소)로 바꾸는 역할을 한다. 이 MAC 주소 또한 패킷과 함께 다음 하위 계층으로 전달된다.
*MAC 주소란? : Media Access Control의 약자로 네트워크 장치(PC, 라우터, 스마트폰)에 할당된 고유한 물리적 주소로, 네트워크에서 장치를 식별하기 위한 하드웨어 주소 즉, 각각의 장치에 대한 식별 주소
ICMP 프로토콜은 Internet Control Message Protocol로 패킷 전달 중 장애가 발생하면, 송신자에게 알리는 역할을 한다.
데이터링크 계층(2계층)
데이터 링크 계층에서는 네트워크 계층에서 받은 패킷과 MAC 주소 및 추가 데이터들을 캡슐화 하여 프레임 단위로 변환하고, 신뢰성 및 흐름제어를 통해 네트워크 장치 간 데이터 전송을 보장하는 역할을 한다.
주요 역할은 아래와 같다.
- 프레이밍 : 프레이밍은 네트워크 계층에서 받은 패킷을 '프레임' 단위로 감싸서 전송하는 과정을 말한다.
- 주소 지정 : MAC 주소를 사용한 식별
- 오류 검출 및 수정
- 흐름 제어
전송 계층에서의 오류 검출 및 흐름 제어와의 차이? 전송 계층에서는 단말기 간 (즉, 서버와 브라우저 같이 요청과 응답을 주고 받는 주체)오류 검출이나 흐름 제어가 수행되고, 데이터링크 계층에서는 인접한 두 네트워크 장치 시이(라우터 <-> 라우터, 라우터 <-> 스위치)에서 수행된다.
스위치란? 외부에서 들어오는 데이터에서 어떤 장치로 보낼지를 결정하는 기기다. 즉, 프레임에 들어있는 MAC 주소를 확인한 후 그에 맞는 기기로 보내는 역할을 한다. 그래서 스위치에서는 MAC 주소가 추가된 2계층 즉, 데이터 링크 계층까지 역캡슐화를 통해 확인을 하게 되는데, 그래서 OSI 2계층 위에서 동작한다고도 한다.
사용되는 대표적 프로토콜로는 이더넷, Wi-Fi 등이 있다. 이 프로토콜에서 앞에서 말한 프레임 형성, 주소 지정, 오류 검출 등의 역할을 담당하게 된다.
물리 계층(1계층)
물리 계층은 가장 하위 계층으로, 데이터를 전기적 신호, 빛, 전파 등의 물리적 형태로 변환하여 전송하는 역할을 한다. 실제 데이터가 네트워크 상에서 전송되는 과정에 직접적으로 관여하는 계층이다.
사용되는 네트워크 환경에 따라,
- 유선(이더넷, UTP 케이블 등) → 전기 신호
- 광섬유(Fiber-optic) → 빛 신호
- Wi-Fi, 블루투스 등 무선 통신 → 전파 신호
그리고 네트워크 장비(허브, 스위치, 라우터)를 거치면서 신호가 목적지로 이동하게 된다.
정리
지금까지의 과정을 거쳐 전기 신호로 변환된 웹 요청 데이터는 스위치, 라우터를 통해 목적지 즉, 서버까지 도착을 하게 된다. 그럼 서버에서는 받은 전기 신호를 웹 요청 데이터로 변환을 하기 위해 캡슐화된 데이터를 하나씩 벗겨서 그 안의 데이터를 확인한다. 즉, 역캡슐화 과정을 통해 캡슐화된 과정을 역으로 반복하여 요청 데이터를 확인하게 된다. 이후에는 서버에서 해당 웹 요청에 맞는 응답 데이터를 보낼 것인데, 위의 과정을 반복한다고 생각하면 된다.
TCP/IP 계층
TCP/IP 계층은 실제 실무에서 많이 사용되는 네트워크 통신을 위한 모델이다. 기존 OSI 7계층을 단순화하고 실용적으로 구성한 모델이다.

애플리케이션, 프레젠테이션 계층 -> 애플리케이션 계층
전송, 세션 계층 -> 전송 계층
네트워크 계층 -> 인터넷 계층
물리, 데이터링크 계층 -> 링크 계층
참고자료 :
+ chatgpt
'네트워크' 카테고리의 다른 글
기본적인 보안 장비 (0) | 2025.04.21 |
---|---|
프로토콜 (0) | 2025.04.12 |
OSI 7 계층 별 장비 (0) | 2025.03.24 |
TCP와 UDP (0) | 2025.03.15 |