네트워크

[네트워크] 계층 정리

recordari 2025. 5. 9. 16:39

1. Network Core (네트워크 코어)

메시지를 전달하는 두 가지 방식

  • Circuit Switching (회선 교환)
    데이터를 주고받기 전에 송신자와 수신자 간 **고정된 경로(회선)**를 미리 연결하여 사용하는 방식
    → 통신 중에 전체 대역폭을 독점. (전화망 시스템이 대표 예)
  • Packet Switching (패킷 교환)
    데이터를 작은 단위(패킷)로 쪼개어, 각각 최적 경로로 독립적으로 전송하는 방식
    → 패킷은 목적지에 도착한 후 다시 재조합. (인터넷이 사용하는 방식)

2. Application Layer (응용 계층)

사용자가 사용하는 앱과 네트워크 간 연결 담당

 

주요 프로토콜

  • HTTP:
    • 웹 브라우저가 사용하는 프로토콜
    • 요청(Request)과 응답(Response)이 한 번 발생할 때마다 TCP 연결을 새로 만들거나 재사용
  • TCP 소켓/UDP 소켓:
    • 어플리케이션이 통신하려면 먼저 소켓(socket)을 만들어야 한다
    • 소켓 생성 시 TCP(신뢰성) 또는 UDP(속도 중시)를 선택
  • HTTP는 기본적으로 상태를 저장하지 않는다 (Stateless):
    • 서버는 이전 요청에 대한 정보를 기억하지 않는다
    • 따라서 매번 요청마다 새로 데이터를 보내야 한다
  • DNS (Domain Name System)
    • 사람이 읽을 수 있는 도메인 이름을 IP 주소로 변환

3. Transport Layer (전송 계층)

애플리케이션 간 데이터 전송의 신뢰성/효율성 확보

 

프로토콜

  • TCP (Transmission Control Protocol)
    • 연결 지향형, 신뢰성 높은 데이터 전송 보장
    • 세그먼트(Segment): 데이터를 헤더+페이로드 형태로 감싸서 전송
    주요 기능:
    • 3-Way Handshake: 세 단계로 통신 연결 수립.
    • Acknowledgment & Retransmission: 오류 발생 시 자동 재전송 (Go-Back-N, Selective Repeat)
    • Flow Control: 수신자의 처리 속도에 맞춰 데이터 흐름 제어 (Sliding Window 사용)
    • Congestion Control: 네트워크 혼잡을 감지하고 전송 속도 조절 (ex: Slow Start, AIMD)
  • UDP (User Datagram Protocol)
    • 비연결형, 신뢰성 없는 빠른 전송. (게임, 스트리밍 등에 사용)
  • 포트 번호 기반 Multiplexing/Demultiplexing
    • 여러 애플리케이션의 데이터 흐름을 포트 번호로 구분하여 전송하거나 수신
    • Multiplexing: 여러 앱의 데이터를 포트 번호로 나누어 보내기
    • Demultiplexing: 받은 데이터를 포트 번호를 기준으로 다시 해당 앱으로 분배하기

4. Network Layer (네트워크 계층)

데이터를 최적 경로를 통해 목적지까지 전달 ➡️ tcp 세그먼트 + ip 패킷

 

주요 프로토콜 및 기능

  • IP (Internet Protocol)
    • IP 패킷: TCP 세그먼트를 IP 헤더로 감싼 형태로 전송
    • IPv4/IPv6: 주소 공간 부족 문제 해결을 위해 IPv6 사용
  • Routing (라우팅)
    • 패킷이 갈 수 있는 최적 경로 결정
    • (OSPF, BGP 등 라우팅 프로토콜 사용)
  • Forwarding (포워딩)
    • 패킷을 다음 라우터나 목적지로 실제 전송하는 작업
  • DHCP (Dynamic Host Configuration Protocol)
    • 네트워크 접속 시 자동으로 IP 주소 할당받음
  • ARP (Address Resolution Protocol)
    • IP 주소를 기반으로 실제 통신에 필요한 MAC 주소를 얻는 프로토콜
    • (IP는 알지만 MAC 주소를 모를 때 ARP 요청/응답으로 확인 후 통신)
  • ICMP (Internet Control Message Protocol)
    • 오류 알림 및 상태 진단용. (ex: ping, traceroute)
  • IP Fragmentation
    • MTU(Maximum Transmission Unit)를 초과하는 큰 패킷은 여러 조각으로 나누어 전송
  • NAT (Network Address Translation)
    • 사설 IP와 공인 IP를 변환해 외부와 통신 가능하게 함

DHVP로 IP주소 받음 → IP 패킷 만들어서 전송 → 패킷이 크면 fragmentation


5. Ethernet Layer (데이터 링크 계층)

같은 네트워크(LAN) 내 장치 간 데이터 전송

 

구성 요소

  • MAC 주소 기반 통신
    • MAC 주소를 사용하여 장치 식별
  • Ethernet Frame (이더넷 프레임)
    • 데이터를 패킹하여 전송하는 단위 (헤더+데이터)
  • 스위칭 (Switch)
    • MAC 주소 테이블을 기반으로 목적지 장비로 빠르게 데이터 전송
  • CSMA/CD (Carrier Sense Multiple Access/Collision Detection)
    • 충돌 발생 시 재전송을 통해 네트워크 혼잡 조절

6. Network Interface Layer (네트워크 인터페이스 계층)

실제 물리적인 전송 계층(실제 전기 신호/무선 신호를 다루는 최하위 계층)

 

구성 요소

  • NIC (Network Interface Card): 장치가 네트워크에 접속할 수 있도록 함
  • 전송 매체: 케이블(UTP, 광섬유) 또는 무선(Wi-Fi, Bluetooth)

JNI (Java Native Interface)

  • 자바에서 C, C++로 작성된 네이티브 네트워크 드라이버를 호출할 때 사용
  • (ex: 고성능 서버에서 TCP/UDP 소켓 커널 호출 최적화 시 사용)

네트워크 흐름 예시

  1. 앱이 HTTP 요청 생성 → TCP 소켓 오픈
  2. TCP 3-Way Handshake로 연결 수립
  3. IP 주소를 모르면 DNS 질의
  4. 목적지 IP 주소를 얻음
  5. IP 주소를 MAC으로 변환하려고 ARP 요청
  6. MAC 주소 얻으면, Ethernet Frame 생성해서 NIC로 전송
  7. NIC가 프레임을 물리적 신호로 변환해 전송