[Servlet / JSP] - HTTP

army246·2022년 5월 19일
0

Servlet / JSP

목록 보기
2/5

💻 1. HTTP(Hyper Text Transfer Protocol)

  • 월드와이드 웹 서비스를 제공하기 위해서 정의된 프로토콜.
    네트워크 응용계층의 프로토콜로 클라이언트와 서버 사이의 데이터 통신을 위한 규격이며
    웹의 경우 웹 브라우저가 클라이언트가 되며 톰캣과 같은 WAS가 설치된 컴퓨터는 서버가 된다.

1-1 HTTP 통신 방식

  • HTTP는 기본적으로 요청(request),응답(response)구조로 되어있다.
    HTTP는 서버에 연결하고, 요청해서 응답을 받으면 끊어지는 구조인 Connectionless 방식으로 작동한다.
    클라이언트가 HTTP request를 서버에 보내면 서버는 HTTP response를 보내는 구조.

기본적으로 자원 하나에 대해서 하나의 연결을 만든다.

  • 장점 : 수 많은 사람들이 웹 서비스를 사용하더라도 접속 유지는 최소한으로 할 수 있기 때문에
    더 많은 유저의 요청을 처리 할 수 있다.
  • 단점 : 연결을 끊어버리기 때문에 클라이언트의 이전 상태를 알 수 없다. 이러한 특징을 stateless라고 한다.
    예를 들어서 로그인을 성공하더라도 다음 페이지에서 로그인 여부를 확인할 수 없다. -> session, cookie로 이런 문제를 해결한다.

1-2. HTTP Request 구조 (HTTP 요청 프로토콜 구조)

HTTP 요청 프로토콜은 크게 세 가지로 구성된다.

  • start-line
  • message-header
  • message-body

1-2-1. Start-line

HTTP request의 첫 번째로 설정되는 라인이다.
start-line도 요청과 관련하여 요청방식, 요청URI, HTTP 버전 이 세 가지 정보가 포함된다.

ex) GET/servletStudy/studylist.html HTTP/1.1

  • 요청 방식(HTTP Method)

    • 해당 request의 action을 정의하는 부분.
      GET, POST, PUT, DELETE가 있다.
  • 요청 URI(Request target)

  • HTTP 버전

    • 웹에서 사용하는 HTTP버전 1.0, 1.1 등이 있다. (일반적으로 1.1 버전 사용)

1-2-2. message-header

  • Key:Value 값으로 정보를 설정
    ex) Host:google.com -> Key = Host / Value = google.com
  • 해당 request에 대한 브라우저와 관련된 정보이다.
Key설정되는 정보
Host요청이 전송되는 target의 host url
User-Agent요청을 보내는 클라이언트의 대한 정보
Accept해당 요청이 받을 수 있는 응답(response)타입
Connection해당 요청이 끝난 후에 클라이언트와 서버가 계속 네트워크 커넥션을 유지할 것인지 아닌지 지시 부분
Content-Type해당 요청이 내는 메세지 body 타입
CookieKey-Value 형태 쿠키 정보

1-2-3. message-body

  • 해당 request의 실제 내용 -> 사용자가 입력한 정보들로 설정된다.
    ❗️start-line 에서 설정된 요청 방식에 따라서 body가 달라진다.
    ex) GET -> 정보 은닉 못한다./ 사용자가 입력하는 정보가 URI에 보인다.
    POST -> 은닉 가능.

1-3. HTTP Response 구조 (HTTP 응답 프로토콜)

  • 서버는 요청에 대한 관련 정보를 추출하여 요청을 처리한다. 응답 프로토콜을 생성한 다음 결과를 응답 프로토콜에 저장해서 브라우저로 전송한다.

    요청 프로토콜 : 브라우저가 생성
    응답 프로토콜 : 서버가 생성

  • status-line
  • message-header
  • message-body

1-3-1. status-line

  • response 상태를 나타내주는 부분. status-line에는 HTTP 버전, 상태코드, 상태메세지 이 세 가지가 나타난다.

  • HTTP 버전

  • 상태 코드(status code)

    • 요청에 대한 응답 상태를 나타내는 코드.

      상태 코드내용
      200정상적인 처리코드
      403요청에 대한 권한이 없다는 코드
      404서버에 존재하지 않다는 코드
      405요청 방식(Method)을 서버에서 지원하지 않는다는 코드
      500처리 과정에서 예외(Exception) 발생했다는 코드
  • 상태 메세지(status Text)

    • 응답 상태를 간략하게 설명해주는 메세지

1-3-2. message-header

  • 서버가 브라우저에 전송하는 문서 정보가 담겨있다.

1-3-3. message-body

  • 브라우저가 요청한 정보 포함 -> 실제 서버가 브라우저로 보내는 응답 정보 포함되어 있다.

2. HTTP Method

2-1. GET

  • 데이터를 서버로 부터 받아 올 때 주로 사용
  • 데이터 생성/수정/삭제 없이 받아오기만 할 때 사용
  • request에 body를 안 보내는 경우가 많다.
  • URI 뒤에 ? 추가하여 Key=value 형태로 & 연결하여 정보 전달

2-2. POST

  • 데이터를 생성/수정/삭제 할 때 주로 사용
  • request body 포함해서 보내진다.
  • meesage-body에 포함해서 보내지기 때문에 URI에 입력한 정보가 보이지 않는다. (정보은닉)

2-3. PUT

  • 리소스의 내용을 업데이트(수정)하는 경우 사용

2-4. DELETE

  • 특정 리소스 삭제하는 경우 사용
profile
천천히 꾸준히

0개의 댓글