오늘은 정처기 공부를 할 때 무작정 외우기만 했던 OSI 7계층의 각 층이 어떤 역할을 하는지 공부해 보겠습니다.
네트워크란?
: 컴퓨터나 기타 기기들이 리소스를 공유하거나 데이터를 주고받기 위해 유선 혹은 무선으로 연결된 통신 체계를 말한다.
기능들
- 애플리케이션 목적에 맞는 통신 방법 제공
- 신뢰할 수 있는 데이터 전송 방법 제공
- 네트워크 간의 최적의 통신 경로 결정
- 목적지로 데이터 전송
- 노드 사이의 데이터 전송
⇒ 위 통신 기능이 제대로 동작하기 위해서는 참여자들 사이에 약속된 통신 방법이 있어야 한다.
& 이 모든 기능을 하나의 프로토콜로 구현할 수 있을까?
⇒ 그럴 수 없다.
- 그래서 모듈화를 해야 한다.
- 기능별로 분리하자.
- 어떻게 모듈화하면 될까?
⇒ 네트워크가 제공하는 기능들을 살펴보니 각 기능이 계층별로 동작하는 것과 같은 구조로 보인다.
⇒ 계층 구조의 탄생(OSI Model 7 Layer)
OSI 7계층이란?
: 범용적인 네트워크 구조

1. Application Layer(7층)
: 애플리케이션 목적에 맞는 통신 방법 제공
ex)
- HTTP: 애플리케이션끼리 통신하고 싶다면
- FTP: 파일을 업로드하고 다운로드하고 싶다면
- DNS: 도메인을 IP 주소로 바꾸고 싶다면
- SMTP: 이메일을 보내고 싶다면
⇒ 어떻게 데이터를 보낼 것인지와 같은 내용은 7층의 관심사가 아니라, 아래 계층의 기능을 사용하는 것이다.
2. Presentation Layer(6층)
: 애플리케이션 간의 통신에서 메시지 포맷 관리
- 인코딩 ↔ 디코딩
- 암호화 ↔ 복호화
- 압축 ↔ 압축 풀기
3. Session Layer
: 애플리케이션 간의 통신에서 세션을 관리
4. Transport Layer
- 애플리케이션 간의 통신 담당
- 목적지 애플리케이션으로 데이터 전송
- 안정적이고 신뢰할 수 있는 데이터 전송 보장(TCP)
- 필수 기능만 제공(UDP)
5. Network Layer
- 호스트 간의 통신 담당(IP)
- 목적지 호스트로 데이터 전송
- 네트워크 간의 최적의 경로 결정
⇒ 전체적인 경로를 담당하는 것이지, 데이터를 어떻게 전송할 것인지는 네트워크 계층의 관심사가 아니다.
데이터를 전송하는 것은 데이터 링크 계층이 수행한다.
⇒ 바로 아래 계층의 기능을 사용하는 것이다.
6. Data Link Layer
7. Physical Layer
: 비트(bits) 단위로 데이터 전송
그림으로 나타내는 네트워크 계층을 통한 데이터 전송 모습

(1) 7층에서 1층으로 데이터가 내려오면서 포장된다.
(2) 1층까지 내려오면 라우터로 보내고, 이 포장지를 뜯어서 3층으로 보낸다.
(3) 목적지에 도착할 수 있도록 IP 주소를 확인하고 1층으로 포장해서 보낸 뒤, 우측의 1층으로 보낸다.
(4) 데이터가 7층까지 올라가 전달되는 것이다.
예제를 통한 설명
Step 1
- 7층(애플리케이션)에서 발생한 정보를 애플리케이션 헤더에 담아 묶어서 6층(프레젠테이션)으로 보낸다.
- 6층(프레젠테이션)에서도 부가적인 정보를 새 헤더에 담아서 5층(세션)에 전달해 준다.
- 5층(세션)에서도 헤더에 새로운 정보를 담아서 4층(트랜스포트)에 전달해 준다.
Step 2
-
4층(트랜스포트)은 목적지 전달을 위한 계층이므로, 목적지 전달에 필요한 내용을 헤더에 담고 3층(네트워크)에 전달해 준다.
-
3층(네트워크)은 이 애플리케이션을 담당하는 호스트 사이의 통신을 담당하기 때문에 목적지 IP 주소를 확인하고, 어디로 보내 줘야 할지를 네트워크 계층의 헤더에 담아서 2층(데이터 링크)으로 보내 준다.
-
2층(데이터 링크)은 두 노드 사이에서 데이터를 어떻게 보내 줄지를 2층(데이터 링크) 헤더에 담아 주고, 트레일러를 추가한다.
그리고 1층(피지컬)으로 보내 준다.
- 트레일러는 전송 후 데이터 전송에 문제가 있었는지 확인하기 위함이다.
-
1층(피지컬)에서 비트 단위로 라우터에 전송해 준다.
Step 3
- 라우터는 전달받은 비트 데이터를 변환 전 데이터로 만들고 2층(데이터 링크)으로 올린다.
- 2층(데이터 링크)은 헤더와 트레일러를 확인하고, 문제가 없다면 헤더와 트레일러를 없앤 뒤 네트워크 계층으로 올려 준다.
- 3층(네트워크)에서는 목적지 주소를 확인해야 하므로 다음 노드를 확인하고, 수정할 부분을 수정한 뒤 2층(데이터 링크)으로 내려 준다.
- 이러면 데이터는 두 노드 사이의 통신을 담당하게 된다.
- 헤더와 트레일러를 추가하고 1층(피지컬)으로 보내 준다.
- 1층(피지컬)은 또다시 비트 단위로 전송하고, 2층(데이터 링크)으로 올려 준다.
- 2층(데이터 링크)은 헤더와 트레일러를 확인하고, 문제가 없으면 떼어 낸 뒤 3층으로 올려 준다.
- 3층(네트워크)은 또다시 목적지를 확인하고, 네트워크 헤더에서 수정할 부분을 수정한 뒤 또다시 2층으로 내린다.
- 그리고 똑같이 1층(피지컬)으로 내리는 작업을 반복적으로 수행한다.
- 이렇게 원하는 목적지에 도착했을 때, 이제는 Network 헤더를 떼고 4층(트랜스포트)으로 전달해 준다.
- 이후에는 5층(세션), 6층(프레젠테이션)도 똑같이 헤더를 떼어 내고 상위 계층으로 전달해 준다.
- 마지막으로 7층(애플리케이션)에서 처리한 후 최종적으로 데이터가 도달하게 된다.

Encapsulation & Decapsulation
: 위에서 헤더를 담고 뜯는 과정을 반복하는 것을 의미한다.
TCP/IP Stack
: OSI 7계층과 비슷한 구조로, 몇 개의 계층을 하나로 묶어 본 형태이다.
- 애플리케이션 + 프레젠테이션 + 세션 ⇒ 애플리케이션 계층으로 통일
- 트랜스포트 ⇒ 트랜스포트
- 네트워크 ⇒ 네트워크
- 데이터 링크 + 피지컬 ⇒ 링크 계층으로 통일

마무리
- 단순 암기로만 외웠던 내용이었는데, 네트워크상에서 각 계층이 어떻게 이용되는지와 어떤 식으로 데이터가 움직이는지 알아볼 수 있었습니다.