우리는 여태까지 웹 페이지를 기술하는 HTML에 대해 알아보았습니다. 그런데 우리가 접하는 웹 페이지들은 사용자로부터 입력을 받아 서버와 통신하는 페이지들이 대부분입니다. 예를 들면, 게시판 웹 페이지의 경우에는 사용자로부터 게시글 제목이나 내용 같은 정보를 받아 서버에 전송하고, 서버는 이를 받아 DB에 저장, 게시글이 정상적으로 등록되었다는 메시지를 다시 클라이언트에 전달합니다. 이 과정을 나타낸 것이 아래 그림입니다.

Client-Server 통신 과정 개략도
웹을 구성하는 요소를 아래와 같이 나누어 봅시다.
Client
우리가 바로 맞닿아 있는 웹 브라우저입니다.
Web Server
Client와 통신하는 서버입니다.
Web Application
Client에서 보낸 요청을 받아 처리하는 Application입니다.
Database
Files
HTTP
HyperText Transfer Protocol로 웹에서 데이터를 통신하는 프로토콜입니다.
Client와 Server가 통신하는 과정을 간략히 알아봅시다. 우선, Client는 Web Server로부터 받은 HTML, CSS, Javascript 파일을 받아오고 렌더링한다는 것은 알고 있는 사실입니다. 그렇다면 Client에서 Web Server로 데이터를 전송하게 되면 어떻게 될까요? Client는 사용자로부터 입력을 받아 HTTP Request의 형태로 데이터를 전송합니다. Web Server는 이를 Web Application에 넘깁니다. Web Application은 이 데이터를 바탕으로 어떠한 처리를 해야하는지 분석합니다. Database와 통신하여 데이터를 저장하거나, 서버에 존재하는 파일들을 조작할 수도 있습니다. 모든 처리가 끝나게 되면 클라이언트에 처리에 관한 정보를 전달해야합니다. Web Application은 다시 HTML, CSS, JS 파일들을 HTTP Response의 형태로 Web Server에 전달하고, Web Server는 이를 다시 Client에 전달합니다. 이 과정이 끝나면, 비로소 우리가 요청한 것에 대한 응답을 웹 브라우저 화면으로 볼 수 있게 됩니다.
HTTP Request는 HTTP에서 Client에서 Web Server로 전달하는 요청에 해당하는 부분입니다. HTTP Request는 아래와 같이 구성됩니다.

HTTP Request
Method
요청의 방식입니다. HTTP Method라고 부르며 GET, POST, DELETE, PATCH, PUT 등 여러가지 Method들이 존재합니다. 이 Method들은 주어진 리소스에 이 요청이 하고자 하는 것을 나타냅니다. 예를 들면 GET 메소드는 데이터를 받아오라는 의미를, POST 메소드는 데이터를 입력하라는 의미를 지닙니다.
Path
요청을 하는 네트워크 상의 위치입니다.
Version of the protocol
HTTP 버전입니다.
Headers
요청의 메타 데이터에 해당하는 부분입니다. 주로 Cookie나 Authentication 헤더를 통하여 요청을 하는 Client가 요청을 할 권한을 가지고 있는지를 검증하거나 Content-Length헤더를 통하여 Client가 보낸 데이터의 크기를 전달하여 데이터의 무결성을 검증하는 과정에 이용되기도 합니다.

HTTP Response
Version of the Protocol
HTTP 버전입니다.
Status code
응답 코드입니다. Web Server의 응답이 어떠한 응답인지를 나타내는 코드입니다. 200나 404, 500와 같은 응답 코드들이 존재합니다.
Status message
응답 메시지로, 응답 코드와 같이 쌍으로 존재합니다. Web Server의 응답이 구체적으로 어떠한 의미인지 나타내는 메시지입니다. **200**응답 코드에 대응하는 OK, 404응답 코드에 대응하는 Not Found, 500응답 코드에 대응하는 Internal Server Error가 존재합니다.