OSI 7계층 모델에 대해 설명해주세요.

김상욱·2024년 12월 3일
0

OSI 7계층 모델에 대해 설명해주세요.

OSI(Open System Interconnection) 7계층 모델은 국제 표준화 기구(ISO)에서 제정한 네트워크 통신 모델로, 통신 시스템을 7개의 계층으로 나누어 각 계층별로 특정한 기능과 프로토콜을 정의하고 있다. 이 모델은 네트워크 프로토콜을 설계하고 구현하는 데 있어 기본적인 참조 모델로 사용.

물리 계층 (Physical Layer)

역할

  • 데이터를 0과 1로 표현되는 비트로 변환하여 전송 매체(케이블, 무선 등)를 통해 전달. 데이터를 신호(전기적, 광학적, 무선 주파수)로 변환
  • 데이터를 전달할 수 있는 매체(유선/무선)를 설정하고 관리
  • 네트워크에서 전송 속도(전송률 또는 대역폭)을 결정하고 조정
  • 신호의 전압 레벨, 변조 방식, 전송 주파수 등을 정의. 데이터를 효과적으로 전송하기 위해 디지털 신호와 아날로그 신호 간 변환(모뎀 사용)도 포함.
  • 커넥터의 모양, 핀의 배열, 케이블의 길이 등 물리적인 하드웨어 표준을 정의
  • 송신자와 수신자 간에 데이터 전송이 제대로 이루어지도록 신호의 타이밍을 마춤.
  • 물리 계층에서는 데이터 전송의 신호 왜곡, 잡음 등을 방지하거나 감지하려는 기초적인 기능 수행
    주요 프로토콜과 표준
    이더넷(Ethernet) : 물리 계층과 데이터 링크 계층에서 사용하는 기술로 네트워크 케이블과 신호 방식을 정의
    IEEE 802.11(Wi-Fi) : 무선 네트워크 표준으로 무선 신호 전송 방식을 정의.
    DSL(Digital Subscriber Line) : 전화선을 통해 고속 데이터 전송을 지원하는 기술
    USB(Universal Serial Bus) : 데이터 전송 뿐 아니라 전원 공급을 포함하는 표준화된 인터페이스
    광섬유 통신 : 광신호를 이용하여 데이터를 전송하며, 높은 대욕폭과 긴 거리 전송이 가능.
    물리 계층에서 사용하는 장비
    허브 : 물리 계층에서 데이터를 단순히 전송하는 장치로 모든 포트로 데이터를 전송. 네트워크 트래픽 제어 기능 없음.
    리피터(Repeater) : 신호를 증폭하여 전송 거리를 연장하는 장치
    모뎀(Modem) : 디지털 신호와 아날로그 신호를 변환하여 전화선을 통해 데이터를 전송
    네트워크 인터페이스 카드(NIC) : 컴퓨터를 네트워크에 연결하는 장치로 물리 계층에서 데이터를 송수신
    전송 매체 : 유선(UTP, STP, 광섬유, 동축 케이블), 무선(Wi-Fi, Bluetooth, 위성 신호)
    발생 가능 문제점
    신호 손실(Attenuation) : 거리가 증가함에 따라 신호 강도가 감소하는 현상
    잡음(Noise) : 전자기 간섭으로 인해 데이터 신호가 왜곡되는 현상
    동기화 문제 : 송신자와 수신자 간에 타이밍이 맞지 않아 데이터 전송이 실패하는 경우
    충돌 : 동일한 전송 매체에서 여러 장치가 동시에 데이터를 전송할 때 발생.

역할

  • 프레이밍(Framing) : 물리 계층에서 전달된 비트 스트림을 프레임(Frame)으로 나누어 관리. 프레임은 송신자와 수신자 간에 데이터의 시작과 끝을 구분할 수 있도록 설계.
    : 프레임은 header, data, trailer로 구성. 헤더는 프레임의 시작 부분으로 제어 정보와 주소 정보를 포함. 송신자와 수신자의 MAC 주소와 프레임의 길이 또는 타입 그리고 흐름 제어나 오류 제어에 필요한 정보를 포함.
    : data 부분에서는 전송하고자 하는 실제 데이터로 네트워크 계층의 데이터를 캡슐화한 형태이다. 보통 IP 패킷이 데이터 부분에 포함
    : 프레임의 끝 부분은 trailer로 주로 오류 검출을 위해 사용된다.
  • 주소 지정(Addressing) : 네트워크 계층의 IP 주소와는 별개로 데이터 링크 계층은 MAC 주소(Media Access Control Address)를 사용하여 장치 간 데이터를 전달. MAC 주소는 네트워크 장치에 고유하게 부여된 48비트 주소.
    : 생성된 프레임은 헤더에 송신자와 수신자의 MAC 주소를 가지고 있고 이는 물리 계층으로 전달되어 네트워크를 통해 전송되는데 이 때 스위치같은 장비를 통해 MAC 주소를 기반으로 프레임을 적절한 포트로 전달한다. 수신 장치는 자신과 일치하는 MAC 주소를 가진 프레임만 수신하고 헤더를 제거한 후, 데이터를 상위 계층으로 전달.
  • 오류 제어(Error Control) : 데이터 전송 중 발생할 수 있는 오류를 감지하고(패리티 검사, CRC) 수정합니다. 재전송 요청(Automatic Repeat Request, ARQ)을 통해 손상된 데이터를 복구
    : CRC는 Cyclic Redundancy Check로 데이터 전송 과정에서 발생할 수 있는 오류를 검출하기 위한 방법으로 데이터 링크 계층에서 주로 사용되며 수학적 연산을 이용하여 데이터의 무결성을 검증한다. 이는 데이터 프레임의 끝에 추가되는 트레일러 부분에 포함.
  • 흐름 제어(Flow Control) : 송신자의 데이터 전송 속도가 수신자의 처리 속도를 초과하지 않도록 데이터 흐름을 조절. ex) 슬라이딩 윈도우(Sliding Window)방식
  • 매체 접근 제어(Media Access Control) : 여러 장치가 동시에 데이터를 전송하려고 시도할 수 있는 공유 매체에서 데이터 충돌을 방지하고, 데이터를 언제 전송할지 결정.
    ex) CSMA/CD - 이더넷에서 충돌이 발생하면 재전송을 시도. CSMA/CA - 무선 네트워크에서 충돌을 미리 방지. Token Passing - 토큰을 사용하여 매체 접근 권한을 제어.
  • 물리적 링크 관리 : 물리 계층과 상호작용하며 링크 연결 상태를 유지하거나 중단
    데이터 링크 계층의 두 하위 계층
    MAC 계층(Media Access Control Layer) : 물리적 전송 매체에 대한 접근을 제어한다. 프레임의 생성과 전송, MAC 주소를 이용한 데이터 전달을 담당.
    LLC 계층(Logical Link Control Layer) : 링크(송신자와 수신자 간의 연결)의 논리적 관리(설정, 유지, 종료)와 다중 프로토콜의 지원(여러 프로토콜이 동작하도록 구분 및 처리 - 프로토콜 식별자를 사용하여 어떤 상위 계층 프로토콜인지 명확히 구분)을 담당. 오류 제어와 흐름 제어 기능을 포함하며, 네트워크 계층과 데이터 링크 계층 간의 인터페이스 역할을 한다.
    주요 프로토콜
    Ethernet : 유선 LAN 환경에서 사용되며, CSMA/CD 방식을 사용하여 충돌을 관리
    Wi-Fi(IEEE 802..11) : 무선 LAN 환경에서 사용되며, CSMA/CA 방식을 사용하여 충돌을 방지.
    PPP(Point-to-Point Protocol) : 두 장치 간의 점대점 연결을 지원하는 프로토콜로, 다이얼업 인터넷 연결 등에 사용.
    HDLC(High-Level Data Link control) : 비트 지향 데이터 링크 프로토콜로 주로 WAN 환경에서 사용
    Frame Relay : 고속 데이터 전송을 위해 설계된 프로토콜로 기업 네트워크에서 사용.
    장비
    스위치(Switch) : MAC 주소 기반으로 프레임을 전달. 장치 간 데이터 충돌을 줄이고 효율적인 데이터 전송을 보장.
    : 충돌 도메인이란 두 개 이상의 장치가 동시에 데이터를 전송하려고 할 때 충돌이 발생할 가능성이 있는 구역을 말한다.
    : 네트워크 세그먼트란 네트워크 물리적/논리적 구역으로 충돌 도메인이나 브로드캐스트 도메인을 나누기 위한 용어.
    : 스위치는 각 포트가 하나의 독립된 네트워크 세그먼트를 형성한다. 이를 통해 충돌 도메인을 분리시킨다. 왜냐하면 특정 MAC 주소끼리만 보내기 때문
    : 스위치는 하나의 포트로 데이터 프레임을 수신(장치 A가 장치 B에게 데이터 보냄) -> 스위치는 프레임의 송신자 MAC 주소를 확인하고, 해당 MAC 주소가 어느 포트에서 들어왔는지 기록. 프레임의 수신자 MAC 주소를 확인하여 MAC 주소 테이블에서 어느 포트로 데이터를 보낼지 결정. -> 수신자 MAC 주소가 MAC 주소 테이블에 있다면, 해당 포트로만 데이터를 전달. 모른다면 브로드캐스트(모든 포트로 데이터 전달)을 수행. -> 네트워크 사용 중 계속해서 MAC 주소 테이블을 학습하고 업데이트.
    브리지(Bridge) : 두 네트워크 세그먼트를 연결하여 데이터를 전달하며 MAC 주소를 기반으로 동작.
    : 브리지는 두 개의 네트워크 세그먼트를 연결하며, 각 세그먼트의 충돌 도메인을 분리. 데이터 프레임의 MAC 주소를 확인하여 어느 세그먼트로 데이터를 보낼지 결정.
    : 브리지는 하나의 세그먼트(세그먼트 A)에서 데이터 프레임을 수신. -> 프레임의 송신자 MAC 주소를 확인하여 MAC 주소 테이블에 추가. 수신자 MAC 주소를 확인하여, 목적지가 같은 세그먼트인지 다른 세그먼트인지 판단. -> 수신자 MAC 주소가 같은 세그먼트에 있다면 프레임 전달 안함. 다른 세그먼트에 있다면 해당 세그먼트로 프레임을 전달. 수신자 MAC 주소를 모를 경우, 브로드캐스트.
    발생 가능 문제점
    프레임 손실(Frame Loss) : 네트워크의 혼잡이나 물리적 문제로 인해 프레임 손실 가능
    충돌(Collision) : 여러 장치가 동시에 데이터를 전송하려고 하면 충돌 발생.
    프레임 충돌(Frame Duplication) : 동일한 프레임이 중복 전송되어 수신자에게 혼란 발생 가능
    오류(Error) : 전송 중 데이터가 손상되거나 잘못된 비트가 수신될 수 있다.
    동작 과정
    송신자는 상위 계층에서 받은 데이터를 프레임으로 캡슐화 -> MAC 주소를 확인하여 목적지 장치를 지정 -> 프레임은 물리 계층을 통해 전송 -> 수신자는 데이터를 수신하고 프레임에서 MAC 주소를 확인하여 본인에게 온 데이터인지 판단 -> 오류 검사를 수행한 뒤, 데이터가 손상되지 않았다면 상위 계층으로 전달.

네트워크 계층(Network Layer)

주요 기능
라우팅(Routing) : 데이터를 목적지까지 전달하기 위해 최적 경로를 결정. 라우터(Router)와 같은 장치가 라우팅 프로토콜을 사용해 경로를 선택.
패킷 전달(Packet Forwarding) : 데이터를 패킷(Packet) 단위로 나눠 전송. 각 패킷에는 출발지 IP 주소와 목적지 IP 주소가 포함. 패킷은 네트워크 경로를 따라 전달되며, 목적지에 도달하면 재조립된다.
논리적 주소 지정(Logical Addressing) : 네트워크 계층은 IP 주소를 사용하여 데이터의 출발지와 목적지를 식별. IP 주소는 네트워크 간 라우팅을 가능하게 하며, MAC 주소와는 다르게 논리적 구조를 가짐. ex) IPv4, IPv6
흐름 및 오류 제어 : 전송 중 손실되거나 손상된 패킷을 감지. 손상된 패킷이 발견되면 재전송을 요청하거나 상위 계층에 오류 정보를 전달.
프래그멘테이션(Fragmentation) 및 재조립(Reassembly) ; 큰 데이터는 네트워크 MTU(Maximum Transmission Unit) 보다 작아야 한다. 네트워크 계층은 데이터를 작은 패킷으로 분할하고 수신 측에서 이를 재조립한다.
다양한 네트워크 간 연결 : 이질적인 네트워크 환경(유선, 무선, 광섬유 등)을 통합적으로 연결. 게이트웨이(Gateway)를 통해 프로토콜이 다른 네트워크 간 데이터 전송을 지원.
프로토콜
IP(Internet Protocol)

  • IPv4 : 32비트 주소 체계 사용, 43억 개의 주소 지원. 네트워크과 호스트를 구분하는 서브넷 구조 사용.
  • IPv6 : 128비트 주소 체계를 사용하여 거의 무한한 주소 공간 제공. 더 간단한 헤더 구조와 내장된 보안 IPSec 지원
    ICMP (Internet Control Message Protocol) : 네트워크 계층에서 발생하는 오류나 상태 정보를 전달하는 데 사용.
    ARP (Address Resolution Protocol) : IP 주소를 MAC 주소로 변환하여 데이터 링크 계층에서 데이터 전달을 지원
    NAT (Network Address Translation) : 사설 네트워크의 IP 주소를 공인 IP 주소로 변환해 인터넷 통신이 가능하도록 함.
    OSPF (Open Shortest Path First) : 내부 라우팅 프로토콜로, 링크 상태 라우팅 알고리즘을 사용하여 최적 경로를 결정
    BGP (Border Gateway Protocol) : 외부 라우팅 프로토콜로 인터넷 상에서 자율 시스템(AS) 간 경로를 교환.
    장비
    라우터(Router) : 네트워크 계층에서 동작하며 데이터를 적절한 경로로 전달. 여러 네트워크를 연결하여 패킷의 최적 경로를 결정
    게이트웨이(Gateway) : 서로 다른 프로토콜이나 구조를 가진 네트워크를 연결. 데이터를 변환하여 이질적인 네트워크 간 통신을 가능하게 함.
    방화벽 (Firewall) : 네트워크 계층에서 패킷 필터링을 통해 보안을 제공. IP 주소, 포트, 프로토콜 등을 기준으로 데이터 접근을 제어.
    데이터 흐름 : 전송의 단계별 과정
    (1) 데이터 생성 : 응용 계층에서 사용자가 전송하려는 데이터를 생성 ex) www.example.com에 요청
    (2) 네트워크 계층으로 데이터 전달 : 데이터를 패킷으로 캡슐화. 여기서 IP 주소 추가. ex) 출발지 IP 주소(내 컴퓨터의 논리적 주소), 목적지 IP 주소(상대방 컴퓨터의 논리적 주소)
    (3) 라우터에서 경로 선택 : 라우터는 자신의 라우팅 테이블을 참조하여 패킷을 어디로 전달할지 결정. 라우팅 테이블에는 IP 주소 범위와 다음 홉(Next Hop) 정보가 저장되어 있음
    : 다음 홉(Next Hop)이란 패킷이 최종 목적지에 도달하기 전에 거쳐야 할 다음 라우터. 패킷은 한 번에 최종 목적지로 가는 것이 아니라, 중간에 여러 라우터를 거쳐서 전달. 라우터는 패킷을 받아서 목적지 IP 주소가 어디로 가야 하는지 판단한 후, 다음 라우터(다음 홉)로 패킷을 전달.
    (4) 패킷을 프레임으로 캡슐화 : 패킷은 데이터 링크 계층으로 전달되어 프레임으로 캡슐화되어 물리적 주소(Mac 주소)가 추가된다. 출발지 mac 주소는 데이터 전송 장치의 mac 주소이고 목적지 mac 주소는 패킷이 전달되어야 할 다음 장치의 mac 주소(다음 홉의 라우터 또는 최종 수신자)이다. IP 주소는 논리적 주소로 네트워크 계층에서 전 세계적으로 유일하게 사용되는 것이고 mac 주소는 물리적 주소로 데이터 링크 계층에서 같은 네트워크 내에서 사용된다.
    (5) 데이터 링크 계층에서 프레임 전달 : 데이터 링크 계층은 패킷을 프레임으로 캡슐화한 뒤, 물리 계층으로 전달하여 데이터를 전송. 프레임은 동일한 네트워크 세그먼트에서 MAC 주소를 이용해 전달.
    (1) 데이터 링크 계층에서 프레임 수신 : 수신 장치는 프레임의 목적지 MAC 주소를 확인하여 자신의 MAC 주소와 일치하면 프레임을 수신하고 패킷을 추출한다.
    (2) 네트워크 계층에서는 목적지 IP 주소를 확인하여 자신의 IP 주소와 일치하면 캡슐화를 제거하여 상위 계층으로 데이터를 전달한다.
    한계 및 보안
  • 네트워크 계층은 데이터 전다르이 신뢰성을 보장하지 않아서 이 부분은 전송 계층(TCP)가 담당
  • 네트워크 혼잡을 완전히 제어하지 못하며 혼잡은 하위 계층 및 전송 계층에서 처리
    : 네트워크 혼잡이란 동시에 많은 데이터가 전송되어 네트워크 자원이 부족하거나 과부하 상태에 빠지는 현상.

전송 계층(Transport Layer)

주요 역할
종단 간 통신(End-to-End Communication) : 출발지와 목적지의 프로세스(응용 프로그램) 간 데이터를 교환. 네트워크 계층이 장치 간 데이터를 전달하는 것과 달리, 전송 계층은 장치 내의 특정 프로세스 간 데이터를 전달. 프로세스는 포트 번호(Port Number)로 식별
데이터 분할(Segmentation) 및 재조립(Reassembly) : 전송 계층은 데이터를 세그먼트(Segment) 단위로 분할하여 전송하고, 수신 측에서 이를 다시 조립. 각 세그먼트는 고유 번호(Sequence Number)를 가지며 데이터의 순서를 유지하도록 보장.
신뢰성 보장(Reliability) : 데이터를 정확히 전달하기 위해 확인 응답(ACK, Acknowledgement)과 재전송을 사용. TCP(Transmission Control Protocol)가 이 기능을 수행.
흐름 제어(Flow Control) : 송신자가 데이터를 너무 빠르게 보내면 수신자가 처리하지 못해 데이터가 손실 될 수 있습니다. 전송 계층은 송신 속도를 조절하여 이러한 문제를 방지
오류 제어(Error Control) : 데이터 전송 중 손상된 세그먼트를 감지하고, 필요 시 재전송을 요청.
멀티플렉싱 및 디멀티플렉싱(Multiplexing/Demultiplexing) : 하나의 네트워크 연결에서 여러 프로세스의 데이터를 동시에 전송 / 수신된 데이터를 프로세스별로 분류하여 전달
주요 프로토콜
TCP(Transmission Control Protocol) :

  • 데이터가 손실되지 않고, 순서에 맞게 도착하도록 보장하여 신뢰성을 보장
  • 데이터 전송 전에 송신자와 수신자 간 연결을 설정(3-way handshake)하는 연결 지향(connection-oriented)
  • 데이터 손실 및 혼잡을 방지 - 흐름 제어 및 오류 제어
  • HTTP, FTP, SMTP
    UDP(User Datagram Protocol) :
  • 데이터 손실 가능성을 허용하지만, 빠른 전송을 보장
  • 별도의 연결 없이 데이터 전송
  • TCP보다 단순하여 전송 속도가 빠름
  • 실시간 스트리밍, VoIP, DNS
    SCTP(Stream Control Transmission Protocol)
  • TCP와 유사하지만 멀티스트리밍 및 멀티호밍을 지원.
  • 데이터 전송 중 경로를 동적으로 변경 가능
    동작 과정
    응용 계층에서 데이터를 생성 -> 전송 계층은 데이터를 작은 세그먼트 단위로 나눔. 각 세그먼트에 포트 번호와 시퀸스 번호를 추가. -> TCP 또는 UDP를 사용하여 데이터를 캡슐화 -> 캡슐화된 데이터를 네트워크 계층으로 전달(이후 네트워크 계층과 동일) -> 네트워크 계층에서 전송 계층으로 데이터 전달됨 -> 각 세그먼트의 시퀸스 번호를 확인하여 올바른 순서로 재조립 -> 손상된 세그먼트가 있다면 송신자에게 재전송 요청(TCP) -> 조립된 데이터를 응용 계층으로 전달

세션 계층(Session Layer)

주요 역할
세션 설정(Session Establishment) : 데이터 교환을 시작하기 위해 두 장치 간 세션을 설정. 인증과 권한 부여를 통해 통신을 허가할 수 있다. ex) 사용자 로그인 과정에서 서버와 클라이언트 간 세션이 설정.
세션 유지(Session Maintenance) : 세션을 지속적으로 관리하여 데이터가 올바르게 전송되도록 보장. 통신 중 연결 상태를 추적하며, 연결이 끊기지 않도록 관리.
세션 종료(Session Termination) : 데이터 교환이 완료되면 세션을 정상적으로 종료. 자원을 해제하여 네트워크 효율성을 높임.
동기화(Synchronization) : 데이터 전송 중 특정 체크포인트를 설정하여, 통신 중단 시 해당 지점부터 다시 시작 가능.
대화 제어(Dialog Control) : 양방향 통신 방식에서, 누가 언제 데이터를 전송할지 제어.
다중 세션 관리(Multiple Session Management) : 동시에 여러 세션을 처리하며 각 세션을 독립적으로 관리.
동작 과정
세션 설정 : 클라이언트가 특정 서비스에 접속 요청. 인증 및 권한 부여 과정을 통해 통신 허가. 세션 설정 후 동기화 포인트를 설정하여 데이터 교환 시작 준비
세션 유지 : 세션 계층은 통신 중에 상태 정보를 유지하여 오류나 연결 끊김을 감지. 연결이 중단되거나 데이터가 손실되었을 경우, 마지막 동기화 포인트부터 재전송.
세션 종료 : 세션 계층은 데이터 교환이 끝나면 종료 신호를 주고 받음. 사용된 자원을 반환하여 네트워크 효율성을 유지.

표현 계층(Presentation Layer)

주요 역할
데이터 변환(Translation) : 송신자와 수신자가 서로 다른 데이터 표현 방식을 사용할 경우, 이를 상호 변환하여 통신이 가능하도록 함. ex) UTF-8 -> ASCII
데이터 암호화 및 복호화(Encryption and Decryption) : 데이터를 안전하게 전송하기 위해 암호화를 수행하고 수신 측에서 데이터를 복호화. ex) HTTPS 통신에서 TLS/SSL을 통해 데이터 암호화 및 복호화
데이터 압축 및 해제(Compression and Decompression) : 데이터 크기를 줄여 전송 효율을 높이고 수신 측에서 이를 다시 원래 크기로 복원.
문자열 형식 변환 : 문자 인코딩 변환을 수행하여 텍스트 데이터가 올바르게 표현되도록 보장.
파일 형식 변환 : 파일 전송 중 특정 형식으로 데이터를 변환.
주요 프로토콜
TLS/SSL : 데이터를 암호화하여 보안을 보장 ex) HTTPS
JPEG, PNG : 이미지 데이터를 압축하거나 특정 형식으로 표현. 표현 계층에서 이미지 전송 시 변환 및 압축을 수행
GIF : 애니메이션 형식의 이미지를 압축 및 전송
MPEG : 비디오 데이터를 압축 및 전송
ASCII, UTF-8 : 문자열 데이터를 전송 시 특정 문자 인코딩 방식으로 변환
XML, JSON : 데이터를 구조화된 형식으로 표현.

응용 계층(Application Layer)

주요 역할
사용자 인터페이스 제공 : 사용자가 네트워크 서비스에 접근할 수 있도록 환경 제공
데이터 생성 및 처리 : 사용자가 요청한 데이터를 생성하거나, 네트워크를 통해 받은 데이터를 처리
응용 프로토콜 관리 : 특정 작업을 수행하는 응용 계층 프로토콜을 제공. ex) HTTP(웹 통신), FTP(파일 전송), SMTP(이메일 송신) 등
통신 요청 및 처리 : 네트워크에 연결된 다른 시스템과의 통신을 요청하거나 들어온 요청을 처리
데이터 형식화 및 변환 : 데이터를 특정 형식(JSON, XML)으로 변환하여 다른 시스템과 교환
주요 기능
리소스 공유 : 네트워크에 연결된 리소스에 접근할 수 있도록 지원 ex) 파일 서버에 연결하여 다운
통신 관리 : 데이터 교환을 위한 세션 설정 및 통신 흐름 관리 : 이메일 전송 시 SMTP를 통해 통신
네트워크 투명성 : 사용자가 네트워크의 세부 사항을 몰라도 서비스를 사용할 수 있도록 추상화 ex) 웹 브라우저는 사용자가 IP 주소 대신 도메인 이름을 입력하게 함
데이터 무결성 및 보안 : 데이터를 송수신할 때 암호화 및 인증을 통해 안전성을 보장 ex) HTTPS는 SSL/TLS로 데이터를 암호화하여 전송
주요 프로토콜
HTTP/HTTPS : 웹 서버와 클라이언트 간 데이터 교환.
HTTP : 텍스트 기반 프로토콜로 웹 브라우저에서 사용
HTTPS : HTTP에 SSL/TLS 암호화를 추가하여 보안을 강화
FTP(File Transfer Protocol) : 서버와 클라이언트 간 파일 전송
SMTP(Simple Mail Transfer Protocol) : 이메일 송신
DNS (Domain Name System) : 도메인 이름을 IP주로로 변환


OSI 7계층 모델을 Java와 Spring을 사용하는 신입 백엔드 개발자가 학습 및 실습 관점에서 이해할 수 있도록 설명하고, 실습할만한 예제를 계층별로 제안하겠습니다.


1. OSI 7계층 간단 정리

OSI 7계층은 네트워크 통신 과정을 7단계로 나눈 모델로, 데이터 전송과 관련된 모든 과정을 표준화한 것입니다.

계층역할
7. 응용 계층사용자가 직접 접하는 계층으로, 데이터 생성 및 네트워크 서비스 제공 (HTTP, FTP, SMTP).
6. 표현 계층데이터의 변환, 암호화, 압축 처리 (JSON, XML, TLS/SSL).
5. 세션 계층통신 세션을 설정, 유지, 종료 (세션 관리, 동기화, 체크포인트 설정).
4. 전송 계층데이터의 신뢰성 보장 (TCP, UDP). 데이터 분할 및 재조립, 흐름/오류 제어.
3. 네트워크 계층데이터를 목적지까지 전송하기 위한 경로 설정 및 논리적 주소(IP) 처리.
2. 데이터 링크 계층데이터 전송을 위한 물리적 주소(MAC) 기반 통신, 프레임화 처리.
1. 물리 계층전기 신호, 무선 신호 등 물리적 전송 매체를 통해 데이터 전송.

2. 신입 백엔드 개발자가 다루는 계층과 관련 실습

Java와 Spring 백엔드 개발자는 주로 7~5계층을 다룹니다. 실습은 각 계층에서 실제로 동작하는 코드를 작성하거나, 관련 프로세스를 이해하기 위한 작업으로 구성됩니다.


7. 응용 계층

역할: HTTP, FTP, SMTP 등 응용 프로토콜을 통해 사용자 요청 처리.

실습 주제

  1. REST API 구현:

    • Spring Boot로 간단한 REST API 서버 구축.
    • 예: 사용자 CRUD(Create, Read, Update, Delete) API 구현.
  2. HTTP 요청 처리:

    • Spring @RequestMapping@RestController를 활용해 클라이언트 요청 처리.
    • 예: 브라우저에서 /hello를 호출하면 "Hello World"를 반환.
  3. 파일 업로드/다운로드:

    • Spring을 사용하여 파일을 업로드/다운로드하는 API 구현.
    • 관련 프로토콜: HTTP, FTP.
  4. Postman으로 API 테스트:

    • Postman을 사용하여 HTTP 요청/응답을 확인하고 디버깅.

6. 표현 계층

역할: 데이터를 특정 형식(JSON, XML)으로 변환하거나, 암호화/복호화 처리.

실습 주제

  1. JSON 데이터 변환:

    • Spring Boot에서 Jackson을 사용하여 객체를 JSON으로 직렬화/역직렬화.
    • 예: Java 객체 → JSON 변환 및 클라이언트 응답 반환.
  2. 암호화/복호화:

    • Java javax.crypto 패키지를 사용하여 데이터를 AES 암호화/복호화.
    • 예: 사용자 비밀번호 암호화 저장.
  3. TLS/SSL 적용:

    • Spring Boot 애플리케이션에 HTTPS 설정.
    • Let's Encrypt를 사용해 SSL 인증서 적용.

5. 세션 계층

역할: 클라이언트와 서버 간 세션 관리(로그인, 인증, 상태 유지).

실습 주제

  1. Spring Session 관리:

    • Spring Boot에서 HttpSession을 사용하여 로그인 상태 유지 구현.
    • 예: 로그인 성공 시 세션 생성, 세션 만료 처리.
  2. JWT(Json Web Token):

    • 로그인 상태를 유지하지 않고, JWT 토큰으로 인증/인가 구현.
    • 예: 클라이언트가 JWT 토큰을 서버에 전달하여 인증.
  3. OAuth 2.0 인증 구현:

    • Spring Security와 OAuth 2.0을 활용해 소셜 로그인 구현.
    • 예: Google 로그인 연동.

4. 전송 계층

역할: 데이터를 패킷으로 분할(TCP)하거나 빠르게 전송(UDP).

실습 주제

  1. TCP 소켓 프로그래밍:

    • Java의 SocketServerSocket 클래스를 사용하여 간단한 채팅 애플리케이션 구현.
    • 예: 클라이언트-서버 모델로 메시지 주고받기.
  2. UDP 소켓 프로그래밍:

    • Java의 DatagramSocketDatagramPacket 클래스를 사용하여 UDP 전송 구현.
    • 예: 메시지를 전송하고 수신하는 비신뢰성 통신 구현.

3. 네트워크 계층

역할: 데이터를 목적지 IP 주소를 통해 전달.

실습 주제

  1. IP 주소 및 호스트 이름 확인:

    • Java의 InetAddress 클래스를 사용하여 도메인 이름 → IP 주소 변환.
    • 예: www.google.com의 IP 주소를 확인.
  2. Ping 구현:

    • ICMP 프로토콜은 Java로 직접 다루기 어렵지만, Runtime 클래스를 통해 시스템 명령으로 ping 테스트.

2. 데이터 링크 계층

역할: MAC 주소 기반 데이터 전송.

실습 주제

  1. MAC 주소 확인:
    • Java의 네이티브 API로는 어려우므로 OS 명령 호출(ifconfig, ipconfig)로 확인.
    • 예: 네트워크 인터페이스의 MAC 주소 출력.

1. 물리 계층

역할: 전기 신호, 무선 신호 등 물리적 데이터 전송.

실습 주제

  1. 물리적 네트워크 상태 확인:
    • Java로 물리적 신호를 직접 다루지는 않지만, OS 명령 호출로 상태 점검.
    • 예: 네트워크 케이블 연결 상태 확인.

3. 실습 계획 정리

OSI 계층실습 내용
응용 계층REST API 구현, 파일 업로드/다운로드, Postman으로 HTTP 테스트.
표현 계층JSON 변환, 데이터 암호화/복호화, HTTPS 설정.
세션 계층Spring 세션 관리, JWT 인증, OAuth 2.0 구현.
전송 계층TCP/UDP 소켓 프로그래밍으로 메시지 전송 구현.
네트워크 계층IP 주소 확인, Ping 명령 구현.
데이터 링크 계층MAC 주소 확인(OS 명령 호출).
물리 계층물리적 네트워크 상태 확인(OS 명령 호출).

4. 실습을 통해 얻는 것

  1. 실제 네트워크 통신 구조 이해:

    • OSI 7계층의 각 단계가 어떻게 작동하는지 실습을 통해 체득.
  2. Java/Spring과 네트워크 연동 경험:

    • 실무에서 자주 사용하는 기술(REST API, JWT, HTTPS 등)을 이해하고 구현.
  3. 트러블슈팅 능력 향상:

    • HTTP 요청/응답 처리, 인증, 데이터 전송 문제를 디버깅하며 문제 해결 능력 강화.
  4. 프로토콜 이해:

    • HTTP, TLS, TCP/UDP와 같은 주요 프로토콜의 동작 원리 학습.

결론

신입 Java/Spring 백엔드 개발자는 주로 응용 계층, 표현 계층, 세션 계층에서 실습할 수 있는 부분이 많습니다. REST API 구현, JWT 인증, JSON 변환, HTTPS 설정과 같은 실습을 통해 OSI 7계층 모델을 실무적으로 이해하고, 개발 역량을 키울 수 있습니다.

0개의 댓글