🌐web/HTTP 웹 기본 지식

[HTTP 웹 지식] HTTP 기본

pkyung 2023. 2. 20. 02:00
반응형

인프런 김영한님의 모든 개발자를 위한 HTTP 웹 지식 강의를 듣고 정리했습니다.

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

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런

www.inflearn.com

 

 

 

 

모든 것이 HTTP

 

 

HTTP (HyperText Transfer Protocol)

HTML, TEXT, IMAGE, 음성, 영상, 파일, JSON, XML, 거의 모든 형태의 데이터를 전송하고 서버간의 데이터를 주고 받을 때도 대부분 HTTP를 사용한다. 

 

HTTP 역사

HTTP/0.9 1991년 : GET 메서드만 지원, HTTP 헤더 X

HTTP/1.0 1196년 : 메서드, 헤더 추가

HTTP/1.1 1997년 : 가장 많이 사용, 우리에게 가장 중요한 버전

HTTP/2 2015 : 성능 개성

HTTP/3 진행중 : TCP 대신에 UDP 사용, 성능 개선

 

윈도우에서 f12를 누르면 어떤 프로토콜을 사용하는 지를 알 수 있다. 

 

HTTP 특징

- 클라이언트 서버 구조

- 무상태 프로토콜, 비연결성

- HTTP 메시지 

- 단순함

 

 

 

클라이언트 서버 구조

 

 

- Request Response 구조

- 클라이언트는 서버에 요청을 보내고, 응답을 대기한다. 

- 서버가 요청에 대한 결과를 만들어서 응답한다. 

클라이언트와 서버를 완전히 분리하여 설계하면 각자 발전이 가능하다. 비즈니스 로직과 복잡한 것은 서버가 담당. 클라이언트는 오직 뷰만 담당.

 

 

Stateful, Stateless

 

 

stateful (상태 유지)

- 중간에 다른 점원으로 바뀌면 안된다. 다른 점원으로 바뀔 때 상태 정보를 다른 점원에게 미리 알려줘야 한다. 

stateless (무상태)

- 중간에 다른 점원을 바뀌어도 된다. 갑자기 고객이 증가해도 점원을 대거 투입 가능하고, 이는 클라이언트 요청이 많아져도 서버를 대거 투입이 가능하다는 뜻이다. 

 

무상태는 응답 서버를 쉽게 바꿀 수 있다. -> 무한한 서버 증설이 가능하다. 

 

 

stateful 

서버1에서 문제가 생기면 클라이언트에서 요청을 다시 해야한다. 

 

stateless

클라이언트가 이미 요청할 때 필요한 정보를 함께 보내기에 서버는 응답만 한다. 서버1에서 문제가 생겨도 서버2에서 처리한다. 

이는 스케일 아웃 (수평 확장)에 유리하다.

 

한계

- 모든 것을 무상태로 설계할 수 있는 경우도 있고 없는 경우도 있다. (로그인 기능은 상태 유지)

- 일반적으로 쿠키와 서버 세션 등을 사용해서 상태를 유지한다. 

 

 

비연결성

- 서버에서 응답을 보내면 TCP/IP 연결을 끊는다. 

 

특징

- HTTP는 기본이 연결을 유지하지 않는 모델이다.

- 일반적으로 초 단위의 이하의 빠른 속도로 응답한다. 

- 1시간 동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요펑은 수십개 이하로 적음 (웹 브라우저에서 연속적으로 검색 버튼을 누르지 않는다.)

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

 

한계

- TCP/IP 연결을 새로 맺어야 한다. => 3way handshake 시간이 추가된다.

- 웹 브라우저로 사이트를 요청하면 HTML 뿐 아니라 js, css 등 수 많은 자원이 함께 다운로드된다. 

- 지금은 HTTP 지속 연결로 문제 해결했다. (HTML 문서가 다 받을 때까지는 지속 연결)

 

 

 

HTTP 메시지

 

 

요청 메시지도 body 본문을 가질 수 있다. 

 

시작 라인 (요청 메시지)

- start-line = request- line / status-line

- HTTP 메서드 종류 : GET, POST, PUT, DELETE (GET: 리소스 조회, POST: 요청 내역 처리)

- 요청 메시지 - 요청 대상 절대경로로 시작하는 경로

- HTTP 버전

 

시작 라인 (응답 메시지)

- HTTP 버전

- HTTP 상태 코드

- 이유 문구

 

HTTP Header 

- header-field = field-name ":" OWS field-value OWS (OWS 는 띄어쓰기 허용)

- HTTP 전송에 필요한 모든 부가정보 

 

HTTP message body

- 실제 전송할 데이터

- 모든 데이터 전송 가능하다.

 

 

HTTP는 단순하고 메시지도 단순하다. 

반응형