[TIL] What is HTTP(Hyper Text Transfer Protocol)?

Updated:

#1 HTTP(Hyper Text Transfer Protocol)란?

인터넷에서 데이터를 주고 받을 수 있는 프로토콜(문서를 교환하기 위하여 사용된 통신 규약) 이다(TCP기반).

HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해준다(웹에서 이뤄지는 모든 데이터 교환의 기초).

이렇게 규칙을 정해 두었기 때문에 모든 프로그램이 이 규칙에 맞춰 개발되어 서로 정보를 교환할 수 있게 된 것이다.


#2 HTTP 동작

image

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


#3 HTTP 특징

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

HTTP 통신은 State라는 개념이 없다. 요청하고 응답을 받으면 연결을 끊어버린다(서버와 클라이언트는 독립적이다). 접속유지 최소화, 연결상태 처리, 정보의 저장관리가 불필요해 서버 디자인이 간단하지만 접속이 유지되지 않기 때문에 이전 통신에 정보를 알 수 없다. 따라서 로그인 등과 같이 정보를 유지해야 하는 경우 쿠키, 세션 등을 이용한다.

HTTP는 연결을 유지하지 않는 프로토콜이기 때문에 요청/응답 방식으로 동작한다(요청마다 TCP/IP 연결을 새로 맺어야 하기 때문에 3 way handshake 시간이 추가된다 현재는 HTTP 지속 연결(Persistent Connections)로 문제를 해결).


※ Cookie & Session ?

HTTP 프로토콜이자 약점인 Connectionless, Stateless를 보완하기 위해 쿠키와 세션을 사용한다.

쿠키는 클라이언트 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일이다.

쿠키에는 이름, 값, 만료날짜(쿠키 저장기간), 경로 정보가 들어있으며 일정시간동안 데이터를 저장할 수 있다.(로그인 상태 유지 등에 활용)

쿠키는 클라이언트의 상태 정보를 로컬에 저장했다가 참조한다.

2) Session

일정 시간동안 같은 브라우저로 부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 유지하는 기술이다. 즉 , 웹브라우저를 통해 웹 서버에 접속한 이후로 브라우저를 종료할 떄 까지 유지되는 상태이다.

클라이언트가 Request를 보내면, 해당 서버의 엔진이 클라이언트에게 유일한 ID를 부여하는데 이것이 세션ID다.


#4 Request

클라이언트가 서버에게 연락하는 것을 요청이라고 하며 요청을 보낼 때 요청에 대한 정보를 담아 서버로 보낸다.

Request의 Method에는 GET(데이터 요청), POST(데이터 생성), PUT(데이터 수정), DELETE(데이터 삭제) 가 있다.

//// GET : HTTP Method , https://seungdang123.github.io : site address , HTTP/1.1 : HTTP version
GET https://seungdang123.github.io HTTP/1.1

// Request Header							
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...			  
Upgrade-Insecure-Requests: 1

image


#5 Response

서버가 요청에 대한 답변을 클라이언트에게 보내는 것을 의미한다.

Status Code(상태 코드) 모두 숫자 세 자리로 이루어져 있으며, 응답의 상태를 나타낸다.

Status Code 메세지 설명
1XX Informational(정보) 요청을 받았으며 작업을 계속한다.
2XX Success(성공) 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며, 성공적으로 처리 의미
3XX Redirection(방향 변경) 리다이렉션 완료, 클라이언트는 요청을 마치기 위해 추가 동작을 취해야한다.
4XX Client Error(클라이언트 오류) 클라이언트 오류 의미
5XX Server Error(서버 오류) 서버 오류 의미

※ Proxy 란?

프로토콜에 있어서 대리 응답 등에서 사용하는 개념.

보안상의 문제로 직접 통신을 주고 받을 수 없는 사이에서 프록시를 이용해 중계를 하는 개념.

이렇게 중계 기능을 하는 것을 우리는 “프록시 서버” 라고 부른다.

클라이언트와 서버의 입장에서 볼 때 서로 반대의 역할을 하는 것처러 보여지게 된다.

클라이언트가 프록시를 바라보면 프록시가 서버와 같이 동작을 하게 되는 것이고 반대로 서버가 프록시를 바라보면 클라이언트 처럼 작동을 하게 되는 것이다.

프록시는 보안 상의 문제 뿐 아니라 프록시 서버에 요청이 된 내용들을 캐시를 이용해 저장해 두는데 이렇게 캐시로 저장을 해 두게 되면 다시 데이터를 가져올 상황이 발생하지 않기 때문에 정송시간을 절약 할 수 있다는 이점을 가진다.

Forward(성능 향상) , Reverse(주로 보안상의 이점) 두 종류의 Proxy 서버 존재.

Tags: ,

Categories:

Updated: