HTTP 웹 [기본] HTTP 기본

신재원·2023년 1월 16일
2

HTTP

목록 보기
3/18

모든것이 HTTP

  • HTTP 메시지에 모든 것을 전송
    • HTML, TEXT
    • IMAGE, 음성, JSON, XML
    • 거의 모든 형태의 데이터 전송 가능
    • 서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용
  • HTTP/1.1 : 가장많이 사용, 우리에게 가장 중요한 버전
    • HTTP/2, HTTP/3 : HTTP/1.1에서 성능을 개선한 버전

기반 프로토콜

  • TCP(3 way handshake) : HTTP/1.1, HTTP/2
    • 속도가 빠른 메커니즘이 아님
  • UDP : HTTP/3
    • 현재 HTTP/1.1 주로 사용
      • HTTP/2, HTTP/3 도 점점 증가

HTTP 특징

1. 클라이언트 서버 구조

  • Request Response 구조
  • 클라이언트는 서버에 요청을 보내고, 응답을 "대기"
  • 서버가 요청에 대한 결과를 만들어서 응답

2. 무상태 프로토콜(스테이스리스)지향

  • 서버가 클라이언트의 상태를 보존 X
    • 장점 : 서버 확장성 높음(스케일 아웃)
    • 단점 : 클라이언트가 추가 데이터 전송
  • 실무 한계
    • 모든 것을 무상태로 설계할수 있는 경우도 있고, 없는 경우도있다.
    • 무상태
      • 예) 로그인이 필요없는 단순한 서비스 소개화면
    • 상태 유지
      • 예) 로그인
        • 로그인한 사용자의 경우 로그인 했다는 상태를 서버에 유지
    • 상태 유지는 "최소한"만 사용
  • 정리
    • "상태유지" : 중간에 다른 점원이 바뀌면 안된다. (무슨 상품, 갯수 이런걸 알수가없다)
      • 중간에 다른 점원으로 바뀔 때 상태정보를 다른 점원에게 미리 알려줘야한다.
    • "무상태" : 중간에 다른 점원으로 바뀌어도 된다.
      • 갑자기 고객이 증가해도 점원을 대거 투입할수있다.
      • 갑자기 클라이언트 요청이 증가해도 서버를 대거 투입할수있다.
    • 무상태는 응답 서버를 쉽게 바꿀 수 있다. -> 무한한 서버 증설 가능

3. 비연결성

  • HTTP는 기본이 연결을 유지하지 않는 모델
  • 서버 자원을 매우 효율적으로 사용할수 있다.
    • 수천명이 서버를 사용해도, 실제 서버에서 처리하는 요청은 매우작음
  • 한계
    • TCP/IP 연결을 새로 맺어야함
    • 지금은 HTTP "지속 연결"로 문제 해결
    • HTTP/2, HTTP/3 에서 더 많은 최적화

4. HTTP 메시지

  • 요청 메시지
    • 시작 라인 - HTTP 메서드
      • 종류 : GET,POST,PUT,DELETE
      • !!(중요) 서버가 수행해야할 동작 지정
        • GET : 리소스 조회
        • POST : 요청 내역 조회
  • HTTP 상태 코드 : 요청 성공, 실패를 나타냄
    • 200 : 성공
    • 400 : 클라이언트 요청 오류
    • 500 : 서버 내부 오류
  • 이유 문구 : 사람이 이해할수 있는 짧은 상태 코드 설명 글

5. 단순함, 확장 가능

0개의 댓글