[ HTTP ] - HTTP 기본

Hyeongil Jeon·2021년 6월 27일
0

HTTP

목록 보기
3/5

김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의 수강 내용을 정리하기 위한 글입니다.

HTTP(HyperText Transfer Protocol)

HTTP 메시지에 모든 것을 전송

  • HTML, text, JSON, XML 등 거의 모든 형태의 대한 데이터 전송이 가능

  • 서버간 데이터 송수신시에도 HTTP 사용

    □ 기반 프로토콜

    • TCP : HTTP/1.1, HTTP/2
    • UDP : HTTP/3
    • 현재 HTTP/1.1을 가장 많이 사용함 !

    □ 특징

    • 클라이언트 ↔ 서버 구조
    • 단순하고 확장이 가능함
    • HTTP 메시지

    □ 무상태 프로토콜 (Stateless)

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

      (클라이언트와 서버가 요청과 응답을 주고 받으면 연결이 끊어짐)

    • 서버 확장성이 높지만 클라이언트가 추가 데이터를 전송해야 함

    상태 유지 (Stateful) 예시)

    고객 : 핸드폰 얼마죠?
    점원1 : 100만원 입니다.
    고객 : 3개 구매할게요.
    점원1 : 300만원 입니다.
    // 이때, 점원이 변경이 된다면 바뀐 점원에게 핸드폰과 갯수를 인수인계 해줘야 함

    무상태 프로토콜 (Stateless) 예시)

    고객 : 핸드폰 얼마죠?
    점원?? : 100만원 입니다.
    고객 : 2개 구매할게요.
    점원?? : ?? 뭘요?
    고객 : '핸드폰' 2개 구매할게요.
    점원?? : 200만원입니다.

    Stateful vs Stateless

    위 예시와 같이 Stateful은 항상 같은 서버가 유지되야 하며, 유지보수 중 서버를 변경하게 되거나 서버 장애가 날 경우 처리에 많은 비용이 든다.
    하지만 Stateless에 경우 같은 기능을 하는 서버 중 변경, 장애 시 다른 서버를 호출해도 무방하며, 확장에 Stateful에 비해 유리하다.

    ※ 로그인 등 상태유지가 필요한 것에 최소한으로 상태 유지를 사용하고 최대한 무상태로 설계

비연결성

  • HTTP는 기본이 연결을 유지하지 않음
  • 서버의 자원을 효율적으로 사용 가능
    □ 단점
    -TCP/IP 연결을 새로 맺어야 한다! ( 3 Way Handshake )
    -HTML, CSS, 이미지 등 자원들을 함께 사이트 요청 시 다운로드 받게된다.
    ※ 현재 지속연결(Persistent Connections)로 문제 해결

HTTP 메시지

  • HTTP 요청 메시지 예시

    GET / search?q=hello&hl=ko HTTP/1.1
    Host: www.google.com

  • HTTP 응답 메시지 예시

    HTTP/1.1 200 OK
    Content-Type: text/html;charset=UTF-8
    Content-Length: 3423
    / 공백 /
    <html>
    <body>...</body>
    </html>

□ HTTP 메시지 구조


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

□ HTTP 헤더

  • 용도 : HTTP 전송에 필요한 모든 부가정보 (Ex 메시지 바디의 크기, 인증, 압축 등등)

    header-field = field-name":"OWS(공백허용)field-value OWS(공백허용)

□ HTTP 바디

  • 용도 : 실제 전송할 데이터 (Ex HTML 문서, 이미지, 영상, JSON 등 byte로 표현 가능한 모든 데이터)
profile
어제보다 성장한 오늘

0개의 댓글