[ch4] 3. IP: Internet Protocol

    The Internet network layer

    • routing protocols
      • path 선택
      • RIP, OSPF, BGP 등이 있음
    • IP protocol
      • addressing conventions
      • datagram format
      • packet handling conventions
    • ICMP protocol
      • error reporting
      • router "signaling"
      • ex) ping, traceroute

     

    IP datagram format

    • IP header
      • IP protocol version num
        • ex) v4, v6
      • header length
      • type of datagram
      • total datagram length
        • 16 bits (header + payload)
        • IP packet은 1500 bytes가 넘어가는 경우가 많이 없음
          • L2 ethernet의 MTU가 1500 bytes이기 때문
          • wifi의 MTU는 2300bytes
      • for fragmentation/reassembly
        • 16-bit identifier
        • flags
        • fragment offset
        • IPv4에만 해당, IPv6는 사용하지 않음
      • TTL
        • max number of remaining hops
      • protocol
        • 네트워크 layer를 transport layer에 연결해주는 것
        • ICMP=1, TCP = 6, UDP=17, IPv4=4, IPv6=41
      • header checksum
        • IP header의 error checking을 위함
        • TTL을 모든 라우터에서 다시 계산하기 때문에, checksum도 모든 라우터에서 다시 계산되어야 함
        • IPv6는 checksum을 가지지 않음
      • 32-bit src IP address
      • 32-bit dst IP address
    • IP payload
      • data: 가변길이
    • overhead
      • TCP header: 20 bytes
      • IP header: 20 bytes
      • app layer overhead: data

     

    IP fragmentation, reassembly

    • network link는 MTU를 가짐
      • MTU: link level에서의 최대 전송 단위
      • link마다 다른 MTU를 가짐
    • fragmentation: 큰 IP datagram은 여러 개의 작은 IP datagram으로 쪼개짐
      • 마지막 IP destination에서 재조립됨
      • IP header bits는 연관된 fragments를 식별하고 정렬하는데 사용함

     

    IPv4 addressing: introduction

    • IP address: host, router의 interface를 식별하는 32 bit 식별자
      • globally unique
      • <8bit>.<8bit>.<8bit>.<8bit>
    • interface: host/router와 physical link 사이의 연결
      • router는 여러 개의 interface를 가짐
      • host는 보통 하나에서 두 개의 interface를 가짐
    • 각 interface에 연관된 IP 주소
    • Q. interface가 어떻게 연결되나?
      • A. 유선 이더넷 interface는 이더넷 스위치(hub)로 연결됨
      • A. 무선 와이파이 interfcae는 WiFi AP로 연결됨

     

    Subnets

    • IP address
      • subnet part: 높은 파트 bits
      • host part: 낮은 파트 bits
    • what's a subnet?
      • IP 주소에서 같은 subnet part를 가지는 device interface들
      • 다른 라우터를 방해하는 것 없이 물리적으로 서로 도달할 수 있음
      • subnet을 정의하기 위해서, 각각의 host/router로부터 interface를 분리하고 고립된 네트워크의 섬을 만들어야 함.고립된 네트워크를 subnet이라고 부름
      • x.x.x./Y
        • Y는 subnet address에 사용된 bit의 수

     

    IP addressing: CIDR

    • CIDR: Classless InterDomain Routing
      • IP주소의 subnet 부분의 길이가 임의적임
      • a.b.c.d/x, x: IP 주소의 subnet 부분의 길이
    • classful addressing
      • 예전에는 고정적인 subnet bit를 사용해 class를 나눠서 사용했음

     

    IP addresses: how to get one?

    • Q. host가 어떻게 IP address를 얻을까?
      • 1. file에 hard-code되어 있는 경우
      • 2. DHCP: 서버로부터 주소를 dynamic하게 얻어옴
    • DHCP: Dynamic Host Configuration Protocol
      • 목표: host가 네트워크에 접속할 때, 네트워크 서버로부터 IP 주소를 dynamic하게 얻어온다 ("plug-and-play")
        • 사용 중인 주소에 대한 임대를 갱신할 수 있음
        • 주소의 재사용을 허용
        • network에 접속하는 모바일 유저에 대한 지원
      • DHCP overview
        • host는 "DHCP request" msg를 사용해서 IP 주소를 요청함
        •  DHCP server는 "DHCP ack" msg를 주소로 보냄

     

    DHCP client-server scenario

    DHCP server in the subnet arriving client
      [DHCP discover] Broadcast: DHCP 서버야~ 거기 있니??
    [DHCP offer] Broadcast: ㅇㅇ 내가 DHCP server다! 여기 니가 사용할 수 있는 IP 주소얌
    - dhcp relay agent: dhcp 서버가 없는 서버넷으로부터 다른 서버넷에 존재하는 하나 이상의 DHCP 서버에게 DHCP 요청을 중계해줌
     
      [DHCP request] ㅎㅇ. 나 그 IP addr 쓸게~~
    [DHCP ACK]ㅇㅇ 그거 쓰셈  

     

    DHCP: more than IP addresses

    • DHCP는 subnet에 할당된 IP 주소보다 더 많이 것들을 return할 수 있음
      • client의 first-hop router 주소
      • name, IP address of DNS server
      • network mask (network 부분 vs host 부분)

     

    DHCP: example

    • 1. laptop을 네트워크에 연결하는 것은 IP 주소, 첫번째 hop router의 주소, DNS 서버 주소가 필요함
      • DHCP를 사용하자!
    • 2. DHCP request는 UDP, IP, 이더넷 순으로 인캡슐화됨
    • 3. 이더넷 프레임은 LAN에 broadcast되고, DHCP 서버에서 돌아가고 있는 라우터에서 받는다
    • 4. DHCP 서버에 도착한 데이터는 이더넷, IP, UDP 순으로 demux된다
    • 5. DHCP 서버는 client's IP 주소, 첫번째 라우터로 향하는 IP주소, DNS 서버의 이름과 주소를 담은 DHCP ACK를 형성한다.
    • 6. 캡슐화 과정을 거쳐서 client에게 전달하고, client는 받아서 decapsulation 진행
    • 7. client는 이제 자기 IP 주소랑, DNS 서버의 이름과 주소, first-hop rotuer 주소를 알게 되었다~~

     

    IP addresses: how to get one?

    • Q. how does network get subnet part of IP addr?
      • A. gets allocated portion of its provider ISP's address space
    • Q. how does an ISP get block of addresses?
      • A. ICANN: Internet Corporation for Assigned Names and Numbers
        • http://www.icann.org/
        • 주소 할당
        • DNS 관리
        • domain name 할당, 분쟁 해결

     

    Hierarchical addressing: route aggregation

    • 위계 있는 주소는 routing information을 효율적으로 광고한다?
    • longest prefix matching

     

    NAT: network address translation

    • public IP addr <---> private IP addr
      • 보통 라우터 안에 NAT box가 존재함
      • local network를 떠나는 모든 datagram은 하나의 source NAT IP addr를 가진다
    • Motivation
      • local network는 밖에서 볼 때는 하나의 IP address를 사용함
        • 외부에 알리지 않고 local network 장치 주소를 바꾸는 것이 가능함
        • local network의 주소를 바꾸지 않고 ISP를 바꾸는 것이 가능함
        • 외부에서 local network를 볼 수 없기 때문에 보안 측면에서 좋음
    • Implementation
      • outgoing datagram
        • local network에서 외부로 데이터를 보내려면 (src IP 주소, port #)를 (NAT IP addr, new port #)로 바꾸어줘야 한다.
        • remote machine은 destination addr로 (NAT IP addr, new port #)를 사용해 응답한다
      • remember (in NAT translation table)
        • 모든 (src IP addr, port #) - (NAT IP addr, new port #) 짝을 기억해야한다
      • incoming datagrams
        • (NAT IP addr, new port #)를 사용해서 local network로 들어오는 datagram들의 주소를 NAT translation table를 사용해서 (src IP addr, port #)로 대체해준다
      • 16-bit port # field
        • 하나의 LAN address에 60,000 개의 동시 connection이 존재할 수 있다
      • NAT는 controversial!
        • router는 layer 3까지 처리 가능
        • address 부족 문제는 IPv6에 의해 해결되어야 한다
        • end-to-end argument 위반: app designer에 의해 고려되어야 함
        • client가 NAT 아래에 있는 서버에 연결하기 원하면 작동하지 않을 것임

     

    IPv6: motivation

    • 초기 motivation: 32-bit IPv4 주소 공간은 부족하다!
    • 추가 motivation
      • header format은 speed processing/forwarding을 돕는다
      • header는 QoS를 용이하게 하기 위해 변경할 수 있음
    • IPv6 datagram format
      • 고정길이 40 byte header
      • no fragmentation allowed
      • no IP checksum: 각 router에서 실행 시간을 줄이기 위해 제거
      • priority: 전송 중인 datagram 사이의 우선순위
      • flow label: 같은 flow의 datagram 확인
      • next header: protocol in IPv4 header과 유사
      • hop limit: TTL in IPv4

     

    Transition from IPv4 to IPv6

    • 모든 router를 동시에 업그레이드 할 수 없음
      • 어떻게 IPv4와 IPv6을 혼합해서 작동시킬까?
    • tunneling: IPv6 datagram은 IPv4 router들 사이에서 IPv4 datagram안의 payload를 운반함
      • Ipv6 datagram in Ipv4 datagram 
      • 반대도 가능

     

    IPv6: 채택

    • google: IPv6를 통한 8%의 client access service
    • NIST: 미국 정부 domain의 1/3
    • IPv6는 너무 길기 때문에 아마 Ipv6만 단독으로 사용하기는 어렵고 IPv4와 혼합해서 사용할듯

    '학교 > network' 카테고리의 다른 글

    [ch5] 2. routing protocols  (0) 2022.06.20
    [ch5] 1. Introduction  (0) 2022.06.19
    [ch4] 2. what's inside a router  (0) 2022.06.19
    [ch4] 1. overview of network-layer  (0) 2022.06.19
    [ch3] 5-7. connection-oriented transport: TCP  (0) 2022.06.19

    댓글