📌 IPv4
- 32비트로 표현되는 주소체계
- 2^32개의 주소를 표현가능(42억 9천만개)
- 8비트를 10진수로 표현해서 사용
- 이 주소체계만으로는 부족하기 때문에 NAT, 서브네팅 같은 부가적인 기술들이 필요
✅ 8비트 = 1옥텟
📌 IPv6
- 128비트로 표현되는 주소체계
- 2^128개의 주소를 표현 가능(NAT, 서브네팅이 필요없음)
- 16비트씩 8개로 구분하며 16진수로 콜론으로 구분하여 표시
- 앞의 64비트는 네트워크 주소를 말하며 뒤 64비트는 인터페이스 주소로 이루어짐
⭐ IPv6의 특징
✅ IPSec이 내장됨
- 데이터 패킷을 암호화하는 보안 네트워크 프로토콜
✅ 단순해진 헤더포맷
- IPv4헤더의 불필요한 필드를 제거하여 보다 빠른 처리 가능
✅ 체크섬이 없다
- IPv4에는 CRC를 통해 손상된 패킷을 확인하고 폐기하는 체크섬필드가 있다(Header Checksum 필드)
- 상위 프로토콜(TCP, UDP)에 체크섬필드가 있기때문에
헤더의 효율화
를 위해 IPv6에는 존재하지 않는다.
- 만일, IPv6 + UDP를 사용할 경우, UDP헤더의 체크섬필드를 사용한다고 설정해야 함
✅ 인터넷 헤더길이에 대한 정보가 없다.
- IPv4는 가변길이지만 IPv6는 고정길이(40바이트)이다.
- 따라서 인터넷헤더길이에 대한 정보, 식별, 플래그 등이 삭제됨
⭐ CRC(Cyclic Redundancy Check)
- 순환중복검사로 네트워크상에서 데이터에 오류가 있는지 확인하기 위한 체크값을 결정하는 방식
- 데이터를 전송하기 전에 주어진 데이터의 값에 따라 CRC 값을 계산하여 데이터에 붙여 전송하고, 데이터 전송이 끝난 후 받은 데이터의 값으로 다시 CRC값을 계산한다. 이어서 두 값을 비교하고, 다르면 데이터 전송과정에서 잡음 등에 의해 오류가 덧붙여 전송된 것임을 알 수 있다.
⭐ TTL(Time to Live)
- TTL필드는 패킷이 네트워크에서 무한순환하지 않도록 하는 변수
- 패킷이 네트워크에서 라우터를 거칠때마다 TTL값이 1씩 감소
- 값이 0이되면 패킷이 폐기됨
- IPv6에서는 HOP Limit으로 대체됨
✅ IPv4 vs IPv6 뭐가 더 빠르죠?
- IPv6는 더 많은 주소를 표현할 수 있다(주소 커버리지가 넓다)
- 불필요한 헤더가 삭제되어서 빠르고 기본적으로 IPSec 네트워크 보안제품군이 포함되어 보안적인 측면에서도 우수하다
- 보통은 IPv6가 IPv4보다 속도가 빠르지만 IPv6에서 사용하는 더 큰 패킷 크기로 인해 일부 사용사례에서 느린경우도 존재
📌 클래스풀(Classful IP Addressing)
- IP주소는 인터넷주소로 네트워크주소, 호스트 주소로 나뉨
- 네트워크 주소가 동일 = 같은 로컬 네트워크
- 호스트 주소 : 호스트를 구분하기 위한 주소
⭐ 클래스 A (0)
- 1.0.0.0 ~ 126.255.255.255
- 한 네트워크당 2^24 - 2 개의 호스트 ID(16,777,214)
- 0과 127은 각각 임시주소와 루프백주소(본인IP)로 특수주소이기 때문에 포함하지 않음(
클래스A의 특징
)(127.0.0.1 or localhost)
- 네트워크 주소 1옥텟, 호스트 주소 3옥텟
ex) 124.0.32.52와 124.23.54.63는 같은 네트워크
ex) 124.0.32.52와 125.0.12.45는 다른 네트워크
⭐ 클래스 B (10)
- 128.0.0.0 ~ 191.255.255.255
- 한 네트워크당 2^16 - 2개의 호스트 ID(65,534)
- 네트워크 주소 2옥텟, 호스트 주소 2옥텟
ex) 134.0.32.52와 134.0.54.63는 같은 네트워크
ex) 134.0.32.52와 134.23.12.45는 다른 네트워크
⭐ 클래스 C (110)
- 192.0.0.0 ~ 223.255.255.255
- 한 네트워크당 2^8 - 2개의 호스트 ID(254)
- 네트워크 주소 3옥텟, 호스트 주소 1옥텟
ex) 192.0.0.3과 192.0.0.13은 같은 네트워크
ex) 192.0.0.1과 192.0.1.7은 다른 네트워크
✅ 주소당 2개씩 빼는 이유
- 맨 앞자리는 네트워크 주소로 남겨둠
네트워크 주소
: 전체 네트워크에서 작은 네트워크를 식별하는데 사용
ex) 192.0.0.0
- 맨 뒷자리는 브로드캐스팅 주소로 남겨둠
브로드캐스트 주소
: 네트워크에 있는 컴퓨터나 장비 모두에게 한번에 데이터를 전송하는 데 사용되는 전용 IP주소
ex) 192.0.0.255
⭐ 클래스풀의 문제점
ex1) 네트워크의 크기가 작은 경우 큰 네트워크를 필요로 하는 조직은 여러개를 확보해야 한다. 네트워크의 수가 많아짐
ex2) 작은 네트워크가 필요한 조직의 경우 너무 많은 IP를 가져가므로 IP가 낭비됨
📌 클래스리스
- 클래스풀의 단점을 해결하기 위해 등장
- 클래스로 나누는 것이 아닌
서브넷마스크
를 중심으로 나눔
- 현대 주소체계
✅ 서브네팅
✅ 서브넷
✅ 서브넷마스크
- 서브 네트워크를 위한 비트마스크
- 네트워크 주소는 모두 1, 호스트 주소는 모두 0으로 표기
-
CIDR : 왼쪽에서부터 1의 개수
-
10000000 : 2^7 = 128개 호스트주소 사용가능(255.255.255.128)
-
11000000 : 2^6 = 64개 호스트주소 사용가능(255.255.255.192)
-
11100000 : 2^5 = 32개 호스트주소 사용가능(255.255.255.224)
-
11110000 : 2^4 = 16개 호스트주소 사용가능(255.255.255.240)
=> 세분화
가 된다
-
클래스 A는 255.0.0.0
-
클래스 B는 255.255.0.0
-
클래스 C는 255.255.255.0
ex) 12개의 IP를 할당해야할 때 올바른 서브넷마스크?
- 255.255.255.240(11111111.11111111.11111111.11110000)
ipconfig
⭐ NAT(Network Address Translation)
- 패킷이 트래픽 라우터 장치를 통해 전송되는 동안 패킷의 IP주소를 변경하여 다른 IP주소로 매핑하는 방법
- 외부와의 통신할때는 공인 IP, 네트워크내에서는 사설IP 사용
- 내부 네트워크IP가 노출이 안되 보안적으로 좋음
ex) Wi-Fi
- IP주소의 부족 문제를 해결(Public IP / Private IP)