<< 학습 목표 >>
1. WAS, 컨테이너, 요청 정보, 응답 정보에 대해 설명할 수 있다.
2. 요청 방식의 4가지에 대해 설명할 수 있다.
3. URL을 설명할 수 있다.
4. 상태 코드에 대해서 설명할 수 있다.
몇 가지 용어는 이전의 글들에서 정의했으므로 나머지 용어들을 저 정의 하고 넘어가자
| 웹 애플리케이션 서버 (Web Application Server / WAS ) |
| 클라이언트의 요청 중 정적인 요소(Static Component)와 동적인 요소(Dynamic Componenet)를 나눠서 서버의 부하를 줄여 주는 기술이 적용된 서버 WAS에는 클라이언트의 요청을 받는 일과 정적인 요소를 처리하는 웹 서버 기능이 있고 동적인 요소를 처리하는 컨테이너 기능이 있음 WAS는 여러 가지가 있지만 이 중에서 우리는 톰캣을 사용함 |
| 컨테이너 ( Container ) |
| 일상 생활에서 컨테이너는 물건을 싣는 역할을 함 웹 프로그래밍에서 컨테이너란 어떤 프로그램들을 실을 수 있고 그 프로그램을 관리해주는 프로그램을 말함 Servlet, JSP 는 클라이언트의 요청 중 동적인 요소를 처리할 수 있음 서블릿이 동작하려면 서버 컴퓨터에 자바, 웹서버, 서블릿 컨테이너가 필요함 JSP가 동작하려면 서버 컴퓨터에 자바, 웹서버, 서블릿 컨테이너, JSP 컨테이너가 필요함 톰캣은 JSP 컨테이너임 |
웹 서비스는 클라이언트-서버 구조이고 클라이언트가 요청(Request)하면 서버가 응답(Response)를 한다고 했음

클라이언트가 서버로 요청할 때 클라이언트는 요청 정보를 만들어 서버에게 전달함
요청 정보는 요청 줄과 헤더, 바디 이렇게 세 부분으로 구성되어있음

요청 정보의 첫 번째 줄인 요청 줄에는 다음과 같이 세 개의 데이터가 들어감

요청 정보의 두 번째 줄인 헤더에는 다음과 같이 name: value로 이루어진 데이터들이 들어감
몸통은 서버가 요청을 처리하기 위해 부가적인 데이터가 들어가는 자리로 필요할 경우에만 넣어서 보냄

가령 우리(클라이언트 / 사용자)가 크롬 웹 브라우저(Chrome Web Browser)에서 www.naver.com 을 입력했다면 아래와 같은 요청 정보가 네이버 서버로 전달됨

여기서 우리가 반드시 알아야하는건 요청 방식(Method)와 URL임
HTTP 버전, header 에 대해서 더 알고 싶다면 별도로 네트워크 과목을 공부해야함
반드시 알아야 하는 요청 방식에 대해서 알아보자
요청 정보의 첫 번째 줄인 요청 줄에 있었던 요청 방식은 다음과 같이 다양하게 있음
| 요청 방식(Method) | ||||||
| GET | POST | PUT | DELETE | OPTIONS | HEAD | ... |
이 중에서 우리는 GET, POST, PUT, DELETE 이 4가지 방식은 반드시 알고 있어야함
| 요청 방식(Method) | |||
| GET | POST | PUT | DELETE |
| 이 방식으로 요청을 한다는건 주로 "화면에 결과를 보여줘라" 라는 요청 이 방식으로 요청하는데 서버로 보낼 데이터가 있다면 URL의 마지막에 ? 를 붙이고 이름=값 의 형태로 보낼 수 있음 서버로 보내는 값이 URL에 그대로 노출되기 때문에 보안에 취약함 |
이 방식으로 요청을 한다는건 주로 "무언가를 등록해줘라" 라는 요청 이 방식으로 요청하는데 서버로 보낼 데이터가 있다면 요청 정보의 몸통(body)에 데이터를 담아 보낼 수 있음 서버로 보내는 값이 노출되지 않기 때문에 상대적으로 보안에 유리함 |
이 방식으로 요청을 한다는건 주로 "수정해줘" 라는 요청 이하 나머지는 POST 방식과 동일함 |
이 방식으로 요청을 한다는건 주로 "삭제해줘" 라는 요청 이하 나머지는 POST 방식과 동일함 |
요청 방식은 반드시 여기에 나와 있는대로 사용해야하는건 아니고 주로 여기에 나와있는대로 사용한다임
참고 정도로만 기억해두면 됨
두 번째로 반드시 알아야하는 URL에 대해서 알아보자
| URL |
| Uniform Resource Locator의 약자로 인터넷 상에 존재하는 것의 주소 를 뜻함 클라이언트의 요청을 받을 서버의 주소임 URL의 형식 : 프로토콜://서버의IP주소:포트번호/기타경로 우리가 네이버로 접속하기 위해 웹 브라우저에 www.naver.com 으로 입력해 접속하는데 이때 입력하는 이 네이버의 주소가 URL임 일반적으로 우리가 입력하는 네이버 URL에는 프로토콜과 포트번호가 생략된 것이고 기타경로는 없는 것 우리가 www.naver.com 으로 입력하면 웹 브라우저는 생략된 프로토콜과 포트번호를 붙여서 완성된 형태의 URL로 요청 정보를 보냄 완성된 형태의 네이버 URL -> https://www.naver.com:80 원래 서버의 IP 주소는 0 ~ 255사이의 숫자 네 자리로 이루어져있음 원래 완성된 형태의 네이버 URL은 다음과 같음 https://223.130.200.104:80 우리가 네이버에 접속하기 위해 0 ~ 255 사이의 숫자 네자리로 이루어진 서버 IP 주소를 외우기 어려우니 서버 IP 주소에 별명을 붙일 수 있게 발전이 됬고 별명을 입력하면 원래 서버 IP 주소로 바뀌어 동작함 별명을 원래 서버 IP 주소로 바꿔주는건 DNS ( Domain Name Server ) 라는 것이 바꿔줌 브라우저에 www.naver.com 입력 -> 브라우저는 완성된 형태의 URL로 변경 -> DNS가 서버 IP 주소로 변경 -> 클라이언트의 요청이 해당 서버로 들어감 |
| 프로토콜 ( Protocol ) |
| http, https, ftp 등 많은 프로토콜이 있으며 http 또는 https 프로토콜을 가장 많이 사용함 |
| 서버의 IP 주소 ( IP Address ) |
| 0 ~ 255 사이의 숫자 네 자리로 이루어져있음 우리가 네이버로 접속하기 위해서는 서버의 IP 주소를 입력해야하는데 실제 우리는 네이버에 접속할 때 www.naver.com 을 입력함 네이버의 서버 IP 주소는 223.130.200.104 로 원래는 이 서버 IP 주소를 입력해서 접속해야함 브라우저의 주소 표시줄에 이 숫자를 입력해보자 그러면 네이버가 나옴 사용자 입장에서 생각해보면 웹 서비스에 접속하기 위해 서버 IP 주소를 외우기도 불편하고 입력하기도 불편할 것 그래서 사용자 편의를 위해 DNS 라는 것이 나왔음 DNS 는 서버 IP 주소에 별명을 붙여주고 별명을 서버 IP 주소로 변환시켜주는 기능임 우선 네이버에서 DNS를 사용해서 223.130.200.104 에 www.naver.com 이라는 별명을 붙여놓은 것임 그리고 사용자는 www.naver.com 을 입력하면 DNS가 223.130.200.104 로 바꿔서 네이버 서버로 요청이 들어가는 구조임 |
| 포트 번호 ( Port Number ) |
| 앞서 서버 컴퓨터와 백화점을 비유했음 백화점에 수 많은 매장이 입점해 있고 매장 마다 구역 번호가 있고 그 구역에는 한 매장만 입점할 수 있는 것처럼 서버 컴퓨터에는 수많은 서버 프로그램이 있음 서버 프로그램 마다 포트 번호가 있고 포트 번호는 한 서버 프로그램만 사용할 수 있음 클라이언트가 서버로 요청할 때는 해당 서버의 몇 번 포트로 요청을 보낼 것인지 명시해야함 |
잠시 여기까지 URL을 정리해보자
우리가 브라우저에 http://www.naver.com:80 와 같이 입력해서 접속하면 아래와 같은 요청 정보가 생성됨

클라이언트가 http 프로토콜을 사용해서 www.naver.com 서버로 요청을 하는군
게다가 www.naver.com 서버에서 80번 포트로 요청을 보내는 것이군
여기서 DNS가 관여해 "엇! www.naver.com 은 223.130.200.104 로 바꿔줘" 가 되서 최종적으로 아래와 같은 요청 정보가 생성 됨

그러나! 여기서 우리가 네이버에 접속하는 상황을 상상해보면 우리는 간단하게 www.naver.com 만 입력해 접속함
URL에 필요한 프로토콜과 포트 번호가 빠졌는데 빠진 부분은 브라우저가 알아서 채워줌
브라우저에 www.naver.com 을 입력하고 엔터를 치면 "프로토콜이 빠졌군, 프로토콜을 더해줘야지"

또 브라우저는 "포트 번호도 빠졌네? http 프로토콜은 80번 포트를 사용한다고 약속했으니까 80번 포트를 더해줘야지"

가 되서 URL이 완성된 후에 요청이 들어감
요청 방식과 관련된 자세한 얘기는 다음에 할 것
여기까지 요청을 할 때 생성되는 요청 정보를 자세히 알아봤음
이번에는 응답을 할 때 생성되는 응답 정보를 자세히 알아보자
응답 정보는 다음과 같은 구조로 이루어져있음
클라이언트는 서버가 전달해준 응답 정보를 통해 사람에게 결과를 보여줌

응답 정보에서는 상태 코드만 알고 있으면 됨
상태 코드는 다음과 같이 200, 300, 400, 500번 대가 있음
| 상태 코드 ( Status Code ) | |||
| 200, 201, 202, ... | 300, 301, 302, ... | 400, 401, 402, ... | 500, 501, 502, ... |
| 200번대 | 300번대 | 400번대 | 500번대 |
| 클라이언트의 요청을 성공적으로 처리했음을 나타냄 | 클라이언트의 요청을 처리하기는 했지만 클라이언트가 요청한 부분을 완전히 처리하기 위해서는 클라이언트가 추가 동작을 취해야한다 는 것 마치 물어볼 게 있어서 관공서에 전화했더니 관련 부서 전화번호를 알려주며 "그쪽으로 전화해보세요." 라는 상황과 똑같음 |
클라이언트가 잘못 요청햇다는 것 | 서버에 문제가 생겨서 클라이언트의 요청을 처리할 수 없다는 것 |
각 n00번대 상태 코드는 다음과 같은 의미를 지니고 있음
클라이언트가 서버로 요청을 했는데 다음과 같은 n00번대 상태 코드를 받았다면 그에 맞는 응답 결과를 사람에게 보여주면 됨
특히나 아래 네 가지 상태 코드는 자주 만나게 될테니 잘 기억해두자
| 200 - 성공 | 400 - 잘못된 요청 | 404 - 찾을 수 없음 | 500 - 서버 문제 |
| 서버가 요청을 제대로 처리했다는 뜻 | 서버가 요청을 인식하지 못했음 | 클라이언트가 URL을 잘못 입력해 서버에서 클라이언트가 요청한 걸 찾지 못했음 | 서버에 문제가 생겨 요청을 처리할 수 없음 |
여기까지 웹 개발에 필요한 기초 용어를 정의해봤음
이 용어들을 알고 있어야 웹 개발을 배우면서 만나게 되는 상황을 수월하게 이해할 수 있음
'Servlet + JSP > Serlvet-Chapter02' 카테고리의 다른 글
| Chapter02. 서블릿 추가 & 등록, 실행, 요청(호출) (0) | 2023.02.24 |
|---|---|
| Chapter02. 서블릿 추가, 등록, 실행, 요청(호출) (0) | 2023.02.24 |
| Chapter02. 서버, URL, 포트 (0) | 2023.02.24 |
| Chapter02. 웹 프로젝트 실행시키기 (0) | 2023.02.24 |
| Chapter02. 웹 프로젝트의 구조 이해와 웹 프로젝트 만들기 (0) | 2023.02.23 |