HTTP

_dodo_hee·2023년 7월 25일
0

핸드북

목록 보기
20/29

HTTP

Hyper Text Transfer Protocol의 두문자어로, 인터넷에서 데이터를 주고받을 수 있는 프로토콜

프로토콜은 규칙,규약이란 뜻을 가지고 있는데,
이런 규칙이 있어서 모든 프로그램이 이 규칙에 맞춰 개발해서 서로 정보를 교환할 수 있게 된 것이다.

동작

클라이언트 즉, 사용자가 브라우저를 통해서 어떠한 서비스를 url을 통하거나 다른 것을 통해서 요청(request)을 하면 서버에서는 해당 요청사항에 맞는 결과를 찾아서 사용자에게 응답(response)하는 형태로 동작한다.

요청 : client -> server
응답 : server -> client

쉽게 비유하면 클라이언트는 종업원 서버는 요리사이다.

클라이언트 : 웹 사용자의 인터넷 연결된 장치들과 웹에 접근하는 소프트웨어이다.(크롬,파이어폭스)
서버 : 웹 페이지, 사이트 또는 앱을 저장하는 컴퓨터이다.

특징

HTTP 메시지는,
HTTP 서버와 HTTP 클라이언트에 의해 해석이 된다.
TCP/ IP를 이용하는 응용 프로토콜이다.

HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜이다.
HTTP는 연결을 유지하지 않는 프로토콜이기 때문에 요청/응답 방식으로 동작한다.

이러한 단점을 해결하기 위해 쿠키(Cookie), 세션(Session)이 등장하게 됐다.

TCP/IP
컴퓨터와 컴퓨터간에 데이터를 전송 할 수 있도록 하는 장치로
인터넷이라는 거대한 통신망을 통해 원하는 정보(데이터)를 주고 받는 기능을 이용하는 응용 프로토콜.

URL

URL (Uniform Resource Locator) - 자원의 위치
자원의 위치(주소)로 자원을 식별한다.

HTTP/1.1 vs HTTP/2.0

HTTP 1.1

한 연결당 하나의 요청과 응답을 처리하여 느리고, 동시전송 문제를 겪는다.
요청시 매번 헤더에 쿠키를 포함하여 무겁고 중복된 헤더 값을 전송한다.

HTTP 2.0

한 연결당 여러개의 요청과 응답을 동시에 처리하여 빠르다. 헤더 값의 중복을 최소화하고 가볍다.

비교사진

정확한 측정이 어렵지만 일반적으로 HTTP 2.0은 HTTP 1.1보다 15%~50% 빠르다고 한다.

HTTP 와 HTTPS 차이

HTTP는 HyperText Transfer Protocol의 약자이다.
HTTPS는 HyperText Transfer Protocol Secure의 약자이다.

http

예전엔 http는 읽기 전용으로만 사용되고 중요한 문서들을 다룰일이 없었지만,
현재시대에는 개인정보,기밀 등등 엄청 중요한 정보들까지 http로 다룰 일이 많아지면서
http를 통해서 통신을 하고 있다면 누군가 내 정보를 보고있는 것으로 보면 된다.

https

하지만, https로 통신을 하고 있다면 전송하고 있는 내용을 가로챈다 하더라도
그 안에 무슨 내용이 담겨있는지는 사용자들만 알 수 있다.
왜냐면 암호화가 되어 있어 볼 수 없기 때문이다.

http로 통신하고 있는 사이트에서 로그인을 요구한다면, 그 사이트는 이용하지 말아야한다.

공개키(비대칭키) 방식?

암호화와 복호화에 사용하는 암호키를 분리한 알고리즘
공개키와 비밀키 두 개가 존재한다.

공개키(Public Key)만 대중에게 공개하고, 암호화 된 데이터는 고유한 비밀키(Private Key)로만 복호화할 수 있다.
이 비밀키를 가진 사용자만이 내용을 열어볼 수 있다.

장점 : 수신자의 개인키로만 해독할 수 있으므로 안전하다.
단점 : 대칭키(Symmetric Key) 알고리즘에 비하여 속도가 느리다. (약 1000배)
대표 알고리즘 : RSA 등

암호화 시나리오

A가 웹 상에 공개된 B의 공개키를 이용하여 평문을 암호화 한다.
이 암호문(CiperText)는 B가 개인적으로 가지고 있는 B의 비밀키로만 복호화가 가능하다. B는 자신의 비밀키로 복호화한 평문을 확인하고, A의 공개키로 응답을 암호화하여 A에게 보낸다.
A는 A의 비밀키로 암호화된 응답문을 복호화한다.
장점 : 대칭키의 단점을 완벽하게 해결함
단점 : 암호화/복호화가 매우 복잡함 (키가 서로 다르기 때문에)

클라이언트(브라우저) 로컬에 저장되는 key-value 한 쌍으로 이루어진 작은 데이터 파일이다. 타입은 String만 가능하다.

Session

서버에 클라이언트의 상태 정보를 저장하는 기술로 논리적인 연결을 Sessioning라고 한다.

HTTP에는 비연결성(Connectionless)과 비상태성(Stateless) 특징이 있다.
연결 상태가 유지되지 않고, 연결 해제 후 상태 정보가 저장되지 않는다는 것이다.
대안으로 나온 것이 쿠키(Cookie)와 세션(Session)이다.


참고자료1
참고자료2
참고자료3
참고자료4

profile
무럭무럭 자라나는 도도 개발성장일기

0개의 댓글