이미지 출처: https://www.telecommunications-tutorials.com/tutorial-osi-7-layer-model.htm
인터넷은 현대인의 삶에서 빼놓을 수 없는 필수 요소가 되었습니다. 우리가 웹 브라우저로 웹사이트를 방문하거나, 이메일을 주고받고, 클라우드에 파일을 업로드하는 모든 작업은 네트워크를 통해 이루어집니다. 이 네트워크를 공부할때 가장 처음으로 배우는 것은 OSI 7 계층 모델입니다. 현대에는 OSI 7 계층을 직접적으로 사용하진 않고 TCP/IP 모델을 사용하지만, 이 TCP/IP 모델의 기반이 되고, 네트워크가 제대로 동작하기 위해 설계된 표준화된 모델이 OSI 7 계층(Open Systems Interconnection 7 Layer)입니다. 컴퓨터 네트워크 과목을 배우는 사람들에게 OSI 7 계층은 가장 기본이 되는 개념이기에,
이 글에서는 OSI 7 계층의 각 레이어의 기능을 설명하고, 무엇을 담당하며 어떻게 작동하는지, 그리고 이것이 왜 중요한지에 대해 설명해보려고 합니다!
네트워크는 저희가 생각하는것보다 매우 복잡하게 통신이 이루어집니다. 단순히 데이터를 주고받는 것이 아니라, 다양한 하드웨어, 소프트웨어, 프로토콜들이 협력해야 하는 복잡한 과정입니다.
네트워크뿐만 아니라 여러 복잡한 과정을 거치는 일들이나 시스템들은 복잡한 과정을 여러 단계로 쪼개서 각 과정들에 독립성을 부여하는 경우가 많이 존재합니다.
택배 시스템을 예로 들어보면,
포장 단계 => 주소 작성 단계 => 운송 단계 => 지역 분류 단계 => 물류 센터 처리 => 배송 단계
형식으로 각 과정이 독립적으로 동작함과 동시에 각 단계들이 협력하여 최종적으로 제품이 고객에게 잘 도착할수 있도록 하는것처럼, OSI 7 계층 또한 각 역할이 독립적으로 수행됨과 동시에 서로가 상호작용하여 데이터를 효과적으로 전달할수 있도록 합니다.
또한 이렇게 계층을 나누면 좋은점은 문제 해결 단계에서도 있습니다. 계층을 나눠 각 역할을 수행하는 OSI 7 계층에 경우에는 문제가 발생했을 때 어느 단계에서 문제가 생겼는지 정확히 진단하기에 더욱 용이합니다. 많은 이유들이 존재하지만 간단하게 정리를 해서 계층을 나누는것이 필요한 이유는
1. 이해의 용이성: 네트워크 통신 과정을 체계적으로 이해
2. 문제 해결의 효율성: 각 계층별로 효율적으로 문제를 진단하고 해결
3. 표준화: 서로 다른 제조사의 기술이 호환될수 있도록 표준화
4. 유연성: 각 계층을 독립적으로 수정 및 개선
정도로 설명이 가능할거 같습니다.
물리 계층에는 케이블, 스위치 등 데이터 전송과 관련된 물리적 장비가 포함됩니다.
데이터를 전기 신호, 빛 신호 또는 무선 신호로 변환하여 실제 전송 매체(케이블, 광섬유 등)를 통해 전송하고, 여기에는 하드웨어 장치(허브, 리피터 등)와 전송 방식(전압, 주파수 등)이 포함됩니다.
예시: 이더넷 케이블, 전선, 광섬유 케이블 등과 같은 실제 전송 매체가 이 계층에 속함.
데이터 링크 계층은 데이터를 프레임 단위로 나누어 물리적 링크에서 오류 없이 전송되도록 보장합니다. 오류 검출과 수정, 흐름 제어를 통해 전송되는 데이터의 무결성을 유지하며, 데이터가 물리 계층에서 올바르게 송수신되도록 도와줍니다. 가장 중요한 역할은 물리 계층에서 받은 데이터를 올바른 목적지에 도달하도록 하는것이며, 데이터는 프레임 단위로 전송되고, MAC 주소를 사용하여 장치 간의 통신을 제어합니다.
데이터 링크 계층은 다시 두 개의 하위 계층(MAC,LLC)으로 나눌 수 있습니다.
MAC (Media Access Control): 물리적 주소(MAC 주소)를 사용하여 데이터 전송을 관리합니다.
LLC (Logical Link Control): 프레임의 흐름과 오류 검출을 관리합니다.
예시: 스위치, MAC 주소, 이더넷
네트워크 계층은 데이터를 목적지까지 전송하기 위한 최적의 경로를 설정합니다. 전송 계층의 세그먼트를 송신자의 장치에서 패킷이라고 불리는 더 작은 단위로 세분화하여 수신 장치에서 이러한 패킷을 다시 조립합니다. 이러한 패킷을 라우팅하여 네트워크 간의 연결을 관리하고, 데이터가 올바른 경로로 전송될 수 있도록 IP 주소를 사용합니다.
예시: 라우터를 통한 패킷 전달, IP 주소 설정.
전송 계층은 송신지와 수신지 간 신뢰성 있는 데이터 전송을 보장합니다. 연결형 서비스(TCP)와 비연결형 서비스(UDP)를 통해 데이터의 신뢰성을 관리하고, 데이터 분할 및 재조합, 오류 복구를 수행합니다.
전송 계층은 흐름 제어 및 오류 제어 기능의 역할도 하는데,
여기서 흐름 제어란 송신 측이 수신 측의 처리 속도에 맞춰 데이터를 전송하도록 조절하는 기법입니다. 수신 측의 버퍼가 가득 차지 않도록 전송 속도를 제어하여 데이터가 손실되지 않게 합니다. 흐름 제어 기법의 예로는 정지-대기 프로토콜과 슬라이딩 윈도우 기법 이 있습니다.
또한 오류 제어는 데이터 전송 과정에서 발생할 수 있는 오류(손실, 비트 변환, 중복 등)를 감지하고 복구하는 기법입니다. 네트워크에서 데이터는 전송 중 다양한 요인(잡음, 왜곡, 감쇄, 하드웨어 문제 등)으로 인해 손상될 수 있으므로, 수신 측에서 데이터를 정확히 복원하기 위해서는 오류 제어가 필요합니다.
예시: TCP를 통한 파일 전송, UDP를 이용한 동영상 스트리밍.
세션 계층에서는 네트워크 상의 두 장치 간의 세션을 설정하고 관리하며, 필요한 경우 세션을 종료합니다. 세션이 유지되는 동안 데이터 교환을 원활하게 할 수 있도록 조정하며, 데이터 동기화 기능도 제공합니다. (예를 들면, 로그인 세션을 유지하거나 파일 다운로드가 중단된 경우 재개하는 기능을 제공)
현대에는 세션 계층의 역할을 응용 계층으로 통합해서 사용하고 있으며, 웹 애플리케이션에서는 세션 관리를 HTTP 쿠키나 API 호출 수준에서 처리합니다. 현대 네트워크는 세션 계층이 별도의 계층으로 동작하지 않고, 응용 계층에서 필요한 세션 유지 및 제어 기능을 직접 구현하는 방식이 일반적입니다.
예시: 로그인 정보가 세션 동안 유지되는 것, 원격 프로시저 호출(RPC)
표현 계층은 데이터를 암호화, 압축 또는 변환하여 송신 측과 수신 측에서 같은 형식으로 데이터가 처리되도록 도와 다른 시스템에서도 데이터가 이해될 수 있도록 합니다.
데이터의 암호화 및 압축이 표현 계층에 주된 기능입니다.
현대 네트워크에서는 표현 계층 역시 대부분 응용 계층으로 통합되어 처리되고 있는데, 데이터의 암호화와 압축은 SSL/TLS(보안 프로토콜) 또는 애플리케이션 자체에서 처리하고 웹 브라우저, 동영상 스트리밍 서비스 등이 데이터 압축 및 변환 작업을 직접 수행합니다.
예시: 텍스트 데이터의 인코딩/디코딩(ASCII, EBCDIC), 데이터 암호화 (SSL/TLS)
응용 계층은 사용자와 직접적으로 상호 작용하는 유일한 계층으로, 네트워크 서비스에 접근할 수 있는 인터페이스를 제공합니다. 애플리케이션 프로그램이 네트워크와 직접 통신할 수 있게 지원합니다. 브라우저, 이메일 클라이언트, 파일 전송 애플리케이션 등이 여기에 해당합니다.
현대에는 세션 계층과 표현 계층의 역할이 이 계층으로 흡수되어, 데이터 압축, 암호화, 세션 관리를 모두 포함한 종합적인 역할을 수행합니다.
예시: 웹 브라우저(HTTP, HTTPS), 이메일 클라이언트(SMTP, POP3), 파일 전송(FTP)
그렇다면 현대에는 왜 5,6 계층이 덜 쓰이고 7 계층으로 흡수된걸까요?
현대의 네트워크 구조는 OSI 모델의 7 계층을 완전히 따르기보다는 TCP/IP 모델을 중심으로 단순화된 구조를 선호합니다. TCP/IP 모델은 OSI의 세션 계층(5계층)과 표현 계층(6계층)의 역할을 응용 계층(7계층)에 통합한 모델입니다. 이렇게 현대에 OSI모델 보다 TCP/IP 모델을 쓰는 이유에는
1. 기술의 발전:
암호화(SSL/TLS)와 세션 관리(쿠키, API)는 응용 계층에서 충분히 구현 가능하며, 별도의 계층으로 나눌 필요성이 줄어들었습니다.
2. 효율성:
OSI 모델의 세분화된 계층 구조는 학습과 이해에 용이하지만, 실제 네트워크 프로토콜 설계에서는 더 간단한 구조가 선호됩니다.
3. 현대 애플리케이션의 통합성:
웹 애플리케이션과 같은 현대적인 서비스는 자체에서 데이터 표현 및 세션 관리 기능을 처리하고, 이렇게 처리한 서비스를 응용 계층에서 처리하는 것이 더 효율적이기 때문입니다.
OSI 7 Layer 모델은 현대에는 거의 사용하고 있지 않더라도 네트워크 설계의 기본 틀로 여전히 중요한 역할을 합니다. 요즘 매우 당연하게 네트워크라고 말하면서 막상 동작원리를 제대로 몰랐던 저한테 네트워크의 가장 기본이 되는 OSI 7 계층 구조는 매우 흥미로운 주제였습니다. 이러한 OSI 7 Layer를 확실하게 이해하고 현대의 네트워크 구조를 살펴본다면 현대 네트워크와 프로토콜의 동작 원리를 더 잘 이해할 수 있을것이라고 생각합니다! 🚀