이번에는 IP에 대해 포스팅 해 보도록 하겠다.
벌써 백엔드로드맵을 연재한 지 시간이 꽤 지났다. 막상 글을 많이 쓴 것 같지는 않지만...
올해 안에 이 시리즈를 마무리하는 게 목표다. 사실 뭐 컨텐츠라 할 만한 게 없는 내 블로그지만, 이 시리즈를 연재함으로써 내 스스로의 역량을 키우려는 목적도 있었다.
5월에서 6월 두 달간 약간 침체기를 겪고 다시 연재를 하기 시작했다만, 이제 더이상 앉아서 힘들어하고만 하고 있을 수는 없으니까.
Internet Protocol Address. 참 직관적인 이름이다.
컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해 사용되는 특수한 번호이다.
네트워크에 접속 한 장치가 무엇이든 IP주소는 가지고 있어야 한다. 이 IP주소를 통해 메시지가 송 수신 되기 때문이다.
전화번호와도 같지만 앞서 말했듯 DNS를 통해 이러한 IP 주소들에 닉네임 같은 게 붙는다. google이든 naver든 인터넷 서비스 제공자들에게 DNS가 없다면 우리는 일일히 IP주소를 입력하여 이런 서비스를 사용해야 할 것이다.
종류는 두가지가 있다. IPv4, IPv6.
앞서 우리는 TCP/IP 4계층에 대해 알아보았다. Internet Layer에서는 ARP라는 프로토콜이 존재한다.
ARP란 Address Resolution Protocol 의 약자다. IP 주소로붙 MAC 주소를 구하는 IP와 MAC 주소이 다리 역할을 한다.
ARP를 통해 IP주소를 MAC 주소로 변환 할 수 있다. IP 주소는 사실 전화번호 역할, 즉 가상 주소 역할을 한다. 실제 주소는 따로 MAC 주소가 그 역할을 한다.
RARP를 통해 MAC를 IP로 바꿔 줄 수 있다.
어떤 장치 A가 ARP request broadcast를 보내서 특정 IP주소에 해당하는 MAC 주소를 찾는다면, 해당 주소에 맞는 장치 B가 ARP Reply unicast를 전달하여 MAC 주소를 변환하는 과정을 거치게 된다. 이런 방식으로 특정 IP 주소에 맞는 MAC 주소를 찾을 수 있다.
IP주소를 통해 통신하는 과정을 Hop by Hop 이라고 한다.
통신 장치에 있는 라우팅 테이블의 IP 를 통해 시작 주소부터 시작하여 다음 IP로 계속해서 이동하는 라우팅 과정을 거쳐 최종 목적지에 패킷이 전달되는 통신을 의미한다.
여기서 라우팅 테이블이란, 라우터에 들어가 있는 목적지 정보들과 그 목적지로 가기 위한 방법이 들어있는 리스트를 의미한다.
송신지에서 수신지 까지 도달하기 위해 사용되는 지도와 같은 역할을 한다. 다음 목적지의 라우터 정보들이 전달 되어있고, 이 라우터들을 하나하나 방문하며 최종 목적지에 패킷이 전달된다.
고속도로의 톨게이트 역할을 한다고 볼 수 있다.
서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하는 관문 역할을 하는 컴퓨터나 소프트웨어를 의미한다.
또 다른 네트워크에 접속하기 위해서는 이 Gateway를 거쳐야 한다. Gateway에서는 각자 다른 통신 네트워크의 프로토콜을 변환해주는 역할을 한다.
netstat -r
명령을 통해 현재 자신의 컴퓨터에 연결되어있는 Routing Table의 Gateway 가 어디있는 지 확인 할 수 있다.
클래스 기반으로 IP주소를 할당하는 방식. A, B, C는 일대일 통신, D는 멀티 캐스트, 클래스 E는 예비용으로 사용하는 방식이다.
다음 클래스로 넘어 갈 수록 네트워크 주소로 사용할 수 있는 바이트들이 커진다. 그리고 각 클래스 별로 할당하고 있는 주소들의 범위가 정해 져있다.
각 클래스 별 구분 비트를 통해 IP 주소의 범위가 나뉜다. 그리고 각 네트워크의 첫 번째 주소는 네트워크 주소, 마지막 주소는 브로드 캐스트용 주소로 적용된다.
예를 들어 클래스 A의 주소 범위가 0.0.0.0, 127.255.255.255라면 첫번째 주소 0.0.0.0이 네트워크 구별 주소, 마지막 127.255.255.255는 브로드캐스트용 주소로 할당되는 방식이다. 그 사이에 있는 주소들은 다른 컴퓨터에 부여할 수 있는 호스트 주소다.
CIDR의 단점은 사용하는 주소보다 버리는 주소가 많다는 것이다.
정말 자주 보게 되는 프로토콜.
Dynamic Host Configuration Protocol의 약자. IP주소 및 기타 통신 매개변수를 자동으로 할당하기 위한 네트워크 관리 프로토콜이다.
우리가 Wifi에 접속할 때 따로 IP 주소를 수동으로 설정 할 필요없이 자동으로 IP주소를 할당 시켜주는 기술이다.
Network Address Translation 의 약자.
패킷이 라우팅 장치를 통해 전송되는 동안 패킷의 IP 주소 정보를 수정하여 IP주소를 다른 주소로 매핑하는 프로토콜이다.
IPv4 주소 체계(왜 그런진 나중에 서술하겠다.) 로는 많은 주소들을 다 감당하기 힘든데, NAT가 이 문제를 해결 해 준다.
NAT는 공인 IP와 사설 IP로 주소들을 나눠서 많은 주소들을 처리한다.
192.168.XXX.XXX 이런 아이피들을 흔히 사설 IP라고 한다. NAT 장치를 통해 이 장치들은 하나의 공인 IP를 공유한다.
사설 IP가 할당 되어있는 장치들은 마치 공인 IP를 가진 기기마냥 외부 네트워크에서 서비스를 제공 받을 수 있다.
흔히 우리가 공유기를 설치하면 공유기가 NAT역할을 해 주는 걸 확인 할 수 있다.
간단하게 구별하면 IPv4는 32비트 데이터를 8비트씩 나눠서 처리하는 것이고 IPv6는 64비트 데이터를 16비트 씩 나누어서 처리하는 것이다.
IPv4로 감당할 수 있는 주소 양이 부족해져서 IPv6로 넘어가는 추세인 것 정도만 알면 충분 할 것 같다.
IP(Internet Protocol) 을 이해하는 데 필요한 지식들을 정리 해 보았다.
다음 포스팅은 HTTP다. 인터넷 파트에서 다뤘지만 조금 추가적으로 알아야 할게 보여서 따로 포스팅하기로 결정했다.