HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🐣
프론트엔드 데브코스 3기 교육생
/
📚
3기 스터디 가이드
/
🧑‍💻
CS 학습 및 면접대비 스터디
/
🌐
http, https
🌐

http, https

URL
발표자
수화
과목
네트워크

O ?

HTTP (HyperText Transfer Protocol)

클라이언트와 서버에서 자원을 주고받을 때 사용하는 통신 체계
출처: https://www.youtube.com/watch?v=H6lpFRpyl14&ab_channel=얄팍한코딩사전
출처: https://www.youtube.com/watch?v=H6lpFRpyl14&ab_channel=얄팍한코딩사전
  • HyperText : 한 문서에서 다른 문서로 접근할 수 있는 텍스트(링크)
  • Protocol : 컴퓨터 간 원활한 통신을 위해, 지키기로 한 약속, 체계
  • TCP/IP 기준, 애플리케이션 레이어에 속하는 프로토콜
 

HTTP Request method

  • 서버 쪽 데이터에 특정 행위 요청할 때 http 제공 메소드 이용
  • 특징
    • cacheable(캐싱): 캐시할 수 있는 http 응답으로, 나중에 재사용하기 위해 응답을 저장할 수 있음 (어디?)
      • 브라우저, 서버 캐싱 나눠서 정리
      • 모든 http 응답을 캐싱할 수 있는 것은 아님. 제약조건에 맞는 것만 캐싱가능
    • idempotent(멱등성)
      • 동일한 요청을 한 번 보내는 것과 여러 번 연속으로 보내는 것이 같은 효과를 지니고, 서버의 상태도 동일하게 남을 때, 해당 HTTP 메서드가 멱등성을 가졌다고 말합니다.
      • 서버의 상태: 응답 코드, 객체 X → 서버 내의 현재 상태
      • DELETE /idX/delete HTTP/1.1 -> Returns 200 if idX exists DELETE /idX/delete HTTP/1.1 -> Returns 404 as it just got deleted DELETE /idX/delete HTTP/1.1 -> Returns 404
      • 멱등성 가지는 메서드: GET, PUT, DELETE
      • 멱등성 x : POST
  • 종류
    • GET : 존재하는 자원에 대한 요청
    • POST : 새로운 자원을 생성
    • PUT : 존재하는 자원 전체 변경
    • PATCH: 존재하는 자원의 일부 변경
    • DELETE : 존재하는 자원에 대한 삭제
  • REST API: http method를 활용한 것
 

응답 상태코드

: 특정 HTTP 요청이 성공적으로 완료되었는지 알려주는, 응답 상태코드 → 이를 통해 에러처리함
 
  • 200번대 : 성공응답
    • 200(ok): 요청 성공
    • 201(create): 요청 성공 → 결과로, 새로운 리소스 생성된 경우
      • POST요청, PUT요청으로 나옴
  • 300번대 : 리다이렉션 메시지
    • 300(multiple choice): request에 대해 1개 이상의 응답이 있는 경우
    • 304(not modified): 캐시 사용 목적으로 이용, response가 수정되지 않았음을 알려주고, 클라이언트는 response에 캐시된 버전을 계속 사용함
  • 400번대 : 클라이언트 에러 응답
    • 400(bad request): 서버가 request를 이해할 수 없는 경우
    • 401(unauthorized): 인증이 되지않은 경우 (Authorization 헤더가 잘못된 경우) 미승인
    • 403(forbidden): 인증은 됐지만, 해당 권한에 접근할 수 없는 경우 권한없음
    • 404(not found): 잘못된 자원 요청 → 서버에 요청 자원이 없음
  • 500번대 : 서버 에러 응답
    • 500(internal server error): 처리방법이 정의되지 않은 경우 → 서버에서 처리하지 않은 에러
더 자세한 응답코드 정보는 여기에서(MDN) 볼 수 있음
 

문제점

  1. 평문 통신
    1. 암호화하지 않고, 작성한 내용 그대로 전송됨
      TCP/IP는 도청가능한 네트워크(왜?)
      → 통신 경로 중에 메시지 볼 수 있음
  1. 통신 상대 확인하지 않음
    1. request, response에서 통신 상대를 확인하지 않음.
      즉, request 보낸 사람이 신뢰할 수 있는 클라이언트인지, 서버입장에선 알 수 없음.
      → 위장할 수 있음
  1. 완전성 보장할 수 없음
    1. *완전성: 정보의 정확성
      통신 중간에 request, response를 빼앗아 변조하는 중간자 공격을 당할 수 있음
      → 변조될 가능성 존재
 
이러한 점을 보완하기 위해, HTTPS 등장

HTTPS (HyperText Transfer Protocol Secure)

http에 암호화 프로토콜을 추가한 것
 

암호화 프로토콜(SSL)의 핵심은, 암호화

암호화 방법

  • 대칭키(비밀키)
    • 이미지 출처: https://raonctf.com/essential/study/web/symmetric_key
      이미지 출처: https://raonctf.com/essential/study/web/symmetric_key
    • 암호화, 복호화 할 때 동일한 키를 활용하는 방법
    • 단점: 대칭키 전달 취약점 존재
      • 서버, 클라이언트 동일키를 가지기 위해서, 키 생성한 곳에서 다른 곳으로 키를 전송해야함 → 탈취 위험
  • 비대칭키(공개키)
    • 이미지 출처: https://www.uname.in/m/129
      이미지 출처: https://www.uname.in/m/129
    • 암호화, 복호화 할 때 서로 다른 키 이용함
    • 원리
      • B 공개키/개인키 쌍 생성
      • 공개키 공개(등록), 개인키는 본인이 소유
      • A가 B의 공개키를 받아옴
      • A가 B의 공개키를 사용해 데이터를 암호화
      • 암호화된 데이터를 B에게 전송
      • B는 암호화된 데이터를 B의 개인키로 복호화  (개인키는 B만 가지고 있기 때문에 B만 볼 수 있음)
    • 단점: 대칭키에 비해 복잡하기 때문에, 속도가 느림 → 현재, 대칭키 + 비대칭키를 활용한 하이브리드 암호 시스템 사용
 
 
 

참고자료

  • 해킹/보안 관련 자료사이트
    • https://raonctf.com/essential/study/web/http
  • MDN
    • https://developer.mozilla.org/ko/docs/Glossary/Idempotent
  • 블로그
    • https://joshua1988.github.io/web-development/http-part1/#http-프로토콜이란
      https://wooody92.github.io/network/HTTP-보안-문제와-HTTPS/
      https://devlog-wjdrbs96.tistory.com/289
  • 추가로 읽어볼 자료(깊은 내용)
    • https://d2.naver.com/helloworld/47667