본문 바로가기
메모/ETC

CS - HTTP, HTTPS

by 구너드 2024. 3. 6.

HTTP 

  • Hypertext Transfer Protocol 의 약자
  • 서로 다른 시스템들 사이에서 통신을 주고받게 하는 가장 기본적인 프로토콜
  • 클라이언트와 서버 간의 자원을 교환하기 위한 TCP/IP 기반 통신 프로토콜
  • 서버에서 브라우저로 데이터를 전송하는 용도로 가장 많이 사용
  • 다만, 전송되는 요청/응답 정보가 기본적으로 암호화 되지않아서 보안정보 도난의 위험
  • 단방향성 - 서버가 먼저 응답을 보낼 수 없고 클라이언트가 요청을 보내야만 응답할 수 있다. (2버전 이전)
  • 비연결성(connectionless) - 클라이언트의 요청으로 서버와 연결된 후, 요청에 대한 응답의 데이터를 전송하면 연결을 종료한다.

HTTP 메소드

  • HTTP 메소드는 클라이언트가 웹 서버에게 요청의 목적이나 종류를 알리는 수단
  • 주요 메소드 5가지
    • GET : 보통 리소스를 조회할 때 사용하며, 서버에 전달하고 싶은 데이터는 query를 통해서 전달한다. 메시지 바디를 사용해서 데이터를 전달할 수는 있지만, 지원하지 않는 곳이 많아서 권장하지 않음.
    • POST : 주로 리소스를 새롭게 생성할 때 사용하며, 서버에 전달하고 싶은 데이터는 메시지 바디를 통해 전달.
    • PUT : 리소스가 있으면 대체하고 리소스가 없으면 생성. 즉, 데이터를 덮어쓰기.
    • PATCH : PUT과 마찬가지로 리소스를 수정할 때 사용하지만, PATCH는 리소스를 일부분만 변경할 때 사용.
    • DELETE : 리소스를 제거할때 사용.
  • 메소드 속성  
    1. 안전(Safe Methods) - 계속 호출해도 리소스를 변경하지 않는 특성
    2. 멱등(Idempotent Methods) - 동일한 요청을 여러 번 보내도 한 번 보내는 것과 똑같은 결과를 갖는 것. GET, PUT, DELETE는 멱등하다고 볼 수 있지만, POST나 PATCH는 멱등하다고 볼 수 없음.
    3. 캐시가능(Cacheable Methods) - 응답 결과를 서버에 캐시 해서 사용해도 되는 메소드 GET, HEAD, POST, PATCH가 캐시가 가능하지만 구현이 어려워 실제로는 GET과 HEAD만 주로 캐싱이 쓰임

HTTP 상태코드

  • 클라이언트가 보낸 요청의 처리 상태 또는 결과를 응답에서 알려주기 위한 정보
  • 1xx (Informational): 요청이 수신되어 처리중
  • 2xx (Successful): 요청 정상 처리
    • 200 OK : 요청 성공
    • 201 Created : 요청 성공해서 새로운 리소스가 생성됨
    • 202 Accepted : 요청이 접수되었으나 처리가 완료되지 않았음
    • 204 No Content : 서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없음
  •  3xx (Redirection): 요청을 완료하려면 추가 행동이 필요 : 보통 리다이렉션(넘기기) 처리
    • 301 Moved Permanently : 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음
    • 302 Found : 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음
    • 303 See Other : 리다이렉트시 요청 메서드가 GET으로 변경
    • 304 Not Modified : 캐시를 목적으로 사용
    • 307 Temporary Redirect : 리다이렉트시 요청 메서드와 본문 유지(요청 메서드를 변경하면 안된다.)
    • 308 Permanent Redirect : 리다이렉트시 요청 메서드와 본문 유지(처음 POST를 보내면 리다이렉트도 POST 유지)
  • 4xx (Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음
    • 400 Bad Request : 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없음
    • 401 Unauthorized : 클라이언트가 해당 리소스에 대한 인증이 필요
    • 403 Forbidden : 서버가 요청을 이해했지만 승인을 거부
    • 404 Not Found : 요청 리소스를 찾을 수 없음
  • 5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함
    • 500 Internal Server Error : 서버 문제로 오류 발생, 애매하면 500 오류
    • 501 Not Implemented : 서버에 해당 기능이 없음
    • 502 Bad Gateway: 게이트웨이(서로 다른 프로토콜을 연결해주는 장치)가 잘못된 프로토콜을 연결하거나, 어느쪽 프로토콜에 문제가 있어 통신이 제대로 되지 않은 상황
    • 503 Service Unavailable : 서비스 이용 불가 (서버가 다운되었을때)

HTTPS

  • Hypertext Transfer Protocol Secure 의 약자
  • HTTP 는 전송되는 요청/응답 정보가 기본적으로 암호화 되지않아서 보안정보 도난의 위험이 있음
  • 이걸 해결하기 위해 SSL(보안 소켓 계층)을 사용
    • SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고, 서버와 브라우저가 보안정보를 주고받을때 해당 정보가 도난당하는 것을 막아줌
    •  SSL인증방식
      1. 서버의 공개키를 통해 클라이언트가 대칭키를 암호화 할 수 있도록 하고
      2. 서버는 암호화된 대칭키를 개인키로 복호화하면서
      3. 암호문으로 통신하는 방법
      즉, 서버와 클라이언트는 공개키로 암호화된 대칭키를 기반으로 통신합니다.
    • TLS: 전송 계층 보안(Transport Layer Security) - TLS은 SSL의 향상된, 더욱 안전한 버전

 

'메모 > ETC' 카테고리의 다른 글

입사 전 키워드 모음  (0) 2024.03.30
취득해야할 자격증 목록  (0) 2024.03.25
CS - TCP/IP  (0) 2024.03.04
CS - 네트워크, OSI 7계층  (0) 2024.03.02
CS - 자료구조(Stack, Queue, Hash Table, Set)  (0) 2024.03.01