IP: Internet Protocol (DHCP/NAT/IPv6)

CinnamonTree·2022년 6월 13일
0

네트워크

목록 보기
5/7

datagram format

  • ver: IPv4,5..?
  • header length: option 으로 인해 variable size임
  • type of service: diffserv, ECN
  • 네트웍마다 Max Transition Unit이 다르기 때문에, 어느 네트웍을 지나면 IP 패킷이 쪼개지고 resassemble이 된다. => 16bit identifier, flgs, fragment offset 필드가 필요
  • TTL: 패킷이 네트웍을 계속 돌아다니는 것을 방지 max hop 방지
  • upper layer: TCP or UDP?
  • header checksum
  • source / dest IP address
    최소 20(IP)+20(TCP) = 40바이트 필요 / + app layer overhead

IP addressing

interface: host or router 와 physical link 사이의 connection
IP address: 32bit idintifier for host or router interface
라우터는 multiple interface들을 가짐 / 호스트는 한두개(이더넷, wifi)
ip address는 32bit를 8bit씩 쪼개서 dotted decimal notation으로 표현

Subnet이란?

  • router를 거치지 않고 도달할 수 있는 디바이스 인터페이스들의 모음

IP 주소는 subnet part + host part로 나누어짐.
subnet part: prefix에 해당 (ex: 223.1.1)
host part: 나머지 bit (ex: 1,2,3...)

subnet의 사이즈는 variable하다. (20, 24...)
subnet mask :/24 = high order 24bits
-> 어디까지가 subnet인지 알려줌

위와 같은 addressing 방식을 CIDR = Classless InterDomain Routing이라고 함.

DHCP: IP 주소를 어떻게 받아올 것인가?

IP주소가 비싸짐에 따라 동적 할당방식이 생김.
DHCP프로토콜: IP주소가 없는 클라이언트가 IP주소를 서버로부터 DHCP서버로부터 동적으로 할당받아오는것.

  • 보통 라우터, 공유기나 wifi에 DHCP기능이 되어있다.
  • 서버는 특정 IP주소를 얼마동안 쓰세요~라고 빌려줌.

Overview
1. DHCP discover: 호스트가 DHCP서버를 목표로 브로드캐스트 메시지를 보냄.
2. DHCP offer msg respond
위의 두 단계는 클라이언트가 전에 쓴 IP주소를 기억한다면 skip할 수 있다.
3. host makes DHCP request to server
호스트가 이 주소 쓰고 싶다하며 리퀘스트 보냄
4. DHCP ack from DHCP server

  • request response마다 transactionID사용하여 구분

Hierchical addressing:
dual homing을 통해 reliable 하게 알려줌.
ISP는 more specific route를 선호


10.2

NAT: network address translation

  • 모든 디바이스가 사용할 IP address가 ISP로부터 하나만 필요
  • local network의 address들을 외부에 알리지 않고 쉽게 바꿀 수 있다.
  • 보안성
  • local network의 address들을 바꾸지 않고 ISP를 바꿀 수 있다.

작동방식

  • 외부로 나가는 datagram들은 source ip addr, port# -> Nat ip addr, new port# 로 바꿈
  • Nat translation table에는 해당 pair를 기억

단점

  • 라우터는 layer 3까지만 processing해야 하는데 layer4까지 processing함으로서 원래의 디자인에 반하는 구조임.
  • IPv6가 도입이 되면 쓸모없어짐
  • port number에 따라 application layer에서 동작 디자인을 달리해야함 = violates end-end argument
  • local network에 서버 구축 불가능

IPv6

  • IPv4는 variable header length -> port마다 헤더 length가 다르면 동시에 switching을 하지 못해 속도가 느려질 수 있다.
  • WFQ, priority scheduling을 하려는데 이때 구분을 빠르게 하기 위한 flow가 필요하다. diff serv를 위한 매커니즘이 필요

diffServ란?

DiffServ, or DS (differentiated services) : 차등화 서비스
DiffServ는 음성 등과 같이 데이터의 흐름이 끊어지면 안 되는 비교적 특별한 형식의 트래픽들에 대해, 다른 종류의 일반 트래픽에 비해 우선권을 갖도록 네트웍 트래픽을 등급별로 지정하고, 제어하기 위한 프로토콜이다. DiffServ는 서비스의 등급, 즉 CoS (Class of Service)라고 불리는 형태로 트래픽을 관리하는 가장 진보된 방식이다. DiffServ는 802.1p에서의 태그 이용 그리고 ToS (Type of Service) 등과 같은 초창기 방식과는 달리, 주어진 네트웍 패킷을 어떻게 전달할 것인지를 결정하기 위해 단순히 우선 순위를 위한 태그를 붙이는 대신, 좀더 복잡한 정책이나 규칙문을 사용한다. DiffServ는 사람이 여행을 할 때 안락함, 여정 중의 들르는 회수, 대기 상태, 여행에 소요되는 시간 등을 모두 고려하여, 기차, 버스, 비행기 등 여러 가지 교통 수단 중 하나를 선택하는 것과 유사한 방식이다. 주어진 패킷 이동 규칙에서, 패킷은 홉당 움직임, 즉 PHB (per hop behaviors)라고 불리는 64개의 가능한 전달 움직임 중 하나가 적용된다. IP 헤더 내 DSCP (DiffServ code point)라는 여섯 비트 길이의 필드가 주어진 패킷의 흐름에 대해 홉당 움직임을 지정한다.
DiffServ와 CoS 접근방식은 트래픽의 제어에 있어, QoS 방식에 비해 보다 유연하고 더 큰 범위성을 제공한다.

IPv6 datagram format

  • flow label: router가 차별적 대우(classification)를 할 수 있게 끔 datagram 구별하는 flow or connection ID
  • priority: type of service와 동일한 필드

V4에 비해 달라진 것? -> 처리속도를 빠르게 하기위해 단순화, addr space 확장

  • checksum이 없어짐 (라우터 부담을 줄임, 대신 application/transport layer에서 오류 검사)
  • fragmentation/resassembly 없앰 => fragmentation이 안됨
    MTU보다 크면? sender에게 오류 메시지 보냄
  • option이 없어지고 upper layer protocol처럼 변함
    => option search부담 줄임

Transition

Tunneling: IPv6 데이터그램을 IPv4의 payload처럼 실어서 보냄

encapsulation을 통해 V4는 하나의 link처럼 transparent하게 보임
routing algorithm을 통해 IPv6라우터끼리는 모두 알고 있음.

0개의 댓글