2016년 6월 17일 금요일

뇌자극 TCP_IP 프로그래밍 27강 요약

27강 웹서버 개발

1. HTTP 와 HTML

HTTP - 데이터 요청과 응답에 관한 프로토콜
HTML - 데이터의 형식을 정의하기 위한 프로토콜

HTTP 프로토콜의 기본

요청 메시지는 3개의 필드로 구성된다.

요청방법 | 요청페이지 | 프로토콜

요청 방법

GET - 자료(웹문서, 이미지 등)의 전송을 요청한다.
HEAD -  GET 와 비슷하지만 자료에 대한 부가정보를 포함한다.
POST - 서버가 처리해야 할 자료를 보낸다. 즉, 데이터 처리를 요청한다.
PUT - 자료를 저장한다.
DELETE - 자료를 삭제한다.

-요청할 때 URL : GET 이라면 요청할 페이지고, POST 라면 클라이언트가 보낸 자료를 처리할 서버의 URL 이다.
-프로토콜 버전 :  HTML 프로토콜의 버전을 명시한다. 여기서는 1.1으로 했다.

응답 역시 HTTP 형식에 맞게 전송해야 한다. HTTP 정보는 다음과 같은 형식을 가진다.
GET 요청에 응답할 수 있다.

1) HTTP/1.1 200 OK //HTML 프로토콜 버전과 클라이언트 응답 코드 정보
2) Date : Sun, 29, Aug 2016 15: 02:01 GMT //문서를 전송한 시간
3) Server : Apache/2.24  (Unix) PHP/5.2.0 //웹서버 프로그램의 정보
4) Content-length :  118 //문서의 크기
5) Connection : close //연결방식, 웹서버는 정보를 전달한 다음 곧바로 연결을 끊는다.
6) Content-Type : text/html //문서의 형식(텍스트만 사용)

웹서버 프로그램 개발

클라이언트의 요청을 받은 웹서버는 파일 시스템에서 파일 정보를 읽어서 클라이언트에 전송한다.
또는 회부의 프로그램을 실행해서 그 결과를 클라이언트에 전송하기도 한다.
외부 프로그램의 정보 입출력은 GCI 규격을 이용한다.

2. 서버 프로그램 개발

기능 정의

1) 클라이언트의 요청을 받아서, 하드디스크 상의 웹 문서를 찾아서 전송한다.
2) 컨텐트 유형은 오직 text/html 만 다룬다.
3) 에러 코드는 '200 OK', '404 Not Found', '500 Internal Server Error' 만 지원한다.
4) 요청 방식은 GET 만 지원한다. POST 요청에 대해서는 '500 코드'로 에러 처리한다.

웹서버 프로그램 myserver.c

소스 코드는 주석과 함께 깃허브에 올렸다.

소스 코드 받기

3. 테스트

myserver 프로그램은 웹문서가 위치하는 디렉터리를 실행인자로 실행한다.
웹문서의 루트 디렉터리는 webDoc 라고 한다면...

./myserver webDoc

테스트용 웹페이지 index.html 이다.

<html>
<body>
     <h1>Hello World!!!</h1>
</body>
</html>

이로서 뇌를 자극하는 네트워크 프로그래밍 공부 리뷰를 마쳤다.
길고 긴 여정(?) 이었다.
이론 공부를 하고, 코드를 쳐보면서 실습해보고, 블로그에 게시하면서 복습하니
공부가 잘 되는 것 같다.
다음 공부는 수학 + 알고리즘을 해보려고 한다.
언제가 될지 모르겠지만 공부하면서 간간히 복습 차원에서 요약 정리를 하고자 한다.

댓글 없음:

댓글 쓰기