엄코딩의 개발 일지

브라우저가 URL을 해독하면 어디에 액세스해야 하는지가 판명된다. 그리고 나서 브라우저는 HTTP 프로토콜을 사용하여 웹 서버에 액세스 하는게 된다. 그렇기 때문에 먼저 HTTP에대한 기본 개념에 대해 학습해 보았다.


HTTP 프로토콜은 

먼저, 클라이언트에서 서버를 향해 리퀘스트 메시지를 보낸다.

리퀘스트 메시지의 안에는 '무엇을', '어떻게 해서' 하겠다는 내용이 담겨있는데, 여기서 '무엇을'에 해당하는 것을 URI( Uniform Resource Identifier )라고 하는데, 보통 페이지 데이터를 저장한 파일의 이름이나 CGI프로그램의 파일명을 URI로 쓴다.


*CGI 프로그램

- 웹 서버 소프트웨어에서 프로그램을 호출할 때의 규칙을 정한 것이 CGI이며, CGI의 규칙에 맞게 움직이는 프로그램을 'CGI 프로그램'이라고 한다.



예를 들면, '/dir1/file1.html'이나 '/dir1/program1.cgi'와 같은 식이다.


그러나, URI는 그것만이 아니라 여기에 http:로 시작하는 URL을 그대로 쓸 수도 있다. 즉 여기에는 다양한 액세스 대상을 쓸 수 있으며, 이러한 액세스 대상을 통칭하는 말이 URI이다.


다음은 HTTP의 기본 개념에 대한 그림이다. 

'어떻게 해서'에 해당하는 것이 메소드로, 이 메소드에 의해 웹 서버에 어떤 동작을 하고 싶은지를 전달한다.

URI로 나타낸 데이터를 읽고 싶다거나 클라이언트측에서 입력한 데이터를 URI로 나타낸 프로그램에 전달하고 싶다는 식의 동작이 대표적이다.


HTTP의 메시지에는 보충 정보를 나타내는 헤더 파일도 있다. 그리고 클라이언트에서 웹 서버에 데이터를 전송할 경우에는 헤더 필드의 뒤에 데이터가 들어간다.


리퀘스트 메시지가 웹 서버에 도착하면 웹 서버는 그 속에 쓰여있는 내용을 해독한다.

그리고 URI와 메시지를 조사하여 '무엇을'(URI), '어떻게 하는지'(메소드)를 판단한 후 요구에 따라 동작하고, 결과 데이터를 응답 메시지에 저장한다. 응답 메시지의 맨 앞부분에는 실행 결과가 정상 종료되었는지 또는 이상이 발생했는지를 나타내는 스테이터스 코드가 있다.


예를들면, 웹 서버에 액세스했을 때 파일이 발견되지않고 '404 Not Found'와 같이 표시될 수 있는데, 이것이 '스테이터스 코드'이다.

그 후 헤더파일과 페이지의 데이터가 이어지고, 이 응답 메시지를 클라이언트에 반송한다. 그러면 이것이 클라이언트에 도착하여 브라우저가 메시지의 안에서 데이터를 추출하여 화면에 표시하면서 HTTP의 동작은 끝난다.


다음은 HTTP 메소드에대한 정리본이다.


( 부가기능은 정식으로는 사양이 아닌 부가 기능으로 사양의 부록에 기술되어 있는 것 )


보통 가장 자주 사용하는 메소드는 GET 메소드이다. 보통 웹 서버에 액세스하여 페이지의 데이터를 읽을 때 사용하는 것이 GET 메소드이다.

URI에는 '/dir1/file1/html'과 같이 페이지의 데이터를 저장한 파일의 이름을 쓴다. 이렇게 해서 '/dir1/file1.html'이라는 파일의 데이터를 읽으라는 의미가 된다. 이 메세지가 웹 서버에 도착하면 서버는 '/dir1/file1.html'이라는 파일을 열고 내용의 데이터를 추출한다.

추출한 데이터를 응답 메시지에 포함해서 클라이언트에게 반송하면 클라이언트측의 브라우저가 이것을 받아 화면에 표시하는 것이다.


다음으로 자주 사용하는 것은 POST 메소드로,에 데이터를 사용해서 웹서버에 송신하는 경우에 사용한다.


*

- 웹 페이지에 있는 텍스트 입력 상자나 체크박스 등이 표시된 부분


POST 메소드를 사용한 경우 URI에는 웹 서버 기계에서 동작하는 애플리케이션 프로그램의 파일명을 쓰는데, 'index.cgi'나 'index.php'가 대표적이다.

리퀘스트 메시지 안에는 메시지와 URI와 더불어 CGI 프로그램이나 스크립트에 건내주는 데이터도 쓰는데, 이 데이터는 사용자가 필드에 입력한 값이다. 메시지가 서버 기계에 도착하면 웹 서버 소프트웨어는 URI에 지정된 애플리케이션 프로그램에게 리퀘스트 메시지의 안에 쓰여있는 데이터를 건네주고, 이 프로그램이 출력하는 데이터를 받아서 응답 메시지에 포함시킨 후 클라이언트에게 반송한다.


보안상 문제가 있거나 GET과 POST 이외의 메소드를 사용하는 클라이언트가 널리 보급되어 있지 않다 이유로 PUT이나 DELETE같은 메소드는 별로 사용하지 않는다고 한다.










[자료 출처 & 참고 자료]


https://www.google.co.kr/search?q=PC&source=lnms&tbm=isch&sa=X&ved=0ahUKEwiEtdLM4cPRAhWCp5QKHS68CY0Q_AUICCgB&biw=1471&bih=750#imgrc=_Isx2tVMIGw5cM%3A


https://www.google.co.kr/search?q=%EC%9B%B9%EC%84%9C%EB%B2%84+%EC%9D%B4%EB%AF%B8%EC%A7%80&espv=2&source=lnms&tbm=isch&sa=X&ved=0ahUKEwj6h8Dw4MPRAhUBtJQKHbFbD6oQ_AUICCgB&biw=1471&bih=799#imgrc=esZMWLP46nZuEM%3A


성공과 실패를 결정하느느 1%의 네트워크 원리