서로 연결하는 장치 (클라이언트-서버) 간에 서로를 인식하기 위해 사용되는 특수한 번호(논리적 주소) 이다. 일반적으로 네트워크에 연결할 때 해당 장치에 대한 IP 주소가 할당된다. (이건 네트워크 마다 다르다. 고정 IP를 할당할 수도 있다). 네트워크 통신 시에는 IP 주소를 통해 출발지와 목적지를 식별하기 위해 사용하지만 실제로는 그 밑에 물리적 주소인 MAC 주소를 통해 통신하게 된다.
MAC 주소는 네트워크 어댑터의 고유한 식별자로, 각각의 장치에 할당되어 있다. MAC 주소는 전세계적으로 유일하며, 48비트의 숫자로 이루어져 있다. 일반적으로 장치들의 네트워크 인터페이스 카드 (NIC 카드) 설정된 번호가 MAC 주소가 된다.
32비트, 41억 9천만의 주소, 8비트 단위로 .
으로 구분하여 총 4개의 구성으로 이루어져있다. 각 8비트마다 10진수로 표현한다. 41억 9천만개의 주소는 전세계 네트워크를 표현하기에는 부족하기 때문에 NAT, 서브네팅 등 여러개의 부수적인 기술이 필요하다.
128비트, 2^ 128개의 주소이며 전세계 네트워크를 표현하기에 충분한 개수이기 때문에, NAT, 서브네팅이 필요하지 않다. 16비트씩 8개로 구분하며, 16비트는 16진수로 변화하여 :
으로 구분하고, 앞의 연속되는 0의 경우 생략이 가능하다.
IP 주소는 네트워크 주소와, 호스트 주소로 두 부분으로 나뉜다. 네트워크주소는 호스트들을 모은 네트워크를 지칭하며, 호스트 주소는 네트워크 내의 각 장치를 구분하기 위한 주소이다.
IPv4를 기준으로 4개의 구분자 가운데, 첫 옥텟을 네트워크주소로 사용하는 경우를 ClassA, 두번째 옥텟까지 네트워크 주소로 사용하는 경우를 ClassB, 세번째 옥텟까지 네트워크 주소로 사용하는 경우를 ClassC 라고 한다.
한 네트워크당 16,777,214 개의 호스트 ID를 가질수 있다. 네트워크 주소 범위는 1~126이다.
127은 루프백 주소로 제외, 0.0.0.0 도 특수 주소라 제외한다.
한 네트워크 당 65,534 개의 호스트 ID를 가질 수 있다. 네트워크 주소 범위는 128~191이다.
한 네트워크 당 254 개의 호스트 ID를 가질 수 있다. 네트워크 주소 범위는 192~223이다.
맨 앞자리는 네트워크 주소로 제외되며, 마지막 주소는 브로드 캐스팅 주소로 제외된다.
네트워크의 크기가 작은 경우 큰 네트워크를 필요로 하는 조직은 여러개를 확보해야하는 어려움이 있으며, 작은 네트워크가 필요한 조직은 너무 많은 IP를 가져가므로 IP가 낭비된다. 예를 들어, 5000개 정도의 호스트 ID를 연결해야 하는 경우, ClassC로는 불가능하니, ClassB 를 사용하게 되는데, ClassB는 65,000개 정도 되니, 6만개의 IP가 낭비된다.
이를 위해, Classless와 NAT이 나오게 된다.
클래스로 나누는 것이 아닌 서브넷 마스크를 중심으로 어디까지가 네트워크 주소고 어디까지가 호스트 주소인지를 나눈다. 실제 일반적으로 사용되는 주소체계는 클래스리스를 사용한다.
네트워크 주소 부분만 모두 1, 호스트 주소 부분은 0으로 설정해서 나눈다. 서브넷마스크가 255.255.255.128 인 경우 기존 ClassC의 갯수를 254개에서 128개로 줄이는 것이 가능하고, 255.255.255.192 인 경우 64개로 줄이는 것이 가능해진다. (잘 모르겠다 어렵다)
IP 주소의 부족을 공인IP 와 사설IP로 나누고 중간에 NAT이라는 기술을 통해 해결한다.
패킷이 트래픽 라우팅 장치를 통해 전송되는 동안 패킷의 IP 주소를 변경, IP 주소를 다른 IP 주소로 매핑하는 방법이다. 송수신 시에는 공인 IP를 통해 통신을 하지만 요청이 도달한 경우에는 가상의 사설 IP를 통해, 응답을 받도록 해준다.
실제 가정에서 공유기를 사용하여 wifi 를 적용시키는 과정이 NAT이 적용된 방식이다.