컴퓨터 네트워크 - Network 계층

3 분 소요


K-MOOC에서 부산대학교 유영환 교수님의 “컴퓨터 네트워킹” 강의를 수강하며 적은 노트


Overview of Network Layer

네트워크 계층 프로토콜

  • 원격에 있는 호스트를 각 호스트에게 부여된 IP 주소로 구별하게 해 줌
  • 트랜스포트 레이어에서 내려온 TCP, UDP 세그먼트를 네트워크 계층의 IP 프로토콜에 맞는 형태로 바꾸어 전달
  • datagram: 세그먼트에 IP 프로토콜 헤더 정보를 앞에 더해(encapsulate) 만듦
  • 라우터: 물리 계층, 데이터 링크 계층, 네트워크 계층만 가짐
    • IP datagram에 있는 헤더의 주소를 보고 어느 길로 보낼지 결정

라우팅과 포워딩

  • 라우팅(routing): 출발지부터 목적지까지의 길을 설정
  • 포워딩(Forwarding): 결정되어 있는 라우터를 따라서 패킷을 옮겨 주는 역할
  • 라우팅 알고리즘: 포워딩 테이블을 만들 때 필요한 정보를 제공하는 알고리즘
  • 전통적인 네트워크(traditional IP network): 각각 라우터, 스위치에서 포워딩, 라우팅이 다 이루어짐
  • SDN(software defined network): 라우팅 알고리즘은 네트워크를 제어하는 역할(control plane), 포워딩은 데이터 영역(data plane)으로 분리
    • 중앙 집중된 시스템이 전체 네트워크 정보를 모아 길을 설정, 라우터는 포워딩 테이블 따라 데이터 포워딩




Internet Protocol Overview

IP 프로토콜이 제공하는 정보

  • 주소, 주소가 부여되는 형태, 어떤 형식으로 전체 네트워크가 구성되는가

ICMP(Internet Control Message Protocol): IP에서 에러 발생 시 알려주는 프로토콜

IP 데이터그램의 헤더: TCP와 유사하게 기본적인 헤더 20 byte

  • 4 byte
    • version: 4 bit, 인터넷 프로토콜 버전. 4 또는 6
    • header length: TCP와 같이 옵션으로 헤더가 더 붙을 수 있기 때문에 헤더 길이
    • type of service: 데이터의 종류 구분(멀티미디어인지 등), 잘 안 씀
    • length: 16 bit, 전체 데이터그램 길이
  • 4 byte, fragmentation & reassembly: 실제 네트워크들이 전달할 수 있는 데이터의 사이즈로, 네트워크마다 패킷의 사이즈에 제약이 서로 다른 물리적인 차이를 없애 주기 위함. ex) source: 4000 byte이었는데 1500byte 단위인 네트워크로 들어가면 3개로 나누어 줘야 함
    • 16-bit identifier: 16 bit
      • fragmentation ID: 하나의 데이터그램에서 분할된 모든 데이터그램에 동일한 ID를 부여
    • flag: 3 bit, 1번 비트 사용 X, 2번 비트: 데이터그램을 자르면 안 되는 경우, 3번 비트: more fragment, 즉 뒤에 분할된 애가 있을 경우
    • fragment offset: 하나의 데이터그램에서 어느 위치인지
      • 13 bit로 16 bit의 데이터를 나타내기 위해 8로 나눔
    • ex) 4000 byte, offset: 0가 1500 byte로 쪼개짐
      • ID: 모두 같게 x, x, x
      • length가 1500 byte가 최대이므로 헤더 20 byte + 데이터 1480 byte
      • 1번 offset: 0, 2번 offset: 1480/8=185, 3번 offset: 2960/8=370
    • flag가 있어 마지막 분할된 데이터그램까지 다 모아서 조립 가능
  • 4 byte
    • TTL(Time To Live): 목적지에 도착할 때까지 거칠 수 있는 최대 hop 수
      • 네트워크에 오래 돌아다니면 좀비가 되어 목적지 도달은 안 하고 계속 돌아다님
    • upper layer: 트랜스포트 계층의 프로토콜이 TCP인지, UDP인지 구분
    • header checksum: 16 bit
      • CRC(Cyclical Redundancy Check)로 헤더만 체크




IP Addressing

IP address: IPv4의 경우 길이는 32 bit

  • 실제 주소는 32 bit 0과 1이지만 8 bit 단위로 끊어 십진수로 변환 뒤 ‘.’을 찍어 표현 ex) 223.1.1.1
  • 라우터: 복수 개의 인터페이스 가짐, 각 인터페이스에 서로 다른 주소 가짐
  • 8 bit 단위로 계층화 된 주소
  • ICANN(Internet Corporation for Assigned Names and Numbers): 세계 IP 주소 관리 기관
    • 전세계 주소 부여, DNS(Domain Name System) 관리
    • class A, B, C: 컴퓨터에 부여하는 인터넷 주소
      • 공통
        • 네트워크 ID: 해당 네트워크 집단 전체, 호스트 집단 전체를 대표하는 ID
        • 호스트 ID: 네트워크 집단의 관리자가 각각의 컴퓨터들에게 할당한 ID
      • 앞 3 bit로 클래스 구분

          class A class B class C
        첫 세 비트 0 10 110
        네트워크 ID / 호스트 ID 8 bit / 24 bit 16 bit / 16 bit 24 bit / 8 bit
        첫 byte 0~127 128~191 192~223
        가질 수 있는 호스트 수 2^24 2^16 2^8
      • subnet: 기관이 class B 주소를 받았지만, 65,000개의 node들을 하나의 네트워크로 관리하는 것은 비효율적이기에 ICANN에서 정한 주소 체계에 맞지는 않지만 이것을 임의로 논리적으로 나누어 각 별도의 네트워크인 것처럼 처리
        • ex) class B 주소: 호스트 ID인 16 bit 중 8 bit는 서브넷 네트워크 ID로 사용
      • CIDR(Classless Inter-Domain Routing, supernet): class A와 B는 너무 적은 수라 다 소진되었는데 class C는 너무 작은 네트워크. 그래서 연속된 class C 네트워크들을 한 기관에 할당해줌.
        • ex) class C 주소 4개를 받아 서브넷 4개와 같이 동작
  • class D, E: 실제로 네트워크에 할당되는 주소 X, anycast 지원




Datagram Forwarding

IP 네트워크: 먼저 연결을 설립하는 TCP와 달리 네트워크 레이어에서 call setup 같은 것이 일어나지 않음, 중간 라우터가 하나의 데이터그램을 받으면 주소를 보고 다음 길을 결정

destination-based forwarding: 기존 IPv4 방식, 목적지 주소를 보고 전송

  • 포워딩 테이블: 네트워크 ID는 너무 길기 때문에 destination address를 range로 두어 search 시간 줄임
  • longest prefix matching: 후보들 중 목적지 주소가 가장 길게 일치하는 것이 목적지까지 도달하는 데에 가장 효율적인 길일 확률이 높기 때문에 그쪽으로 찾아 보냄

generalized forwarding: SDN(Software Defined Network)에서 나옴, 목적지 주소와 다른 정책들, 네트워크 상황들을 다 고려하여 전송



태그:

카테고리:

업데이트:

댓글남기기