이전에 공부한 HTTP 프로토콜에서 네트워크 통신 4개층에 대해 접했다.
공부를 하다보니 통신 과정을 더욱 세분화한 OSI 7계층 모델이 존재한다는 것을 알게 되었다.
OSI 7계층과 TCP/IP 프로토콜은 아래 그림과 같이 대응된다.
이들은 모두 네트워크에서 데이터를 전송하는 과정을 나타낸 것이며 OSI 모델은 7계층으로, TCP/IP모델(인터넷 모델)은 4개 계층으로 단순화시킨 모델이다.
OSI 7계층은 무엇이고 통신 과정에 계층을 나누어둔 이유에 대해 알아보자.
이 글에서는 각 계층에 대한 설명은 키워드 위주로 요약하고 필요한 경우 심도있게 알아보도록 하자.
유지관리 용이
역할을 세분화해두면 문제가 발생했을 때 문제 원인을 파악하기 쉽다.
(통신 과정에 대입하면 데이터 흐름을 파악하기 쉽다.)
계층을 나누어 각자 역할을 분리해두었기 때문에 어떤 계층에 문제가 생겼는 지 빠르게 파악하여 해당 부분에 조치를 취할 수 있다.
시스템 간 상호연결성 부여
또한 네트워크 구성 요소를 표준화하여 상호 이질적인 네트워크 간에도 호환이 가능해진다.
일단 계층이란 모듈과 다르게 상하구조를 가진다. 상위 계층 프로토콜이 동작하기 위해서는 모든 하위 계층에 문제가 없어야 한다는 의미이다.
계층을 1단계부터 정리해보자.
하드웨어 전송 기술이다. 전기적인, 기계적인 신호를 주고받으며 데이터의 종류나 오류를 제어하지 않는다. 전기 신호로 변환해서 주고받는 기능만을 수행한다. 이 계층에 속하는 대표적인 장비는 통신 케이블, 리피터, 허브등이 있다.
전송 단위는 Bit이다.
물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리
정보전달 신뢰성 보장을 위한 계층으로 CRC 기반 오류 제어와 흐름 제어가 필요
데이터 전송 단위는 Frame
여러개의 노드를 거칠때마다 경로를 찾아주는 역할의 계층
라우팅, 인터네트워킹(Internetworking) 등을 수행
주소부여(IP), 경로설정(Route)
데이터 전송 단위는 Datagram(Packet)
패킷 손실, 중복, 순서바뀜 등이 없도록 보장함으로써 양 끝단(End to end)의 사용자들이 신뢰성있는 데이터를 주고 받을 수 있도록 하는 역할
상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 함.
일부 프로토콜은 상태 개념이 있고(stateful), 연결 기반(connection oriented)이어서 패킷들의 전송이 유효한 지 확인하고 전송 실패한 패킷을 다시 전송할 수 있다.
잘 알려진 TCP프로토콜이 바로 이 계층에 해당
TCP 하위계층인 IP 계층의 신뢰성 없는 서비스를 보완하는 역할
연결지향적 (Connection-oriented)
UDP 프로토콜의 경우 비연결형, 신뢰성 낮음, 순서없음.
단 데이터를 전달이 빠르고 다수 지점으로 전송도 가능.
신뢰성있는 데이터 전송보다 연속적인 특성의 서비스에 적합(ex 스트리밍)
양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공
TCP/IP 세션을 만들고 없애는 책임
동시 송수신 방식(duplex), 반이중 방식(half-duplex), 전이중 방식(Full Duplex)의 통신과 함께, 체크 포인팅과 유휴, 종료, 다시 시작 과정 등을 수행
코드 간의 번역을 담당, 데이터 형식을 분류하여 Application Layer의 부담을 덜어줌.
MIME 인코딩이나 암호화 등의 동작이 이 계층에서 이루어진다.
HTTP, FTP 등의 프로토콜이 응용 계층에 속한다.
계층 | 이름 | 설명 |
---|---|---|
7계층 | 응용 계층 (Application Layer) | 이메일, 파일 전송, 웹 사이트 조회 등 어플리케이션에 대한 서비스를 제공 |
6계층 | 표현 계층 (Presentation Layer) | 문자 코드, 압축, 암호화 등의 데이터 변환 |
5계층 | 세션 계층 (Session Layer) | 세션 체결, 통신 방식 결정 |
4계층 | 전송 계층 (Transport Layer) | 신뢰할 수 있는 통신 구현 |
3계층 | 네트워크 계층 (Network Layer) | 다른 네트워크와 통신하기 위한 경로 설정 및 논리 주소를 결정 |
2계층 | 데이터 링크 계층 (Data Link Layer) | 네트워크 기기 간 데이터 전송 및 물리 주소를 결정 |
1계층 | 물리 계층 (Physical Layer) | 시스템 간의 물리적인 연결과 전기 신호를 변환 및 제어 |
통신할 때 데이터는 맨 위의 응용 계층에서 순차적으로 아래 계층으로 전달된다.
데이터를 전송하는 쪽(송신 측)은 데이터를 보내기 위해서 상위 계층에서 하위 계층으로 데이터를 전달한다. 각 계층은 독립적이므로 데이터가 전달되는 동안에 다른 계층의 영향을 받지 않는다. 데이터를 받는 쪽(수신 측)은 하위 계층에서 상위 계층으로 각 계층을 통해 전달된 데이터를 받게 된다.
유용한 참고자료 :
https://jhnyang.tistory.com/194
https://shlee0882.tistory.com/110
https://ko.wikipedia.org/wiki/OSI_%EB%AA%A8%ED%98%95