[ 개발자 대화를 위한 넓고 얕은 CS 지식 ] IP주소

Joosi_Cool·2023년 3월 27일
19
post-thumbnail
post-custom-banner

들어가기 전

이번 블로깅에선 인터넷 계층에서 쓰는 IP 주소 에 대해 알아보자.

ARP

컴퓨터와 컴퓨터 간의 통신은 어떤 것을 기반으로 통신한다고 생각하는가? 보통은 IP 주소를 통해 한다고 생각할 것이다.
정확히 말하자면 IP주소에서 ARP 를 통해 가상 주소인 IP 주소를 실제 주소인 MAC 주소로 변환한다. 이와 반대되는 개념으로 RARP 를 통해 실제 주소인 MAC을 IP주소로 변환하기도 한다.

아래 그림을 집중해서 보자.

장치 A가 장치 B를 찾는다고 가정해보자.
장치 A는 ARP Request 브로드캐스트 를 보내서 B의 IP주소인 120.70.80.3에 해당하는 것을 찾는다.
-> 여기서 브로드캐스트 란, 송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전송되는 방식이다.
그리고 주소에 맞는 B가 ARP Reply 유니캐스트 를 통해 실제 주소인 MAC 주소로 변환하는 과정을 거쳐 실제 주소를 찾게 된다.
-> 여기서 유니캐스트 는 고유 주소로 식별된 하나의 네트워크 목적지에 1:1로 전송하는 방식이다.



홉바이홉 통신

홉바이홉 통신이란?

IP 주소를 통해 통신하는 과정을 홉바이홉 통신이라고 한다. 여기서 홉 (hop) 이란 영어 뜻 자체로는 건너뛰는 모습을 의미한다.
통신 장치에 있는 라우팅 테이블 의 IP를 통해 시작 주소부터 시작하여 다음 IP 주소로 이동하는 라우팅 과정을 거쳐서 최종 목적지에 도달하는 통신 방식이다. 이 모습이 건너뛰는 모습과 닮아 이런 이름이 붙여졌다. 아래 그림을 보면 이해가 더 쉬울 것이다.

라우팅 테이블?

라우팅 테이블(routing table)은 송신지에서 수신지까지 도달하기 위해 들어가 있는 목적지 정보들 과 그 목적지로 가기 위한 방법 이 들어가 있는 리스트를 뜻한다. 여기에는 게이트웨이 와 모든 목적지에 대해 해당 목적지에 도달하기 위해 거쳐야 할 다음 라우터의 정보를 가지고 있다.

출발지부터 도착지까지 가기 위한 내비게이션 데이터가 들어가있다면 이해가 쉬울 것 같다.

게이트 웨이?

게이트웨이(gateway) 는 서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하는 관문 역할을 하는 컴퓨터나 소프트웨어를 두루 일컫는 용어를 말한다.
A네트워크에서 B네트워크로 넘어가기 위해선 서로 다른 네트워크상의 통신 프로토콜을 변환하는 과정이 필요하다. 게이트웨이가 이 역할을 행한다.

우리가 고속도로에서 A 지역에서 B 지역으로 넘어갈때 톨게이트를 지나는데 이 역할을 게이트 웨이가 한다고 생각하면 이해가 쉬울 것이다.



IP 주소 체계

IP주소 종류는 IPv4, IPv6 으로 나뉜다.
1. IPv4는 32비트를 8비트 단위로 점을 찍어 표기한다.
-> ex) 123.45.67.89
2. IPv6sms 64비트를 16비트 단위로 점을 찍어 표기한다.
-> ex) 2001:db8::ff00:42:8329

IPv4는 이전에는 많이 쓰이다가 요즘에는 사용할 수 있는 주소 양이 상대적으로 적어 IPv6으로 넘어가고 있는 추세이다. 그래도 현재 많이 쓰이는 것은 IPv4이다. 이후에 설명할 부분도 IPv4에 맞춘 설명이다.

클래스 기반 할당 방식

IP주소 체계는 과거에서 지금까지 여러 발전을 해왔다.
처음에는 A, B, C, D, E 5개의 클래스로 구분하는 클래스 기반 할당 방식을 썼다. 앞에 있는 부분을 네트워크 주소, 그 뒤에 있는 부분을 컴퓨터에 부여하는 주소인 호스트 주소로 놓아서 사용한다.

  • 네트워크 주소, 호스트 주소?

    Network ID는 인터넷 상에서 모든 Host들을 전부 관리하기 힘들기에 한 Network의 범위를 지정하여 관리하기 쉽게 만들어 낸 것이다. 그리고 Host ID는 호스트들을 개별적으로 관리하기 위해 사용하게 된 것이다.

이것들을 클래스를 통해 구분하게 된다.

A,B,C 는 일대일 통신으로 사용되고, 클래스 D는 멀티캐스트 통신으로 사용된다. 클래스 E는 미래를 위해 예비로 둔 클래스 입니다.
A,B,C 는 네트워크 주소를 담당하는 양과 호스트 주소를 담당하는 양을 다르게 하여 차이를 두었다.

이들을 어떻게 사용할까? 예시를 하나 들어보는 것이 개념을 듣는 것보다 훨씬 이해가 쉬울 것이다.

클래스 A로 12.0.0.0 이란 네트워크를 부여받았다고 가정해보자. 그렇다면 호스트 주소는 12.0.0.1 ~ 12.255.255.254의 호스트 주소를 부여 받은 것이다. 이때 12.255.255.255는 마지막 주소로 브로드캐스트용으로 남겨두어야 하기 때문에 사용하지 말아야 한다.

하지만 이 방식은 사용하는 것보다 버려지는 IP주소들이 많다는 단점이 있다. 이를 해결하기 위해 나온 것이 뒤에 설명할 DHCP, IPv6, NAT 등이 있다.



DHCP

DHCP (Dynamic Host Configuration Protocol)는 IP주소 밒 기타 통신 매개변수를 자동으로 할당하기 위한 네트워크 프로토콜이다. 이 기술을 통해 네트워크 장치의 IP 주소를 수종으로 설정할 필요 없이 인터넷에 접속할 때마다 자동으로 IP 주소를 할당할 수 있다.

이는 실제 우리가 쓰는 가정용 컴퓨터에 쓰인다. IPv4 에선 낭비되는 IP 주소를 줄여야하는데 이것이 도움이 많이 된다.
가정용 네트워크는 컴퓨터를 키는 동시에 IP 주소를 할당해주고, 전원 종료시 IP 주소를 다시 회수에 간다. 이를 통해 낭비되는 IP주소를 예방할 수 있다.

많은 라우터와 게이트웨이 장비에 DHCP 기능이 있으며 앞서 말한 것처럼 가정용 네트워크에서 이를 통해 IP 주소를 할당한다.



NAT

NAT (Network Address Translation)는 패킷이 라우팅 장치를 통해 전송되는 동안 패킷의 IP 주소 정보를 수정하여 IP 주소를 다른 주소로 매핑하는 방법이다. 이를 통해 낭비되는 IP 주소를 예방할 수 있다. 이를 위해 공인 IP와 사설 IP로 나눠서 많은 주소를 처리한다.

위에 사진자료 처럼 각기 다른 사설 IP를 NAT 장치를 통해 하나의 공인IP주소로 외부 인터넷에 요청할 수 있다.
이처럼 NAT 장치를 통해 사설 IP를 공인 IP 변환하거나 공인 IP에서 사설 IP로 변환하는데 쓰인다.

이는 우리 일상생활에 가까이 있는 예시가 있는데 바로 공유기이다. 우리가 공유기 하나를 통해 인터넷에 여러명이 접속할 수 있다. 이 이유가 공유기에 NAT기능이 있기 때문이다.

  1. 장점
    -> NAT을 이용하면 내부 IP와 밖으로 들어나는 외부 IP 주소를 다르게 하기 떄문에 내부 IP에 대한 보안을 지킬 수 있다.
  2. 단점
    -> 단 여려명이 인터넷이 접속하면 접속 속도가 느려질 수 있다는 단점이 있다.


마무리

이번 블로깅에선 IP주소 에 대해 알아보았다. 이 블로깅의 목적은 깊게 배우는 것이 아니라 개발자 대회에 낄 정도의 넒고 얕은 지식을 목표로 하고 있다. 이 블로깅을 통해서 전체적인 IP주소 에 대해 잡았으면 좋겠다. 그리고 감을 잡았고 좀 더 깊게 배우고 싶다면 이 블로깅의 키워드를 길로 잡아서 하나씩 공부해 나간다면 매우 도움이 될 것이라고 생각한다.

profile
집돌이 FE개발자의 노트
post-custom-banner

5개의 댓글

comment-user-thumbnail
2023년 3월 28일

IP 주소 체계에 대해 정리해 주셔서 감사합니다! 추가적으로 포트포워딩(Port Forwarding) 도 학습하시면 더 도움되실 것 같아요ㅎㅎ

답글 달기
comment-user-thumbnail
2023년 4월 4일

지금 귀하의 웹사이트에 몇 가지 기사를 게재했으며 귀하의 블로깅 스타일이 정말 마음에 듭니다. 즐겨찾는 블로그 사이트 목록에 추가했고 곧 다시 확인하겠습니다. www.wellcare.com

답글 달기
comment-user-thumbnail
2023년 4월 6일

Unrelated but Shin is really cute. I love this character and the cars in smash karts.

답글 달기
comment-user-thumbnail
2023년 4월 7일

짱구 귀여워요 ><

답글 달기