IP(Internet Protocol)

이재윤·2021년 2월 28일
0

네트워크

목록 보기
8/9
post-thumbnail

💻 IP Datagram Format

  • ver (4bits)
    IP Protocol의 version을 명시한다. (IPv4, IPv6)

  • head length (4bits)
    Head가 가변 길이의 옵션을 포함하기 때문에 이 네 비트로 실제 페이로드가 시작되는 곳을 결정한다.

  • type of service (8bits)
    서로 다른 유형(실시간 Datagram vs 비실시간 트래픽)의 IP Datagram을 구별한다.

  • length (16bits)
    IP Datagram의 전체 길이를 의미한다.

  • 16-bit id, flags (3bits), fragment offset (13bits)
    Fragmentation과 reassembly에 이용하기 위해 존재한다.
    (cf. IPv6는 fragment를 허용하지 않는다.)

  • time to live(TTL)
    네트워크에서 Datagram이 무한히 순환하지 않도록 한다.
    라우터를 지날때 마다 하나씩 감소하며, 값이 0이 되었을때도 목적지에 도착하지 못하면 폐기한다.

  • upper layer protocol
    일반적으로 목적에서 도달했을때만 사용된다.
    목적지의 전송 계층의 프로토콜을 명시한다.

  • header checksum
    라우터가 수신한 IP Datagram의 비트 오류를 탐지한다.

  • 32bits source/destination IP Address (IPv4)
    출발지와 목적지의 IP 주소를 의미한다.

💻 IP Fragmentation, reassembly

Network Link(Link Layer)들은 전송할 수 있는 최대의 fragment 크기(MTU, Maximum Transmission Unit)을 가지고 있으며, Link의 종류마다 다르다.
만약 IP Datagram의 크기가 MTU보다 크다면 잘라야 한다(Fragmentation).
잘린 Datagram들은 하나의 Datagram으로 합쳐져야 하는데(reassemble) 이 과정은 오직 목적지에서만 행해진다.
(∵ 라우터가 재결합하면 프로토콜이 복잡하게 만들고 라우터 성능이 떨어지게 된다.)

💻 IP Addressing

  • 개요
    IP 주소는 32bits로 구성된 host와 router의888 interface의 식별자이다.

    Interface란?
    Host/router와 physical link사이의 연결을 의미한다.
    -> Router는 여러개의 interface를 가지고 있다.

  • Subnet

    IP주소의 subnet part가 같은 device interface들의 집합을 의미한다.
    Router를 통하지 않고 직접 통신을 할 수 있다.

    IP 주소는 Subnet part와 Host part로 나뉜다.

    • CIDR(Classless InterDomain Routing)
      IP주소의 Subnet part길이가 임의로 정하는 방법.
      a.b.c.d/x와 같은 형식으로 표현한다.
      x bits는 기관을 구분하고, 32 - x bits는 기관내의 장비를 구분한다.
      클래스로 할당했을때 보다 효율적인 할당이 가능하다.
    • IP Class
  • DHCP

    Host(end-system)이 IP 주소를 할당 받는 방법

    1. System Admin File에 직접 고정된 IP주소를 할당한다.
    2. DHCP(Dynamic Host Configuration Protocol) 을 이용해 Host가 네트워크에 접속할 때 마다, 동적으로 IP주소를 할당받는다.
    • 장점
      Host가 네트워크에 접속했을때만 IP주소를 할당 받으므로, IP주소가 모자라는 현상이 일어나지 않는다. (재사용이 가능하다.)
    • Lease(임대) 과정

      1. DHCP discover
      2. DHCP offer
      3. DHCP request
      4. DCHP ack
    • DHCP 추가적인 행동
      DHCP는 IP주소 할당 뿐만 아니라, first-hop Router(디폴트 게이트 웨이)의 IP주소, Local DNS server의 이름과 주소, Subnet Mask까지 알려준다.
  • NAT (네트워크 주소 변환)
    NAT는 IP 패킷의 TCP/UDP 포트 숫자와 출발지 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술을 말한다.
    NAT를 이용하면 IP가 필요한 기기마다 공용 IP를 할당할 필요가 없어 IP 주소를 절약할 수 있다.

    • 공용 IP vs 사설 IP
      1. 공용 IP
        공인이 된 IP를 뜻(전세계에서 유일)하며. 전세계적으로 ICANN이라는 기관이 국가별로 사용할 IP 대역을 관리하고 우리 나라는 인터넷 진흥원(KISA)에서 우리나라 내에서 사용할 주소를 관리한다.

      2. 사설 IP
        네트워크 안에서 사용되는 주소.( 내부적으로 사용되는 고유한 주소 )로 사설 IP는 하나의 네트워크 안에서 유일하며, 사설 IP는 이름에서 보듯이 인터넷상에서 확인할 수 없고, 내부 네트워크에서만 사용 가능한 IP를 말한다.

        IP class 구분IP 범위
        A10.0.0.0/8
        B172.16.0.0/12
        C192.168.0.0/16
    • NAT Table
      1. 호스트 10.0.0.1은 임의의 포트 번호 3345를 할당하고 LAN에 Datagram을 보낸다.
      2. NAT 라우터는 Datagram을 받아서 새로운 출발지 포트 번호 5001을 생성하고 Datagram의 출발지 주소와 포트 번호를 변경한다. 변경되기 전 출발지 주소와 변경 후 출발지 주소를 NAT table에 기록한다.
      3. 요청에 대한 응답 패킷의 목적지 주소는 NAT 라우터의 공용 IP 주소이다.
      4. NAT table을 통해 공용 IP 주소는 응답을 요청한 사설 IP 주소로 변경되어 호스트에 전달 된다.
    • NAT Traversal Problem
      서버의 10.0.0.1은 사설 IP 주소이기 때문에 외부 클라이언트가 알지 못한다. (외부 클라이언트는 138.76.29.7인 공용 IP 주소만 알고 있다) 따라서 외부 클라이언트가 서버에 접속할 수 없다.
      • 해결책
        1. 특정 포트로 들어오는 연결 요청을 서버로 전달하도록 NAT table을 정적으로 구성 한다.
        2. 가까운 NAT를 발견하고 동적으로 포트 매핑을 자동 설정하는 프로토콜(Upnp, IGD protocol)을 사용한다.

💻 ICMP (Internet Control Message Protocol)

ICMP(인터넷 제어 메시지 프로토콜)는 호스토와 라우터가 서로 간의 네트워크 계층 정보(ex. 오류보고)를 주고 받기 위해 사용된다.

  • ICMP 구성요소
    ICMP는 Network Layer의 프로토콜이지만, 구조적으로 IP 바로 위에 존재한다. 즉 ICMP의 메시지가 IP Datagram으로 캡슐화 된다.
    ICMP 메시지는 타입과 코드 필드가 있고, 오류가 발생한 Datagram의 처음 8bytes를 가진다.
  • Traceroute

    한 호스트에서 다른 호스트사이의 모든 라우터들을 추적할 수 있는 프로그램이며 ICMP 메시지를 이용해 구현된다.


    1. IP Datagram을 목적지에 보낸다. 이 각각의 Datagram은 없을 것 같은 UDP 포트 번호를 가진 UDP Segment를 전송한다. 그리고 TTL 값은 첫 번째 Datagram이 1, 두 번째는 2, ... n 번째는 n을 갖는다. (일반적으로 같은 TTL값을 갖는 Datagram을 세번 전송한다.)


    2. n 번째 Datagram이 n 번째 라우터에 도착하게 되면, TTL 값은 0이 된다. TTL값이 0이 되었음에도 목적지 호스트에 도달하지 못했으므로 ICMP 경고 메시지(타입 11, 코드 0)를 출발지 호스트로 전송한다.


    3. 출발지 호스트에 도착하면 출발지는 타이머로 부터 RTT, ICMP 메시지로 부터 라우터의 주소와 이름을 획득한다.


    4. 출발지에서 보낸 IP Datagram이 언젠가 목적지에 도착하게 되면, ICMP 경고 메시지(타입 3, 코드 3)를 출발지 호스트로 전송하게 된다 (∵ UDP Segment의 포트 번호가 존재하지 않는다.). 출발지 호스트가 이 메시지를 받게 되면 추가적인 탐색 패킷을 전송을 멈춘다.

0개의 댓글