네트워크를 배우면서 제일 중요하다고 생각하는 개념은 IP 주소 라고 생각한다. 어떠한 지역을 찾아 갈때 주소가 필요하듯이 패킷도 도착해야 하는 주소가 존재한다.
IP 주소는 현재 Version 4 와 Version 6가 존재한다. 줄여서 IPv4 IPv6라고도 부르는데 일반적으로 IPv4를 많이 사용하고 IPv6는 대규모 IDC에서 사용한다고 들었다.

위 사진은 IPv4의 모습이다.IPv4는 32bit로 구성되어있고 점 기준으로 옥텟으로 구분한다.
IP는 기본적으로 10진수로 표현하지만 2진수로도 표현이 가능해야한다.(서브넷팅, CIDR)
IP주소는 Network 부분과 Host 부분으로 나누게 되는데 처음 네트워크를 배울때는 Classful으로 클래스마다 네트워크를 나누어서 IP주소 대역을 결정했다.
| class | address range | subnetmask |
|---|---|---|
| A | 0.0.0.0 ~ 127.255.255.255 | 255.0.0.0 |
| B | 128.0.0.0 ~ 191.255.255.255 | 255.255.0.0 |
| C | 192.0.0.0 ~ 223.255.255.255 | 255.255.255.0 |
| D(멀티캐스트용) | 224.0.0.0 ~ 239.255.255.255 | - |
class 형태로 IP를 나누다보니 최근에는 많은 IP주소가 낭비되고 부족한 현상이 발생하여 조금더 세부적으로 나누기 위해 CIDR라는 개념을 도입했다.
IP를 확인하다 보면 192.168.0.1/24 이런 형식의 주소를 확인할 수 있는데 24의 의미는 서브넷 마스크를 의미하는데 1의 갯수를 나타나게 된다. IP는 네트워크 부분, 호스트 부분으로 나누는데 네트워크 부분이 같다면 같은 네트워크 대역에 속해 있다는 의미이다.
192.168.0.1/24를 2진수로 변경하게 된다면
1 1 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 . 0 0 0 0 0 0 0 0 . 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 . 1 1 1 1 1 1 1 1 . 1 1 1 1 1 1 1 1 . 0 0 0 0 0 0 0 0
1부분 -> 네트워크
0부분 -> 호스트
서브넷 마스크와 IP주소를 AND 연산하게 되면 192.168.0.0 이 나오는데 네트워크 대역이다
이렇게 Class 마다 IP를 나누는것이 아닌 조금더 세부적으로 네트워크를 나눌수 있는 방식이다. Classless 방식