IP addressing: CIDR

  • CIDR(Classless InterDomain Routing)
    • subnet part와 host part로 나뉨 -> 0x32와 1x32(0이 32개 혹은 1만 32개)인 경우는 사용하지 않음
    • subnet part가 늘어날수록 host part는 줄어듦
    • IP address는 independent함 -> 각각 다른 컴퓨터에서도 사용이 가능(동시사용은 불가능)

    • /23은 subnet이 23비트 차지하고 있다는 의미

DHCP(Dynamic Host Configuration Protocol)

  • 할당 받을 때마다 address가 바뀜
  • 목적 : 임의의 host가 network안(wifi 등)에 들어가서 인증 후에 network server로부터 IP address를 받아야 할때 -> join할 때마다 새롭게 받을 수 있음
  • 접속하여 받은 address를 접속을 끊은 후에 다른 기기에서 재사용 가능
  • 모바일 유저에 엑티브하게 활용 가능
  • DHCP overview
    • DHCP discover : 호스트 브로드캐스트
    • DHCP offer : server만 responds함 -> address 권유
    • DHCP request : IP address 요청
    • DHCP ack : IP address가 포함된 ACK
    • 예제

    • 같은(근처) 서브넷안의 DHCP server로만 요청가능

 

  1. DHCP discover : server에 브로드 캐스트 모두 F인 address는 broadcast - 모두가 받을 수 있음
  2. DHCP offer : 서버가 사용할 수 있는 IP주소를 제안
  3. DHCP request : 클라이언트가 제안받은 주소를 사용하겠다고 요청
  4. DHCP ack : ACK를 받으면 이때부터 IP address를 가지고 수행
  • 예제

  1. 노트북에 연결하려면 IP 주소, 첫 번째 홉 라우터의 주소, DNS 서버의 주소가 필요
  2. UDP로 캡슐화 된 DHCP 요청, IP로 캡슐화 된 패킷, 802.11 이더넷으로 캡슐화 된 DHCP 요청
  3. DHCP 서버를 실행하는 라우터에서 수신 된 LAN의 이더넷 프레임 브로드 캐스트 (dest : FFFFFFFFFFFFF)
  4. IP 역 다중화 된 이더넷, DHCP로 UDP 역 다중화 된 이더넷
  5. DCP 서버는 클라이언트의 IP 주소, 클라이언트의 첫 번째 홉 라우터의 IP 주소, DNS 서버의 이름 및 IP 주소를 포함하는 DHCP ACK를 공식화
  6. DHCP 서버의 캡슐화, 클라이언트에 전달 된 프레임, 클라이언트에서 DHCP 로의 demuxing
  7. 클라이언트는 이제 DSN 서버의 IP 주소, 이름 및 IP 주소, 첫 번째 홉 라우터의 IP 주소를 알고 있음

IP address를 얻는 방법

  • ISP's block -> 서브넷 까지만 표시 - ex) 200.23.16.0/20 -> 가장 상위에서 20비트까지만 서브넷 part라는 의미 -> 나머지 2^12까지 디바이스 관리 가능
  • 하위로 내려갈수록 서브넷이 넓어지고 관리할 수 있는 디바이스가 줄어듦 - Hierarchical(계층적)

 

  • 계층적으로 연결되어 있어서 연결이 안되어 있다면 상위로 들어가서 찾을 수 있음
  • 예제 - 가장 상위 ISP가 1000 0000이라고 가정해보자, 아래로 2개의 서브넷이 있으며 내려오면서 각각 1000 0000, 1100 0000의 주소를 할당 받는다. 그리고 그 아래로 각각 4개씩 총 8개의 서브넷이 00, 01, 10, 11을 할당받고 가장 아래에 또 두개씩 0,1을 할당받는다.

  • 여기서 가장 하위의 서브넷인 11111에서 10000의 서브넷으로 메시지를 보내고자 함
  • 먼저 연결된 상위 서브넷(1111)으로 이동후 하위의 서브넷들을 검사는데 없다면 더 상위의 서브넷(11)으로 이동
  • 다시 하위의 서브넷들을 검사하고 그래도 없다면 더 상위(1)의 서브넷으로 이동 후 하위의 서브넷들 검사
  • 10으로 시작하는 서브넷을 찾았으니 그쪽으로 이동 아래로 이동하면서 원하는 서브넷의 주소에 해당하는 디바이스를 찾아냄 -> 메시지 전송

NAT(Network address translation)

  • ICANN(Internet Corporation for Assigned Names and Numbers)라는 회사에서 IP할당 -> 2011년부터 IPv4지급이 끝나고 NAT를 이용하여 네트워크를 사용하기 시작
  • NAT

  • 그림과 같이 중앙의 router가 단일 주소인 138.76.29.7을 가지고 있고 아래로 서브넷들이 10.0.0.1~10.0.0.3을 가지고 있다면 실제로 IPv4를 할당 받은 것은 연결된 router하나이고 하위 서브넷들은 router의 주소 하나를 이용하여 통신
  • NAT router must
    1. 패킷을 받았을 때 header를 바꾸고 저장(기억)
    2. NAT translation table에 기억 -> 응답에 대한 목적지가 router이기 때문에 하위 서브넷들에게 전송하기 위함
    3. 응답을 받았으면 다시 헤더를 원래 목적지로 바꾼 후 전송

  1. 서브넷에서 IP address를 보내면 router가 받아 새로운 address(자기자신)와 port넘버(서브넷을 위한 것)를 할당
  2. 다시 응답을 받으면 port number를 보고 자신과 연결된 subnet에 응답을 전송(목적지를 바꿈)
  3. 서브넷으로부터 메시지를 받은 목적지에서는 응답에 대한 목적지를 라우터로 인식하기 때문에 포트넘버를 할당해야 최종 목적지로 전송 가능
  4. subnet은 중간에 router가 개입한 것을 모르고 있음
  5. 2^16개의 port를 할당가능

IPv6

  • 사용률이 적음, 5%정도
  • 단점 : 개발을 했을 때 연결되어있는 그 공간에서는 잘 실행되지만 다른 공간으로 가서 사용하는 경우 실행되지 않음
  • 서브넷에 외부 IP와 매칭시키면 외부에서 서브넷과 연결 시 공유기 설정을 바꿔줘야됨
  • IPv4의 address가 부족해서 만들어짐 -> 40바이트의 헤더로 고정
  • no fragmentation -> 대신 압축을 사용
  • format

  • pri(우선순위) : 흐름에서 데이터 그램 간의 우선 순위 식별
  • flow Label(흐름 레이블) : 동일한 "흐름"의 데이터 그램을 식별합니다.
  • next header(다음 헤더) : 데이터의 상위 계층 프로토콜 식별
  • payload len : 데이터 파트
  • 체크섬 : 각 홉에서 처리 시간을 줄이기 위해 완전히 제거
  • 옵션 : 허용되었지만 header 외부, "next header"필드로 표시됨
  • ICMPv6 : 새로운 버전의 ICMP 추가 메시지 유형, 예 : "너무 큰 패킷" 멀티 캐스트 그룹 관리 기능
  • Transition from IPv4 to IPv6
    • 모든 라우터들을 최신 버전에 맞게 업그레이드 할 수 없으므로 이 방식을 사용
    • IPv4의 데이터그램이 IPv6를 통째로 data형식으로 감싸는 방식

  • Tunneling

  1. IPv6를 통째로 IPv4의 datagram payload에 놓고 감싸서 보냄
  2. 목적지는 그 다음에 받을 IPv6의 라우터로 지정
  3. IPv6에 도착하면 다시 감싼걸 풀어서 전송
  4. Google : 8 %의 고객이 IPv6을 통해 서비스에 액세스
  5. NIST : 모든 미국 정부 도메인 중 1/3은 IPv6 가능

 

 

 

 

 

 

 

 

+ Recent posts