🗂️ Study/🌿Spring

HTTP (HyperText Transfer Protocol)

litlight 2024. 5. 20. 10:49

HTTP : 데이터를 주고받는 양식을 정의한 통신 규약 중 하나

  • 매우 범용적인 양식을 가지고 있어 전 세계적으로 널리 쓰이는 통신 규약
    • 통신 규약 : 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고받는 양식과 규칙 체, 보통 프로토콜이고 부름
  • 현재 이용되는 대부분의 웹 서버가 HTTP를 기반으로 정해준 규칙에 맞게 데이터를 주고 받음
  • 모든 브라우저는 HTTP 프로토콜을 기본으로 지원하기 때문에 여러분은 매일 HTTP를 이용하고 있음
 Browser 
HTTP Request  Server 
 
HTTP Response
    • HTTP에서는 언제나 Request, Response라는 개념이 존재
    • 서버와 브라우저의 동작
      1. 브라우저는 서버에게 자신이 원하는 페이지(URL 등의 정보)를 요구(Request)
      2. 서버는 브라우저가 원하는 페이지가 있는지 확인하고, 있다면 해당 페이지에 대한 데이터를 실어 응답(Response) 하고, 없다면 없는 페이지에 대한 데이터를 반환 함
      3. 브라우저는 서버에게 전달 받은 데이터를 기반으로 브라우저에 그려줌
    •  Headers 탭
      • General : 브라우저에서 서버로 보낸 Request 데이터
      • HTTP 상태 코드(Status Code)를 통해 브라우저와 서버간의 요청, 응답 과정에서 발생할 수 있는 상황들을 표현할 수 있음
        • HTTP 상태 코드는 3자리 숫자로 이루어져 있음
        • 첫 번째 자리 숫자는 상태 코드의 분류를 나타내는 용도로 사용되며, 나머지 두 자리는 세부적인 정보를 나타냄
          • 1xx (Informational)
            • 1xx 상태 코드는 요청이 수신 되었으며 처리가 계속되고 있음
            • 주로 웹 브라우저와 같은 클라이언트가 서버와의 연결 상태를 확인하기 위해 사용
          • 2xx (Successful)
            • 2xx 상태 코드는 클라이언트의 요청이 성공적으로 처리 되었음
            • 가장 많이 사용되는 상태 코드는 200
            • 이는 요청이 성공적으로 처리 되었으며 클라이언트가 요청한 데이터가 서버에서 제공됨을 의미
          • 3xx (Redirection)
            • 3xx 상태 코드는 클라이언트가 추가적인 조치를 취해야 함
            • 이 상태 코드는 주로 페이지 이동, 리다이렉션 등에 사용
          • 4xx (Client Error)
            • 4xx 상태 코드는 클라이언트에 오류가 있음
            • 이 상태 코드는 주로 클라이언트의 잘못된 요청, 인증 오류 등에 사용
            • 가장 많이 사용되는 상태 코드는 404
              • 이는 클라이언트가 요청한 페이지나 리소스를 서버에서 찾을 수 없음을 의미
          • 5xx (Server Error)
            • 5xx 상태 코드는 서버에 오류가 발생했음
            • 이 상태 코드는 주로 서버의 오류, 서버 과부하 등에 사용
            • 가장 많이 사용되는 상태 코드는 500입니다. 이는 서버 내부 오류가 발생함을 의미
 Client   Request 
 → 
 Server 
 ← 
 Response 
  • Method (호출/요청 방식)
    • 가장 대표적인 요청 방식은 GET  POST가 있음
      • GET : 이름 그대로 어떤 리소스를 얻을 때 사용
        • 브라우저의 주소창에 URL을 입력하면 GET 메서드를 사용해서 서버에 요청을 보냄
      • POST : 웹 서버에 데이터를 게시할 때 사용
        • (ex. 회원가입, 게시글 작성, 댓글 작성)
      • DELETE : 웹 서버 데이터 삭제할 때 사용
  • Header (추가 데이터. 메타 데이터)
    • 브라우저가 어떤 페이지를 원하는지
    • 요청 받은 페이지를 찾았는지
    • 요청 받은 데이터를 성공적으로 찾았는지
    • 어떤 형식으로 데이터를 보낼지
    • 외에도 아주 다양한 의사 표현을 위한 데이터를 모두 Header 필드에 넣고 주고 받음
  • Payload (데이터. 실제 데이터)
    • 서버가 응답을 보낼 때에는 항상 Payload를 보낼 수 있음
    • 클라이언트(브라우저)가 요청을 할 때에도 Payload를 보낼 수 있음
    • 그리고 "GET method를 제외하곤 모두 Payload를 보낼 수 있다" 는게 HTTP에서의 약속