본문 바로가기

Study

OSI 7 계층

OSI 모델은 네트워크 전송을 7 계층으로 나눈 표준 모델을 말한다.

왜 계층을 분리할까?
우리가 프로그래밍을 할 때 계층을 나누는 이유를 생각하면 조금 쉽다. 각 레이어는 분리된 자신만의 관심사를 가지고, 자신과 하위의 레이어와만 통신한다. 또한 특정 계층에 문제가 발생했을 때, 다른 계층과 관계 없이 해당 계층의 문제만 해결하면 된다.
→  OSI 7 계층도 이와 유사한 점이 많다. 각 레이어는 자신만의 관심사와 역할을 가지고 있기 때문에 통신이 일어나는 과정을 쉽게 파악할 수 있으며, 자신의 위, 아래 계층과 통신한다. 또 네트워크 문제가 발생했을 때, 다른 레이어는 신경쓰지 않고 문제가 발생한 레이어만 관리해 주면 되기 때문에 문제 관리 측면에서도 장점을 가진다.

 

 

응표세전네데물!

OSI 표준 모델에서 각 7 계층은 어플리케이션 계층, 프레젠테이션 계층, 세션 계층, 전송 계층, 네트워크 계층, 데이터 링크 계층, 물리 계층으로 나뉜다. 송신측에서 가장 상위 레벨인 응용 프로그램 계층부터 시작하여 물리 계층을 거쳐 다시 수신 측의 응용 프로그램 계층까지 이어지는 구조이다.


통신 과정에서 데이터를 전송할 때 각 계층에서는 계층별로 헤더를 붙이게 되고, 이 과정을 캡슐화라고 한다. 반대로 수신 측에서는 각 계층에서 붙인 헤더를 벗겨내며 해석하여 정확한 데이터를 전송받게 되는데 이를 디캡슐화(?)(De-encapsulation) 라고 한다.
그렇다면 각 계층이 전송 과정에서 어떤 역할을 하는지 알아보자.

 

 

7계층. 응용 프로그램 계층(Application Layer)

응용 프로그램 계층은 사용자와 직접 상호작용하는 유일한 계층으로, 대표적으로 Http 프로토콜이 응용 프로그램 계층의 프로토콜에 해당한다.

6계층.  프레젠테이션 계층(Presentation Layer)

프레젠테이션 계층(표현 계층)은, 송신 측의 데이터를 압축, 암호화, 변환하여 수신 측의 응용 프로그램 계층에 표현하는 역할을 한다.
- 암호화된 연결을 통해 통신하는 경우, 데이터를 암호화 및 복호화 하는 역할을 한다.
- 서로 다른 통신 장치가 다른 인코딩 방식을 사용하고 있을 수 있으므로, 각 데이터를 응용 프로그램 계층이 이해할 수 있는 구문으로 변환(transfer)한다.
- 통신 속도와 효율을 위해, 다음 계층으로 데이터를 보내기 전 압축을 담당하기도 한다.

5계층.  세션 계층(Session Layer)

두 통신장치 사이에서 통신이 시작할 때 부터 종료될 때 까지의 시간을 세션이라고 한다. 세션 계층은 세션을 열고 닫는 일, 즉 통신을 시작하고 종료하는 일을 담당하며, 데이터 전송의 체크포인트를 설정하는 일을 담당하기도 한다.

4계층.  전송 계층(Transport Layer)

두 종단 기기 간 통신을 담당하는 계층으로, TCP, UPD 프로토콜이 전송 계층의 프로토콜에 해당한다.
송신측과 수신측의 신뢰성 있고 효율적인 전송을 위해 오류제어 및 복구, 중복검사 등을 수행한다. 세션 계층에서 넘어온 데이터는 전송 계층에서 TCP헤더 또는 (UDP 헤더) 가 붙여진다. 전송 계층의 헤더는 송수신측의 Port 정보를 담고 있다.

3계층.  네트워크 계층

네트워크 계층은 서로 다른 네트워크 간 데이터 전송을 용이하게 한다. 즉 통신하는 두 장치가 동일한 네트워크에 있는 경우 네트워크 계층이 필요하지 않다.
네트워크 계층의 프로토콜로 IP, ICMP, IGMP 등이 있다.
네트워크 계층에서는 주소(IP) 를 가지고 경로(Route) 를 선택하여 패킷 단위의 데이터를 전달하는 것이 핵심이다. 네트워크 계층의 대표적인 프로토콜인 IP 헤더는 IP 주소 정보를 담고 있다.

2계층.  데이터 연결 계층

데이터 연결 계층은 물리 계층을 통해 송수신되는 데이터의 흐름 제어와 오류를 관리하여 신뢰성 있는 통신을 수행한다.
데이터 연결 계층은 네트워크 계층과 거의 유사하지만, 동일한 네트워크 내의 통신장치간 데이터 전송을 용이하게 한다.

1계층.  물리 계층

케이블, 스위치 등 물리 장비가 포함된 계층이며, 통신 케이블을 사용해 데이터가 0과 1의 문자열인 비트 스트림으로 변환되는 계층이다.
단지 물리적으로 데이터를 전달하는 데에만 관심이 있고 어떤 데이터를 송수신하는지, 오류가 검출되는지 등을 신경쓰지 않으며 제어 기능도 가지고 있지 않은 계층이다.