김영한님의 '모든 개발자를 위한 HTTP 웹 기본 지식' 강의를 듣고 작성했습니다.
HTTP
http메시지에 모든 것을 전송할 수 있습니다.
html, text, image, 음성, 영상, 파일, JSON, XML(API) 등 거의 모든 형태의 데이터가 전송 가능합니다.
서버간 데이터를 주고 받을 때도 대부분 HTTP를 사용합니다.
HTTP 버전
HTTP/1.1 은 1997년도에 나왔으며, 지금 가장 많이 알려진 버전입니다.
HTTP/2 는 2015년에 성능 개선으로 나왔습니다.
HTTP/3은 지금도 진행중입니다. TCP 대신 UDP를 사용하고 있습니다.
👇🏻아래 캡쳐 사진 h2, h3라고 표시된 것을 볼 수 있다. (h2= HTTP/2, h3=HTTP/3)
HTTP 특징
1. 클라이언트 서버 구조
- Request Response 구조
- 클라이언트가 서버에서 요청을 하고 응답을 대기한다.
- 서버는 요청에 대한 결과를 만들어서 응답한다.
- 클라이언트는 복잡한 로직없고 단순한 UI위주로 집중
- 서버는 복잡한 로직에 대한 것에 집중할 수 있음
2. 무상태 프로토콜(스테이스리스)
- 서버가 클라이언트의 상태를 보존
- stateful : 상태를 유지한다. 로그인 정보를 유지할 때 stateful 사용. 브라우저 쿠키와 서버 세션등을 사용해서 상태 유지. (최소한으로 사용하는것이 좋다) - auth
- stateless : 상태를 유지하지 않는다.(무한한 서버 증설 가능)
- 단점 : 같은 시간에 엄청 많은 사람들이 동시에 요청하는 경우에 대용량 트래픽이 발생한다.
3. 비연결성
- '클라이언트 : 서버 = N : 1 ' 이런 상태에서 여러 클라이언트 중 자원을 요청하는 곳에만 연결을 해서 응답을 한다.
- HTTP는 기본이 연결을 유지하지 않는 모델이다.
- 1시간 동아 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십개 이하로 매우 작음
- 서버 자원을 매우 효율적으로 사용할 수 있음
- 단점 : TCP/IP 연결을 새로 맺어야 함 - 3 way handshake 시간 추가 (요청 할 때마다 연결을 따로 함...)
- 단점 : 웹 브라우저로 사이트를 요청하면 html 뿐만 아니라 자바스크립트, css, 추가 이미지 등 수많은 자원이 함께 다운로드된다.
- 위의 단점을 HTTP Persistent Connections로 문제를 해결할 수 있다.
- HTTP Persistent Connections(지속 연결)은 요청때 마다 연결하는게 아니라, 요청이 다끝날때 까지 연결을 끊지 않고 모든 요청이 다 끝나야만 연결을 종료한다. (h2, h3)
4. HTTP 메시지
요청메시지 (요청메세지도 body 가질 수 있음)
- HTTP 메서드 (GET, POST, PUT, DELETE ...)
- 절대경로 ("/"로 시작하는 경로)
- 쿼리 ("?"로 시작하는 쿼리)
- 버전 (HTTP/1.1)
응답메시지
- HTTP 버전
- HTTP 상태코드 (200:성공, 400:클라이언트 요청 오류, 500: 서버 내부 오류)
- 이유 문구
- header-field : HTTP 전송에 필요한 모든 부가 정보
- 메시지 바디 : 실제 전송할 데이터
'Back-end > HTTP' 카테고리의 다른 글
[HTTP] HTTP 요청 방법 3가지 (0) | 2022.11.15 |
---|---|
HTTP 메서드 (0) | 2022.05.29 |
URI, URL에 기본 개념 및 URL 문법 (0) | 2022.03.21 |
인터넷 네트워크 용어 간단 정리 (0) | 2022.03.19 |
사이트 도메인 명으로 IP 찾는법 (0) | 2021.10.25 |