본문 바로가기

웹 개발

웹 개발 공부 일기장 1-1 (웹 서버)

웹 해킹 공부하기전 웹 서버가 무엇인지 먼저 알아야 한다.

 

웹 서버란? 

웹 브라우저와 같은 클라이언트로부터 http요청을 받아들이고 요청한 파일을 전송해주는 서비스 프로그램입니다.

여기서, 중요한 것은 파일은 전송해준다는 것이다. 

그림과 같이 단순히 페이지(파일)을 요청하고 요청한 파일을 전달 받을 뿐입니다.

 

 

그럼 웹 서버는 파일을 전송해주는 프로그램이면 파일을 요청하는 방법은 무엇일까?

웹 브라우저를 통해 파일을 요청한다. (URL을 입력하여 어떤 서버에 어떤 파일을 받을 지 정한다.)

- 우리가 웹 브라우저에 원하는 사이트의 주소를 입력하여 사이트에 방문하는 것 입니다. 하지만 우리는 웹 서버가 파일을 주는 친구라고 알고 있습니다. 즉, 이는 우리가 해당 서버에 들어간 것 같아 보이지만, 우리는 파일을 요청하고 파일을 브라우저가 우리에게 보여주는 것 입니다.

 

 

파일을 요청할 때 사용하는 URL은 어떻게 적을까?

먼저 URL은 네트워크 상에서 자원이 어디 있는지를 알려주기 위한 규약입니다. 그렇기 때문에 정확히 원하는 파일을 요청할 수 있고, 아래와 같이 적을 수 있습니다.

 

[Protocol]://[Domain or IP Address]:[Port]/[File Path]?[Parameter]&...

 

Protocol : 프로토콜로 http, https

Domain or IP Address : 요청할 파일이 있는 서버의 도메인 또는 아이피 주소

Port : 서버와 연결하기 위해 사용하는 포트번호

File Path : 파일이 저장되어 있는 경로

Parameter : 웹 서버에 보내는 추가 매개변수 (query or parameter으로 필수 아님...)

 

 

어떻게 적는지 확인 해봤으니 실제 예시와 비교해보자!!!

https://www.naver.com -> 우리는 이렇게 입력하여 네이버 페이지를 불러올 수 있습니다.

https : Protocol, www.naver.com :  Domain 입니다.

하지만 이상하다?!! 우리가 알고 있는 방식이랑 조금 다릅니다. 프로토콜과 주소는 있는데, 포트와 파일 경로가 안 적혀있네요...

사실 여기에는 이미 규정 되어 있는 것이 있습니다!!!

 

먼저, 브라우저에 URL 입력 시 포트 번호를 적지 않으면 프로토콜을 보고 자동으로 포트번호를 설정하여 요청을 합니다.

이때, 알아야 하는 것이 Well-known port(웰논 포트)라고 미리 어떤 프로토콜은 어떤 포트를 쓰자라고 정해놓은 것이 있습니다.

포트번호 1 ~ 1023 이 웰논 포트입니다. 그렇기 때문에 웰논 포트를 보면 http는 80번 포트, https는 443번 포트로 정해져 있습니다. (나머지는 공부하다 나올 때마다 알아보겠습니다.)

-> 헷갈릴 수 있는게 웰논 포트로 정해져있다고 해서 꼭 http는 80번 포트를 사용하라는 것은 아닙니다. (다른 포트 사용 가능)

웹 브라우저가 만약 URL에 포트 번호가 없을 경우 프로토콜을 보고 해당 프로토콜의 웰논 포트로 알아서 요청을 보냅니다.

 

다음으로, 브라우저에 URL 입력 시 파일명을 입력하지 않으면 자동으로 해당 폴더에 있는 index 파일을 요청합니다.

 

이렇게 두가지 이유로 https://www.naver.com 로 요청을 보내면 https://www.naver.com:443/index.html 로 요청을 보낸 것과 같습니다. 바뀐 것을 보면 우리가 알아본 URL 입력 방식과 같다는 것을 알 수 있죠!! 

 

실습

sudo python3 -m http.server [80] => 입력 시 간단한 서버를 열 수 있습니다. 

사진과 같이 파일과 폴더가 저장되어 있을 경우 서버를 연 폴더가 웹 루트 경로가 된다. 웹 루트 경로를 기준으로 파일의 상대경로로 URL 파일 경로에 입력하면 된다.

 

파이썬으로 간단한 웹 서버 열기 서버를 연 폴더가 웹 루트 경로가 된다. test 폴더가 웹 루트 경로

 

웹 루트 경로를 기준으로 파일의 상대경로로 URL 파일 경로에 입력하면 된다. test 폴더 안 test.txt 파일 요청

 

test 폴더가 웹 루트 경로이기 때문에 더이상 부모 폴더로 이동하여 파일을 요청할 수 없다.

만약, / 폴더가 웹 루트 경로일 경우, 모든 파일을 요청할 수 있기 때문에 사용하면...

 

앞에 설명한 모든 것은 정적 페이지에 대한 것 인데, 우리가 사용하는 모든 페이즈는 동적 페이지입니다. 다음 시간엔 이것에 대해 정리해 보겠습니다.