Network Layer (1)

Network Layer

  • 송신자로부터 수신자로 segment를 전송
  • 송신자 측에서는 segment를 datagram으로 캡슐화
  • 수신자 측에서는 segment를 transport layer로 전송
  • router는 header field의 모든 IP datagram을 검사하여 넘김

Two key network-layer function

  • forwarding
    • router의 input에서 적절한 output의 router로 패킷을 전송
  • routing
    • 소스로부터 목적지까지 패킷이 전송되어야 할 경로 결정
    • Routing algorithm

Connection setup

  • datagrams flow 이전에 두 종단 시스템과 router는 가상의 연결을 맺어야 함
  • network: 두 호스트 간의 연결
  • transport: 두 프로세스 간의 연결

Connection, connection-less service

  • datagram 네트워크는 네트워크 계층의 connection-less service 제공
  • virtual-circuit 네트워크는 네트워크 게층의 connection service 제공
  • TCP/UDP의 connection-oriented/connectionless와 같음
    • 그러나 host 간 제공되는 서비스이며,
    • 네트워크가 제공하는 circuit 외에는 선택지가 없으며,
    • 네트워크 코어 간 수행된다는 차이 존재

Virtual circuits

  • "source-to-dest path behaves much like telephone circuit"
    • performance-wise
    • src-to-dest path와 함께 네트워크적 action이 취해짐
  • 각각의 패킷은 Virtual circuit Identifer를 지님(dest host의 주소가 아님)

  • VC consists of
    • path from src to dest
    • VC numbers
      • link에 따라 변경될 수 있음
    • entries in forwarding tables
  • VC는 현대 인터넷에 사용되지 않음

Datagram networks

  • router는 종단 간 연결에 대한 상태를 지니지 않음
  • Packet는 단순히 dest host address를 참조해 전송됨

Longest prefix matching

  • forwarding table을 참조할 때, 가장 긴 접두부를 공유하는 범위의 Link inferface를 참조하게 되는 것

Router architecture overview

  • Input ports
    • datagram의 dest를 보고, forwarding table을 참조하여 output port를 검색
    • forwarding 속도보다 datagram이 빨리 들어올 수 있기 때문에 Queue를 사용하여 Queueing
  • Output ports
    • 배출 속도보다 빠른 도착 속도를 고려해 buffer를 두어 buffering
    • datagram Scheduling

Switching fabrics

  • 3 types of switching fabrics

Switching via memory

  • 1세대 Router
  • CPU에 의해 직접적으로 switching
  • memory의 bandwidth에 switching 속도 제한됨

Switching via a bus

  • 공용 bus를 통해 input port memory에서 output port memory로 datagram switching
  • bus의 bandwidth에 의해 switching 속도 제한

Switching via interconnection network

  • bus bandwidth의 한계 극복
  • 멀티프로세서에 여러 개의 프로세서 연결하기 위해 고안됨
  • 이제는 보다 더 발전되어 datagram을 일정 길이로 쪼갠 후, 해당 cell들을 fabric을 통해 switching

The Internet network layer

  • IP datagram format

IP fragmentation, reassembly

  • network link에는 MTU(max transfer size) 존재
  • 때문에 큰 크기의 IP datagram은 분할되어 전송
  • 최종 목적지에서 재조립됨


IP addressing

  • IP 주소: host와 router interface를 위한 32bit의 식별자
  • interface: host/router와 physical link 간 연결 장치
  • subnet: router의 간섭 없이 물리적으로 접근 가능한 장치들의 집합(위 그림에는 3개의 subnet 존재)
    • subnetmask가 해당 subnet을 구성할 수 있는 host들의 수 정의

CIDR(Classless Inter-Domain Routing)

  • 최신의 IP 주소 할당 방법
  • 네트워크 클래스를 대체하고, 기존 방식에 비해 유연성을 더해줌
  • 급격히 부족해지는 IPv4 주소를 보다 효율적으로 사용하게 해줌

DHCP(Dynamic Host Configuration Protocol)

  • 서버로부터 동적으로 IP 주소를 얻음
  • 임대하여 사용 중인 주소 갱신 가능
  • 서버와 연결되었을 때만 사용하므로, 해당 주소 재사용 가능

NAT: Network Address Translation

  • local network를 하나의 IP로 구성 가능
  • local 내의 장치들은 보안성도 얻을 수 있음
    • 외부 세계에 의해 addressable, visible 하지 않기 때문
  • NAT router가 알아야 할 것
    • outgoing datagram: 어느 장치에서 출발했는지
    • incoming datagram: 어느 장치로 보내야 할 지
    • NAT translation table
  • NAT는 router의 기능을 초과하여 end-to-end system에 간섭하게 되는 단점 존재
    • IPv6를 통해 더 많은 주소 사용 가능해질 것

NAT traversal problem

  • client는 10.0.0.1의 특정 server와 연결하고 싶음
  • 그러나 공개된 외부 IP 주소는 단 하나이기 때문에 direct 연결이 불가
  • solution 1
    • 외부 IP의 특정 port로 접근 요청 시, 바로 10.0.0.1로 forwarding 하게 설정
    • e.g., (123.76.29.7, port 2500) always forwarded to 10.0.0.1 port 25000

  • solution 2
    • 10.0.0.1의 host에게 공개 IP 주소를 알림
    • 직접 Port 번호와 Mapping(지정 시간을 두고)
  • solution 3
    • relay 서버를 활용
    • relay 서버가 client와 NATed client의 패킷 교환을 중개

ICMP: Internet Control Message Protocol

  • host와 router들이 network level의 정보를 교환하기 위해 사용
    • error reporting
    • echo request/reply
  • ICMP message는 IP datagram에 들어감

Transition from IPv4 to IPv6

  • 모든 router들이 동시에 업그레이드될 수는 없음
  • 어떻게 network는 IPv4와 IPv6 router를 혼합해서 사용할 수 있을 것인가?

  • Tunneling
    • IPv6 datagram이 IPv4의 payload로 실려다님


'Software Convergence > Network' 카테고리의 다른 글

HTTP 상태 코드  (1) 2018.11.15
Network Layer (2)  (0) 2018.10.08
Transport Layer  (0) 2018.10.07
OSI 7 Layers Overview  (0) 2018.10.01
Application Layer  (0) 2018.09.30

+ Recent posts