<< 학습 목표 >>

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을 잘못 입력해 서버에서 클라이언트가 요청한 걸 찾지 못했음 서버에 문제가 생겨 요청을 처리할 수 없음

여기까지 웹 개발에 필요한 기초 용어를 정의해봤음

이 용어들을 알고 있어야 웹 개발을 배우면서 만나게 되는 상황을 수월하게 이해할 수 있음

728x90
LIST