웹 페이지는 객체(objects)들로 구성되며 웹 페이지는 보통 참조 객체들이 포함된 기본 HTML 파일이다.

따라서 클라이언트가 웹 페이지에 방문하여 시각적으로 보기 위해서는 기본 HTML 및 객체 정보를 받을 필요가 있는데 이때 사용하는 프로토콜이 HTTP 프로토콜이다.

(HTTP 프로토콜은 웹상에서 불특정 다수와 통신이 가능하도록 설계된 프로토콜)

 

프로토콜 이란?

  • 서로 간의 통신을 위한 약속, 규칙
  • 주고 받을 데이터에 대한 형식을 정의한 것

HTTP(Hyper Text Transfer Protocol)

  • 클라이언트-서버 모델
  • 텍스트 기반의 프로토콜이라 단순하고 읽기 쉽다. (Human Readable)
  • 상태를 유지하지 않는다. 즉 클라이언트의 정보를 저장 하지 않음 (stateless)
    • 따라서 같은 클라이언트가 보낸 요청도 구분하는 것이 불가능 
    • 해결책: Cookie(클라이언트에 정보 저장)와 Session(서버에 정보 저장), JWT를 통해 보완 가능
  • 비 연결성 서버가 클라이언트 요청에 대해 응답을 마치면 맺었던 연결을 끊어 버린다. (Connectionless)
    • 해결책: Keep-Alive 헤더 속성 사용(단 성능 하락 주의)
  • 커스텀 헤드를 추가 하여 확장이 가능하다.
  • 포토 번호 80번을 사용한다.
  • 트랜스포트 계층의 TCP 프로토콜을 사용한다. (신뢰성 있는 전송을 보장)
  • 애플리케이션 계층의 프로토콜이다.

HTTP 종류

  • HTTP/1.1, HTTP/2는 TCP 기반 위에서 동작
  • HTTP/3는 UDP 기반 위에서 동작

HTTP 메시지

요청 메시지: 클라이언트가 URL을 입력시 해당 프로토콜을 사용하여 전송

  • GET
    • 리소스를 얻는 것이 목적 Read 하는 방식
    • 바디 정보 없음, 헤더 정보만 존재
      • 대신 querystring으로 추가 데이터를 보내는 것이 가능
    • 서버에서 리소스를 얻어 올 때 사용
    • 소용량 데이터 전달
    • 보안에 취약
    • 데이터 공유에 유리 
  • POST
    • 리소스를 Write 하는 방식
    • 바디 정보 있음
      • 서버에 전송할 데이터 존재
    • 서버에 정보를 제공해야 할 때 사용
    • 바디 정보를 통해 대용량 데이터 전달 (제한 x)
    • TLS 암호화 프로토콜 (구 SSL)을 같이 사용할 경우 보안에 유리
    • 데이터 공유에는 불리  

응답 메시지: 서버가 클라이언트의 요청에 응답 하여 전송하는 메시지

  • 상태 코드:
    • 1xx Information: HTTP 1.1 때 추가됨 (정보 교환)
    • 2xx Success: 접속 성공
    • 3xx Redirect: 다른 URL로 요청해라
    • 4xx Client Error: 클라이언트가 요청을 잘못 한 경우 ex 404 not Found
    • 5xx Server Error: 서버가 클라이언트 요청을 처리하는게 실패 한 경우

+HTTP 에서 Java를 직접적으로 사용이 불가능

  • 웹에서 자바를 처리하기 위해서 Tomcat 등장

+ Recent posts