OSI 7 계층 모델 요약
OSI(Open Systems Interconnection) 7 계층 모델은 네트워크 통신을 7단계로 나누어 설명하는 모델입니다. 이 모델은 서로 다른 시스템이나 네트워크 장치들이 데이터를 주고받을 때 발생하는 복잡한 과정을 단계별로 나누어 이해하기 쉽게 만들었습니다. 각 계층은 고유한 역할을 하며, 상호 독립적으로 작동합니다.
OSI 7 계층의 구성
- 물리 계층(Physical Layer): 전기 신호, 빛, 무선 신호 등 물리적 매체를 통해 데이터가 전송되는 방식과 관련된 계층입니다.
- 데이터 링크 계층(Data Link Layer): 물리적 매체에서 데이터를 어떻게 오류 없이 전달할지를 결정합니다. 이 계층에서는 MAC 주소를 사용하여 데이터를 전송합니다.
- 네트워크 계층(Network Layer): 데이터를 목적지까지 전달하는 경로를 찾고, IP 주소와 같은 논리적 주소를 이용해 데이터를 관리합니다.
- 전송 계층(Transport Layer): 데이터 전송의 신뢰성을 보장하고, 패킷의 오류 수정, 흐름 제어 등의 기능을 제공합니다. TCP와 UDP가 전송 계층에서 사용하는 대표적인 프로토콜입니다.
- 세션 계층(Session Layer): 통신 세션을 설정하고 관리하며, 데이터 전송을 동기화하는 역할을 합니다.
- 표현 계층(Presentation Layer): 데이터를 사용자나 애플리케이션이 이해할 수 있는 형태로 변환합니다. 데이터 압축, 인코딩, 암호화 등의 역할을 담당합니다.
- 응용 계층(Application Layer): 네트워크 서비스와 애플리케이션 간의 상호작용을 지원하는 계층입니다. 이메일, 웹 브라우징 등 사용자가 직접 접하는 서비스가 이 계층에서 동작합니다.
표현 계층(Presentation Layer)
정의
표현 계층(Presentation Layer)은 데이터를 다른 계층에서 사용하는 형식으로 변환하는 역할을 합니다. 주로 데이터 인코딩, 암호화, 압축 등의 작업을 수행하여 상위 계층(응용 계층)과 하위 계층(세션 계층) 간의 데이터 호환성을 보장합니다. 이를 통해 데이터가 서로 다른 시스템 간에도 올바르게 해석되고 전송될 수 있습니다.
담당하는 기능
- 데이터 인코딩 및 디코딩: 서로 다른 데이터 형식을 사용하는 시스템 간에 데이터를 변환하여 호환성을 보장합니다. 예를 들어, ASCII, EBCDIC 등의 문자 인코딩 방식이 있을 수 있습니다.
- 데이터 압축: 네트워크 대역폭을 절약하기 위해 데이터의 크기를 줄입니다.
- 데이터 암호화 및 복호화: 보안이 필요한 데이터는 표현 계층에서 암호화되며, 수신 측에서 복호화됩니다.
활용 사례
- SSL/TLS: 웹 통신에서 데이터를 암호화하여 송수신하는 프로토콜로, 보안을 유지하면서 네트워크 상에서 데이터를 전송하는 데 사용됩니다.
- JPEG, GIF, PNG: 이미지 파일을 전송하기 위한 표현 계층의 인코딩 방식입니다. 각 형식은 고유한 압축 및 표현 방식을 가지고 있으며, 네트워크 전송 시 데이터를 압축하여 전송할 수 있습니다.
- MPEG, MP3: 비디오와 오디오 파일의 압축 및 인코딩에 사용되며, 멀티미디어 데이터를 효율적으로 전송하는 데 기여합니다.
표현 계층 관련 프로토콜
SSL/TLS (Secure Sockets Layer / Transport Layer Security)
SSL(보안 소켓 계층)과 TLS(전송 계층 보안)는 네트워크 상에서 데이터를 암호화하여 안전하게 통신하기 위한 프로토콜입니다. 클라이언트와 서버 간의 데이터를 암호화하여 도청, 변조 등의 위협으로부터 보호합니다.
개발에서의 활용
- SSL/TLS는 주로 HTTPS를 통해 웹 브라우저와 서버 간의 안전한 통신을 보장하는 데 사용됩니다. 프로그래머는 서버에서 TLS 인증서를 설정하고, 클라이언트에서 이를 확인하여 안전한 연결을 설정할 수 있습니다.
- TLS 핸드셰이크 과정에서 클라이언트와 서버는 암호화 알고리즘을 협상하고, 세션 키를 교환하여 이후의 통신을 보호합니다.
관련 기술
- HTTPS (Hypertext Transfer Protocol Secure): 웹 통신에서 SSL/TLS를 적용하여 데이터를 암호화하는 HTTP 프로토콜입니다. 대부분의 웹사이트는 HTTPS를 통해 클라이언트와 서버 간의 안전한 통신을 보장합니다.
- 암호화 알고리즘: AES, RSA, ECC 등의 알고리즘을 사용하여 데이터를 암호화합니다.
예시
const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('server-key.pem'),
cert: fs.readFileSync('server-cert.pem')
};
https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('Secure connection established');
}).listen(443);
JPEG, PNG, GIF
JPEG(Joint Photographic Experts Group), PNG(Portable Network Graphics), GIF(Graphics Interchange Format)는 모두 이미지 파일을 압축 및 인코딩하는 데 사용되는 포맷입니다. 이들은 네트워크 전송에서 대역폭을 절약하기 위해 데이터를 압축하는 중요한 역할을 합니다.
개발에서의 활용
- 웹 개발에서 이미지 파일을 전송할 때, 프로그래머는 PNG, JPEG, GIF 등 적합한 형식을 선택하여 이미지 크기를 줄이고, 페이지 로딩 시간을 단축할 수 있습니다.
- 각 파일 형식은 서로 다른 압축 방법과 특성을 가지며, PNG는 무손실 압축, JPEG는 손실 압축, GIF는 애니메이션 지원 등의 기능을 제공합니다.
관련 기술
- 이미지 처리 라이브러리: 이미지 파일을 처리하기 위해 Node.js에서는 sharp, JIMP 등의 라이브러리를 사용할 수 있습니다. 이를 통해 서버에서 이미지를 변환하거나 리사이즈하여 클라이언트에 전달할 수 있습니다.
예시
const sharp = require('sharp');
sharp('input.jpg')
.resize(300, 200)
.toFile('output.jpg', (err, info) => {
if (err) throw err;
console.log(info);
});
MPEG, MP3
MPEG(Moving Picture Experts Group)과 MP3(MPEG Audio Layer-3)는 비디오 및 오디오 데이터를 압축하고 전송하는 데 사용되는 표준입니다. 이를 통해 대용량의 멀티미디어 데이터를 네트워크를 통해 효율적으로 전송할 수 있습니다.
개발에서의 활용
- 스트리밍 서비스에서는 MPEG이나 MP3로 데이터를 인코딩하여 사용자에게 전송합니다. 프로그래머는 FFmpeg와 같은 라이브러리를 사용하여 비디오나 오디오 데이터를 실시간으로 인코딩하거나 변환할 수 있습니다.
- 멀티미디어 데이터를 클라이언트와 서버 간에 전송할 때, 압축된 파일을 사용하여 대역폭을 절약하고 전송 속도를 최적화할 수 있습니다.
관련 기술
- FFmpeg: 멀티미디어 데이터의 인코딩, 디코딩 및 변환을 위한 오픈 소스 라이브러리입니다. 비디오 및 오디오 데이터를 다양한 포맷으로 처리할 수 있습니다.
- HLS (HTTP Live Streaming): 스트리밍 서비스에서 주로 사용되는 프로토콜로, MPEG 파일을 세그먼트로 나누어 전송합니다.
예시
ffmpeg -i input.avi -c:v libx264 output.mp4
레이어의 주요 이슈 및 해결 방법
- 데이터 압축 손실: JPEG와 같은 손실 압축에서는 이미지의 품질이 저하될 수 있습니다. 중요한 데이터의 경우 무손실 압축 방식을 사용하거나, 압축률을 조절하여 손실을 최소화하는 것이 필요합니다.
- 암호화 성능: SSL/TLS 암호화는 성능에 영향을 미칠 수 있습니다. 이를 해결하기 위해 최신 암호화 알고리즘을 사용하고, SSL/TLS의 설정을 최적화하여 성능 저하를 최소화해야 합니다.