본문 바로가기
TIL/모든 개발자를 위한 HTTP 웹 기본 지식

3. HTTP 기본

by Dev_Dank 2021. 6. 21.

인프런의 모든개발자를 위한 HTTP 웹 기본 지식 강의를 들은 내용을 정리하는 포스트입니다. 


모든 것이 HTTP

HTTP 는 원래 Hyper link 가 담긴 문서를 주고받는 프로토콜이었음. => 현재는 모든것을 담아서 전송하는 프로토콜로 발전함. 

HTTP는 발전하여 현재 HTTP3 까지 발전했으나 여전히 가장 많이 사용하는 버전은 HTTP/1.1 버전임.


HTTP 특징

• 클라이언트 서버 구조
• 무상태 프로토콜(스테이스리스), 비연결성
• HTTP 메시지
• 단순함, 확장 가능

클라이언트 서버 구조
- 요청과 응답으로 이루어진 구조(Request, Response)
- 클라이언트는 서버에 요청을 보내고, 응답을 대기
- 서버가 요청에 대한 결과를 만들어서 응답

왜 서버와 클라이언트로 나누는게 중요한가? 
=> 서버와 프론트가 각자 독립적으로 개발/발전이 가능하기 때문이다. 
(서버에서는 트래픽/데이터처리에 집중 & 클라이언트는 UI/UX 발전에 집중)

무상태 프로토콜(스테이트리스:Stateless)
- 서버가 클라이언트의 상태를 보존X
- 장점: 서버 확장성 높음(스케일 아웃)
- 단점: 클라이언트가 추가 데이터 전송

스테이트풀의 경우 서버에서 상태를 저장하기 때문에 해당 서버가 장애가 나면 처음부터 다시 요청 시작해야함.
스테이트리스에서는 클라이언트가 상태를 같이 보내기때문에 어느 서버든지 활용이 가능하다.
스테이트리스는 서버가 어디던지 상관이 없기 떄문에 서버사이드 스케일링이 용이하다.

스테이트리스 실무상의 한계

-모든것을 무상태로 설계 할수는 없음 (로그인은 상태유지가 필요함.)
- 로그인한 사용자의 경우 로그인 했다는 상태를 서버에 유지함
- 일반적으로 브라우저 쿠키와 서버 세션등을 사용해서 상태 유지
- 그래도 상태 유지는 최소한만 사용하는 것이 좋다. 

비 연결성(connectionless)

- HTTP는 기본이 연결을 유지하지 않는 모델
- 일반적으로 초 단위의 이하의 빠른 속도로 응답
- 1시간 동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십개 이 하로 매우 작음
- 예) 웹 브라우저에서 계속 연속해서 검색 버튼을 누르지는 않는다.
- 서버 자원을 매우 효율적으로 사용할 수 있음

연결을 유지하는 모델은 현재 요청을 하지않는 클라이언트와의 연결도 계속 유지해서 서버 자원이 소모된다. 

연결을 유지하지않는 모델은 요청과 응답이 끝난 클라이언트와 연결을 유지하지않아 연결을 유지하느라고 서버자원을 소모하지 않음. 

비연결성의 한계

- 항상 TCP/IP 연결을 새로 맺어야 함 - 3 way handshake 시간 추가
- 웹 브라우저로 사이트를 요청하면 HTML 뿐만 아니라 자바스크립트, css, 추가 이미지 등 등 수 많은 자원이 함께 다운로드
- 지금은 HTTP 지속 연결(Persistent Connections)로 문제 해결 
- HTTP/2, HTTP/3에서 더 많은 최적화 되어서 빨라졌음.


HTTP 메시지

HTTP 메시지 구조

CRLF는 엔터, OWS는 공백허용 SP는 스페이스바를 의미

HTTP Request 메시지의 구조

요청메시지의 스타트 라인을 request-line이라 한다.

HTTP 메서드 = 서버가 수행해야 할 동작 지정
요청 대상 = 절대경로= "/" 로 시작하는 경로(참고: *, http://...?x=y 와 같이 다른 유형의 경로지정 방법도 있다)

HTTP Response 메시지의 구조

응답메시지의 start-line을 status-line이라 한다.

'TIL > 모든 개발자를 위한 HTTP 웹 기본 지식' 카테고리의 다른 글

6.HTTP 상태코드  (0) 2021.06.23
5. HTTP 메서드 활용  (0) 2021.06.23
4. HTTP 메서드  (0) 2021.06.22
2. URI와 웹 브라우저 요청 흐름  (0) 2021.06.20
1.인터넷 네트워크  (0) 2021.06.20

댓글