티스토리 뷰

 HTTP로 어떤 일을 할 수 있는지

클라이언트 서버 구조

stateful,stateless(무상태) 

비연결성

HTTP 메시지

 

순서대로 알아볼 것이기 때문에 먼저 HTTP에 대해 알아보자!

 HTTP란?

hyper text transfer protocol의 약자로, 무언가 링크를 걸어 전달할 수 있는 html같은 문서를 전달하는 프로토콜 이었다.

요즘에는 html뿐만 아닌 음성, 영상, 파일 ,JSON , 심지어 서버간에 데이터를 주고 받을 때도 대부분 HTTP를 사용한다.

 

HTTP의 역사 ~~ 1.1 버전으로 1997년에 나온 이것은 가장 많이 사용하며 우리에게 가장 중요한 버전이다. 

RFC2068(1997) -> RFC2616(1999) -> RFC7230~7235(2014)   

우리는 이 버전에 대해 알아볼 것이다. 

 

++ 기반 프로토콜

TCP위에 HTTP/1.1, HTTP/2를 사용할 것이다. 

크롬을 열어 개발자 도구에서 검색시 프로토콜을 확인하면 h2와 같이 HTTP 1~2 정도의 버젼을 사용함을 알 수 있다.

 

클라이언트 서버 구조

 

Request Response 구조 

클라이언트는 서버에 요청을 보내고 응답을 대기하며 서버가 요청에 대한 결과를 만들어서 응답한다.

클라이언트는 복잡한 데이터를 다루는게 아닌 UI를 디자인하는데 집중하며 

서버에서는 비즈니스,서버 아키텍처에 대해 집중한다.  

 

무상태 프로토콜 (stateless)

서버가 클라이언트의 상태를 보존하지 않는다. 

(클라이언트가 요청한 이전의 상태들을 기억하지 않기에 문맥을 유지하는가 하지 않는가를 말한다.)

무상태는 응답 서버를 쉽게 바꿀 수 있다. 

갑자기 클라이언트 요청이 증가해도 서버를 대거 투입할 수 있다. 

 

그러나 실무 한계가 있다.

로그인이 필요없는 단순한 서비스 소개화면은 괜찮지만,

로그인과 같은 서비스의 경우 로그인 상태를 서버에 유지해야하며 브라우저 쿠키와 서버 세션등을 사용해서 상태를 유지한다. (상태 유지는 데이터를 많이 소모하므로 최소한으로한다.)  

 

비연결성

TCP의 경우 연결을 유지하는데 한쪽이 쉬고 있어도 계속해서 연결을 유지하고 있어야한다. 

그러나  HTTP에서는 요청후 연결을 끊기 떄문에 요청 및 응답을 받을 때면 연결하여 최소한의 자원으로 서버를 유지할 수 있다. 

즉, 1시간 동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십개 이하로 매우 작다. 

서버 자원을 매우 효율적으로 사용할 수 있다. 

그러나,,, 연결 TCP/IP 연결을 새로 맺어야하기에 시간이 추가되며 웹브라우저 요청하면 수많은 자원이 다운로드 된다.

 

자원 받을 때 마다 계속 받으면 힘들지만,,, 지금은 지속연결로 해결하고 있다.(persistent connections) 

HTTP1,2,3에서 계속해서 지원해주고 있다.

 

Statesless를 기억하자 !

정말 같은 시간에 딱 맞추어 발생하는 대용량 트레픽을 이겨내려면 필수다

 

HTTP 메시지 

이전에 봤던 HTTP 요청, 응답 메시지를 봤다. HTTP 메시지의 구조는 

이런 식으로 되어있는데 http 버전, 응답번호  헤더에 해당 정보 , body에 html 이 담겨져 있다

 

요청 메시지 

1. HTTP 메서드

GET, POST, PUT, DELETE... 

리소스 조회, 요청 내역 처리등의 서버가 수행해야할 동작을 지정한다. 

2. 요청 대상

절대경로(?쿼리) 를 넣어서 요청대상을 지정한다. 

3. 요청메시지 마지막에는 HTTP 버전을 넣는다. 

 

응답 메시지 

요청에 대한 status-line 을 넣어준다.

HTTP 버전

HTTP 상태코드 200(성공  400(클라이언트 요청 오류 500(서버 내부 오류

이유 문구 : 사람이 이해할 수 있는 짧은 상태코드 설명 글 

 

HTTP 헤더에는 HTTP 전송에 필요한 모든 부가정보가 담아져 있다. ( 메시지 바디의 내용, 크기,압축,인증,캐시....)

표준 헤더가 너무 많기에 필요시 임의의 해더 추가 기능이있다. 

 

HTTP 메시지 바디에는 실제 전송할 데이터가 담겨져 있다(예시로 HTML문서, 이미지,영상, JSON데이터 등 byte로 표한할 수 있는 모든 데이터 전송 가능) 

 

참고강의) https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard

 

'Network' 카테고리의 다른 글

클라이언트에서 서버로 데이터 전송  (0) 2022.07.07
HTTP 메서드  (0) 2022.07.07
HTTP API고민  (0) 2022.07.07
URI와 웹 브라우저 요청 흐름  (0) 2022.07.07
HTTP 웹 기본 지식1 (IP, TCP, UDP, PORT, DNS)  (0) 2022.07.07
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함