[HTTP] Hyper Text Transfer Protocol 란?

YTT.erica·2024년 5월 12일

웹 (기초 / 응용)

목록 보기
2/3
post-thumbnail

HTTP 키워드 및 나만의 문장

키워드설명예시
HTTPHTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 통신 규약
HTTP Message클라이언트와 서버 간에 통신 기본 단위HTTP Request Message, HTTP Response Message
HTTP Message Header요청 or 응답으로 부가적인 정보 전송에 사용HOST, User-Agent
HTTP Request Method서버에게 원하는 작업을 알려주는 방식을 정의한 규칙GET, POST, PATCH, DELETE
HTTP Status CodeHTTP의 진행 상황을 나타내는 코드 → 성공, 실패(문법 오류, 서버 오류) etc..200번대, 300번대, 400번대, 500번대
HTTP URL리소스의 위치와 종류를 나타내는 주소
HTTP 쿠키서버가 클라이언트에게 전송하는 데이터 조각 → 상태 정보 기억하게 도와줌
OSI 7 Layer- 서로 다른 컴퓨터들끼리 통신할 수 있도록 만든 표준
- 통신에 대해서 계층으로 나누어 설명한 모델
Application Layer, Presentation Layer, Session Layer, Transport Layer, Network Layer, Data Link Layer, Physical Layer

HTTP (HyperText Transfer Protocol)

HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 통신 규약

  • 왜 사용하는가?
    웹 서버와 브라우저 사이에 하이퍼텍스트 문서를 전송하려고
  • OSI 7 Layer에서의 Application Layer 프로토콜
    OSI 7 Layer 설명 바로가기
  • HTTP 기초적인 측면
    측면설명
    간단함사람이 읽을 수 있을 정도로 간단함
    확장 가능 (extensible)HTTP 헤더는 확장 가능함. → 새로운 기능을 추가할 수 있음
    상태 X, 세션 존재 (stateless)상태를 저장 X → 요청 사이에 연관이 없음
    HTTP 쿠키가 세션을 만들도록 함 → 각각의 요청들에 세션이 존재
    연결신뢰할 수 있는 TCP에 연결 의존

  • 클라이언트(브라우저)와 서버 통신 과정
    1. TCP 연결 (새 연결 or 기존 연결 재사용 or 여러개 연결)
    2. HTTP Message 요청 전송 (Request message)
    3. HTTP Message 응답 읽기 (Response message)
    4. TCP 연결 닫기 or 다른 요청을 위해 재사용

HTTP Message

클라이언트와 서버 간에 통신 기본 단위

  • HTTP Request Message: 클라이언트가 서버로 보내는 메시지(요청)
  • HTTP Response Message: 서버가 클라이언트에게 보내는 메시지(응답)
HTTP MessageHTTP Request/response

HTTP 메시지 구조

  • 시작줄 (Start Line)
    실행되어야 할 요청이나 요청 수행에 대한 응답의 상태 (한 줄)
  • 헤더 (HTTP Headers)
    메시지 바디 요약 헤더들
  • 빈 줄 (Empty Line)
    헤더와 본문을 구분 → 모든 메타 정보가 전송되었음을 의미
  • 본문 (Body)
    실제 내용
HTTP MessageHTTP Request/response

헤더 유형요청 or 응답포함되는 것
Request headers요청에서 사용되는 헤더요청의 성격 + 목적 + 부가적인 정보
Response headers응답에서 사용되는 헤더?
General headers요청과 응답 모두에서 사용되는 일반적인 헤더메시지 전체에 대한 정보 + (캐시, 연결 유지 등과 관련된 설정)
Representation headers응답 메시지의 본문 데이터와 관련된 헤더데이터의 형식 + 언어 + 압축

헤더 이름설명예시예시 설명
Host요청하려는 서버 호스트의 이름, 포트번호Host: http://www.example.com/해당 주소인 서버에게 요청을 보낼 것이다
User-Agent클라이언트 프로그램 정보 (브라우저)User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36방문자가 사용하는 브라우저 종류 파악
Accept클라이언트가 이해 가능한 컨텐츠 타입Accept: text/html, application/xhtml+xml, application/xml;q=0.9텍스트, HTML, 또는 XML 형식의 문서를 보낼 수 있음
Accept-Language클라이언트가 처리 가능한 언어Accept-Language: en-US,en;q=0.9영어(미국)를 주 언어로 사용
그 다음으로 영어
Accept-Encoding클라이언트가 서버로부터 응답을 받을 때의 데이터 압축 방법Accept-Encoding: gzip, deflategzip 또는 deflate 압축 방식 지원
Connection클라이언트와 서버 간의 TCP 연결 관리Connection: keep-alive웹 페이지를 받은 후에도 연결 계속 유지
Content-Type본문(body)의 데이터 유형Content-Type: application/json데이터의 형식: JSON 형식
Server서버 소프트웨어와 버전 정보Server: Apache/2.4.29 (Ubuntu)서버 소프트웨어 버전 정보 → 우분투, Apache/2,4,29
Age캐싱된 응답의 수명(단위: 초)Age: 36003600초
X-Cache-Info캐싱 프록시 서버가 요청에 대해 수행한 동X-Cache-Info: cache-hitcache에 있음 (hit)

HTTP Request Method

웹 서버에게 원하는 작업을 알려주는 방식을 정의하는 규칙


HTTP Request Method 종류

함수 이름설명
GET데이터 조회
PUT데이터를 전송, 리소스 생성 or 업데이트
POST데이터를 전송, 리소스 전체 업데이트
PATCH데이터를 전송, 리소스 부분 업데이트
DELETE리소스 삭제

HTTP Status Code

HTTP의 진행 상황을 나타내는 코드

범위설명
100번대정보
200번대성공
300번대리다이렉션
400번대클라이언트 오류
500번대서버 오류

주로 사용되는 Status Code

Status Code설명예시
200요청 성공게시글 조회
201요청 성공, 새로운 리소스 생성게시글 추가
202요청 수신 but 처리 불가
(처리하는데 시간이 걸릴 때)
게시글 추가 but 너무 많은 데이터로 인해 시간 소요
204헤더 유효 but 요청에 대해 보내줄 수 있는 내용 X게시글 수정
400클라이언트 코드 잘못 (잘못된 문법)
서버가 요청을 이해할 수 X
게시글 작성 but 서버로 전달 X
401인증되지 않음로그인 안함
403인가되지 않음접근 권한이 없음
404요청받은 리소스를 찾을 수 X게시글 조회 but 조회하고 싶은 게시글이 존재 X
429너무 많은 요청을 보냄과도한 클릭
500서버 잘못
서버가 처리 방법을 알 수 X
서버에서 처리 오류
501요청 방법이 서버에서 지원 X지원하지 않는 HTTP 메서드로 요청이 왔을 때
503서버가 요청을 처리할 준비 X (일시적)서버에 많은 트래픽이 몰림
서버 유지보수 상황

HTTP URL

리소스의 위치와 종류를 나타내는 주소


[ 참고 자료 ]

profile
'◡'✿ 꿈을 찾아가보자고~ '◡'✿

0개의 댓글