상세 컨텐츠

본문 제목

[CS] Web과 HTTP 이야기

오룡의 모험

by bbgiloo 2024. 9. 5. 21:06

본문

WEB

  • Web의 개념 :
    월드 와이드 웹 (World Wide Web)이란 인터넷에 연결된 사용자들이 서로의 정보를 공유할 수 있는 공간

  • Web의 특징 :

    • 인터넷 상에서 텍스트, 그림, 소리, 영상 등과 같은 멀티미디어 정보를 하이퍼 텍스트 방식으로 연결하여 제공
    • 하이퍼텍스트(hyper text)란 문서 내부에 또는 다른 문서로 연결되는 참조를 집어 넣음으로써 웹 상에 존재하는 여러 문서끼리 참조할 수 있는 기술을 의미함
    • 문서 내부에서 또 다른 문서로 연결되는 참조를 하이퍼링크(hyper link)라고 함

    HTTP

    : 하이퍼텍스트 전송 프로토콜(HyperText Transfer Protocol)

  • Web의 토대

  • 하이퍼텍스트 링크를 사용하여 웹의 페이지를 로드하는데 사용

  • 네트워크 장치 간에 정보를 전송하도록 설계된 애플리케이션 계층 프로토콜

  • 네트워크 프로토콜 스택의 다른 계층 위에서 실행됨

  • HTTP를 통한 일반적인 흐름 :

    • 클라이언트 시스템에서 서버에 요청 -> 서버에서 응답 메세지를 보냄

HTTP 특징

  1. 웹에서 이루어지는 모든 데이터 교환의 기초이다
  2. 클라이언트-서버 프로토콜
    • 클라이언트 요청을 생성하기 위해 연결을 연 다음 응답을 받을 때까지 기다리는 모델
    • 각 요청은 클라이언트에 의해 초기화
    • 이 둘(클라이언트-서버)은 데이터 스트림이 아닌 개별적인 메세지 교환을 통해 통신
    • 클라이언트에 의해 전송되는 메세지를 요청(Reqeusts)이라 함
    • 요청에 대해 서버에서 응답으로 전송하는 메세지를 응답(Reponses)이라고 함
  3. 상태가 없고 세션이 있다
    • 상태를 저장하지 않는다 (Statelss)
    • 예) www.sample.com/page1요청 후 www.sample.com/page2 를 요청하는 경우 이 둘의 요청은 서로 연관성을 가지지 않고 독립적이다. 즉, page1에서 만들어진 데이터는 page2를 요청할 때 유지되지 않는다.
    • HTTP 쿠키를 사용하면 상태를 저장하는 세션을 사용할 수 있다.
  4. 확장 가능하다
    • HTTP 헤더를 사용하면 HTTP를 확장하기 쉽다. 클라이언트와 서버가 새로운 헤더에 대해 합의한다면, 새로운 기능을 언제든지 추가할 수 있다.

HTTP Method

  • GET : 리소스를 조회
  • POST : 데이터 추가, 등록
  • PUT : 리소스 대체, 수정/해당 리소스가 없으면 새롭게 생성
  • DELETE : 리소스 삭제
  • PATCH : 리소스 부분 변경(수정)
  • HEAD : GET과 비슷, HTTP 메세지의 body부분을 제외하고 조회
  • OPTIONS :
    • 서버와 브라우저가 통신하기 위한 통신 옵션을 확인하기 위함
    • 서버가 어떤 Method, Header, content-type을 제공하는지 알 수 있음
  • CONNECT : 대상 자원으로 식별되는 서버에 대한 연결 요청

    GET Method

  • 리소스를 조회하는 메소드
    • 예) 서버에게 클라이언트가 "이 페이지를 보고싶어"
    • URL 입력, 링크를 클릭하는 경우도 GET요청에 해당
    • GET요청은 멱등성이라는 개념을 지니고 있음

    • GET요청은 멱등성이라는 개념을 지니고 있음
  • GET요청에서 서버에 데이터를 전달하는 경우, 쿼리스트링을 통해서 전달 됨
    • 쿼리스트링 :
      • 네이버에 "프로그래머스" 검색 시 URL에 query=프로그래머
      • *해당 쿼리스트링은 클라이언트에게 전달하는 데이터의 정보가 무방비 상태로 노출되므로 유의해야 함

  • GET 메서드는 캐싱을 이용하므로 조회 속도가 빠름

    Post Method

  • 주로 새로운 리소스를 생성(create)하는데 사용
  • 성공적으로 create를 완료하면 201(Created) HTTP 응답 반환
  • 데이터를 메세지 바디에 쿼리 피라미터 형식으로 전달
    • 쿼리 피라미터는 Key-Value 형식으로 되어있음
    • GET방식과 비교하면, 데이터가 외부로 노출되지 않으므로 보완상 이점을 가짐

post 방식에서 데이터는 body에 저장되어 있음

  • POST로 조회가 가능하긴 하나, 멱등성을 지니지 않음 -> POST 메소드를 여러번 수행시 같은 결과값이 안나올 수도 있음
  • 캐싱을 사용하지 않으므로 GET방식보다 조회에 있어서 느림
  • 데이터를 전송할 때 Body에 담아 전송하므로, 메세지 길이에 제한 없음
  • 문자열 데이터 뿐만아니라, RadioButton같은 객체들의 값도 전송 가능

    PUT Method

  • 리소스를 완전히 대체하는 개념(덮어쓰기)
  • 클라이언트가 리소스를 식별할 수 없음
    • 클라이언트가 구체적인 리소스 위치를 아는 상태에서, URL 지정
    • 예 ) PUT/post/1 : 1번 게시글 수정 요청 등
    • 부분 수정 불가능 만약 기존에 A, B 라는 데이터가 존재했는데 C라는 데이터를 담아 PUT 요청을 보낸다면 A, B는 모두 삭제되고 C로 대체
    • 멱등성을 지님

      PATCH Method

  • PUT과 같이 리소스를 수정하는 역할, 하지만 부분 수정 가능
  • 기존 데이터 A, B가 존재, B = C로 대체후 PATCH 요청하면 데이터가 A,C로 변경
  • 멱등성 X

    DELETE Method

  • 리소스를 제거하는 역할
  • 멱등성 O

이상 레드리본 정도의 습격이었습니다..

이정돈 오룡선에서 처리 가능하다고..!

관련글 더보기