컴퓨터 네트워크 - IP Address 부족 문제 해결(DHCP, NAT), IPv6

3 분 소요


K-MOOC에서 부산대학교 유영환 교수님의 “컴퓨터 네트워킹” 강의를 수강하며 적은 노트


Dynamic Host Config, Protocol

dynamic host configuration protocol: 호스트가 자신의 IP 주소를 네트워크에 있는 서버로부터 자동으로 얻는 것

  • 응용 레벨에 있는 프로토콜, 전송 프로토콜로는 UDP 사용
  • 주소의 재 사용 가능: 여러 명 사용자가 동시에 접속할 확률은 거의 적기 때문에 컴퓨터 수만큼 IP 주소가 필요하지 않고, 동시간대에 접속하는 컴퓨터의 수만큼만 IP 주소 확보하면 됨
  • plug & play 가능: 전원을 꽂거나 랜 선에 꽂기만 하면 컴퓨터를 사용 가능함. 이전에는 고정 IP주소를 받아 직접 설정 해 줌
  • 과정: discover, offer, request, ack
    1. 네트워크 내에는 223.1.2.5 라는 주소를 가진 DHCP 서버가 존재
    2. 클라이언트가 접속, 현재 자신의 주소도 모르고 자기가 접속한 네트워크 ID나 DHCP 서버 주소도 모름
    3. source 주소는 0.0.0.0, 목적지 주소는 255.255.255.255로 전송
      • 255.255.255.255: broadcast IP. 네트워크 안의 모든 컴퓨터들이 메시지 받음
    4. DHCP 서버는 이를 받고 새 클라이언트 접속을 알아챔, 사용 가능한 IP 주소를 broadcasting으로 알려줌
      • + 기본 게이트웨이(컴퓨터가 인터넷에 접속할 때 처음 거치는 라우터) 주소
      • + 네트워크 내에서 사용하는 DNS 서버의 주소
    5. 클라이언트는 offer 메시지를 받고 transaction ID를 체크해 같은 번호라면 자신의 DHCP discover 메시지에 대한 응답임을 알아챔
    6. 해당 주소를 사용하기 위해 DHCP request 메시지를 주소를 0.0.0.0인 채로 broadcasting
    7. ACK를 받으면 해당 주소를 사용
  • lifetime: 해당 주소를 사용 가능한 시간. 시간이 지나면 다시 갱신 메시지로 시간 갱신
  • request-ACK 단계를 거치는 이유: 네트워크 내에는 DHCP 서버가 여러 대 있을 수 있음
    • 따라서 offer 메시지가 여러 개 올 수 있음
    • 클라이언트는 그 중 하나를 선택해 request 메시지 송신




Network Address Translation

Network Address Translation(네트워크 주소 번역): 인터넷 공유기를 통하면 안쪽에서만 서로 구별되는 어떤 IP주소, ID를 가짐

private(사설) IP 주소: 내부의 컴퓨터들을 구별하기 위해서 사용하는 주소, 외부로 나갈 때는 반드시 공식 IP중의 하나를 통해서 번역되어 나감

  • class A의 10.x.x.x, class B의 172.16.x.x~172.31.x.x, class C의 192.168.0.x~192.168.255.x
  • 외부 라우터들은 취급 X, 따라서 외부에서는 이런 주소를 가진 경우 도착 불가능
  • ex) 어떤 컴퓨터의 IP주소 = 192.168.0.2, 즉 사설 IP
    • 집을 대표하는 공유기 또는 라우터는 138.76.29.7라는 공식 IP
    • source는 192.168.0.2의 포트 넘버 3345, dest는 128.119.40.186의 포트 넘버 80으로 공유기에게 HTTP 리퀘스트 메시지 보냄
    • network translation table에 따라 번역하여 공식 IP인 138.76.29.7에 포트 넘버 5001로 부여해 밖으로 전송
    • 외부에서 응답이 오면 테이블로 다시 번역해서 전송
  • 따라서 IP 주소는 각 호스트 개수가 아닌 가입자 수 정도만 필요
  • 문제점: 로컬 네트워크 -> 외부 리퀘스트가 아닌 외부 -> 로컬이 필요할 때
    • 내 로컬 주소는 사설 IP기 때문에 외부에서 알 수 없음
    • 포트 포워딩: 로컬 쪽에서 먼저 request를 보내지 않아도, 외부에 있는 클라이언트의 request를 먼저 받아서 내부 서버에 전달할 수 있도록 포트를 미리 설정
      • ex) 외부에서 공식 IP 포트 넘버 80번으로 들어온 메시지는 비공식 사설 IP의 192.168.0.15, 80번으로 포워딩




IPv6

IPv6

  • DHCP와 NAT은 계층의 원칙을 파괴하는 문제점도 있기 때문에 주소 부족 문제를 완전히 해결할 수 없음
  • 부족했던 주소 개수도 늘리고, 헤더 포맷도 서로 다른 타입의 트래픽들에게 QoS(Quality of Service)를 보장할 수 있게 수정

IPv6 헤더: 40 byte 고정 크기

  • source address와 destination address가 16 byte씩이므로, 이 둘을 빼면 나머지 헤더는 8 byte로 간략해짐
    • IPv4의 경우 각각 4 byte, 나머지 헤더는 12 byte
  • fragmentation reassembly 과정 없앰
    • IPv4에 있던 Fragmentation ID, flag, fragmentation offset 사라짐
    • 이전보다 전 세계 네트워크가 훨씬 더 균일화되어, Maxium transfer unit size 차이가 거의 없어졌기 때문
    • fragmentation이 필요한 경우 source에게 알려 쪼개서 다시 전송하게 함(internet control message protocol 수정을 통함)
  • ver: 버전 표시
  • priority: 라우터가 priority scheduling을 할 때 priority가 높은 패킷은 buffer overflow 상황이 발생해도 keep
  • flow label: source 프로세스와 receiver 프로세스 사이에 흘러가는 이 IP 데이터그램들 전체를 하나의 flow로 정의, 같은 flow label 부여
    • flow: 모든 데이터그램이 개별 취급받던 IPv4에선 없던 개념
  • payload length: 데이터 payload 부분의 길이
  • next header: 상위 레이어에서 사용하는 프로토콜(TCP or UDP)
  • hop limit: IPv4에 있었던 TTL (time-to-live)과 같음
  • Checksum 빠짐
    • CRC(Cyclical Redundancy Check)는 시간이 오래 걸림. TTL이 매 hop마다 줄기 때문에 매번 새로 계산해서 넣음
    • 에러는 기술 발전으로 잘 발생 X

터널링(Tunneling): IPv6과 IPv4의 공존 문제를 해결

  • IPv4와 v6를 동시에 지원하는 듀얼 프로토콜을 지원하는 장비에서, IPv4 라우터로 되어 있는 네트워크를 통과할 때는 IPv6 헤더를 붙이고 있는 데이터그램 앞에 Ipv4 헤더를 앞에 붙여 전달
  • IPv6를 도입하는 속도는 빠르지 않음: DHCP, NAT이 주소 부족을 어느 정도는 해결했기 때문
  • 그러나 사물 인터넷 시대가 되면 모든 물건들에 IP 주소가 부여될 것이므로, IPv6로 가게 될 것




네트워크 레이어 간단한 summary

  • 네트워크 레이어의 기능: 라우팅 + 포워딩
  • 기존의 IPv4를 기반으로 한 traditional network와, IPv6를 기반으로 하는 software-defined network
  • IPv4 데이터그램 포맷. fragmentation & reassembly
  • IPv4의 주소가 부여되는 방식
  • 서브 네트워킹, 수퍼 네트워킹(CIDR)
  • IP 주소에 기반한 포워딩 방식: longest prefix matching
  • Dynamic Host Configuration Protocol: 사용자가 네트워크에 접속하면 자동으로 IP 주소, DNS 서버 주소, first-hop router 주소를 부여
  • network address translation: 한 가정 내에 여러 대의 컴퓨터를 하나의 공식 IP로 지원
  • IPv6
    • 근본적인 주소 부족 문제 해결
    • 간단한 헤더
    • fragmentation reassembly 없음
    • flow 개념 도입
    • Checksum 없음


태그:

카테고리:

업데이트:

댓글남기기