네트워크 기본

IP & 포트

image

  • 공인 IP : 전 세계에서 유일한 주소를 갖는 IP를 말한다.
  • 사설 IP : 소속된 장비 내에서만 유일한 주소를 갖는 IP를 말한다. 하나의 장비 내에서 여러개의 사설 IP가 존재하고, 각 사설 IP는 대역을 갖는다.

image

  • 네트워크 인터페이스 : 인터넷에 연결하기 위해서 컴퓨터에 장착하는 부품, 네트워크 인터페이스는 IP 주소를 항당받는다. 하나의 기기는 여러 네트워크 인터페이스를 장착할 수 있기 때문에 여러 IP를 가질 수 있다.
  • 포트 : 데이터를 주고받을 수 있는 통로, 하나의 IP 안에서 여러 포트가 존재하며, 포트를 지정하여 데이터를 전송할 수 있음

NAT와 포트포워딩

  • 인바운드 : 외부 서버에서 해당 서버에 데이터가 들어오는 것
  • 아웃바운드 : 해당 서버에서 외부 서버로 데이터가 나가는
  • 공인망과 사설망의 서버들이 통신하기 위해서 NAT와 포트포워딩 기술을 활

image

  • NAT(Network Address Transration) : 공인 IP와 사설 IP를 매핑해주는 기술
  • NAT데이블의 서버 정보를 기록해두고, 사설 IP에서 공인 IP로 NAT테이블의 정보를 이용하여 트랙픽이 전달된다.
  • 공인IP의 랜덤한 포트를 여러 개 지정하고, 각각에 포트에 사설 IP의 정보를 매칭시켜서 활용
  • 예) 외부 서버에서 사설 IP 192.168.0.4:80로 트래픽이 전달하려면 124.111.46.91.10001:을 통해 전달한다.

image

  • 포트포워딩 : 외부에서 사설 IP로 데이터를 전달(인받운드)시 사용하는 기술, 사용자가 직접 매핑 정보를 지정해 외부에서 공인 IP의 포트에 접근할 때, 포트포워딩 룰에 맞는 사설 IP로 변환해서 트래픽을 전달한다.
  • 예) 외부 서버 124.111.46.91:80로 요청을 보내면 실제로 포트포워딩을 거쳐 사설 IP 192.167.0.4:80으로 전단된다.

DNS

image

  • 기억하기 어려운 IP주소를 더 쉬운 주소인 도메인 주소를 통해 공인 IP주소로 접근할 수 있다.
  • DNS 서버에 도메인 서버 주소와 IP 주소를 매핑 정보가 존재한다.
  • DNS 서버를 통해 도메인 주소만 입력해도 IP 주소로 변환하여 해당 IP 주소로 이동할 수 있도록 한다.



도커 네트워크

가상 네트워크

  • 가상 네트워크 : 하나의 서버에서 논리적으로 여러 개의 가상 네트워크를 구성하는 기술
  • 네트워크 망 안에서 컨테이너들이 서로 통신할 수 있고, 내부의 컨테이너와 외부 서버와도 통신할 수 있다.

image

  • 브릿지 네트워크 : 도커 브릿지를 활용해 컨테이너간 통신하고, NAT 및 포트포워딩 기술을 활용해 외부 통신을 진원한다.
  • 브릿지 네트워크는 가상의 공유기, 논리적으로 정의된 가상의 IP 주소를 할당 받음, 브릿지 네트워크의 대역 안에서 소프트웨어적으로 컨테이너들에게 IP를 할당해주고 컨테니어 간 통신할 수 있도록 해준다.
  • 어떤 컨테이너에서 다른 컨테이너로 데이터를 전달할 때 브릿지 네트워크를 거친다.

image

  • 가상 네트워크 안에서 여러개의 브릿지 네트워크를 만들 수 있고 각 브릿지 인터페이스는 여러 컨테이너 간의 통신을 담담한다.
  • 같은 브릿지 네트워크 안의 컨테이너는 서로 통신이 가능하지만 다른 브릿지 네트워크의 컨테이너는 서로 통신이 불가능한다.

가상 네트워크와 포트포워딩

image

  • HOST 네트워크 : 호스트의 네트워크를 공유하고, 모든 컨테이너는 호스트 머신과 동일한 IP를 사용한다. 단, 포트를 중복으로 사용은 불가능하다.
  • docker run -p HostOS의 포트:컨테이너의 포트 : 포트포워딩 지정 명령어, HOST OS의 포트와 컨테이너 포트를 지정하여 도커가 실행 중인 서버의 포트를 지정하여 컨테이너에 접근이 가능하다.
  • 가상 네트워크에서도 마찬가지고 NAT와 포트포워딩 기술이 사용된다.
  • NAT는 가상 네트워크가 알아서 설정하기 때문에 내부의 컨테이너는 바깥쪽의 외부망을 통해 외부 서버로 접근할 수 있다.
  • 외부에서 컨테이너로 접근하기 위해 Host IP를 거쳐야하고, 포트포워딩 기술을 통해 사용자가 지정한 컨테이너로 전달될 수 있다.
  • 포트포워딩에서 Host의 IP 주소와 컨테이너 포트의 IP 주소를 매핑하여 정해놓으면 지정된 포트를 통해서 외부에서 컨테이너로 접근할 수 있다.
  • 포트포워딩이 설정되지 않은 컨테이너에는 어떤 포트를 통해 접근해야하는지 알 수 없기 때문에 외부 서버에서 접근이 불가능하다.

가상 네트워크와 DNS

image

  • 사용자가 직접 생성한 브릿지 네트워크의 컨테이너들은 도메인을 컨테이너 이름으로 지정할 수 있다.
  • DNS 서버를 통해 실제 컨테이너의 IP 주소가 아닌 컨테이너의 이름으로 컨테이너에 접근이 가능하다.