OSI 7 계층이란?
OSI (Open Systems Interconnection) 7 계층 모델은 국제표준화기구(ISO)가 만든 네트워크 통신의 표준 참조 모델이다.
목적은 서로 다른 시스템 간의 통신을 계층화된 방식으로 표준화하여 쉽게 이해하고 설계, 구현, 디버깅할 수 있게 하는 것이다.
각 계층은 독립적이며 명확한 책임을 가지고 있으며, 위아래 계층과만 상호작용한다.
왜 나누어야 하고 OSI 7 계층을 알아야 할까?
- 단계별로 정의한 이유는 통신 과정 속에서 장애가 발생한 경우, 다른 계층의 소트프웨어나 장비를 건들지 않고 통신 장애가 발생한 계층에서만 해결책을 강구할 수 있기 때문이다.
OSI 7 계층 구조 및 설명
1 계층: 물리 계층 (Physical Layer)
1. 핵심 개념
물리 계층은 데이터를 전기적, 광학적 또는 무선 신호로 변환하여 전송하는 역할을 한다. 이 계층은 데이터의 의미를 이해하지 않고, 오직 비트를 물리적인 신호로 전달하고 수신하는 것에만 집중한다.
2. 주요 기능
- 비트(0과 1)의 신호 변환 및 전송
- 전송 매체(케이블, 무선 등) 관리
- 하드웨어 연결 및 전기적/기계적 특성 정의
- 신호 인코딩 및 클럭 동기화
3. 데이터 단위
- 비트 (bit)
4. 주요 장비 및 기술
- 리피터, 허브, 케이블, 커넥터, 무선 안테나
- RJ-45, 광섬유, 전기 신호 등
5. 예시
- 0을 0V, 1을 5V 전압으로 바꿔 케이블을 통해 전송한다.
- Wi-Fi 안테나를 통해 RF 신호로 데이터를 전송한다.
6. 요약정리
항목 | 설명 |
역할 | 비트 신호 전송 |
장비 | 케이블, 리피터, 허브 |
데이터 단위 | 비트 |
중요 개념 | 신호 변환, 전송 매체, 동기화 |
2 계층: 데이터 링크 계층 (Data Link Layer)
1. 핵심 개념
데이터 링크 계층은 직접 연결된 두 장치 간에 오류 없이 데이터를 전달하는 역할을 한다. 비트 스트림을 프레임 단위로 나누고, 오류 검출 및 흐름 제어를 수행한다.
2. 주요 기능
- 프레이밍 (Frame으로 분리)
- MAC 주소 기반의 통신
- CRC 기반 오류 검출
- 흐름 제어 및 충돌 감지 (CSMA/CD 등)
- 매체 접근 제어
3. 데이터 단위
- 프레임 (Frame)
4. 주요 장비 및 프로토콜
- 스위치, 브리지
- 이더넷, PPP, HDLC
5. 예시
- 송신 측에서 데이터를 프레임으로 나누고 CRC를 추가하여 전송한다.
- 스위치가 수신한 프레임의 MAC 주소를 기반으로 포트를 결정한다.
6. 요약정리
항목 | 설명 |
역할 | 인접 노드 간 오류 없는 데이터 전달 |
장비 | 스위치, NIC |
주소 | MAC 주소 |
데이터 단위 | 프레임 |
3 계층: 네트워크 계층 (Network Layer)
1. 핵심 개념
네트워크 계층은 데이터를 목적지까지 경로를 설정하고 전달하는 역할을 한다. 즉, 패킷이 여러 네트워크를 거쳐 전송되도록 라우팅을 담당한다.
2. 주요 기능
- 논리 주소(IP 주소) 할당
- 라우팅 및 경로 선택
- 패킷 분할/재조립 (Fragmentation)
- 혼잡 제어
3. 데이터 단위
- 패킷 (Packet)
4. 주요 장비 및 프로토콜
- 라우터
- IP (IPv4, IPv6), ICMP
5. 예시
- 라우터가 목적지 IP 주소를 확인하고 다음 홉으로 패킷을 전달한다.
- ICMP를 통해 핑(ping) 신호를 보낸다.
6. 요약정리
항목 | 설명 |
역할 | 경로 설정 및 패킷 전달 |
장비 | 라우터 |
주소 | IP 주소 |
데이터 단위 | 패킷 |
4 계층: 전송 계층 (Transport Layer)
1. 핵심 개념
전송 계층은 양 끝단(End-to-End) 간 신뢰성 있는 데이터 전송을 보장한다. 패킷 순서 보장, 오류 복구, 흐름 제어 등을 담당한다.
2. 주요 기능
- 포트 번호 기반 통신
- 연결 설정 및 해제 (TCP 3-way handshake)
- 재전송, 오류 제어
- 데이터 분할 및 순서 재조립
3. 데이터 단위
- 앞의 계층들은 신호를 보내거나, 올바른 주소로 데이터와 신호를 보내는 역할에 초점이 맞춰있는데, 전송계층에서는 실제로 해당 데이터들이 정상적으로 잘 보내지도록 확인하는 역할을 한다.
- 양 끝단(End to end) 사용자들의 데이터 전송의 에러 복구 및 흐름 제어를 담당합니다. 따라서 신뢰성 있는 데이터를 주고받을 수 있도록 한다. 그렇기 때문에 상위 계층에서 데이터 전달의 유효성이나 효율성을 생각하지 않도록 한다.
- 시퀀스 넘버 기반의 오류 제어 방식을 사용한다.
- 전송 계층은 특정 연결의 유효성을 제어하고, 일부 프로토콜은 상태 개념이 있고(stateful), 연결 기반(connection oriented)이다. (이는 전송 계층이 패킷들의 전송이 유효한지 확인하고 전송 실패한 패킷들을 다시 전송한다는 것을 뜻한다.)
- 세그먼트 (TCP) 또는 데이터그램 (UDP)
4. 주요 장비 및 프로토콜
- 없음 (호스트 내 기능)
- TCP, UDP
5. 예시
- 웹 요청 시 클라이언트와 서버 간 TCP 연결이 설정된다.
- UDP를 이용한 스트리밍 전송이 이루어진다.
6. 요약정리
항목 | 설명 |
역할 | 종단 간 신뢰성 있는 데이터 전송 |
주소 | 포트 번호 |
프로토콜 | TCP, UDP |
데이터 단위 | 세그먼트, 데이터그램 |
5 계층: 세션 계층 (Session Layer)
1. 핵심 개념
세션 계층은 통신을 위한 세션을 생성, 유지, 종료하는 기능을 제공한다.
중간에 연결이 끊겼을 때도 회복 가능한 통신 구조를 제공한다.
2. 주요 기능
- 세션 설정, 동기화, 복구
- 체크포인트 삽입
- 세션 식별 및 인증
3. 데이터 단위
- 주 지점 간의 프로세스 및 통신하는 호스트 간의 데이터가 통신하기 위한 논리적 연결을 담당한다.
- TCP/IP 세션을 만들고 없애는 역할을 한다. (포트번호를 기반으로 통신 세션을 구성한다.)
- 데이터 (Data)
4. 주요 장비 및 프로토콜
- 일반적으로 소프트웨어 계층에서 처리
- NetBIOS, RPC
5. 예시
- 비디오 통화 중 일시 정지 후 다시 이어 보기
- 로그인 세션 유지 기능
6. 요약정리
항목 | 설명 |
역할 | 세션 관리 및 동기화 |
기능 | 연결 유지, 복구 |
데이터 단위 | 데이터 |
6 계층: 표현 계층 (Presentation Layer)
1. 핵심 개념
표현 계층은 데이터의 형식과 인코딩을 정의하여, 서로 다른 시스템 간의 호환성을 보장한다. 암호화/복호화, 압축/해제 기능도 포함된다.
2. 주요 기능
- 데이터 포맷 변환 (예: EBCDIC ↔ ASCII)
- 데이터 암호화 및 복호화
- 압축 및 해제
3. 데이터 단위
- 데이터 표현에 대한 독립성을 제공하고 암호화하는 역할을 담당한다.
- 표현 방식을 하나의 통일된 형식으로 변환하는 일종의 변환기 역할을 수행하는 계층이다.
- 전송하는 데이터의 표현방식을 결정(ex. 데이터변환, 압축, 암호화 등)
→ 표현 방식이 다르면 통신을 하는데 어려움이 생길 수 있다. - 파일인코딩, 명령어를 포장, 압축, 암호화
- 데이터
4. 주요 프로토콜
- TLS/SSL, JPEG, MPEG, JSON, XML 등
5. 예시
- HTTPS를 통해 암호화된 데이터 송수신
- 영상 데이터를 MPEG 형식으로 압축하여 전송
6. 요약정리
항목 | 설명 |
역할 | 데이터 포맷 변환, 암호화 |
프로토콜 | TLS, JPEG, XML |
데이터 단위 | 데이터 |
7 계층: 응용 계층 (Application Layer)
1. 핵심 개념
응용 계층은 사용자가 실제로 네트워크 서비스를 이용하는 계층이다. 이메일, 웹 브라우징, 파일 전송 등과 관련된 기능을 직접 제공한다.
2. 주요 기능
- 사용자 인터페이스 제공
- 응용 서비스 처리
- 파일 전송, 이메일, 웹 서비스 제공
3. 데이터 단위
- 데이터
4. 주요 프로토콜
- HTTP, FTP, SMTP, DNS, SSH 등
5. 예시
- 웹 브라우저에서 HTTP 요청으로 웹 페이지 접속
- 메일 클라이언트가 SMTP로 메일 전송
6. 요약정리
항목 | 설명 |
역할 | 최종 사용자 서비스 제공 |
프로토콜 | HTTP, FTP, SMTP |
데이터 단위 | 데이터 |
출처
이미지 출처 : https://tgkim.com/posts/OSI-7-Layer/
'Deep Dive > CS' 카테고리의 다른 글
[CS] 프록시(Proxy) (0) | 2025.05.06 |
---|---|
[CS] HTTP (요청/응답, 헤더, 메소드, 상태코드, HEAD 메소드) (0) | 2025.05.05 |
[Deep Dive] 쓰레드와 병렬 프로그래밍 - 4탄 동기화 기법 : 읽기/쓰기 락 (Read-Write Lock) (1) | 2025.05.03 |
[Deep Dive] 쓰레드와 병렬 프로그래밍 - 3탄 동기화 기법 조건 변수 (Condition Variable) (0) | 2025.05.03 |
[Deep Dive] 쓰레드와 병렬 프로그래밍 - 2탄 동기화 기법 Mutex (0) | 2025.05.03 |