OSI 7계층은 무엇일까?
OSI (Open Systems Interconnection)
--
OSI는
국제 표준화 기구(ISO)에서 만든 네트워크 참조 모델로,
네트워크 통신이 이루어지는 과정을 7개의 계층으로 나눈 표준화된 참조 모델이다.
네트워크에서 정상적인 통신이 가능하기 위해서는 서로 동일한 통신 방법을 사용해야 한다.
만약 다른 통신 방법을 사용한다면 서로 어떤 통신을 원하는지 알 수 없기 때문에 정상적인 통신이 불가능하다.
(서로 다른 언어를 사용하는 사람 둘이 대화가 통하지 않는 것과 비슷)
그래서 네트워크 통신에 참여하는 주체들이 서로 통신할 수 있도록 하기 위해
공통적으로 따라야 하는 형식, 절차, 규약 등이 존재하는데 이를 "프로토콜"이라고 부른다.
-------------------프로토콜 블로그 경로----------------
네트워크의 기능들은
- 애플리케이션 목적에 맞는 통신 방법 제공
- 신뢰할 수 있는 데이터 전송 방법 제공
- 네트워크 간의 최적의 통신 경로 결정
- 목적지로 데이터 전송
- 노드 사이의 데이터 전송
네트워크 프로토콜을 통해서 동작하지만
이 모든 기능을 단 하나의 프로토콜로는 구현할 수 없다.
(애플리케이션을 개발할 때 모든 기능을 하나의 클래스에 구현할 수 없는 것과 동일한 이치)
그래서 이를 해결하기 위해 네트워크의 각 기능들을 모듈(계층)로 분리하고
각 모듈에 알맞은 프로토콜을 사용하여 전체적인 네트워크 기능을 수행할 수 있도록 네트워크 구조를 설계했다.
이렇게 계층으로 네트워크 구조 중 하나가 OSI 모델이며
각 계층은 특정한 기능을 수행하고,
데이터를 송수신하는 과정에서 계층별로 역할을 분담하여
통신의 복잡성을 줄이고 상호 호환성을 높이는 데 기여한다.
즉, 네트워크 통신을 하기 위해서 해당 통신에 참여하는 주체들이
OSI 모델의 주요 목적
- 네트워크 통신에 대한 과정을 표준화하여 제조사나 플랫폼에 상관없이 상호호환이 가능하게 한다.
- 특정 계층에서 문제가 발생하면 해당 계층만 집중적으로 점검하여 문제 해결이 용이하다.
- 각 계층이 고유한 역할을 수행하여 통신 과정의 복잡성을 줄이고 효율성을 높인다.
물리 계층 (Physical Layer)
OSI 모델의 최하단에 있는 1계층으로,
데이터 전송의 물리적 매체를 다루는 계층이며,
1과 0으로 표현되는 비트 신호를 주고받는 가장 근원적인 통신이 이루어지는 계층이다.
모든 데이터(이메일, 사진, 동영상 등)는 1과 0으로 이루어져 있으며
1과 0으로 표현된 비트 데이터들은 다양한 통신 매체를 통해 다양한 신호로 전달할 수 있다.
여기서 물리 계층은 통신 매체, 신호(전기 신호, 광 신호, 전파 신호, 케이블, 커넥터)를 가리킨다.
(ex 네트워크 케이블, 리티퍼, 허브 등)
요약
최종적으로 전달할 데이터(데이터 링크 계층에서 받은 데이터)를
0과 1로 표현되는 bits 단위로 표현하여 이를 모스부호처럼 전기 신호로 전달하는 계층이다.
데이터 링크 계층 (Data Link Layer)
물리 계층에서 전송된 데이터의 오류 검출 및 수정, 데이터 프레임 분할을 담당하는 계층으로,
네트워크 내에 주변 장치 간의 정보를 올바르게 주고받기 위한 계층이다.
그리고 MAC 주소를 사용하여 (동일)네트워크 내의 송수신지를 특정할 수 있으며,
이를 통해 장치 간의 통신을 처리한다.
때로는 전송 과정에서 발생할 수 있는 충돌 문제도 해결하는 계층이기도 하다.
(ex 스위치, 브릿지, MAC 주소)
요약
직접 연결된 노드 간의 통신을 담당하는 것으로
직접적으로 연결된 노드는 IP 주소가 아닌 MAC 주소를 사용해서 통신한다.
이때 네트워크 계층에서 받은 IP 주소를 MAC 주소로 변환하는 "ARP" 프로토콜을 사용한다.
네트워크 계층 (Network Layer)
데이터가 (다른 네트워크)목적지까지 전달할 수 있도록 라우팅을 담당하는 계층으로,
이전에 "데이터 링크 계층"에서 네트워크 내의 주변 장치 간의 통신이 이루어진다면,
"네트워크 계층"에서는 네트워크 간의 통신이 이루어지는 계층이다.
즉, 여러 네트워크들이 연결된 네트워크(인터넷)에서 통신이 가능하게 하는 계층으로
IP주소를 이용해 수신지 호스트와 네트워크를 식별하여 다른 네트워크 간의 데이터를 전달하고,
최적의 경로를 찾아 패킷을 전달한다.
(ex 라우터, IP 주소)
요약
호스트 간의 통신 통신을 담당하는 것으로
각 호스트의 IP 주소를 이용해서 목적지를 파악하고 네트워크 간의 최적의 경로를 결정
전송 계층 (Transport Layer)
신뢰성 있고 안정성 있는 전송을 할 때 필요한 계층으로,
송신자와 수신자 간에 연결을 설정하고 유지하는 역할을 하는 계층이다.
이때 패킷이 정상적으로 보내졌는지,
중간에 유실된 정보는 없는지,
여러 개의 패킷을 보낼 때 순서가 뒤바뀐 것은 없는지 등을 확인이 필요한데
"전송 계층"에서는 이러한 패킷의 흐름을 제어하거나 전송 오류를 점검하하여
신뢰성 있고 안정적인 전송이 이루어지도록 보장한다.
그래서 TCP와 UDP 같은 프로토콜을 사용하여 데이터의 순서와 오류를 제어한다.
(ex TCP, UDP, 포트 번호)
요약
애플리케이션(호스트) 간의 통신을 담당하여 목적지로 데이터를 전송하는 방식을 정의
- TCP : 안정적이고 신뢰할 수 있는 데이터 전송 보장
- UDP : 필수 기능만 포함하여 빠르게 데이터 전송
세션 계층 (Session Layer)
통신 세션을 설정하고 유지하며 종료하는 역할을 하는 계층으로,
데이터 전송 시 호스트 간의 논리적인 연결을 관리(연결 생성, 유지, 종료 등)하고 동기화하는 계층이다.
즉, 데이터를 전송할 때 두 호스트 간의 연결 상태를 생성하거나 유지하고,
전송이 종료되면 연결 상태를 끊어주는 역할을 수행한다.
(ex 세션 관리 기술 (RPC, NetBIOS))
요약
애플리케이션 간의 통신에서 세션을 관리
표현 계층 (presentation layer)
전달하는 데이터의 인코딩, 디코딩, 암호화, 압축 등을 담당하는 계층으로,
변역가처럼 사람이 이해할 수 있는 언어(프로그래밍 언어)를 컴퓨터가 이해할 수 있는 코드로 변환하거나,
압축, 암호화 같은 작업을 수행하여
데이터가 수신 측에서 올바르게 이해할 수 있도록 변환하는 계층이다.
(ex JPEG, PNG, SSL/TLS, 데이터 인코딩(UTF-8, ASCII))
요약
애플리케이션 간의 통신에서 데이터(메시지) 포맷 관리
A에서 B로 통신을 할 때
- A에서 데이터를 "인코딩"하면 B에서는 "디코딩"을 수행
- A에서 데이터를 "암호화"하면 B에서는 "복호화"를 수행
- A에서 데이터를 "압축"하면 B에서는 "압축 풀기"를 수행
응용 계층 (Application Layer)
OSI 모델의 최상단에 있는 계층으로,
최종적으로 사용자 또는 사용자가 이용하는 응용 프로그램과 가장 밀접하게 맞닿아 있는 계층이다.
즉, 사용자가 직접적으로 상호작용하는 계층으로,
사용자가 이용할 응용 프로그램에 다양한 네트워크 서비스를 제공하여,
응용 프로그램이 네트워크 서비스에 접근할 수 있게 하는 계층이다.
- 웹 브라우저 프로그램에 웹 페이지를 제공
- 이메일 클라이언트 프로그램에 송수신된 이메일을 제공
- 파일 전송
등 실질적인 네트워크 서비스가 제공되는 계층이다.
(ex HTTP, FTP, SMTP, DNS)
요약
각 애플리케이션 목적에 맞는 통신 방법을 제공
대표적으로 사용하는 프로토콜
- HTTP (웹 페이지를 전달하기 위해 양 쪽 호스트는 HTTP 프로토콜을 사용)
- DNS (IP와 도메인의 변환 요청을 전달하기 위해 양 쪽 호스트는 DNS 프로토콜을 사용)
- SMTP (이메일을 전달 하기 위해 양 쪽 호스트는 SMTP 프로토콜을 사용)
- FTP (파일의 업로드 or 다운로드 요청을 전달 하기 위해 양 쪽 호스트는 FTP 프로토콜을 사용)
--
OSI 모델 흐름 정리
--
사용자가 티스토리 블로그에 댓글을 작성하여 해당 댓글이 티스토리 서버로 전달하는 과정
- 사용자가 블로그에 댓글 작성
- A 호스트 (응용 계층)
웹 브라우저는 사용자가 입력한 댓글 데이터를 가지고 서버로 전달하기 위해 HTTP 프로토콜을 사용하여 요청을 생성
전달할 데이터(댓글)와 추가로 필요한 데이터(HTTP 헤더 등)를 합쳐서(캡슐화) 표현 계층으로 전달한다. - A 호스트 (표현 계층)
응용 계층으로부터 받은 데이터에 필요에 따라 형식화, 인코딩, 암호화 등을 수행하여
사용자가 입력한 데이터를 서버가 이해할 수 있는 형식(JSON or XML)으로 변환한다.
그리고 이에 관련된 부가적인 정보들을 헤더에 담아서 합친 다음 세션 계층으로 전달한다. - A 호스트 (세션 계층)
표현 계층으로부터 받은 데이터를 가지고 목적지로 전달하게 위해 서버와의 세션을 유지하고, 상태 정보를 관리한다.
즉, 사용자가 지속적으로 연결된 상태에서 요청을 보낼 수 있도록 관리하고
해당 정보를 헤더에 담아 기존 데이터와 합친 다음 전송 계층으로 전달한다. - A 호스트 (전송 계층)
데이터를 어떤 방식으로 전달할지 결정하는 계층으로
데이터의 신뢰성과 무결성을 보장하기 위해 TCP 프로토콜을 사용하여 데이터를 여러 패킷으로 분할하고,
각 패킷에 전송 제어 정보를 헤더에 추가하고 네트워크 계층으로 전달한다. - A 호스트 (네트워크 계층)
데이터를 목적지(서버)에 정상적으로 전달할 수 있도록 하기 위해
목적지의 IP 주소를 확인하고 해당 IP 주소를 바탕으로
현재 위치(노드) 기준에서 어느 곳(중간 노드)으로 데이터를 보낼지 최적의 경로를 찾고
그중에서 현재 위치(노드)와 가장 가까운 노드에 전달하기 위한 정보를 헤더에 추가한다. - A 호스트 (데이터 링크 계층)
직접적인 연결된 노드와 통신하기 위해서는 IP가 아닌 MAC주소를 사용해야 하므로
네트워크 계층에서 받은 데이터에 담긴 IP 주소를 가지고 MAC주소로 변환한 뒤에
해당 정보를 헤더에 담아 추가한다.
그리고 전송 후의 에러확인을 위해 트레일러도 함께 합쳐서 물리 계층으로 전달한다. - A 호스트 (물리 계층)
데이터 링크 계층에서 받은 데이터를 비트 단위로 변환한 뒤에 전기 신호, 광 신호, 무선 신호 등을 통해
물리적으로 다음 노드로 전달한다. - 라우터 (물리 계층)
비트 단위로 전달받은 데이터를 기존 데이터 형태로 변환한 뒤에 데이터 링크 계층으로 전달한다. - 라우터 (데이터 링크 계층)
전달받은 데이터에서 이전 데이터 링크 계층에서 붙여준 "헤더"와 "트레일러"를 확인하고,
해당 MAC 주소를 검사해서 현재 노드의 MAC 주소와 같은지, 오류가 있는지 확인 후
문제가 없으면 해당 헤더와 트레일러를 제거한 뒤에 네트워크 계층으로 전달한다. - 라우터 (네트워크 계층)
전달받은 데이터에서 이전 네트워크 계층에서 붙여준 "헤더"를 통해 최종 목적지의 IP 주소를 확인하고,
다시 현재 위치(노드)에서 목적지로 전달하기 위해 다음 노드를 어디로 가야 하는지 확인한 뒤에,
기존 헤더에서 고쳐야 할 부분을 수정한 뒤에 다시 데이터 링크 계층으로 전달한다. - 라우터 (데이터 링크 계층)
다시 다음 전달할 노드와 통신하기 위한 정보(MAC 주소 등)들을 "헤더"와 "트레일러"에 담은 뒤에
합쳐서 물리 계층으로 전달한다. - 라우터 (물리 계층)
받은 정보를 다시 비트 단위로 변환한 뒤에 다음 노드로 전달한다. - B 호스트 (물리 계층)
비트 단위로 전달받은 데이터를 기존 형태의 데이터로 변환한 뒤에 데이터 링크 계층으로 전달한다. - B 호스트 (데이터 링크 계층)
다시 역순으로 "헤더"와 "트레일러"를 확인해서 문제가 없는지 확인 후 해당 "헤더"와 "트레일러"를 제거한 뒤에
네트워크 계층으로 전달한다. - B 호스트 (네트워크 계층)
이 또한 역순으로 "헤더"를 확인해서 현재 위치(노드)가 목적지인지 확인 후
해당 패킷의 목적지가 현재 노드(호스트)의 IP 주소와 동일하면 해당 "헤더"를 제거한 뒤에 전송 계층으로 전달한다.
(현재 패킷이 네트워크에서 유효한 상태인지도 검사하는 TTL 등의 정보도 확인) - B 호스트 (전송 계층)
"헤더"를 확인해서 어떠한 방식으로 데이터를 전송(TCP, UDP)하는지 확인하고,
헤더를 제거한 뒤에 해당 방식을 따라 전송 제어를 수행(패킷 순서, 오류 검사 등 재조립)하고 세션 계층으로 전달한다. - B 호스트 (세션 계층)
"헤더"를 통해 해당 데이터의 세션 관련 정보를 확인하고 이에 따라 통신 세션을 관리한다.
(데이터가 어떤 세션에 속해 있는지 등)
그리고 헤더를 제거한 뒤에 표현 계층으로 전달한다. - B 호스트 (표현 계층)
"헤더"를 통해 데이터를 송신 당시의 형식으로 변환한 뒤에
역순으로 암호화를 했다면 복호화를 해주고, 압축을 했다면 압축을 풀어주어 원본 데이터로 변환한 후,
헤더를 제거하고 응용 계층으로 전달한다. - B 호스트 (응용 계층)
"헤더"를 확인해서 전달받은 데이터를 응용 프로그램이 처리할 수 있는 형태로 다시 변환한 뒤에
해당 프로그램에 전달한다.
정리하자면
데이터를 송신하는 과정에서는
각 계층에서 필요한 동작을 수행한 뒤에 부가적인 정보를 헤더에 담아 기존 데이터와 합치고(캡슐화) 전달한다.
데이터를 수신하는 과정에서는
각 계층에서 이전에 수행했던 동작들을 해당 헤더를 확인 후 해당 헤더와 기존 데이터를 분리(역캡슐화)하여,
점차 원본의 형태로 복구한다.
--
PDU (Protocol Data Unit)
--
PDU는
OSI의 각 계층에서 송수신되는 메시지(데이터) 단위를 의미하고
각 계층에서는 데이터를 부르는 용어가 다르다.
전송 계층에서 사용하는 프로토콜에 따라 데이터를 부르는 용어가 다르다.
- TCP 프로토콜을 사용 : 세그먼트
- UDP 프로토콜을 사용 : 데이터그램
원래 패킷은
패킷 교환 네트워크에서 데이터를 쪼개서 전송하는 단위를 의미하지만
해당 네트워크 계층에서는 그냥 송수신 단위를 지칭하는 단위로 사용되기도 한다.
--
TCP/IP 모델
--
계층을 사용한 네트워크 구조 중에 하나가 OSI 7계층이라면
나머지 하나는 TCP/IP 4계층이다.
TCP/IP 모델은 OSI 모델의 7계층을 4계층으로 간소화한 형태로
서로 개념적으로는 다르지만, 실제 네트워크에서 동작하는 방식에 대한 틀과 흐름에는 큰 차이가 없다.
OSI 7계층과 TCP/IP 4계층의 기능과 역할은 거의 동일한 순서로 수행되며,
네트워크 통신의 흐름과 구조에서 공통된 부분이 많다.
OSI 모델은 주로 네트워크를 이론적으로 기술하고 이해할 때 사용하고,
TCP/IP 모델은 이론보다는 구현에 중점을 둔 네트워크 참조 모델이다.
즉, OSI 모델의 목적이 "이상적 설계"에 가깝다면, TCP/IP 모델은 "실용적 구현"에 가깝다.
응용 계층 (Application Layer)
OSI 모델의 "응용 계층", "표현 계층", "세션 계층"의 기능을 모두 포함한 계층으로
OSI모델에서는 각 계층의 기능을 분리하여 세세하게 구분했지만,
TCP/IP에서는 이러한 기능을 하나의 계층에서 처리하도록 통합했다.
(자세히 살펴보면 OSI의 "응용 계층", "표현 계층", "세션 계층"모두 애플리케이션과 관련된 작성을 수행한다.)
전송 계층 (Transport Layer)
OSI 모델의 "전송 계층"과 거의 동일한 역할을 수행하는 계층으로
TCP 또는 UDP 프로토콜을 사용하여 데이터 전송 방식을 제어하고,
데이터 분할, 재조립, 오류 검출과 같은 기능을 수행한다.
인터넷 계층 (Internet Layer)
OSI 모델의 "네트워크 계층"과 같은 기능을 수행하는 계층으로
IP 주소를 사용하여 데이터가 목적지까지 전달되도록 경로를 설정하고 라우팅을 수행한다.
네트워크 액세스 계층 (Network Access Layer)
OSI 모델의 "데이터 링크 계층", "물리 계층"의 기능을 모두 포함한 계층으로
네트워크 장치 간에 실제 데이터 전송을 위한 물리적인 전송과 MAC 주소 기반으로 통신을 수행한다.
링크 계층(Link Layer) 또는 네트워크 인터페이스 계층(Network Interface layer)라고도 부른다.
다만 해당 계층은
OSI 모델의 "물리 계층"보다는 "데이터 링크 계층"역할을 수행하는 쪽에 더 가까워서
TCP/IP 모델에는 OSI 모델의 "물리 계층"에 해당하는 개념이 없다고 보는 견해도 있다.
그래서 일부러 "물리 계층"을 추가해서 5계층으로 확장하여 기술하기도 한다.
--
'CS > 네트워크' 카테고리의 다른 글
[OSI 물리 계층, 데이터 링크 계층] 스위치 (0) | 2024.11.12 |
---|---|
[OSI 물리 계층, 데이터 링크 계층] 허브 (+ 반이중/전이중, CSMA/CD) (1) | 2024.11.11 |
[물리 계층, 데이터 링크 계층] 이더넷 (+ IP주소와 MAC주소의 차이) (0) | 2024.11.10 |
프로토콜 (1) | 2024.11.08 |
네트워크 (기본 개념) (0) | 2024.11.07 |