-
Notifications
You must be signed in to change notification settings - Fork 0
프로그램 설명
park.sung kyun edited this page Nov 19, 2019
·
10 revisions
-
구성도
- 이 프로그램은 크게 Server 부분과 Context 부분으로 나눈다. Server 부분은 웹 서버 자체에 대한 부분이고, Context 부분은 요청을
처리하는 데 사용되는 버퍼 또는 주간 상태값을 저장하는 곳이다. Server 부분은 요청을 처리는 역할을 하는 Processor 부분과 각각의 호스트의
리소스를 관리하는 Host 부분으로 되어있다.
- 이 프로그램은 크게 Server 부분과 Context 부분으로 나눈다. Server 부분은 웹 서버 자체에 대한 부분이고, Context 부분은 요청을
처리하는 데 사용되는 버퍼 또는 주간 상태값을 저장하는 곳이다. Server 부분은 요청을 처리는 역할을 하는 Processor 부분과 각각의 호스트의
리소스를 관리하는 Host 부분으로 되어있다.
-
모듈 설명
-
Server : 웹 서버 자체를 가리키는 모듈로, HTTP 요청을 처리하는 Processer 부분과 각 가상 호스트를 담당하는 Host 클래스를 가진다.
-
Processor : HTTP 요청을 처리하는 모듈을 기능별로 나눠서 모듈화 한 부분이다.
- Client-Listener : 클라이언트로부터 연결이 있을 때 이를 처리한다.
- SSL-Handshaker : SSL 연결에서 Handshaking 작업을 처리한다.
- Request-Receiver : 클라이언트로부터 보내진 데이터를 헤더까지 파싱하여 요청 객체를 만든다.
- Body-Receiver : 요청을 처리하다가 요청 분문이 필요할 때 본문을 받는다.
- Request-Performer : 요청을 처리하여 응답 객체를 만든다.
- Reply-Sender : 응답을 클라이언트로 보낸다.
- Proxy-Connector : AJP, HTTP Server에 연결한다.
- Ajp-Proxier : Ajp Server(TOMCAT)와 연결의 요청/응답을 중계한다.
- HTTP-Proxier : HTTP Server와 연결의 요청/응답을 중계한다.
-
Host : 각각의 가상 호스트에 대한 정보와 리소스들을 저장한다.
- Resource : 루트 디렉토리 안에 디렉토리와 파일에 대한 정보를 관리한다. 각 리소스는 설정된 필터 객체를 관리한다.
-
Context : 위에 설명한 Processor 모듈에서 필요한 버퍼 객체나 중간 상태 등을 저장한다.
- Client-Connection : 클라이언트와 연결을 처리할 때 필요한 것들을 저장한다.
- Ajp-Proxy-Connection : Ajp Server(Tomcat)와 연결을 처리할 때 필요한 것들을 저장한다.
- Http-Proxy-Connection : HTTP Server와 연결을 처리할 때 필요한 것들을 저장한다.
- Request : 처리과정에서 만들어진 요청 객체다.
- Reply : 처리과정에서 만들어진 요청 객체다.
-
-
-
흐름도
- 클라이언트에서 접속이 오면 Client-Listener가 접속을 받아드리고(Accept) Context 객체를 생성한 후, Context 객체를 Request-Receiver로 보낸다. Request-Receiver는 클라이언트로 부터 들어오는 데이터를 파싱하여 요청(request)을 만든다. 요청을 만들어지면, 요청을 Context 객체에 넣어 Request-Performer로 보낸다. Request-Performer는 요청의 성격을 파악하고, 요청을 수행(Perform)하여 응답(Reply)을 만든다. 만들어진 응답은 Context 객체에 넣어져 Reply-Sender로 보내진다. Reply-Sender는 리소스 파일을 읽어서 응답 바이너리를 만들어서 BufferSender에게 보낸다. 이것이 일반적인 HTTP 요청의 처리 순서이다.