HTTP/HTTPS란 무엇일까?

ChaeHo95·2022년 5월 29일
0

RoadMap

목록 보기
4/11

HTTP의 개요

애플리케이션 계층의 최상위
HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜
HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트 - 서버 프로토콜이기도 함

클라이언트와 서버들은 (데이터 스트림과 대조적으로) 개별적인 메시지 교환에 의해 통신하며, 보통 브라우저인 클라이언트에 의해 전송되는 메시지를 요청(requests)이라고 부르며,서버에서 응답으로 전송되는 메시지를 응답(responses)라고 부름

클라이언트-서버 프로토콜 :
	수신자 측에 의해 요청이 초기화되는 프로토콜을 의미

프로토콜 :
	컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계

HTTP는 애플리케이션 계층의 프로토콜로, 신뢰 가능한 전송 프로토콜이라면 이론상으로는 무엇이든 사용할 수 있으나 TCP 혹은 암호화된 TCP 연결인 TLS를 통해 전송

TCP(전송 제어 프로토콜) :
	두개의 호스트를 연결하고 데이터 스트림을 교환하게 해주는 중요한 네트워크 프로토콜
	데이터와 패킷이 보내진 순서대로 전달하는 것을 보장
    동시제어가 가능

TLS :
	이전에는 이전에 Secure Sockets Layer (SSL)로 알려짐
	어플리케이션들이 네트워크 상에서 안전하게 통신하기 위해 사용된 프로토콜이며,
    이메일, 웹 브라우징, 메세징, 그리고 다른 프로토코들의 감청을 통한 정보의 변형을 방지
    네트워크 상에서 보안을 제공하는 cryptographic 프로토콜을 사용한 클라이언트 / 서버 프로토콜
    서버와 클라이언트가 TLS로 통신을 할때, 어떠한 제 3자도 메세지를 변형시키거나 감청할 수 없음

SSL :
	웹사이트와 브라우저 사이(또는 두 서버 사이)에 전송되는 데이터를 암호화하여 
    인터넷 연결을 보호하기 위한 표준 기술

cryptographic 프로토콜 :
	보안 관련 기능을 수행하고 암호화 방법을 적용하는 추상 또는 구체적인 프로토콜이며,
    종종 암호화 기본 형식의 시퀀스로 사용

HTTP 기반 시스템의 구성요소

HTTP는 클라이언트-서버 프로토콜이며 요청은 하나의 개체, 사용자 에이전트 또는 프록시에 의해 전송
각각의 개별적인 요청들은 서버로 보내지며, 서버는 요청을 처리하고 response라고 불리는 응답을 제공
다양한 작업을 수행하는 게이트웨이 또는 캐시 역할을 하는 프록시 등이 있음

브라우저와 요청을 처리하는 서버 사이에는 수 많은 컴퓨터(라우터, 모델 등)들이 존재하며, 웹의 계층적인 설계로 인해 네트워크와 전송 계층 내로 숨겨져 있다.

클라이언트(사용자 에이전트)

사용자를 대신하여 동작하는 모든 도구이며 주로 브라우저에 의해 수행
브라우저는 항상 요청을 보내는 개체이며 결코 서버가 될 수 없음
브라우저는 HTTP 요청 내에서 이런 지시 사항들을 변환하고 HTTP 응답을 해석하여 사용자에게 명확한 응답을 표시

웹서버

통신 채널의 반대편에는 클라이언트에 의한 요청에 대한 문서를 제공하는 서버가 존재
서버는 사실 상 논리적으로 단일 기계
반드시 단일 머신일 필요는 없지만, 여러 개의 서버를 동일한 머신 위에서 호스팅 할 수는 있음

캐시 :
	HTTP 응답들(responses)을 일시적으로 저장하는 곳
    특정 조건이 만족될 때까지 캐시에 저장한 리소스를 사용가능
    
프록시 :
	인터넷 상의 여러 네트워크들에 접속할 때 중계 역할을 해주는 프로그램 또는 컴퓨터
    프록시는 리퀘스트를 가로챈 뒤(intercepts) 리스폰스를 돌려준다.
    가로챈 리퀘스트를 전달해줄 수도, 아닐 수도(캐시인 경우), 수정가능
    
    2가지 종류의 프록시 서버가 존재
    - 포워드 프록시(forward proxy)
    	인터넷 상에서 어디로든지 리퀘스트를 전송해주는 프록시.
	- 리버스 프록시(reverse proxy)
    	인터넷에서 리퀘스트를 받으면, 내부망 내의 서버로 전송.

HTTP의 기초적인 측면

  • 간단하다
    사람이 읽을 수 있으며 간단하게 고안
    프레임별로 캡슐화하여 간결함을 유지

  • 확장 가능
    클라이언트와 서버가 새로운 헤더의 시맨틱에 대해 간단한 합의만 한다면,
    언제든지 새로운 기능을 추가가능

  • 상태가 없지만 세션이 존재
    상태를 저장하지 않지만, 동일한 연결 상에서 연속하여 전달된 두 개의 사이에는 연결고리가 없음
    HTTP의 핵심은 상태가 없는 것이지만 HTTP 쿠키는 상태가 있는 세션을 만들어줌

  • HTTP와 연결
    연결은 전송 계층에서 제어되므로 근본적으로 HTTP 영역 밖이지만, HTTP는 연결될 수 있도록 하는 근본적인 전송 프로토콜을 요구하지 않지만 그저 신뢰할 수 있거나 메시지 손실이 없는 연결을 요구하여 TCP 표준에 의존

HTTP로 제어할 수 있는 것

  • 캐시
    문서가 캐시되는 방식을 제어
  • origin 제약사항 완화
    스누핑과 다른 프라이버시 침해를 막기 위해, 브라우저는 웹 사이트 간의 엄격한 분리를 강제하지만, HTTP 헤더를 통해 그것을 완화시킬 수 있음
  • 인증
    어떤 페이지들은 보호되어 오로지 특정 사용자만이 접근가능
  • 프록시와 터널링
    HTTP 요청은 네트워크 장벽을 가로지르기 위해 프록시를 통해 나가며 SOCKS 프로토콜 같은 좀 저수준에서 동작 FTP와 같은 다른 프로토콜도 이 프록시를 통해 처리 가능
  • 세션
    쿠키 사용은 서버 상태를 요청과 연결
    기본적으로 상태없는 프로토콜임에도 세션을 만들어주는 계기
시맨틱 :
	코드 조각의 의미
    코드의 의미, 즉 역활은 무엇이며 기능은 무엇인가 나타내는 것

SOCKS :
	클라이언트 서버환경에서 이용되는 프록시 접속 프로토콜, 즉 기업내 네트워크 의 클라이언트가 
    기업 외에있는 인터넷 웹서버에 접근할때 침입차단 시스템 기능을 실현하는 프로토콜

FTP :
	TCP/IP 네트워크(인터넷)상의 장치가 파일을 전송할 때 사용하는 규칙

HTTP 흐름

  1. TCP 연결 열기
  2. HTTP 메시지 전송
  3. 서버에 의해 전송된 응답 읽기
  4. 연결을 닫거나 다른 요청들을 위해 재사용

HTTPS란

HTTPS(HyperText Transfer Protocol over Secure Socket Layer)는 월드 와이드 웹 통신 프로토콜인 HTTP의 보안이 강화된 버전
HTTPS는 소켓 통신에서 일반 텍스트를 이용하며, 따라서 SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호함

profile
what you do matters ,but why you it matters much more 당신이 무엇을 하는지는 중요하지만, '왜' 그것을 하는지는 훨씬 더 중요합니다.

0개의 댓글