-
[CS] OSI 7계층에 대해서 알아보기CS 2025. 12. 1. 19:41
각 계층별 특징
1. Physical Layer (L1, 물리 계층)
- 정의: 상위 계층(L2)의 데이터(Frame)를 물리 매체(케이블 등)를 통해 전송하기 위해 전기적/광학적 신호(Signal)로 변환하는 계층입니다.
- PDU: Bit (비트)
- 핵심 기술 용어:
- Encoding/Decoding: 디지털 데이터(0, 1)를 전송 가능한 신호 패턴(예: NRZ, Manchester)으로 변환.
- Signaling: 전기 신호의 동기화(Synchronization) 및 타이밍 제어.
- Multiplexing (TDM/FDM): 하나의 회선을 여러 채널로 분할하여 사용.
- 주요 장비: Hub, Repeater, Cable (UTP, Fiber), NIC(Network Interface Card - PHY 칩셋 부분).
2. Data Link Layer (L2, 데이터 링크 계층)
- 정의: 물리적으로 직접 연결된(Directly Connected) Node-to-Node(노드 간) 데이터 전송을 담당합니다. 신뢰성 없는 L1 링크를 신뢰성 있는 링크로 변환합니다.
- PDU: Frame (프레임)
- 핵심 기술 용어:
- MAC Address (Media Access Control): 48비트 물리적 주소. NIC 제조 시 할당됨.
- Framing: 비트 스트림을 의미 있는 단위(Frame)로 나눔. Start/Stop bit 등을 사용.
- Error Detection (FCS/CRC): 프레임 끝(Trailer)에 CRC(Cyclic Redundancy Check) 코드를 붙여 전송 중 비트 오류 검출. (오류 발생 시 해당 프레임 폐기).
- Flow Control: 송신 측과 수신 측의 처리 속도 차이를 조절 (Stop-and-Wait, Sliding Window).
- Media Access Control (매체 접근 제어): 여러 장비가 공유 매체를 사용할 때 충돌 방지 (Ethernet의 CSMA/CD, Wi-Fi의 CSMA/CA).
3. Network Layer (L3, 네트워크 계층)
- 정의: 서로 다른 네트워크(Inter-Network)에 있는 목적지까지 데이터를 전송하기 위한 Routing(경로 설정)과 Forwarding(패킷 전달)을 수행합니다.
- PDU: Packet (패킷)
- 핵심 기술 용어:
- Logical Addressing (IP Address): 계층적 구조를 가진 논리적 주소(IPv4, IPv6). 네트워크 ID와 호스트 ID로 구분.
- Routing: Routing Table을 참조하여 최적의 경로(Best Path)를 선정하는 알고리즘 (OSPF, BGP 등).
- Fragmentation/Reassembly: MTU(Maximum Transmission Unit) 크기에 맞춰 패킷을 분할하고 목적지에서 재조립.
- TTL (Time To Live): 패킷이 무한 루프를 도는 것을 방지하기 위해 라우터를 거칠 때마다 1씩 감소하는 값. 0이 되면 패킷 폐기.
4. Transport Layer (L4, 전송 계층)
- 정의: End-to-End(종단 간) 통신을 관리하며, 데이터의 신뢰성(Reliability)과 무결성을 보장합니다. 호스트가 아닌 호스트 내의 프로세스(Process)를 식별합니다.
- PDU: Segment (TCP) / Datagram (UDP)
- 핵심 기술 용어:
- Port Number: 동일 IP 내에서 실행 중인 특정 애플리케이션(프로세스)을 구분하는 16비트 식별자 (0~65535).
- Multiplexing/Demultiplexing: 여러 프로세스의 데이터를 하나의 링크로 보내고(Mux), 받은 데이터를 적절한 프로세스로 분배(Demux)하는 기능.
- Connection Oriented (TCP): 3-way Handshake로 연결 수립, 4-way Handshake로 해제. 순서 보장(Sequencing), 재전송(Retransmission) 메커니즘 존재.
- Flow Control (Sliding Window): 수신 측의 버퍼 상태(Window Size)에 맞춰 송신 데이터 양 조절.
- Congestion Control: 네트워크 혼잡 상태를 감지하여 전송 속도 제어 (Slow Start, Congestion Avoidance).
- Backend Context: Web Server(Nginx, Apache)나 WAS(Tomcat)가 특정 포트(80, 443, 8080)를 Listen하고 있는 개념입니다. L4 로드 밸런서가 트래픽을 분산하는 기준이 됩니다.
5. Session Layer (L5, 세션 계층)
- 정의: 통신 세션을 구성(Establishment), 관리(Maintenance), 종료(Termination)하며 응용 프로그램 간의 대화 제어(Dialogue Control)를 담당합니다.
- PDU: Data (메시지)
- 핵심 기술 용어:
- Dialogue Control: 통신 방식 결정 (Simplex, Half-Duplex, Full-Duplex).
- Synchronization (Sync Points): 데이터 전송 중 체크포인트(동기점)를 삽입하여, 오류 발생 시 전체를 재전송하지 않고 해당 지점부터 복구(Recovery) 가능하게 함.
- Modern Context: TCP/IP 모델에서는 L5, L6, L7이 Application Layer로 통합되어 취급되는 경우가 많으며, 실제 구현에서는 OS의 Socket API 라이브러리가 세션 관리를 도와줍니다.
6. Presentation Layer (L6, 표현 계층)
- 정의: 애플리케이션이 생성한 데이터의 구문(Syntax)과 의미(Semantics)를 네트워크 전송에 적합한 형식으로 변환합니다. 송수신 측 간의 데이터 표현 차이를 해결합니다.
- PDU: Data
- 핵심 기술 용어:
- Translation (변환): EBCDIC ↔ ASCII 변환, 문자 인코딩(UTF-8) 처리.
- Encryption/Decryption (암호화): 데이터 보안을 위한 암호화 알고리즘 적용 (단, 현대의 TLS/SSL은 L4 위에서 동작하지만 기능적으로는 표현 계층의 역할 수행).
- Compression (압축): 전송 효율을 높이기 위한 데이터 압축.
- Backend Context:
- Spring에서의 Serialization/Deserialization (Java Object ↔ JSON/XML) 과정.
- ObjectMapper (Jackson)가 수행하는 역할이 정확히 이 계층에 해당합니다.
7. Application Layer (L7, 응용 계층)
- 정의: 최종 사용자(User) 또는 소프트웨어 프로세스가 네트워크 서비스에 접근할 수 있도록 인터페이스(Interface)를 제공하는 최상위 계층입니다.
- PDU: Data (메시지)
- 핵심 기술 용어:
- Network Virtual Terminal: 원격 호스트에 대한 가상 터미널 제공.
- File Transfer/Access/Management: 파일 접근 및 전송 표준.
- 주요 프로토콜:
- HTTP/HTTPS: 웹 데이터 전송.
- DNS: 도메인 이름을 IP 주소로 변환.
- SMTP/IMAP/POP3: 이메일 전송 및 수신.
- SSH: 보안 원격 접속.
- Backend Context:
- Spring MVC의 DispatcherServlet이 요청을 받아 비즈니스 로직을 수행하는 단계입니다.
- HTTP Header, Body, Method(GET, POST) 등을 다루는 모든 작업이 여기에 속합니다.
데이터 흐름과 캡슐화 (Data Encapsulation)
1. 데이터 캡슐화 (Encapsulation) 상세 흐름 (송신 측)
데이터가 내려갈 때마다 헤더(Header)가 앞에 붙고, L2에서는 뒤에 트레일러(Trailer)가 붙습니다. 핵심은 상위 계층의 전체 PDU(Protocol Data Unit)가 하위 계층의 '데이터'가 된다는 점입니다.
Step 1: L7 Application Layer (응용 계층)
사용자가 전송하려는 순수 데이터입니다.
- 구성: [ Data ]
- 용어: Message (또는 Data)
- 비고: HTTP 요청의 경우, HTTP Header와 Body가 여기에 포함됩니다.
Step 2: L4 Transport Layer (전송 계층)
L7 데이터를 받아 TCP(또는 UDP) 헤더를 붙입니다.
- 구성: [ TCP Header ] + [ Data ]
- 용어: Segment
- 역할: Port 번호 포함 (프로세스 식별).
Step 3: L3 Network Layer (네트워크 계층)
L4 Segment 전체를 자신의 데이터(Payload)로 간주하고, 앞에 IP 헤더를 붙입니다.
- 구성: [ IP Header ] + [ TCP Header + Data ]
- 용어: Packet
- 역할: IP 주소 포함 (목적지 식별).
Step 4: L2 Data Link Layer (데이터 링크 계층)
L3 Packet 전체를 데이터로 간주하고, 앞에 MAC 헤더(Ethernet Header)를, 뒤에 에러 검출용 트레일러(FCS)를 붙입니다.
- 구성: [ MAC Header ] + [ IP Header + TCP Header + Data ] + [ FCS (Trailer) ]
- 용어: Frame
- 역할: MAC 주소 포함 (인접 장비 식별) 및 에러 검출.
Step 5: L1 Physical Layer (물리 계층)
L2 Frame이라는 논리적 비트열을 전기 신호로 변환하여 케이블로 보냅니다.
- 구성: 010101... (Bit Stream)
2. 데이터 역캡슐화 (Decapsulation) 상세 흐름 (수신 측)
수신 측은 역순으로 동작합니다. 각 계층은 자신의 헤더만 읽고 해석한 뒤 제거(Strip off)하고, 알맹이(Payload)만 상위 계층으로 올려보냅니다.
- L1 (물리): 전기 신호를 비트열로 복원하여 L2로 전달.
- L2 (데이터 링크):
- Header 확인: 목적지 MAC 주소가 내 것인지 확인.
- Trailer 확인: FCS로 데이터 깨짐 여부 검사.
- Action: 이상 없으면 헤더와 트레일러를 떼어내고, [ IP Header + TCP Header + Data ] (패킷)만 L3로 전달.
- L3 (네트워크):
- Header 확인: 목적지 IP 주소가 내 것인지 확인.
- Action: IP 헤더를 떼어내고, [ TCP Header + Data ] (세그먼트)만 L4로 전달.
- L4 (전송):
- Header 확인: Port 번호를 확인하여 어떤 애플리케이션(프로세스)인지 식별.
- Action: TCP 헤더를 떼어내고, 순수 [Data ]만 L7(애플리케이션)으로 전달.
- L7 (응용): 최종적으로 데이터를 받아 처리 (예: Spring Controller가 JSON 수신).
'CS' 카테고리의 다른 글
[CS] Blocking / Non-Blocking, Sync / Async 구분하기 (1) 2025.12.06 [CS] Http란 무엇이고 어떤 특징이 있을까? (1) 2025.12.05 [CS] URI, URL, URN 완벽정리 (1) 2025.12.04 [CS] 인터넷 네트워크와 핵심 개념 정리: IP, TCP/UDP, PORT, DNS (0) 2025.12.03