Skip to content

Latest commit

 

History

History
356 lines (284 loc) · 17.8 KB

L3네트워크.md

File metadata and controls

356 lines (284 loc) · 17.8 KB

네트워크 계층의 역할

image.png

image.png

  • 1계층 (물리 계층), 2계층(데이터 링크 계층)은 물리적 연결을 통해 이루어짐
  • 인터넷을 사용하기 위해 물리적 연결을 하면 지구는 전선으로 뒤덮임
  • 아하! 네트워크 통신으로 해결!
💡 **네트워크 계층 : 서로 다른 네트워크끼리 정보를 주고받을 수 있도록 경로를 정해주고 패킷을 관리 및 전달하는 역할⇒ LAN + WAN 연결 -** 주소 : IP (Internet Protocol address) - 다른 ip 주소로 보내는 경로 : **Routing ⇒ Router (Node)**
  • Alice (Source Host) → Router1 → Switch → Router2 → … → RouterN → Bob (Destination Host)
    1. Alice는 전송 계층 (4계층)이 준 패킷을 datagram에 Encapsulation 해서 데이터 링크 계층에 전달
    2. Bob은 datagram을 Decapsulation 해서 패킷 추출 후 전송 계층에 전달
    3. 라우터는 무슨 역할? ⇒ 패킷을 하나의 네트워크 to 다른 네트워크 전달
  • Packetizing / Packet Switching

    Packetizing 패킷화

    • 개념
    • 캡슐화와 비슷. 우체국 같이 안전한 운반을 위한 개념
    • 과정
    • 출발지 host : payload를 상위 계층으로부터 받아서 헤더파일 추가. 그 후 데이터 링크 계층에 전달
    • 목적지 host : 네트워크 계층 패킷을 데이터 링크 계층에서 받아 Decapsulation 진행 및 payload에 상응하는 상위계층 프로토콜에 전달

    Packet Switching 패킷 스위칭

    • 개념
    • 네트워크에서 패킷을 독립적으로 전송, 목적지에서 재조립
    • 즉, 패킷을 어떻게 주고 받을지에 대한 개념
    • 종류
      • 데이터 그램 방식 : Connectionless 비연결지향 - IP 기반의 네트워크 사용 - 각각의 패킷을 서로 연관이 없는 것처럼 독립적으로 다룸
      • 도착 순서 보장 X → 지연 가능/ 추적 어려움
      • 오류 회복 ⬆️ (해당 패킷만 재전송), 병목현상 감소
      • 가상 회선 방식 : Connection-oriented service 연결 지향 - datagram 전송 전, 발송 / 수신 path 지정 (가상 회선)
      • 모든 datagran아 같은 길을 가게됨 (순서 유지)
  • 네트워크층의 성능
    • 지연 Delay
      • Transmition Delay : 전송 속도 제한으로 인한 지연
      • Propagation Delay : 전송 매체에 의한 지연
      • Processing Delay ; 패킷 받아서 헤더 제거, 에러 검출, output 포트에 전달하는 과정으로 인한 지연
      • Queing Delay : 패킷이 input/output 포트에서 발생하는 대기시간으로 인한 지연
    • 처리량 Throughput image.png 가장 처리량이 적은 구간 = 처리량, 600kbps로 데이터가 와도 한 곳(라우터)의 처리량이 200kbps면 처리량 = 200kbps란 의미
    • 패킷 손실 Packet Loss
      • 전송 과정 중 상실되는 패킷의 개수
    • 혼잡 제어 Congestion Control image.png 성능을 향상하기 위한 메커니즘 → 부하에 따른 지연 + 처리량
  • OSI 계층 별 데이터 유통 단위
    OSI 계층 유통 데이터 단위
    L5 ~ L7 응용(Application) 계층 Socket + Stream
    L4 전송 계층 Segment
    L3 네트워크(인터넷) 계층 Packet
    L2 데이터 링크 계층 Frame
    L1 물리 계층 전기 신호

IP - Best Effort, No guarantee

image.png

cmd에서 ipconfig하면 IP 주소들

  • IPv4, IPv6, 서브넷 마스크, 게이트웨이
  • IP = Internet Protocol address → [주소] + [프로토콜]
  • TCP UDP 등 여타 다른 프로토콜과 같이 헤더를 추가
  • IP 헤더가 붙으면 3계층에선 IP 패킷, 2계층에선 프레임
  • IP 헤더 필드 설명 image.png
    • Version : IPv4, IPv6 등 버전 관리
    • Header Length (HLEN) : 헤더 길이
    • ToS : 요구되는 서비스 품질
    • Total Packet Length : IP 헤더 및 데이터 포함 IP 패킷 전체의 길이를 바이트 단위로 길이 표시 → MTU 관련
    • IP 단편화를 위한 필드
      • Fagment Identifier : 동일 datagram에 속한 fragment인지 확인
      • Fragment Flag : Fragment 특성을 나타내기 위한 필드
      • Fragment Offset : 조각나기 전 원래 datagram 위치
    • TTL Time To Live : IP 패킷 수명
    • Protocol Identifier : 상위계층의 어떤 프로토콜이 포함되었는지 나타나는 필드
    • Source/Destination IP Address : 송신처, 수신처 IP 주소
    • IP 헤더 옵션, Padding : 가변 길이, IP 헤더 옵션 사용 시 32비트를 맞춰주기 위해 Padding 존재

IPv4

  • 32비트 단위의 고유 주소 (2^32, 약 43억개) ⇒ 인터넷의 host, router의 연결 정의
  • IPv4 주소는 계층적 (Hierachy), 2개 부분으로 나뉨
    • prefix : 네트워크 할당 받은 기관 / 조직의 주소값, 고정적 or 가변적
      • 고정 prefix : classful addressing / 가변 prefix : classless addressing
    • suffix : 기관 / 조직 안에서의 세부 주소값
  • Classful Addressing (Class A ~ Class E)
    • 인터넷 초기에는 3가지 크기(n = 8, 16, 24)로 고정된 prefix로 설계
    • 요즘에는 사용 X → 비효율적인 주소 사용 및 주소 고갈 문제
    • Class 자세한 설명 image.png
      • 0.0.0.0 ~ 127.255.255.255 / A 클래스 (0 to 127)
      • 128.0.0.0 ~ 191.255.255.255 / B 클래스 (128 to 191)
      • 192.0.0.0 ~ 223.255.255.255 / C 클래스 (191 to 223)
      • 224.0.0.0 ~ 239.255.255.255 / D 클래스 (224 to 239), 멀티캐스트 용도로 사용
      • 240.0.0.0 ~ 255.255.255.255 / E 클래스 (240 to 255), 연구 및 개발 용도로 예약된 클래스
  • Classless Addressing - class addressing 예시
    • IP 주소 부족으로 길이를 늘려야 했음 → IP 패킷의 포맷 변화
    • IPv6 개발, 기존 IPv4를 재사용하기 위한 classless addressing 등장
    • 가변적인 block 길이 사용, 어떤 class에도 속하지 않음
    • prefix도 0~32 사이의 길이값
  • **서브넷 / 서브넷 마스크 Subnet, Subnet Mask (CIDR)** image.png
    • 한 Network를 분할해서 하위 Network (Sub-Net) 생성

    • 사용 이유

      • 많은 수의 컴퓨터가 한번에 브로드캐스트 패킷을 전송하면 성능에 문제 야기
      • IP를 너무 적게 사용해도 낭비 발생
    • 어떻게 쓰나요 ? ➡ 비트 연산 (AND)

    • ex) C 클래스의 IP 주소를 생각 C 클래스 = 앞의 24비트 = Network ID, 뒤의 8비트 + Host ID 192.168.1.0**/24**, 기본 서브넷 마스크 = 255.255.255.0이 됨 image.png

      - 2진수로 변환 후 AND 연산 진행하면 Network ID만 도출 가능
      - /24의 의미 : 해당 IP의 서브넷 마스크의 왼쪽부터 24개가 1이란 의미
      
      <aside>
      💡 Subnetmask의 비트를 1씩 증가시키면?
      → 할당 가능 네트워크 2배 증가, 호스트 수 2배 감소
      → 서브네팅
      
      </aside>
      

IPv6

image.png

  • IPv4의 주소 개수가 부족해서 등장, 32비트 → 128비트로 주소 체계 변경

  • 구조

    • 콜론 기준으로 8자리로 구분
    • 한 자리 당 0000~ffff 까지 16진수 사용 가능
  • 기본적으로 서브넷팅을 사용해 주어진 주소 공간 할당에 맞게 네트워크 크기 조정 (가변적)

  • IPv4 에서 개선된 점

    • 패킷 단편화 X, 효율적인 라우팅
    • QoS 성능 개선
    • NAT 삭제, 주소 공간 확장 (32 → 128)
    • IPv4 보다 가벼운 헤더
  • NAT?, Network Address Translation

    💡 프라이빗 IP를 공용 IP 주소로 변환해 하나의 공용 IP 주소로 여러 장치가 인터넷에 연결될 수 있게 하는 기술 ⇒ VPN 사용 가능
    • 주소 고갈 문제 해결을 위해 나온 기술 (공인 IP 주소 부족)
    • 네트워크 보안 강화 → 내부 네트워크의 IP 주소 은닉, 방화벽
    • NAT는 라우터에서 수행됨
  • Broadcast IP 주소 브로드캐스트 IP 주소 = 호스트 ID 값이 255인 것 ex) 192.168.0.255 ⇒ 192.168.0 이라는 ID를 갖는 네트워크에 속한 모든 호스트들에게 해당 패킷을 모두 전송해주세요 : Broadcast

    • 호스트 ID 영역 (192.168.0.255의 255) 이 8비트를 가질 때, 255는 사용 불가능(브로드캐스트)
    • 이런 종류의 ID ⇒ 0, 1, 255

Protocol 종류

ICMP (Control Message)

💡 **Internet Control Message Protocol** IP의 부족한 오류 제어를 보완하기 위해 나온 프로토콜 ⇒ 주 목적은 통신 중 오류 보고
  • 데이터 수송 역할 X, IP 프로토콜을 이용해 ICMP 메시지만 전달
  • ICMP header

image.png

  • 방법
    • Tracert / Traceroute를 활용하는 방법 (Trace management utility) - 상세함 목적지 까지의 라우팅 경로 추적 | | Tracert | Traceroute | | --- | --- | --- | | 운영체제 | Windows | Unix, Linux, MacOS | | 프로토콜 | ICMP | 송신 : UDP, 수신 : ICMP | | 기능 | 8가지 옵션 제공 | 20가지 이상 옵션 제공 | - Time Exceeded 확인 가능 - IP 헤더의 TTL을 사용, 라우터를 지날 때마다 1씩 감소 - 목적지 도달 전 TTL이 0이되면 시간 초과 전송, 해당 패킷 폐기 - 이점 : 경로 추적 가능, 라우터 지연 시간 파악 후 경로 문제 식별 가능
    • Ping - 간단함
      • Echo Request, Echo Reply 사용
      • ICMP Echo Request를 대상에 전송, 상대방이 응답하는 Echo Reply를 수신해 통신상태 체크
  • DDoS, Flood, Death of Ping 관련 이야기
    • ICMP는 메시지 전송하는 데 연결이 설정되지 않아도 괜찮음 → 비상 사태
    • 핑 명령 전송 → ICMP 에코 요청 → ICMP 에코 응답 → 응답 수신까지의 시간 측정 및 보고
    • 해커가 공격 대상에게 대량의 데이터를 쏟아붓는 것이 DDoS
      • 연결 안해도 핑만 던져줘도 되는 ICMP를 활용한 DDoS 공격 잦음
    • 핑 플러딩 : 공격자는 대량의 ICMP 에코 요청으로 폭주
    • 죽음의 핑 : 훨씬 정교한 공격 방식, 조립 전엔 작지만 조립하면 훨씬 커지는 ICMP 패킷 전송

IGMP (Group Management)

💡 **Internet Group Management Protocol** 멀티 캐스팅을 위한 프로토콜, 그룹 생성/제거, 호스트 그룹 참가/탈퇴 관리
  • IGMP header image.png
    • 크게 복잡하지 않음 ⇒ IGMP 메시지는 IP 데이터그램으로 전송
  • 작동 방식 image.png
    • 멀티 캐스팅 : 특정 그룹의 모든 호스트에 메시지 전송
    • 멀티 캐스팅 라우팅 : 멀티 캐스팅을 위한 라우팅 알고리즘
    • 여러 호스트에게 채널 전송 → IPTV 서비스에 많이 사용
  • 취약점 : 별도 인증 과정 X ⇒ IGMP 위조로 가입해 IPTV 서비스의 프리미엄 채널 가로채기, ddoS등 가능

ARP, RARP, DHCP

ARP

  • 논리적 IP 주소를 물리적 MAC(Media Access Control)주소로 변환하는 프로토콜
    • IP주소는 알지만 MAC 주소를 모를 때 → 네트워크에 ARP 요청 브로드캐스트
    • 해당 IP 주소를 가진 장치가 자신의 MAC 주소를 포함한 ARP 응답을 유니캐스트로 전송
  • 자주 사용되는 IP와 MAC 주소 간 매핑을 캐싱해서 성능을 개선

RARP

  • ARP의 반대 작업 수행. MAC 주소는 알고 IP는 모를 때 진행되는 프로토콜
  • 네트워크 부팅 과정에서 사용, IP 주소 할당을 위해 RARP 요청 진행
  • 현대에는 사용되지 않음. 대신 DHCP (Dynamic Host Configuration Protocol) 사용

DHCP : 동적 주소 할당 프로토콜, Dynamic Host Configuration Protocol

  • client - server 패러다임을 이용, 자동으로 network 관련 정보 구성 네트워크에서 IP 주소를 자동 할당 및 관리하는 프로토콜 ⇒ ! ! ! 서버 서버 서버 서버 서버 ! ! !

  • IP address의 부족한 문제 해결 가능

    • 필요 시 IP 주소 할당, 사용이 끝나면 다시 반납 후 적은 IP 주소를 이용해 여러개의 host 사용 가능
    • 말이 어렵지만 카페의 wifi 연결이 이런 방식
  • 세부 정보

    💡

    모든 디바이스는 TCP 기반 네트워크에서 네트워크 및 해당 리소스에 액세스 하는 고유 유니캐스트 IP 주소 필요

    • DHCP (X) : 새 컴퓨터, 컴퓨터의 위치 이동(IP 변경) 시 IP 주소를 수동으로 구성 이전에 부여된 IP 주소 회수까지 수동으로 진행
    • DHCP (O) : 위의 모든 프로세스를 중앙 집권화 ⇒ IP 주소 풀 유지 및 관리, Client의 요구에 맞게 IP 자동 할당 (임대 형식)
    • 이점
      • 신뢰할 수 있는 IP 주소 구성
        • 수동 IP 주소 구성은 Huuuuman이 하기 때문에 오타 등의 실수가 빈번함
        • 자동 IP 주소 구성은 실수도 없고, 동시 할당 충돌도 해결
      • 네트워크 관리 감소
        • 중앙에서 관리 (TCP/IP 구성)
        • DHCP 옵션 사용 시 TCP/IP 구성 값의 전체 범위 지정 가능
    • DHCP 옵션 : IP 주소 정보
      • 게이트웨이 (로컬 네트워크와 인터넷 간의 데이터를 주고받는 기본 게이트웨이)
      • 서브넷 마스크
      • DNS 서버
    • 임대를 얼마나 하나요? ⇒ 일반적으로 24시간
      • 보안 문제가 당연히 있음
      • 인증 과정 X (지하철 와이파이에 인증 X)
        • 리소스 갈취
        • 악성 Client가 DHCP 리소스 소모
        • DNS 스푸핑

    [DHCP 헤더]

    image.png

    [작동 과정]

    image.png

    • Discover : IP Address 주실 분… → 서버 찾는 과정
    • Offer : 서버가 IP 제공
    • Request : 여러 서버에게 Offer를 받으면 가장 좋은 Offer를 준 서버에게 Request 보냄
    • Ack : 서버는 Ack 메시지를 보내 IP 유효 확인

라우팅

💡 **IP가 출발지에서 목적지까지 패킷을 전달하는 과정에서 패킷을 어디로 보낼지 결정하는 알고리즘 -** 정적 라우팅 알고리즘 : **현재 상태**에서 어떤 곳으로 패킷을 보내야 도달하는지? - 동적 라우팅 알고리즘 : **실시간**으로 라우터 상태 감지 후 경로 변경
  • 라우터 ⇒ 노드, 연결 ⇒ 간선이라 생각한 후 from 출발지 노드 to 목적지 노드 최단 경로 찾기

정적 라우팅 알고리즘

  • 네트워크 관리자가 수동으로 라우팅 테이블에 경로 정보를 설정하는 방식
  • 정적 ⇒ 변화 감지 X ⇒ 초기 설정으로 알고리즘 작동
  • 장점 : 단순함, 작은 네트워크에선 적합 (경로 변경 X, 예측 가능, 보안 강화)
  • 단점 : 수동 갱신이기 때문에 복잡하고 오류 발생 높음

동적 라우팅 알고리즘

image.png

  • 라우터들이 정보를 교환해 실시간으로 최적 경로 자동 계산 및 갱신
  • 동적 ⇒ 변화 감지 O ⇒ 매번 가장 효율적인 경로 설정 가능
  • 장점 : 최적 경로를 자동으로 갱신하기에 대규모 네트워크에 효율적
  • 단점 : 추가 프로세싱 및 라우팅 정보 교환 과정에서 대역폭 소모
  • 종류
    • 거리 벡터 라우팅 (Distance Vector Routing)
      • 각 라우터가 아웃 라우터로부터 정보를 받아 자신의 라우팅 테이블 업데이트
      • 라우팅 경로의 거리 + 방향 기준으로 경로 결정
      • ex) RIP (Routing Information Protocol) : 가장 오래된 거리 벡터 프로토콜
      • 장점 : 구현 간단, 소규모 네트워크에 적합
      • 단점 : 확장성 떨어짐, 네트워크 변경에 반응속도 느림
      • Count to Infinity 같은 루프 문제 발생 가능
    • 링크 상태 라우팅 (Dijkstra)
      • 각 라우터가 네트워크 전체의 링크 상태 정보 수집, 최적 경로 계산
      • ex) OSRF, IS-IS
      • 장점 : 정확하고 빠름
      • 단점 : 복잡하고 구현 어려움, 초기 설정 비용 매우 높음

image.png

image.png

출처

https://velog.io/@wilko97/Chapter-18.-Introduction-to-Network-Layer#181-network-layer-sevices

https://m.blog.naver.com/errorsoft666/221720555130

https://leejoongwon.tistory.com/37

https://sol-cito.github.io/technology-network/2021/03/02/Tech-Blogging-Network-Network-Layer

https://be-developer.tistory.com/52

https://velog.io/@ssssyeon/데통네-Chapter-09.-네트워크-계층

OSI의 네트워크(L3) 계층에 대해 배워보자

ICMP - cloudflare

ICMP - nordVPN