TIL - HTTP, Proxy

손찬호·2024년 5월 5일
0

TIL

목록 보기
20/21

HTTP

HTTP(Hypertext Transfer Protocol):
Hypertext 문서를 전송하기 위한 프로토콜

Hypertext는 하이퍼링크를 포함한 텍스트를 의미한다.
하이퍼링크는 문서나 파일, 웹 페이지등의 다른 위치로 연결되는 링크로
사용자가 하이퍼링크를 클릭해서 쉽게 다른 정보로 이동할 수 있다.
브라우저와 웹 서버가 인터넷으로 연결되어 HTTP를 통해 하이퍼텍스트 문서와 파일을 주고받는다.
즉 HTTP는 하이퍼텍스트(hypertext) 문서를 전송(transfer)하는 규칙(protocol)이라고 볼 수 있다.

요청/응답, 헤더, 메소드, 상태코드, HEAD 메소드

HTTP 요청

HTTP 요청 (HTTP Request)
클라이언트(웹 브라우저)가 웹서버에게 페이지나 파일을 요청한다.

HTTP 요청
메소드 method클라이언트가 수행할 동작
경로 path요청된 자원의 위치 (예. URL)
버전 versionHTTP 프로토콜의 버전
헤더 header요청에 대한 추가 정보
바디 body서버에 전송할 데이터
(필요한 경우에만 사용)

HTTP 응답

HTTP 응답 (HTTP Response)
서버가 클라이언트 요청에 대해 보내는 응답.

HTTP 응답
버전HTTP 프로토콜의 버전
상태 코드요청 결과를 나타내는 코드
상태 메시지상태 코드에 대한 설명
헤더응답에 대한 추가 정보
바디요청된 데이터
(필요한 경우에만 사용)

HTTP 헤더

HTTP 헤더는 메타데이터를 전달하며 요청과 응답에 모두 포함된다.
요청과 응답에 다른 메타데이터가 들어가며
대표적으로 아래와 같다.

요청 헤더응답 헤더
브라우저 종류
요청 데이터의 MIME Type
서버 유형
콘텐츠 길이

HTTP 메소드 종류

HTTP 메서드의 종류는 다양하지만 대표적인 6가지

종류역할
GET리소스 조회
POST리소스를 서버에 전송
등록에 사용된다.
PUT리소스 덮어쓰기(전체 수정)
리소스가 없으면 생성
PATCH리소스 부분 수정
DELETE지정된 URL의 리소스를 삭제
HEAD바디없이 헤더 정보만을 요청

HTTP 상태코드

서버가 클라이언트의 요청이 처리된 상태를 나타내는 코드이다.

상태 코드는 앞에 숫자에 따라 5가지로 분류된다.

1XX: information response
서버가 요청을 받았고 계속 작업을 처리 중

2XX: success message
클라이언트의 요청이 성공적으로 받아들여지고 처리됨

3XX: redirection message
요청한 리소스가 다른 위치로 옮겨졌거나 추가 조치가 필요

4XX:클라이언트 에러
클라이언트의 요청이 잘못되었거나 처리될 수 없음

  • 400 Bad Request - 서버가 요청을 이해할 수 없음
    주로 요청 내용이 약속한 형식에 맞지 않는 경우에 발생한다.
  • 404 Not Found - 서버가 요청한 리소스를 찾을 수 없음

5XX:서버 에러
서버가 요청을 처리하지 못함

  • 500 Internal Server Error - 서버가 예상치 못한 상황에 직면해 요청을 처리할 수 없음
  • 503 Service Unavailable - 서버가 일시적으로 요청을 처리할 수 없음
    (과부하나 유지보수로 인해)

HTTP HEAD 메소드

HEAD 메소드는 헤더 정보만을 요청하는 GET 메소드이다.
클라이언트가 원하는 리소스의 메타데이터만 얻을 수 있으며
주로 리소스 존재 유무나 변경 여부를 확인하는데 사용한다.

Proxy

Proxy 명사의 사전적 의미는 '무엇인가 대신하는 권리나 주체'를 의미한다.
컴퓨터 과학에서 proxy는 클라이언트와 서버 사이에 위치하여
클라이언트 요청을 서버에 대신 전달하고
서버의 응답을 다시 클라이언트에게 대신 전달하는 중계자의 역할을 한다.

그냥 클라이언트와 서버를 바로 연결해도 되는데 굳이 proxy를 사용해
중계를 하는 이유는 크게 2가지가 있다.

  1. 캐싱(Caching)을 통한 성능 최적화:
    프록시 서버는 자주 요청되는 웹 페이지나 파일을 임시 저장소에 저장하며
    이후 같은 요청이 들어왔을 때 직접 응답함으로써 서버의 부하를 줄이고 응답 시간을 단축할 수 있다.
    예를 들어, DNS서버가 받는 부담을 줄이기 위해
    DNS proxy서버가 자주 요청하는 도메인과 ip주소를 캐싱하여 빠르게 응답할 수 있도록 한다.

  2. 접근 제어(Access Control)와 보안 강화:
    프록시 서버를 통해 특정 웹 사이트나 서비스에 대한 접근을 제한하거나 허용하는 규칙을 설정할 수 있다.
    이를 통해 서버가 받는 외부 공격으로부터 내부 네트워크를 보호할 수 있다.
    또는 사용자의 실제 IP 주소를 숨기고 프록시 서버의 IP 주소로 대체함으로써 익명성을 제공할 수 있다.
    예를 들어, 애플의

proxy vs VPN

proxy가 사용자의 실제 IP 주소를 숨기고 프록시 서버의 IP 주소로 대체함으로서 익명성을 제공할 수 있는데
VPN도 그럼 proxy로 볼 수 있는지에 대한 의문이 들었다.

그래서 찾아보니 Proxy와 VPN은 익명성을 제공한다는 공통점이 있지만 근본적으로 서로 다른 기술이다.
proxy는 웹 요청을 중계하는 과정에서 클라이언트-서버 사이의 익명성을 제공한다면
VPN(Virtual Private Network)은 사용자 전체 인터넷 연결을 암호화하고
전 세계의 다른 위치에 있는 서버를 통해 요청을 전달함으로서 작동한다.

proxy = 익명성
VPN = 익명성+암호화

profile
매일 1%씩 성장하려는 주니어 개발자입니다.

0개의 댓글

관련 채용 정보