[Servlet] HTTP 프로토콜과 요청방식

sireal·2024년 3월 8일

servlet

목록 보기
2/2

HTTP 개요

  • HTTP (HyperText Transfer Protocol) 은 웹에서 클라이언트인 브라우저와 서버가 통신 할 때 사용하는 규약

  • 프로토콜 : 통신 규약


HTTP 특징

  • 웹 클라이언트 ( 크롬, 사파리, 엣지 등 ) 는 브라우저이고, 웹 서버 ( 제우스, 웹로직, 웹스피어 등) 는 순수 국내 기술으로 우리가 작성하는 웹 애플리케이션은 웹 서버 컴뷰터에 위치

  • 비연결성

    • 브라우저가 서버에 특정 문서를 요청하는 순간, 잠깐 서버와 연결됐다가 서버로부터 응답이 전송된 후 곧바로 끊어지는 것
  • 무상태

    • 웹 서버가 웹 클라이언트의 상태 정보 ( 브라우저가 서버에게 요청을 전달하면서 함께 전달된 데이터 ) 를 유지하지 않는 것

HTTP 요청 URL

--> 사용자가 버튼을 누르거나 하이퍼링크를 클릭하는 순간 브라우저는 HTTP 요청 URL을 서버에 전달

http: // localhost : 8080 / BoardWeb / board / login.html

  • http - 프로토콜 : 서버에 파일을 요청할 때 사용한 프로토콜

  • // - 프로토콜 구분자 : 프로토콜과 호스트 이름을 구분하는 구분자

  • localhost - 호스트 : 웹 서버가 설치된 컴퓨터

  • 8080 - 포트 : 호스트 컴퓨터에서 8080 포트를 사용하는 서버

  • BoardWeb - 웹 애플리케이션 : 8080 포트를 사용하는 서버에서 실행되는 BoardWeb 이라는 웹 애플리케이션

  • board - 디렉터리 : BoardWeb 애플리케이션의 board 디렉터리

  • login.html - 파일 : board 디렉터리에 있는 login.html 파일


HTTP 요청 프로토콜 구조

  • start-line, message-header, message-body 로 구성

start - line

  • HTTP 요청 프로토콜에서 가장 첫 번째 줄에 해당

  • 요청 방식 : 브라우저가 웹 서버에 요청을 전달하는 방식

    • GET : 조회 (상세, 목록)
    • POST : 등록
    • PUT : 수정
    • DELETE : 삭제
  • 요청 URL : 브라우저가 서버에 위치한 웹 애플리케이션의 특정 자원을 요청할때 사용

ex)
http: // localhost : 8080 / BoardWeb / board / login.html

--> 이때 URI 는 포트번호 이후의 문자열로 BoardWeb / board / login.html 이다

  • 프로토콜 / 버전

    • 일반적으로 웹에서 1.1 버전을 사용하기 때문에 start-line에는 다음과 같은 정보가 자동으로 설정
      GET BoardWeb/board/login.html HTTP/1.1

message - header

  • 키 (key) : 값 (value)로 주로 저장

  • Key

    • Host : 요청하려는 서버 호스트 이름과 포트 번호
    • User-agent : 브라우저의 이름과 버전 정보
    • Accept : 브라우저가 처리할 수 있는 MIME Type 목록
    • Accept-charset : 브라우저가 처리할 수 있는 문자열 인코딩 목록
    • Accept-language : 브라우저가 처리할 수 있는 언어 목록
    • Accept-encoding : 브라우저가 처리할 수 있는 압축 방식
    • Cookie : key-value 형태의 쿠기 정보

message body

  • 사용자가 입력한 정보들이 설정
  • start-line 에 설정된 요청 방식에 따라 message-body 설정 정보가 달라지는 것 주의 !

HTTP 응답 프로토콜 구조

  • status-line, message-header, message-body 로 구성

status - line

  • HTTP 응답 프로토콜에서 가장 먼저 등장하며, HTTP 버전, 상태 코드, 상태 메시지가 설정

  • 상태 코드

    • 200 : 정상적인 처리
    • 403 : 브라우저가 요청한 파일에 접근할 수 없음
    • 404 : 브라우저가 요청한 파일이 서버에 존재하지 X
    • 405 : 브라우저가 요청한 방식을 서버에서 지원하지 X
    • 500 : 브라우저가 요청한 기능을 서버가 처리하는 과정에서 예외발생
  • 상태 메시지
    --> 상태 코드의 의미를 쉽게 설명

    • 200 : OK
    • 403 : Forbidden
    • 404 : Not Found
    • 405 : Method Not Allowed
    • 500 : Internal Server Error

message - header

  • 서버의 이름과 같은 서버 정보도 설정되지만, 대부분은 서버가 브라우저에게 응답으로 전송하는 문서의 정보가 설정됨

message - body

  • 브라우저가 요청한 실질적인 문서가 포함

GET 요청

  • 서버에 전달한 URI 뒤에 물음표(?) 를 추가하고 키 (key) = 값 (value) 형태로 사용자가 입력한 정보를 전달하는데, 만약 입력한 정보가 여러 개일 경우에는 & 로 연결

  • HTTP 요청과 함께 전달된 문자열을 쿼리 문자열이라함

  • 사용자가 입력한 정보가 외부에 노출돼도 상관없는 경우 주로 사용


POST 요청

  • GET 과 달리 쿼리 문자열이 요청 URI 가 아닌 message-body에 포함되어 전달된다는 것이 중요 !

  • 사용자가 입력한 정보가 외부에 노출되면 안되는 아이디/비번, 계좌번호 같은 주요한 데이터를 처리할때 주로 사용

0개의 댓글