이전 글까지 간단히 웹 사이트를 만들어 보았다.
그러나 웹 사이트를 만드는 법만 공부해 보았고 인터넷이 무엇인지 배우지 않았다.
이번 글에서는 인터넷이 어떻게 작동하는지 간단히 알아 볼 것이다.
<인터넷>
인터넷은 웹의 핵심적인 기술이다.
기본적이면서 쉽게 얘기해보자면 웹은 컴퓨터 끼리 통신이 가능한 거대한 네트워크이다.
네트워크가 무엇인가?
네트워크는 두 개 이상의 컴퓨터가 통신이 필요할 때
물리적 또는 무선으로 연결되어 서로 통신이 가능한것을 말한다.
네트워크는 두 대의 컴퓨터에 국한되지 않고 원하는 만큼의 컴퓨터를 연결할 수 있다.
(앞으로의 설명은 유선 케이블을 예시로 설명한다. 다만 무선의 경우 크게 다르지 않다.)
두 개의 컴퓨터를 연결할때는 1개의 선
세 개의 컴퓨터를 연결할때는 3개의 선
네 개의 컴퓨터를 연결할때는 6개의 선
...
열 대의 컴퓨터를 연결할때는 45개의 선
이와 같이 컴퓨터가 늘어날 수록 네트워크를 이루는 케이블의 개수가 늘어난다.
이는 네트워크를 복잡하게 만들기 때문에 해결할 필요가 있다.
이를 해결하기 위해서 네트워크의 각각의 컴퓨터는 라우터라고 하는 작은 컴퓨터에 연결한다.
라우터의 역할은 어떤 컴퓨터에서 보낸 정보가 올바른 대상에 도착했는지 확인하는 것이다.
컴퓨터 A가 컴퓨터 B에 메세지를 보낼때
컴퓨터 A는 라우터에 메세지를 보내고
라우터는 메세지를 컴퓨터 B에 전달하며 다른 컴퓨터에 전달되지 않도록 해야 한다.
이러한 라우터 시스템을 추가하면 열 개의 컴퓨터로 네트워크를 이룰때
10개의 케이블과 10개의 플러그를 가진 라우터 1개만 있으면 된다.
열 대의 컴퓨터로 네트워크를 구성하는 예시를 보았다.
그럼 수백, 수천, 수억 대의 컴퓨터를 연결할때는 결국 또 수백, 수천, 수억 개의 케이블과
수백, 수천, 수억 개의 플러그를 가진 라우터가 필요할 것이다.
또 비효율적으로 바뀌어간다.
이때 떠올려 보자.
앞서 라우터가 무엇이라고 했는가?
바로 컴퓨터 이다.
즉, 라우터 끼리도 연결이 가능하지 않을까?
물론 가능하다!
컴퓨터를 라우터에 연결하고 라우터를 라우터에 연결하고....
무한히 확장 가능해진것이다.
이러한 구조의 네트워크는 이제 우리가 아는 인터넷의 구조와 비슷해졌다.
다만 놓치고 있는 무언가가 있다. 바로 거리가 먼 사람들과 통신이 불가능하단 점이다.
이를 해결하기 위해 우리는 우리들의 집 아래에 설치된 전화선을 이용한다.
전화선은 전세계 어느곳에도 연결되어있기에 우리가 필요로 하는 배선에 완벽하게 부합한다.
다만 이때 우리는 우리의 네트워크의 정보를 전화선에 맞게 변경해줄 모뎀이라는 장비를 필요로 한다.
이는 반대로 작동할때도 동일하다.
전화 시설에 연결된 이후 우리는 원하는 네트워크에 메세지를 보내야 한다.
이를 위해서 네트워크를 인터넷 서비스 제공 업체(ISP)에 연결한다.
ISP는 모두가 연결되는 특정한 라우터의 관리와 다른 ISP업체의 라우터에 엑세스가 가능하다.
따라서 우리 네트워크의 메세지는 ISP 네트워크를 이용하여 원하는 네트워크에 전달이 가능하다.
그럼 목표 네트워크에서 컴퓨터를 어떻게 찾을까?
메세지를 전송시에 우리는 메세지를 받을 컴퓨터를 지정해야 한다.
네트워크에 연결된 컴퓨터는 각각의 IP주소를 가진다.
이러한 IP주소를 이용하여 컴퓨터를 찾을 수 있다.
이때 IP주소는 XXX.XXX.XXX.XXX와 같은 형태로 이루어지는데
이는 외우기가 어렵기 때문에 우리는 도메인 이름이란걸 IP주소에 지정하여 사용한다.
네트워크의 개념과 인터넷의 구조를 간단히 알아보았다.
이제 웹 서버와 클라이언트의 관계를 위의 내용을 바탕으로 간단히 설명해보겠다.
첫 웹을 만들던 개발자들은 인터넷을 이용하여 웹을 구성하기로 했다.
그렇기에 인터넷에 연결된 컴퓨터를 구하고
웹 서버, 웹 브라우저 라는 2개의 프로그램을 제작하였다.
이후 웹 서버가 설치된 컴퓨터의 IP주소에 info.cern.ch라는 도메인 이름을 할당하고
해당 컴퓨터의 특정 디렉터리에 index.html이란 파일을 저장한다.
이후 웹 브라우저가 설치된 컴퓨터에서 주소창에 http://info.cern.ch/index.html을 입력한다.
이때의 상황을 살펴보자.
웹 브라우저가 info.cern.ch라는 이름의 컴퓨터에 index.html이라는 파일의 코드가 필요하다는 신호를 보낸다.
해당 신호를 받은 컴퓨터의 웹 서버라는 프로그램이 index.html이라는 파일을 찾아 전달한다.
해당 코드를 받은 웹 브라우저는 해당 내용을 읽어 화면에 출력한다.
이러한 웹 브라우저와 웹 서버의 관계는
웹 브라우저가 웹 서버의 정보중 필요한 것을 소비하는
고객(클라이언트) 와 사업자(서버)라고 칭하기로 했다.
이렇게 인터넷 부터 웹 브라우저와 서버의 관계를 알아보았다.
그럼 이제 웹 서버를 운영해보자!
라고 하기에는 과정이 꽤나 복잡하다.
때문에 해당 글에서는 웹 서버 구축 대신 웹 서버를 제공해주는 웹 호스팅을 이용하여
타인들이 나의 웹 사이트를 이용 가능하도록 해보자.
<웹 호스팅(Github Pages)>
구글에 웹 호스팅을 검색하면 수많은 웹 호스팅 업체들이 존재한다.
그 중 우리는 프로그래머들의 성지이며 무료로 웹 호스팅을 제공하는 깃허브(Github)의 pages 기능을 이용할 것이다.
우선 깃허브에 가입이 안되어있는 사람은 가입부터 해주자.
가입 되어있는 사람은 로그린을 해주자.
이후
좌측의 New 버튼을 클릭하여 새로운 저장소(Repository)를 생성한다.
해당 화면에서 2가지를 설정해준다.
1. Repository name에는 저장소의 이름을 적는다.
2. Public / Private 는 저장소의 공개 여부를 정한다.
두가지를 정한 뒤 Create repository 버튼을 클릭하여 저장소를 생성한다.
그 다음, 위의 화면에서 빨간색으로 표시한 곳을 클릭하여 다음과 같은 화면에 들어간다.
1. 업로드 할 파일들을 선택한다.
2. 변경된 내용을 기입한다. 파일이 변경 될때마다 기입한다.
3. Commit changes 버튼을 클릭한다.(업로드 진행)
업로드가 멀쩡히 이루어 지면 다음과 같이 파일 목록이 보인다.
그럼 이제 업로드한 웹 페이지들을 인터넷을 이용해 서비스 해보자.
상단의 툴바에서 Setting이라는 버튼을 클릭하자.
사이드 바에서 Pages를 클릭하여 접근하자.
Branch를 main 또는 master로 변경 후 Save 버튼을 클릭한다.
잠시후 다음과 같이 주소가 생성되며 접속 시 자신의 웹 페이지가 보이게 된다.
이렇게 웹 호스팅을 통해 내가 만든 웹 페이지를 전 세계 사람들에게 서비스 할 수 있게 되었다.
이러한 웹 호스팅은 웹 서버를 직접 운영하는 것보단 쉽다.
다만 인터넷의 원리가 감추어져있다.
또한 깃허브는 제약이 많은 편이기에 추후 페이지를 개선하고
동적인 기술(php, JavaScript 등등)을 사용할때가 있을 수 도 있다.
이럴때는 개인적으로 웹 호스팅 서비스를 찾는 노력이 필요할 수 있다.
웹 서버 구축에 대한 글이나 공부는 추후 올릴수도 안올릴 수도 있다.
(공부를 안하겠다는 얘기는 아니다.)
다음 글 부터는 아마 node.js에 대한 내용으로 시작할 예정이다.
긴글 읽어주셔서 감사합니다.
<정보 출처>
생활코딩_WEB_WEB1:웹 호스팅 github pages
'보안 > 웹 해킹' 카테고리의 다른 글
웹 기초 공부 #7 - Node.js / Javascript (0) | 2023.09.25 |
---|---|
웹 기초 공부 #6 - Node.js (0) | 2023.09.22 |
웹 기초 공부 #4 (0) | 2023.09.13 |
웹 기초 공부 #3 (0) | 2023.09.11 |
웹 기초 공부 #2 (0) | 2023.09.11 |