[Computer Network] Network Layer

Y_Y·2022년 11월 25일
0

Computer-Network

목록 보기
6/6

Network Layer

Network Layer Function

  • Ip 주소를 기반으로 데이터 전송

Forwarding vs Routing

  • Forwarding : 패킷을 라우터의 입력에서 출력으로 옮기는 것
  • Routing : 출발지부터 목적지까지 패킷이 거치는 전체경로를 결정하는 것

연결설정

  • 데이타그램을 전송하기 전에 송수신 호스트와 라우터가 가상 연결을 설정함 (가상회선)

  • 네트워크와 트랜스포트 계층 연결 서비스 구분

    • Network : 2개의 호스트간 연결
    • Transport : 2개의 프로세스간 연결
  • 각각의 라우터에 routing algorithm과 forwarding table이 존재한다. (기존 방식)

데이터평면, 제어평면

  • 데이터평면 :

    • 각 라우터의 로컬 함수
    • 라우터 입력포트의 데이터그램을 어떤 출력포트로 내보낼지 결정
  • 제어평면 :

    • 네트워크 로직
    • 데이터그램이 출발지 호스트에서 목적지 호스트까지 어떤 경로로 전달할 지를 결정

제어평면 구현 방법

  • 기존 라우팅 알고리즘 : 라우터에서 구현
  • Software-Defined Networking (SDN) : 원격서버에서 구현

기존 제어평면의 개념

  • 라우팅 알고리즘은 라우터 제어평면에서 상호작용에 의해 동작

SDN 제어평면

  • 원격제어장치에 의해 라우터에 포워딩 테이블 설치

Network Layer service model

  • best effort : 최선을 다해 보지만 안될 경우 보장 불가능

Router 구조 개요

  • routing algorithms/protocol (RIP, OSPF, BGP) 실행
  • 입력링크에 출력링크로 데이터그램 포워딩

  • 출력쪽에 buffer가 중요
    ex) 2개의 입력포트가 같은 출력포트로 나갈 때 : buffer에서 딜레이를 줘서 약간의 차이를 두고 출력

Forwarding table 구성

Q. 라우터에 모든 라우터의 주소가 필요한가?
A. No. Longest Prefix Matching - 가장 비트가 맞는 포트로 보낸다

Answer : 0, 1

  • 통합 서버에서 라우터의 우회 주소를 쉽게 변경할 수 있다. -> SDN을 쓰려고 하는 이유

Internet Network Layer

Ip datagram format

  • 한 라인에 32bits (4byte) IP 헤더는 20byte (옵션제외)
  • ver (version) : 4bits / Ipv4 : 0100 4, Ipv6 : 0110 6
  • head len : 4bits / 0101 -> 5, 5x4 : 20 byte
  • type of service : 잘 안쓴다. 0
  • length : 데이터그램 길이
  • 16bit identifier (식별자) : 16bits
  • Flag : 3bit, fragment offset :
  • time to live : 라우터를 통해서 갈 때 무한루프에 빠지는 경우가 있는데 라우터를 한번 돌 때 마다 감소하며 0이 될 경우 소멸하게 한다.
  • upper layer : 상위 계층에 어떤 프로토콜이 있는지 말해준다.
  • Checksum :
  • 32 bits source IP address / destination IP address : 각 4 btye
  • MTU (Maximum Transmission Unit) : 링크계층에서 보낼 수 있는 최대 데이터의 크기
    -> MTU는 링크 계층에 따라 다르다.

IP 분할 및 재조립

IP Addressing : introduce

IP는 호스트가 아닌 인터페이스에 할당
라우터는 관리자에 의해 관리받고 오류가 발생 시 관리자에 알려야하기 때문에 라우터에도 IP가 필요하다 -> 라우터 인터페이스에 할당

-> 인터페이스란 호스트와 라우터와 물리적 링크 사이를 연결

Subnets

  • IP Address :

    • subnet part (상위비트)
    • host part (하위비트)
  • Subnet?

    • 라우터의 개입없이 물리적으로 다른 노드에 접속할 수 있는 기본 단위
    • 동일한 서브넷에 속한 디바이스는 IP address에서 동일한 서브넷 주소를 가짐

네트워크와 호스트를 구분해주는 서브넷 마스크
ex) 255.255.255.0
-> 255.255.255 네트워크, .0 호스트

라우터를 통해서 나갈수 밖에 없다.

IP Addressing : CIDR

CIRD : Classless InterDomain Routing

  • 비클래스 인터넷 주소할당방식
  • 주소에 임의의 길이의 서브넷을 표시
  • 주소형식 : a.b.c.d/x, 여기서 x는 서브넷 부분을 표시
    ex) 200.23.16.0/20을 할당받은 경우 이를 다시 작은 주소 블록 8개로 분할하는 방법

NAT : Network Address Translation

NAT router must :

  • ougoing datagrmas : 데이터그램 (송신 IP Addr, port #) -> (NAT IP Addr, new port #)으로 변환
  • NAT 변환 테이블 : (송신 IP Addr, port #) -> (NAT IP Addr, new port #) 변환을 기록
  • 상대 호스트는 (NAT IP Addr, new port #)을 수신호스트로 응답
  • Incoming datagrams : NAT 변환 테이블을 이용 데이터그램의 수신 호스트를 (NAT IP Addr, new port #) -> (source IP Addr, port #)로 변환

사설 IP를 쓸 때 외부에서 들어올 때 문제 발생

NAT traversal problem

  • Client가 10.0.0.1 주소를 가진 서버에 접속하고자 할 때
    • server address 10.0.0.1 local to LAN(client는 이 주소를 사용할 수 없다.)
    • 외부에 보이는 address : 138.76.29.7

외부에서 접속하고자 할 때 접속이 불가능

  • solution 1 : 통계적으로 특정한 NAT주소/포트를 서버의 주어진 포트로 연결되도록 구성 (공유기 관리자모드접속)
    • 포트포워딩 : 관리자모드로 접속 ex) (138.76.29.7, port 2500)주소는 항상 (10.0.0.1, port 25000)에 전송
    • DMZ(IP주소와 포트범위설정)/Twin IP(MAC 주소 설정)

  • solution 2 : Universal Plug and Play (UPnP) Internet Gatewaay Device (IGD) Protocol.
    • IGD 프로토콜 이용
    • port 변환을 추가/삭제 (with lease times)
    • ex) upnpc -a 192.168.0.9 21 21 TCP

  • solution 3 : relaying (usede in Skype)
    • 사설 IP 주소를 사용하는 Cilent가 relay 서버에 연결 설정
    • 외부 Client가 relay 서버에 접속
    • Relay 서버가 2개의 연결에 대해 브리지 역할

ICMP : Internet Control Message Protocol

  • 호스트/라우터에서 네트워크 레벨의 통신을 위해 사용함
    • error reporting : unreachable host, network, port, protocol
    • echo request/reply (used by ping)
  • Network-layer 로 IP위에 존재
    • ICMP msgs carried in IP datagrams
  • ICMP message : 타입과 코드를 포함한 8바이트의 헤더를 가짐

  • 방화벽 : IP주소와 포트번호를 기반으로 ICMP등 수상한 패킷의 진입을 막음
  • IDS(침입탐지시스템) : 헤더필드 뿐만 아니라 페이로드까지 심층적인 패킷 감시 기능 수행

IPv6

  • 동기 : 32-bit address 공간이 부족함
  • Additional motivation :
    • 헤더 포맷으로 인해 처리속도를 가속화시킬 필요가 있다.
    • 헤더에 QoS지원기능이 필요하다 (패킷의 우선순위를 정하기 위해)
  • IPv6 datagram format :
    • 확장된 주소기능 : 32비트에서 128비트로 확장
      • 애니캐스트 주소 도입 -> 특정 주소가 아닌 내 주위의 가장 가까운 서버에 접속
    • 고정된 40byte 헤더 -> 정적으로 구성되어 하드웨어에서 처리가 가능하기 때문에 속도향상
    • 흐름 라벨링과 우선순위
      nmap : 네트워크 상태(열린/닫힌상태, 열린 포트 등)를 탐지할 수 있는 스캐너

IPv4 : 32-bit 40억개
IPv6 : 128-bit 40억^4

IPv6 Header (Cont)

  • Ver : IP version 번호
  • Priority : 흐름별 데이터그램의 우선순위 식별
  • Flow Label : 데어트그램의 흐름 인식 (우선순위 처리를 위해 라벨링)
  • Next Header : 상위 계층 프로토콜 식별 (IPv4의 Protocol 부분)

IPv4 vs IPv6

  • 단편화/재결합 : 단편화/재결합은 시간이 걸리므로 라우터에서 기능을 삭제하고 종단시스템에서 함으로서 속도증가
  • Checksum : 각 홉에서 처리시간을 줄이기 위해 제거
  • Options : 옵션필드를 Next Header(상위계층 프로토콜)로 처리
  • ICMPv6 : new version of ICMP
    • 추가메세지 타입 정의, ex)"Packet Too Big"
    • Multicast group management functions

Q : IPv4 에서 IPv6 또는 반대로 상호작용을 어떻게 진행해야 하는가?
A : 터널링 : IPv6망에서 IPv4망에서 사용하는것처럼 변환

Tunnerling

profile
남을 위해(나를 위해) 글을 쓰는 Velog

0개의 댓글