HTTP

EBinY·2021년 11월 18일
0

HTTP

  • HyperText Transfer Protoocl
  • HTML과 같은 문서를 전송하기 위한 프로토콜
  • Stateless(무상태성)
    • 특정 상태를 유지하지 않는 특징을 가짐
    • HTTP는 특정 상태를 담고 있지 않으며, 이전 요청이나 다음 요청을 기억하지 않음
    • HTTP가 클라이언트나 서버의 상태를 확인하지 않고, 상태를 추적하거나 저장하지도 않는다
    • 필요에 따라 다른 방법(쿠키-세션, API 등)을 통해 상태를 확인
  • HTTP messages 양식에 맞게 요청(request)을 보내면, 양식에 맞게 응답(response)한다
  • 여러 버전이 개발되었음, 크게 보면 버전별로 용도가 다름
  • MDN - HTTP Request Method
  • MDN - HTTP Messages
  • MDN - HTTP Status code
  • MDN - HTTP MIME Type
  • 브라우저의 동작 원리
  • MDN - HTTP 멱등성
  • MDN - HTTP Caching

HTTP Messages

  • 클라이언트와 서버 사이에서 데이터가 교환되는 방식
  • 요청(Request)과 응답(Response) 2가지 유형
  • 유형 간의 공통된 구조
    1. start line(요청)/status line(응답) : 요청/응답의 상태를 나타냄
    2. HTTP headers: 요청을 지정하거나, 메시지에 포함된 본문을 설명하는 헤더의 집합
    3. empty line: 헤더와 본문을 구분하는 빈 줄
    4. body: 요청/응답과 관련된 데이터나 문서를 포함, 유형에 따라 선택적으로 사용됨

Requests(요청)

  1. Start line: 3가지 요소가 있음
    • HTTP method: 수행할 작업이나 방식
      • GET, PUT, POST / HEAD, OPTIONS
    • 요청 컨텍스트: method에 따라 형식이 달라짐
      • origin 형식: ?와 쿼리 문자열이 붙는 절대 경로, POST, GET, HEAD, OPTIONS 등의 method와 함께 사용함
      • absolute 형식: 완전한 URL 형식, 프록시에 연결하는 경우 대부분 GET과 함께 사용
      • authority 형식: 도메인 이름과 포트 번호로 이루어진 URL authority component, HTTP tunnel을 구축하는 경우, CONNECT와 함께 사용
      • asterisk 형식: OPTIONS와 별표(*) 하나로 서버 전체를 표현
    • HTTP version: 버전에 따라 구조가 달라짐
  2. Headers: 기본 구조를 따름, 헤더 이름, 콜론, 값을 입력
    • General headers: 메시지 전체에 적용되는 헤더, body를 통해 전송되는 데이터와는 관련이 없는 헤더
    • Request headers: fetch를 통해 가져올 리소스나 클라이언트 자체에 대한 자세한 정보를 포함하는 헤더
      • User-Agent, Accept-Type, Acccept-Language와 같은 헤더로 요청을 보다 구체화
      • Referer처럼 컨텍스트를 제공하거나 If-None과 같이 조건에 따라 제약을 추가할 수도 있음
    • Representation headres: Entity header로 불렸었음, body에 담긴 리소스 정보(컨텐츠 길이, MIME 타입 등)을 포함하는 헤더
  3. Body
    • GET, HEAD, DELETE, OPTIONS처럼 서버에 리소스를 요청의 경우는 본문 생략
    • POST, PUT처럼 데이터 업데이트를 위해 사용
    • Single-resource bodies(단일-리소스 본문): 헤더 두개(Content-Type, Content-Length)로 정의된 단일 파일로 구성
    • Multiple-resource bodies(다중-리소스 본문): 여러 파트로 구성된 본문에 각 파트마다 다른 정보를 지님, 보통 HTML form과 관련됨

Responses(응답)

  1. Status line
    • 현재 프로토콜의 버전(HTTP/1.1)
    • 상태 코드: 요청의 결과(200, 302, 404)
    • 상태 텍스트: 상태 코드의 설명(OK, Not Found)
    • HTTP/1.1 404 Not Found.
  2. Headers: 요청 헤더와 동일한 구조, 문자열, 콜론, 값을 입력
    • General headers: 메시지 전체에 적용되는 헤더, boby를 통해 전송되는 데이터와는 관련 없음
    • Response headers: 위치 또는 서버 자체에 대한 정보(이름, 버전 등)와 같은 응답에 대한 부가적인 정보를 가짐, Vary, Acccept-Ranges와 같은 상태 줄에 넣지 못한 추가 정보를 제공함
    • Representation headers: Entity headers로 불렸었음, body에 담긴 리소스의 정보(컨텐츠 길이, MIME 타입 등)을 포함
  3. Body
    • 상태 코드를 가지는 응답에는 본문이 필요하지 않음
    • Single-resource bodies(단일-리소스 본문)
      • 길이가 알려진 단일-리소스 본문은 헤더 두개(Content-Type, Content-Length)로 정의함
      • 길이를 모르는 단일 파일로 구성된 단일-리소스 본문은 Transfer-Encoding이 Chunked로 설정, 파일은 chunk로 나뉘어 인코딩 되어 있음
    • Multiple-resource bodies(다중-리소스 본문): 서로 다른 정보를 담고 있는 body

0개의 댓글

관련 채용 정보