간단복습
물리 계층 (Physical Layer)
역할:
실제 물리적 매체를 통해 데이터 비트를 전송합니다.
전기적 신호, 광 신호, 무선 신호 등 데이터 전송을 위한 물리적 매체의 특성을 정의합니다.
주요 구성 요소:
케이블 (예: 구리선, 광섬유)
허브, 리피터, 네트워크 카드
전압 레벨, 핀 배치, 전송 속도 등의 물리적 특성
데이터 링크 계층 (Data Link Layer)
역할:
물리 계층을 통해 전송되는 비트를 프레임 단위로 구성하여 신뢰성 있는 데이터 전송을 보장합니다.
오류 검출 및 수정, 흐름 제어, MAC 주소를 이용한 장치 식별을 담당합니다.
주요 프로토콜 및 기술:
Ethernet, Wi-Fi (IEEE 802.11)
스위치, 브리지
MAC (Media Access Control) 주소
네트워크 계층 (Network Layer)
역할:
데이터 패킷이 출발지에서 목적지까지 최적의 경로를 통해 전달되도록 라우팅을 담당합니다.
논리적 주소 지정 (IP 주소)과 경로 선택을 수행합니다.
주요 프로토콜:
IP (Internet Protocol)
ICMP (Internet Control Message Protocol)
라우팅 프로토콜 (예: OSPF, BGP)
전송 계층 (Transport Layer)
역할:
종단 간(end-to-end) 통신을 관리하며, 데이터의 신뢰성 있는 전송을 보장합니다.
데이터의 세그먼트화를 처리하고, 오류 복구, 흐름 제어, 혼잡 제어를 수행합니다.
주요 프로토콜:
TCP (Transmission Control Protocol): 신뢰성 있는 연결 지향 통신
UDP (User Datagram Protocol): 비신뢰성 있는 비연결 지향 통신
애플리케이션 계층 (Application Layer)
역할:
최종 사용자와 직접 상호작용하는 계층으로, 다양한 네트워크 서비스와 애플리케이션 프로토콜을 제공합니다.
데이터의 생성, 표시, 사용자 인터페이스 제공을 담당합니다.
주요 프로토콜 및 서비스:
HTTP, HTTPS (웹 통신)
SMTP, POP3, IMAP (이메일)
DNS (도메인 이름 시스템)
FTP, SFTP (파일 전송)
SSH, Telnet (원격 접속)
5계층 네트워크 모델 개요
애플리케이션 계층 (Application Layer)
전송 계층 (Transport Layer)
네트워크 계층 (Network Layer)
데이터 링크 계층 (Data Link Layer)
물리 계층 (Physical Layer)
각 계층은 인접한 계층과 특정한 방식으로 통신하며, 데이터는 상위 계층에서 하위 계층으로 내려가면서 각 계층의 헤더를 추가하며 전송됩니다. 수신 측에서는 이 과정이 반대로 이루어져 각 계층의 헤더가 제거됩니다.
전체적인 데이터 흐름
데이터 전송 시 (송신 측)
애플리케이션 계층 → 전송 계층
프로토콜 및 방식:
애플리케이션 계층 프로토콜: HTTP, SMTP, DNS, WebSockets 등
통신 방법: 소켓 API를 통해 전송 계층 프로토콜(TCP/UDP)을 호출
예: 웹 브라우저가 WebSocket을 통해 실시간 데이터를 전송
전송 계층 → 네트워크 계층
프로토콜 및 방식:
전송 계층 프로토콜: TCP (신뢰성 있는 연결 지향), UDP (비신뢰성 있는 비연결 지향)
데이터 처리: 데이터 세그먼트화, 포트 번호 추가
예: WebSocket은 일반적으로 TCP를 사용하여 데이터를 전송
네트워크 계층 → 데이터 링크 계층
프로토콜 및 방식:
네트워크 계층 프로토콜: IP (IPv4, IPv6)
데이터 처리: IP 패킷으로 캡슐화, 목적지 IP 주소 포함
라우팅: 최적의 경로를 선택하여 데이터 전달
데이터 링크 계층 → 물리 계층
프로토콜 및 방식:
데이터 링크 계층 프로토콜: Ethernet, Wi-Fi (IEEE 802.11) 등
데이터 처리: 프레임으로 캡슐화, MAC 주소 포함
전송 매체: 케이블, 광섬유, 무선 전파 등을 통해 실제 데이터 비트 전송
물리 계층 → 전송
프로토콜 및 방식:
물리 계층 특성: 전압, 전파, 핀 배치 등 물리적 신호로 데이터 비트 전송
장비: 케이블, 허브, 리피터, 네트워크 카드 등
데이터 수신 시 (수신 측)
데이터가 수신 측에 도착하면, 각 계층에서 해당 계층의 프로토콜을 통해 데이터를 처리하고 상위 계층으로 전달합니다.
물리 계층 → 데이터 링크 계층
데이터 처리: 전송된 비트를 프레임으로 재구성, 오류 검출 및 수정
데이터 링크 계층 → 네트워크 계층
데이터 처리: 프레임에서 MAC 주소 확인, IP 패킷 추출
네트워크 계층 → 전송 계층
데이터 처리: IP 패킷에서 전송 계층 프로토콜 정보(TCP/UDP) 추출, 포트 번호 확인
전송 계층 → 애플리케이션 계층
데이터 처리: 데이터 세그먼트에서 원래의 애플리케이션 데이터 추출, 포트 번호를 통해 해당 애플리케이션으로 전달
애플리케이션 계층 → 사용자
프로토콜 및 방식: HTTP 응답을 웹 브라우저에 전달, WebSocket을 통한 실시간 데이터 업데이트 등
각 계층 간의 소통 방식 상세 설명
1. 애플리케이션 계층 ↔ 전송 계층
애플리케이션 계층에서 전송 계층으로:
애플리케이션은 소켓 API를 사용하여 데이터 전송을 요청합니다.
소켓 API는 전송 계층의 TCP 또는 UDP를 호출하여 데이터 전송을 시작합니다.
예: 웹 애플리케이션이 WebSocket을 통해 서버와 지속적인 연결을 설정하고 데이터를 주고받을 때, WebSocket은 TCP 연결을 사용합니다.
전송 계층에서 애플리케이션 계층으로:
전송 계층은 수신된 데이터를 애플리케이션 계층으로 전달합니다.
애플리케이션은 해당 데이터를 처리하여 사용자에게 표시합니다.
2. 전송 계층 ↔ 네트워크 계층
전송 계층에서 네트워크 계층으로:
전송 계층은 데이터 세그먼트를 네트워크 계층으로 전달하여 IP 패킷으로 캡슐화합니다.
IP 주소를 기반으로 패킷의 라우팅을 담당합니다.
네트워크 계층에서 전송 계층으로:
네트워크 계층은 수신된 IP 패킷을 전송 계층으로 전달하여 데이터 세그먼트를 복원합니다.
3. 네트워크 계층 ↔ 데이터 링크 계층
네트워크 계층에서 데이터 링크 계층으로:
네트워크 계층은 IP 패킷을 데이터 링크 계층으로 전달하여 프레임으로 캡슐화합니다.
목적지 MAC 주소를 포함하여 로컬 네트워크 내에서 데이터를 전달합니다.
데이터 링크 계층에서 네트워크 계층으로:
데이터 링크 계층은 수신된 프레임에서 IP 패킷을 추출하여 네트워크 계층으로 전달합니다.
4. 데이터 링크 계층 ↔ 물리 계층
데이터 링크 계층에서 물리 계층으로:
데이터 링크 계층은 프레임을 물리 계층으로 전달하여 실제 비트로 변환하여 전송 매체를 통해 전송합니다.
물리 계층에서 데이터 링크 계층으로:
물리 계층은 전송된 비트를 수신하여 데이터 링크 계층으로 전달합니다.
데이터 링크 계층은 비트를 프레임으로 재구성하고, 오류를 검사한 후 상위 계층으로 전달합니다.
구체적인 예시: WebSocket을 통한 통신
시나리오: 웹 브라우저에서 서버로 실시간 채팅 메시지를 보내는 경우
애플리케이션 계층 (웹 브라우저):
사용자가 채팅 메시지를 입력하고 전송 버튼을 클릭합니다.
웹 브라우저는 WebSocket 프로토콜을 사용하여 메시지를 생성합니다.
전송 계층 (TCP):
WebSocket은 TCP 연결을 통해 메시지를 전송합니다.
소켓 API를 사용하여 TCP 소켓을 통해 데이터를 전송합니다.
네트워크 계층 (IP):
TCP 세그먼트는 IP 패킷으로 캡슐화됩니다.
패킷에는 서버의 IP 주소가 포함됩니다.
데이터 링크 계층 (Ethernet):
IP 패킷은 Ethernet 프레임으로 캡슐화됩니다.
목적지 MAC 주소를 포함하여 로컬 네트워크로 전송됩니다.
물리 계층:
Ethernet 프레임이 실제 케이블이나 무선 전파를 통해 전송됩니다.
수신 측:
물리 계층:
서버의 네트워크 인터페이스가 비트를 수신합니다.
데이터 링크 계층:
비트가 프레임으로 재구성되고, MAC 주소가 확인됩니다.
프레임에서 IP 패킷을 추출하여 네트워크 계층으로 전달합니다.
네트워크 계층:
IP 패킷이 전송 계층으로 전달되어 TCP 세그먼트를 복원합니다.
전송 계층:
TCP는 수신된 데이터를 WebSocket 프로토콜로 전달합니다.
애플리케이션 계층 (서버):
WebSocket을 통해 메시지를 수신하고, 필요한 처리를 수행한 후 응답을 전송합니다.
각 계층 간의 통신 방식 요약
계층 송신 시 통신 방식 수신 시 통신 방식
애플리케이션 계층 소켓 API를 통해 전송 계층 프로토콜(TCP/UDP) 호출, 데이터 생성 (예: WebSocket) 전송 계층에서 전달된 데이터 처리, 사용자에게 표시
전송 계층 데이터 세그먼트를 네트워크 계층으로 전달 (TCP/UDP) 네트워크 계층에서 수신된 데이터 세그먼트를 애플리케이션 계층으로 전달
네트워크 계층 IP 패킷으로 데이터 캡슐화, 라우팅 수행 데이터 링크 계층에서 수신된 IP 패킷을 전송 계층으로 전달
데이터 링크 계층 프레임으로 데이터 캡슐화, MAC 주소 포함, 물리 계층으로 전달 물리 계층에서 수신된 비트를 프레임으로 재구성, 오류 검사 후 네트워크 계층으로 전달
물리 계층 전기적/광신호 등으로 비트 전송 전송 매체를 통해 수신된 비트를 데이터 링크 계층으로 전달
주요 프로토콜 및 기술 요약
애플리케이션 계층:
프로토콜: HTTP, HTTPS, SMTP, DNS, WebSockets, FTP, SSH 등
역할: 사용자와 직접 상호작용, 데이터 생성 및 표시
전송 계층:
프로토콜: TCP, UDP
역할: 신뢰성 있는 데이터 전송 (TCP), 빠른 데이터 전송 (UDP)
네트워크 계층:
프로토콜: IP (IPv4, IPv6), ICMP, 라우팅 프로토콜 (OSPF, BGP 등)
역할: 패킷 라우팅, 주소 지정
데이터 링크 계층:
프로토콜: Ethernet, Wi-Fi (IEEE 802.11), PPP 등
역할: 프레임 단위 데이터 전송, MAC 주소 관리
물리 계층:
매체: 구리선 케이블, 광섬유, 무선 전파 등
역할: 비트 전송, 물리적 신호 변환
추가 설명: WebSockets와 전송 계층의 관계
WebSockets는 애플리케이션 계층의 프로토콜로, TCP를 기반으로 실시간 양방향 통신을 제공합니다. 이는 WebSockets가 전송 계층의 TCP 프로토콜을 활용하여 데이터의 신뢰성 있는 전송을 보장하면서, 애플리케이션 계층에서 실시간 데이터 교환을 가능하게 한다는 것을 의미합니다.
WebSockets의 특성:
애플리케이션 계층 프로토콜: HTTP를 사용한 초기 핸드셰이크 후, TCP 연결을 업그레이드하여 지속적인 연결 유지
양방향 통신: 클라이언트와 서버가 자유롭게 데이터를 주고받을 수 있음
실시간 애플리케이션: 채팅, 실시간 게임, 주식 거래 시스템 등에 적합
따라서, WebSockets는 애플리케이션 계층에서 전송 계층과 소통하는 특정한 방법 중 하나일 뿐이며, 모든 애플리케이션 계층 통신이 WebSockets를 사용하는 것은 아닙니다. 일반적인 웹 요청-응답 방식은 HTTP를 사용하며, 이는 주로 TCP를 통해 단방향 또는 요청 기반의 통신을 수행합니다.
요약
애플리케이션 계층은 소켓 API 등을 통해 전송 계층의 TCP 또는 UDP를 사용하여 데이터를 전송합니다.
전송 계층은 데이터를 네트워크 계층으로 전달하여 IP 패킷으로 라우팅합니다.
네트워크 계층은 데이터를 데이터 링크 계층으로 전달하여 프레임으로 캡슐화하고, 물리 계층을 통해 실제 전송합니다.
수신 측에서는 이 과정이 역순으로 이루어져 데이터가 애플리케이션 계층으로 전달됩니다.
WebSockets는 애플리케이션 계층의 특정 프로토콜로, TCP를 활용하여 실시간 양방향 통신을 제공합니다.