컴퓨터 네트워크 - IP Address 부족 문제 해결(DHCP, NAT), IPv6
K-MOOC에서 부산대학교 유영환 교수님의 “컴퓨터 네트워킹” 강의를 수강하며 적은 노트
Dynamic Host Config, Protocol
dynamic host configuration protocol: 호스트가 자신의 IP 주소를 네트워크에 있는 서버로부터 자동으로 얻는 것
- 응용 레벨에 있는 프로토콜, 전송 프로토콜로는 UDP 사용
- 주소의 재 사용 가능: 여러 명 사용자가 동시에 접속할 확률은 거의 적기 때문에 컴퓨터 수만큼 IP 주소가 필요하지 않고, 동시간대에 접속하는 컴퓨터의 수만큼만 IP 주소 확보하면 됨
- plug & play 가능: 전원을 꽂거나 랜 선에 꽂기만 하면 컴퓨터를 사용 가능함. 이전에는 고정 IP주소를 받아 직접 설정 해 줌
- 과정: discover, offer, request, ack
- 네트워크 내에는 223.1.2.5 라는 주소를 가진 DHCP 서버가 존재
- 클라이언트가 접속, 현재 자신의 주소도 모르고 자기가 접속한 네트워크 ID나 DHCP 서버 주소도 모름
- source 주소는 0.0.0.0, 목적지 주소는 255.255.255.255로 전송
- 255.255.255.255: broadcast IP. 네트워크 안의 모든 컴퓨터들이 메시지 받음
- DHCP 서버는 이를 받고 새 클라이언트 접속을 알아챔, 사용 가능한 IP 주소를 broadcasting으로 알려줌
- + 기본 게이트웨이(컴퓨터가 인터넷에 접속할 때 처음 거치는 라우터) 주소
- + 네트워크 내에서 사용하는 DNS 서버의 주소
- 클라이언트는 offer 메시지를 받고 transaction ID를 체크해 같은 번호라면 자신의 DHCP discover 메시지에 대한 응답임을 알아챔
- 해당 주소를 사용하기 위해 DHCP request 메시지를 주소를 0.0.0.0인 채로 broadcasting
- 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 없음
댓글남기기