STUDY/web

Port & IP & Port Forwarding

sonotree 2024. 9. 12. 14:37

1. 포트

포트(Port) = 논리적 접속 장소

인터넷 프로토콜인 TCP/IP를 사용할 때 클라이언트 프로그램이 네트워크 상의 특정 서버 프로그램을 지정하는 방법으로 사용한다.

 

하나의 IP에서 여러 애플리케이션을 실행할 경우, 즉 컴퓨터 하나로 인터넷 접속도 하고 메일도 보내는 경우 컴퓨터에는 여러 개의 서버가 실행되게 된다 (웹 서버, 메일 서버).

 

네트워크 상에서 통신을 할 때에는 IP주소를 바탕으로 해당 서버가 있는 컴퓨터에 접근하지만, 이런 경우에는 IP주소만으로는 어느 서버로 요청을 보내는지 알 수 없다. 

따라서 포트 번호를 통해 reciver을 특정하여 어느 서버로 보내는 요청인지 알려줘야한다.


2. 포트 - 예시와 함께 이해하기

www.naver.com:80이라고 URL 입력창에 입력하면 www.naver.com을 입력했을때와 동일한 페이지로 이동한다.

하지만 :80 이외의 숫자, 예를 들어 :8888등을 입력하면 페이지 접속이 되지 않는다.

이것을 토대로, 우리가 80을 쓰지 않으면 자동으로 눈에 보이지 않는 80이 입력된다는 것을 추론할 수 있다.

공백을 80을 쓴것과 같게 간주한다는 의미이다.

이 뒤에 붙는 80, 생략할 수 있는 숫자를 포트(port)라고 부른다.

 

 

모든 컴퓨터에는 포트가 있다. 포트는 0~65535개 정도가 있지만 여기서는 80번 포트를 중심으로 설명하려고 한다.

웹 브라우저를 설치하면  웹 브라우저는 80번포트에 연결되기로 약속되어진다.

Client 컴퓨터의 웹 브라우저를 통해 특정 주소로 이동할 때, 웹 브라우저는 Server 컴퓨터의 80번 포트를 찾아간다. 웹 브라우저는 80번 포트에서 대기하기로 약속되어있기 때문이다.

아까 전에 공백=80이 바로 이 약속에 의한것이다.그래서  80번 포트로 접속한다고 따로 명시하지 않아도(:80) 된다.

 

Client 서버의 웹 브라우저는 80번 포트를 찾아가고, 80번 포트에서 대기하고 있던 Server컴퓨터는 이를 알아차리고 그 결과를 Client 컴퓨터의 웹 브라우저에 돌려준다.

 

네트워크의 세계에서 1024번 포트까지는 Well-Known Port라고 하며, 여기에는 표준처럼 사용하고 있는 통신 시스템이 존재한다 (예를 들어 웹서버, SSH등). 이것들은 포트의 값을 고정해서, 접속할 때 특별히 포트 번호를 명시하지 않아도 된다.

 

이외의 포트들을 개인적으로 사용해도 된다. 내가 어떤 프로그램을 만들어 그중 하나를 쓸 수 있다는 의미이다.


3. IP & 공유기

IP(Internet Protocol)는 인터넷을 통해 데이터를 보내고 받는 방법을 제어하는 일련의 규칙이다. 데이터가 올바른 위치로 이동하도록 경로를 지정하고, 데이터를 패킷 단위로 나누어 전송한다.

 

IP 주소(IP Address)는 인터넷에 연결된 각 장치에 할당된 고유한 숫자 식별법으로, 점으로 구분된 일련의 4개의 숫자로 구성된다 (각 숫자의 범위는 0~225까지이다). 네트워크 상에서 장치가 서로를 식별하고 통신하기 위해 사용된다.

 

현재 사용중인 IP는 두 가지 방식이 있다.

  • IPv4: 약 43억개의 고유 주소를 지원할 수 있는 32bit 주소를 사용
  • IPv6: 128비트 주소를 사용

 

3.1. 공유기-사설 네트워크

인터넷을 사용하기 위해서는 전세계적으로 사용되는 IP주소가 있어야한다. IP주소는 고유한 값이기 때문에 중복되는 주소를 가지지 않는다. 하지만 전세계의 모든 장비에 IP를 할당하기에는 무리가 있다. 예를 들어, IPv4의 경우 약 42억개의 주소만 할당할 수 있다. 그렇기 때문에 전세계적인 네트워크가 필요하지 않은 장비들에 대해서는 별도의 사설 네트워크를 구축해 사용한다. 

-> 나의 휴대폰, 패드, 노트북이 모두 공인 IP를 가지기에는 무리가 있다는의미. 전세계 인구가 80억명이 이미 넘는데, 개인들이 1개 이상의 IP를 가지면...?

 

앞에서 언급한 인터넷이 가능한 아이피를 공인 IP라고 한다. 이러한 공인 IP는 고유한 값으로, 인터넷을 사용하는 기기에 하나씩 할당된다. 여기 조금 헷갈릴 수 있다. 뒤의 내용을 잘 읽자

이제부터 중요하다. 이런 공인 IP에서 10.x.x.x대역, 172.16~31.x.x대역 그리고 192.168.x.x대역은 사용되지 않는다. 이 대역을은 회사 또는 개인이 별도로 구축하게 될 사설 네트워크에서만 이용된다. 사설 네트워크는 전세계적인 인터넷이 아닌 국지적 네트워크이다. 사설 네트워크를 구축하기 위해서는 공유기가 필요하다.

 

공유기사설 네트워크를 만들면서 동시에 공인 IP 하나를 할당받는다. 그리고 공유기는, 공유기에 연결되는 모든 기기들에 사설 네트워크를 구축해주는 역할을 한다. 주로 사용하는 IP대역이 192.68.x.x이며, 사설 네트워크이기 때문에 위에서 언급했던 공인 IP 대역은 사용하지 않는다. 

192.168로 시작되는 IP주소를 가진 장비는 인터넷에 접속하기 위해 반드시 공인 아이피를 보유한 장비가 필요하다. 그래서 공유기에 연결된 모든 장비는 인터넷에 접근하기 위해 반드시 공유기를 거쳐야 한다.

->아래 사진과 같이, 컴퓨터1이 인터넷에 접근하기 위해서는 녹색 화살표처럼 공유기를 거쳐야한다.

 

 


4. 공인 IP & 사설 IP 간단히 정리

공인IP는 라우터가 ISP로부터 할당받아 인터넷과 통신하는데 사용된다. 네트워크마다 고유하며 숫자가 겹치지 않는다.

 

사설IP는 각 네트워크 내부에서만 사용되며 공인 IP주소와는 별개로 작동한다. 동일한 사설 IP주소를 사용해도 문제가 없다.

-> 나는 내 집 라우터에, 친구는 친구 집 라우터에 네트워크를 연결한 상태에서는 나와 내 친구의 사설 ip주소가 같을 수 있다. 하지만 도서관의 같은 라우터에 두 컴퓨터가 네트워크 연결되었을 때는 같은 사설 ip주소를 가질 수 없다.


5. IP 주소(네트워크 주소 + 호스트 주소) 

현재 보편적으로 사용되는 IP버전은 IPv4이다.

IPv4(Internet Protocol version 4)는 32비트로 구성된 주소 체계로, 8bit 단위로 점을 찍어 10진수 숫자 4개로 분리한다. 이 8bit 단위를 옥텟이라고도 한다.

 

IP주소는 네트워크 주소(Network Address)와 호스트 주소(Host Address)로 구분된다.

 

네트워크 주소는, 네트워크 식별을 위해 사용되는 부분으로, 같은 네트워크에 연결된 모든 호스트들이 동일한 네트워크 주소를 가지게 된다. 네트워크 주소는 IP주소에서 호스트 주소부분을 모두 0으로 표시한 값이다.

호스트 주소는, 특정 네트워크 내에서 개별 장치를 식별하기 위해 사용되는 부분이다. 네트워크 주소를 제외한 나머지 부분으로, 호스트 주소는 네트워크 내에서 고유해야한다.

 

 

아래 사진을 통해 네트워크 주소와 호스트 주소를 구분 해보자.

  • IPv4 주소 = 현재 내 컴퓨터의 IP주소
  • 서브넷 마스크 = 네트워크 주소와 호스트 주소를 구분하는 역할을 하는 값
  • 기본 게이트웨이 = 라우터나 모뎀의 IP주소

1) 서브넷 마스크 255.255.240.0은 이진수로 11111111.11111111.11110000.00000000이다. 앞의 1의 값을 가지는 20bit가 네트워크 주소를 나타낸다. 나머지 12bit는 호스트 주소 부분이다.

 

2) IPv4주소 172.19.36.78은 이진수로 10101100.00010011.00100100.01001110이다. 

 

3) 네트워크 주소는, 서브넷 마스크에서 1로 표시된 20bit를 기준으로 IPv4 주소의 20bit를 가져오면 된다. 

-> 네트워크 부분: 10101100.00010011.0010 (즉, 172.19.32)

-> 호스트 부분: 나머지 비트, 0100.01001110 (즉, 4.78)


6. 포트 포워딩이 필요한 이유

포트포워딩(Port forwarding)이란, 포트(Port)를 전달(Forwarding)해주는 것이다. 특정한 포트로 들어오는 데이터 패킷을 다른 포트로 바꿔서 다시 전송해주는 작업이라고 할 수 있다.

 

위의 상황에서, 컴퓨터1이 웹서버를 80번 포트로 열었다고 가정하자. 인터넷을 통해서 다른 사람들이 컴퓨터1의 웹서버에 접근하기 위해서 컴퓨터1의 ip를 알려주는 방법은 쓸모없는 짓이다. 컴퓨터1이 가지는 ip는 사설 ip이고, 사설 ip대역은 공인 ip처럼 특정한 기기를 가리키지 않기 때문이다. 

 

그렇다면 사람들이 http://12.34.56.78:80 주소를 통해 접속을 시도한다면 웹 서버에 연결이 될까?

답은 '아니다'이다. 아래 그림과 같이 공인ip로 들어온 80번 포트의 연결은 공유기에 도달하긴 하지만, 도달하면 연결이 끊긴다. 컴퓨터1,2,3중 어떤 곳으로 연결을 보내줘야 할 것인지 판단하지 못하기 때문이다.

웹 서버에 연결하고 싶다면, 공인ip로 들어오는 80번 포트의 연결을 컴퓨터1의 80번 포트로 연결하라고 공유기에 설정을 해줘야한다. 이 과정을 포트 포워딩이라고 한다.


7. 포트 포워딩 진행하기

( 14. NAT와 포트포워딩 (velog.io) )

1) #ipconfig 명령어를 사용하여 ip주소를 확인한다.

카페 wifi와 연결했을 때
핫스팟과 연결했을 때

 

 


<참고 자료>

IP란?, 클래스, 서브넷마스크, 공인IP/사설IP (tistory.com)

포트 포워딩(port forwarding)이란? (tistory.com)

포트 포워딩 설정하기 – DIR-842 공유기 – Lamanus' Archive