Post

IP 주소 ( Internet Protocol address )

Untitled

최근 공부해본 IP 주소와 네트워크 기본 내용들을 정리해보고자 한다.

  1. IPv4 vs IPv6
  2. 공유기 ( Router )
  3. NAT ( Network Address Translation )
  4. Port
  5. Port Fowarding
  6. Dynamic vs Static IP address




1. IPv4 vs IPv6

우리가 휴대전화로 서로 문자나 전화를 하기 위해서는 각 전화기를 구분해 줄 수 있는 전화번호가 필요하다. ​마찬가지로 인터넷에서 컴퓨터끼리 통신하기 위해서는 컴퓨터마다의 고유한 주소 즉 IP address가 필요하다. ​IPv4와 IPv6는 IP주소를 표현하는 방법이다.

IPv4

IP version 4 의 줄임말이고. 오늘날에 가장 일반적으로 사용되는 IP주소이다. 0 ~ 255까지의 십진수 4개가’.’(dot)으로 연결된 형태이다. 0.0.0.0 ~ 255.255.255.255 까지의 범위를 사용하고 가능한 경우의 수는 256 ^ 4 = 42억 9496만 7296개이다.

Untitled

IPv6

IP version 6 의 줄임말이다. 모바일기기와 컴퓨터의 보급으로 42억개의 IP주소가 부족해짐에 따라 두자리 16진수 8개를 ‘:’(콜론) 로 연결한 형태인 IPv6가 등장했다. 가능한 IP주소의 경우의 수는 2 ^ 128 개이다. 연속되는 0000은 ‘::’ 로 표현할 수 있다.
ex) 1234.abcd:1000:0000:0000:0000:1111:2222 → 1234:abcd:1000::1111:2222

Untitled




2. 공유기 ( Router )

​ 위에서 설명했던 것 처럼 인터넷에서 컴퓨터끼리 통신하기 위해서는 서로 구분되는 주소가 존재해야 한다. 한 집에 컴퓨터 한대만 있던 시절에는 ISP(Internet service provider) 즉 통신사에서 한 개의 IP만 할당 받아도 충분했다. 그러나 최근 휴대전화와 랩탑, 데스크탑 등 한 가정에서 사용하는 기기가 많아지며 통신사로부터 각각의 IP 주소를 모두 할당 받기에는 금전적 부담이 커지게 된다. 그렇기 때문에 일반 가정에서는 공유기를 사용한다.

Untitled


라우터의 역할을 간단하게 표현하기 위해 만들어본 그림이다. 이해를 위해 먼저 Public IP addressPrivate IP address의 차이를 알아보자.

Public IP address(공인 IP주소)

외부에 공개돼 있는 IP로 외부 컴퓨터에서 접속이 가능하다. 전세계에서 유일하다. 따라서 보안에 취약할 수 있다. 주소로 비유해보면 ○○시 ○○로 ○○길 ○○ 아파트 로 생각해볼 수 있다.

Private IP address(사설 IP주소)

공유기를 통해 할당되는 IP로 유일한 값이 아니고 외부에서 접근이 불가능하다. 주소로 비유해보면 ○○○동 ○○○○호로 생각할 수 있다. 다른 아파트여도 동호수는 겹치는 경우가 있기 때문에 동호수만 가지고는 정확한 위치를 찾을 수 없다. 그렇기에 외부에서의 직접적인 접근이 불가능하고 보안이 용이하다. ​

1
2
3
4
사설 IP 대역
A 클래스 : 10.0.0.0 ~ 10.255.255.255  
B 클래스 : 172.16.0.0 ~ 172.31.255.255  
C 클래스 : 192.168.0.0 ~ 192.168.255.255

라우터는 공인 IP주소를 할당받고 연결된 다른 기기들에게 사설 IP주소를 할당해 준다. 라우터의 이용으로 IPv4의 IP부족 문제를 해결할 수 있다. 물론 IPv6의 등장으로 IP부족 문제를 해결할 수는 있지만 IP주소 체계를 갑자기 바꾸기는 어렵기 때문에 현재는 IPv4와 IPv6를 혼용하는 동시에 라우터를 사용하여 IPv4의 한계 범위를 확장시켜 준다.
※ Gateway address는 라우터의 사설 IP주소이다.




3. NAT ( Network Address Translation )

문자 그대로 네트워크 주소를 변경해주는 라우터의 기능이다. Untitled

Host 컴퓨터에서 google.com에 어떤 요청을 보내고 응답을 받을 때의 간단한 순서도이다.

Host 컴퓨터가 라우터의 Gateway address로 요청을 보내면 라우터는 Host의 사설 IP주소를 라우터에 저장하고 공인 IP주소로 변환하여 google.com에 요청을 보낸다.

google.com이 라우터의 공인 IP주소로 응답을 보내면 라우터는 응답의 공인 IP주소를 Host 컴퓨터의 사설 IP주소로 변환하고 Gateway address를 통해 Host 컴퓨터로 응답을 전송한다. NAT를 통해 사설 IP주소를 가진 기기가 외부망과 인터넷으로 통신 할 수 있는 것이다.



4. Port

우리는 인터넷으로 웹 서핑을 하고 파일을 주고받기도 하며 다양한 기능을 사용한다. 이 기능을 구분해 주는 것이 Port다. 쉽게 말해서 IP주소는 컴퓨터를 식별하고 포트번호는 컴퓨터 안에서 프로그램, 프로세스를 식별하는데 사용된다.​ 포트번호가 없다면 웹서핑을 할때, 채팅을 할때, 파일을 주고받을 때 충돌이 생길 수 있다. 포트번호는 16bit로 이루어져 있으며 0~65536 사이의 값을 가진다. 포트번호 중에서 특정 범위의 포트는 역할이 정해져있다. 아래는 포트 번호의 구분이다.

1
2
3
0번 ~ 1023번: 잘 알려진 포트 (well-known port)  
1024번 ~ 49151번: 등록된 포트 (registered port)  
49152번 ~ 65535번: 동적 포트 (dynamic port)


well-known port

1
2
3
4
20 - FTP (FIle Transfer Protocol)
22 - ssh 
80 - HTTP (Hyper Text Transfer Protocol) 
443 - HTTPS

유명한 포트가 몇가지 있다.​

registered port

1
2
3
3306 - MySQL (Database Management system)
5601 - Kibana (데이터를 표, 그래프 등으로 시각화하여 시각적으로 탐색 분석 할 수 있게 해주는 서비스)
9200 - Elasticsearch (데이터를 저장소에 저장하고 그 데이터를 분석, 조회, 관리)

익숙한 서비스들이 몇가지 보인다.​


5. Port Fowarding

​외부망에서 사설 IP주소를 가진 컴퓨터에 접속하는 것은 불가능하다.
그런데 만약 나의 개인 컴퓨터로 서버를 열고 홈페이지를 만들었는데 다른 사람들도 내 홈페이지에 접속할 수 있도록 하고 싶다면 어떻게 해야 할까? 이를 위해 포트 포워딩이 있다. ​ Untitled ​​
​​ 위 그림처럼 라우터에서 59.6.56.23:8080로 접속이 들어오면, 196.068.0.4:80으로 보내주도록 설정해 주면 외부망에서도 ​ 사설 IP주소 서버로 접속할 수 있다.


6. Dynamic vs Static IP address

IP주소를 효율적으로 사용하기 위해 또 다른 방법이 있다.

Dynamic IP address (유동 IP주소)

말 그대로 IP주소가 계속해서 바뀐다. 사용자가 IP주소를 사용하지 않고 있다면 그 IP주소를 다른 사용자에게 할당해 한정된 IP주소를 효율적으로 사용한다. 유동 IP주소를 사용하면 보안성이 높아지고 고정 IP주소보다 값이 싸다. ​

Static IP address (고정 IP주소)

유동 IP주소와는 다르게 변경되지 않는 공인 IP주소이다. IP를 한번 부여받으면 반납하기 전까지 해당 IP를 사용한다. 유동 IP주소는 고정 IP주소에 비해 가격이 저렴하다는 장접이 있다. 그런데 만약 유동 IP주소로 서버를 열면 IP주소가 계속 바뀌어 서버의 사용자가 서버를 이용하기 힘들다는 맹점이 존재한다. 이를 해결하기 위해 DDNS가 존재한다. ​

DDNS( Dynamic DNS )
우리가 네이버나 구글 같은 서버를 이용하기 위해서는 그 서버의 IP주소를 알아야 한다.
하지만 우리는 서버에 접속할 때IP주소를 입력하지 않고 naver.com 이나 google.com같은 도메인을 사용한다.

우리가 특정 도메인 이름에 접속을 요청하면 컴퓨터는 DNS(Domain Name System) 에서 해당 도메인을 사용중인 IP주소를 반환받아 이동하게 된다. DDNS는 DNS의 역할을 하지만 추가적으로 유동 IP주소 또한 고려해준다. 특정 서버가 유동 IP주소를 사용하고 있어 IP주소가 변경된다면, DDNS에 변경된 IP주소가 업데이트 된다. 서버의 사용자는 도메인 네임만 알고 있다면 IP주소가 유동적이어도 서버를 정상적으로 이용할 수 있게 된다.

This post is licensed under CC BY 4.0 by the author.