본문 바로가기

학원/복기

[HTML] HTTP 요청과 응답

HTTP 요청과 응답

클라이언트는 웹브라우저의 url을 이용해 서버에 접속해서 웹 프로그램을 요청(request)한다. 서버는 클라이언트의 요청에 응답(response)을 하여 웹페이지를 보여준다.

HTTP 패킷 : 클라이언트가 서버로 보내는 데이터 

  • HTTP 패킷은 Header(헤더)와 Body(바디)로 나누어진다.
  • 헤더에는 HTTP Method 방식, 클라이언트와 브라우저,접속하고자 하는 URL 정보 등이 담겨있다.
  • 바디는 보통 비어있고 정보를 담아서 서버에 요청할 수 있다.

HTTP

  • 웹상에서 클라이언트와 서버 간에 데이터를 주고받을 수 있는 프로토콜
  • 클라이언트가 HTTP 프로토콜을 통해서 서버에 요청을 보내면 서버는 요청에 맞는 응답을 클라이언트에게 전송

클라이언트가 서버에 웹프로그램을 요청할 때는 리퀘스트 메시지에 정보를 담아서 서버에 전달하는데, 이때 GET 방식과 POST방식을 이용한다. 

GET방식 vs POST 방식

GET방식

  • 클라이언트가 서버로 데이터를 요청하기 위해 사용되는 Method이다. 
  • Body 부분은 비어있으며, 헤더에 Body의 콘텐츠 타입을 명시하는 Content-Type 헤더 필드도 적지 않는다.
  • URL 뒤에 쿼리 스트링(Key와 Value)을 붙이고 HTTP 패킷의 헤더에 포함해서 서버에 데이터를 요청한다.
ex) http://localhost:3000/login?id=admin&pw=1234

POST 방식

  • 클라이언트가 서버로 데이터를 전송해 리소스를 추가하거나 생성하기 위해 사용되는 Method이다.
  • POST 요청 시 HTTP 패킷의 헤더에 Body의 콘텐츠 타입을 명시하는 Content-Type 헤더 필드를 포함한다.
  • HTTP 패킷의 Body에는 데이터를 담아서 서버로 전송한다.
  • GET 방식과는 다르게 데이터들이 URL에 표시되지 않고 HTTP 패킷 Body에 담겨 서버로 데이터가 전송된다.
     >> 보내는 데이터의 양에 제한이 없어 대용량 데이터를 전송할 때는 POST 방식이 적합하다.
  • URL에 데이터가 표시가 되지 않기 때문에 GET 방식보다는 상대적으로 보안적이다.
  • POST 방식의 경우 보통 서버의 값이나 상태를 변경하기 위해 사용되므로 글쓰기, 글 수정과 같은 작업에 적합하다.

 

WAS(Web Application Server)

  • DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 Application Server
  • HTTP를 통해 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어(소프트웨어 엔진)
  • 웹 컨테이너(Web Container) 혹은 서블릿 컨테이너(Servlet Container)라고도 불린다.
  • Container란 JSP, Servlet을 실행시킬 수 있는 소프트웨어를 말한다.
  • 즉, WAS는 JSP, Servlet 구동 환경을 제공한다.
  • WAS의 역할
    • WAS = Web Server + Web Container 
  • WAS의 예 
    • ex) Tomcat, JBoss, Jeus, Web Sphere 등

 

Servlet 

  • 서블릿은 웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종이다.
  • 기존에 서버는 정적인 자료(HTML, 사진, 글 등)만을 주고받았지만 웹에 다양한 기능이 요구되면서 정적인 자료뿐만 아니라 
    사용자 요구에 맞춘 동적인 페이지들을 만들 필요가 생겼다. 이를 위해 만들어진 것이 바로 서블릿이다.
  • 즉, 서블릿은 클라이언트의 요청에 맞춰 동적인 결과를 만들어 주는 자바 웹 프로그래밍 기술이라고 할 수 있다.
  • 서블릿은 WAS(Web Application Server)의 서블릿 컨테이너 안에서 동작한다.

 

 

참고 사이트:
https://cocoon1787.tistory.com/526
https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html
https://code-lab1.tistory.com/210