공부하는 안경딸기

3. HTTP 본문

네트워크

3. HTTP

안경딸기 2021. 5. 21. 23:11

 

공부한 강의 링크 > 모든 개발자를 위한 HTTP 웹 기본 지식

모든 것이 HTTP

HTTP(HyperText Transfer Protocol)

HTTP 메시지에 모든 것을 전송

거의 모든 형태의 데이터 전송 가능

서버 간에 데이터 주고받을 때도 대부분 HTTP 사용

HTTP 역사

  • HTTP/0.9 (1991) : GET 메서드만 지원, HTTP 헤더 없음
  • HTTP/1.0 (1996) : 메소드, 헤더 추가
  • HTTP/1.1 (1997) : 가장 많이 사용, 중요한 버전
    • RFC2068 (1997)
    • RFC2616 (1999)
    • RFC7230~723 (2014)
  • HTTP/2 (2015) : 성능 개선
  • HTTP/3 (ing) : TCP 대신 UDP 사용, 성능 개선

기반 프로토콜

TCP : HTTP/1.1, HTTP/2

UDP : HTTP/3

현재는 HTTP/1.1을 주로 사용

HTTP 특징

  • 클라이언트-서버 구조
  • stateless protocol, 비연결성
  • HTTP 메시지
  • 단순함
  • 확장 가능

클라이언트 서버 구조

Request Response 구조

클라이언트는 서버에 요청 보내고, 응답 대기

서버는 클라이언트의 요청에 대한 결과 만들어서 응답

Stateful, Stateless

Stateless

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

장점은 서버의 확장성이 높다는 것

단점은 클라이언트가 추가 데이터를 전송한다는거

Stateless 예시

점원이 중간에 바뀌어도 고객이 스스로 요구사항을 전달하기 때문에

소통에 문제없이 일 처리 가능

 

고객 : 이 노트북 얼마예요?

점원 A : 100원입니다.

---

고객 : 노트북 2개 구매할게요

점원 B : 200원입니다. 신용카드, 체크카드 중 어떤 걸로 구매?

---

고객 : 노트북 2개를 신용카드로 결제할게요

점원 C : 200원 결제했습니다.

Stateful 예시

점원이 같아서 점원 스스로 고객의 요구사항을 기억함

 

고객 : 이 노트북 얼마예요?

점원 : 100원입니다.

---

고객 : 2개 구매할게요

점원 : 200원입니다. 신용카드, 체크카드 중 어떤 걸로 구매?

---

고객 : 신용카드로 결제할게요

점원 : 200원 결제했습니다.

Stateful, Stateless 차이

  • 상태 유지 : 중간에 다른 점원으로 바뀌면 안 됨
    • 항상 같은 서버가 유지되어야 함
  • 무상태 : 중간에 다른 점원으로 바뀌어도 된다. (고객이 정보를 다 알려주기 때문)
    • 갑자기 고객이 증가해도 점원 대거 투입 가능
    • 갑자기 클라이언트 요청이 증가해도 서버 대거 투입 가능
    • 아무 서버나 호출해도 괜찮음
  • 즉, 무상태는 응답 서버를 쉽게 바꿀 수 있다 (무한한 서버 증설 가능)
    • 스케일 아웃 - 수평 확장 유리

Stateless 한계

모든 것을 무상태로 설계할 수는 없음

무상태는 로그인이 필요 없는 단순한 서비스 소개 화면 등에 사용하고

상태 유지는 로그인이 필요한 서비스에 사용이 됨

비 연결성(connectionless)

HTTP는 기본이 연결을 유지하지 않는 모델 (즉, 데이터 보낼 때만 연결하고 보내는 게 없으면 연결 끊음)

빠른 속도로 응답

결국, 서버 자원을 매우 효율적으로 사용 가능

비 연결성 한계와 극복

한계

  • TCP/IP 연결을 새로 맺어야 함
    • 3 way handshake 시간 추가됨
  • 웹 브라우저로 사이트 요청하면 수많은 자원이 함께 다운로드됨

극복

  • HTTP 지속 연결로 문제 해결
  •  

HTTP 메시지

'네트워크' 카테고리의 다른 글

5. HTTP 요청 데이터  (0) 2021.08.09
4. HTTP Method  (0) 2021.06.01
2. URI와 웹 브라우저 요청 흐름  (0) 2021.05.18
1. 인터넷 네트워크  (0) 2021.05.16
0. 네트워크 공부 시작  (0) 2021.05.14
Comments