220719_Internet 과 Web_4. HTTP

창고·2022년 7월 18일
0
post-custom-banner

4. HTTP (Hyper Text Transfer Protocol)

(1) 개요

  • 클라이언트-서버 모델을 따르는 프로토콜, TCP/IP 위에서 동작
  • HTTP/1.1~2,3이 등장하였음

(2) 특징

  • 비 연결지향 (Connetctionless)

    • 클라이언트가 서버에게 리소스를 요청할 수 응답을 받으면 연결을 끊어버리는 특징
    • 연결 유지 시 서버에 많은 부담이 걸릴 수 있기 때문
    • 서버의 부담은 줄일 수 있으나 리소스 요청 시 연결해야 하는 오버 헤드 비용 발생
    • 이를 위해 요청 헤더의 Connection : keep-alive 속성으로 지속적 연결 상태 유지 가능
    • 1.1 버전부터는 지속적 연결 상태가 기본
  • 무상태성 (Stateless)

    • 각각의 요청이 독립적으로 여겨지는 특징
    • 서버는 클라이언트의 상태를 유지하지 않으며, 각 클라이언트에 맞게 리소스를 응답하는 것이 불가능
    • 이를 해결하기 위해 쿠키나 세션 또는 토큰 방식의 OAuth 또는 JWT가 사용됨

(3) Method

  • 클라이언트가 서버에 요청하는 방법을 정의, 주어진 리소스에 수행하길 원하는 행동
    • GET : 서버에게 조회할 리소스를 요청 (READ, 조회)
    • POST : 서버에게 본문(body)에 생성할 데이터를 삽입하여 전송 (CREATE, 생성)
    • PUT : 서버에게 본분에 수정할 데이터를 삽입하여 전송 (UPDATE, 수정)
    • DELETE : 서버에게 삭제할 리소스를 요청 (DELETE, 삭제)
    • PATCH : PUT과 비슷하나 일부만 수정

(4) Response Status Code

  • 서버가 클라이언트에게 요청을 받으면 응답 상태에 따라 상태 코드를 돌려줌
    • 1XX (요청에 대한 정보) : 요청을 받았으면 작업을 계속하겠음
    • 2XX (성공) : 요청을 성공적으로 수행하였음
      • 200(성공), 201(새 리소스 작성), 202(요청 접수, 미처리)
    • 3XX (리다이렉션) : 클라이언트가 요청을 마치기 위해 추가적인 동작을 위해야 함
      • 300(여러 개의 응답, 선택 필요), 301(영구이동), 302(임시 이동)
    • 4XX (클라이언트 오류) : 클라이언트에게 오류가 있음
      • 401(권한 없음), 403(금지됨, 리소스에 대한 권한 없음), 404(찾을 수 없음)
    • 5XX (서버 오류) : 서버에 오류가 있음
      • 500 (내부 서버 오류), 501(요청 수행 기능 없음, 메소드 인식 X), 503(서비스 사용 불가)

(5) Header

  • 요청 / 응답 헤더 및 본문 헤더 등 다양한 속성 있음
  • 요청 헤더
    • Host : 서버의 도메인 이름과 TCP 포트 번호
    Host: en.wikipedia.org.8080
    • Content-Type : POST/PUT 메소드 사용 시 본문 타입
    Content-Type: application/x-www-form-urlencoded
    • If-Modified-Since : 명시한 날짜 이후로 변경된 리소스만 획득
    If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
    • Origin : 요청이 어느 도메인에서 왔는지 명시, 서버의 Access-Control-* 속성에 필요
    Origin: http://www.example-social-network.com
    • Cookie : 서버의 Set-Cookie로 설정된 쿠키 값
    Cookie: $Version=1; Skin=new;
  • 응답 헤더
    • Access-Control-* : CORS를 허용하기 위한 웹사이트 명시
    Access-Control-Allow-Origin: *
    • Set-Cookie : 클라이언트에 쿠키 설정
    Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1
    • Last-Modified : 요청한 리소스가 마지막으로 변경된 시각
    Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT
    • Location : 3xx 상태 코드일 때 리다이렉션 되는 주소
    Location: http://www.w3.org/pub/WWW/People.html
    • Allow : 요청한 리소스에 대해 가능한 메서드들
    Allow: GET, HEAD

레퍼런스

https://github.com/baeharam/Must-Know-About-Frontend/blob/main/Notes/network/http.md

profile
공부했던 내용들을 모아둔 창고입니다.
post-custom-banner

0개의 댓글