티스토리 뷰

코딩/코딩노트

HTTP와 HTTPS

김기지 2023. 2. 1. 16:05

◉ HTTP

Hyper-Text Transfer Protocol
서버와 클라이언트가 메세지를 교환하기 위한 프로토콜
더보기

🔍 프로토콜

   서로 다른 하드웨어 기기간의 데이터 동신 규약

즉, HTTP는 인터넷상의 커뮤니케이션에 시용되는 형식들 중 하나이다.

구글에 검색어를 입력할 시, URI를 보면 아래와같이 입력되어있다.

https://www.google.com/search?q=http

이는 'www.google.com/search?q=http' 를 HTTPS형식으로 보낸다는 의미이다.

 

◉ HTTPS

기존의 HTTP에 Secure(보안)이 추가된 것

HTTPS는 기존의 HTTP보다 안전하다는 것을 의미한다.

어떤 부분에서 안전한걸까?

1. 사용자가 사이트에 보내는 정보들을 제 3자가 보지 못하게한다.

더보기

비대칭키(암호키와 공개키)를 사용하여 해당 서버만이 암호를 복호화할 수 있다.

2.접속한 사이트가 믿을만한 곳인지 알려준다

더보기

HTTPS는 기관으로부터 검증된 사이트만 주소에 사용이 가능하다.

HTTP를 사용하는 사이트의 경우 주소창에 '안전하지 않다'라는 표시가 뜬다.


📍 HTTP Message

웹사이트에 접속하면 화면을 보여주기 위해 많은 리소스를 다운로드한다.

더보기

🔍 리소스

   URL을 검색해서 받아온 결과물로 서버에서 전달받은 데이터를 의미한다.

  (HTML, JSON, 이미지, 영상, 파일 등)

💡 웹 브라우저에서 서버로 어떻게 요청을 보낼까?

구글에 검색을 한다고 가정하면,

  1. 웹브라우저는 먼저 구글 서버 주소(www.google.com)를 찾아 HTTP요청 메세지를 패킷안에 담아 서버에게 전달한다.
  2. 구글 서버는 전달받은 메세지를 분석해서 HTTP응답 메세지를 패킷에 담아 웹 브라우저로 전달한다.
  3. 웹 브라우저는 전달받은 데이터로 화면을 보여준다.

이 과정에서 웹 브라우저와 서버가 주고 받았던 HTTP메세지를 살펴보면,

Start-line / Status-line 시작라인
Header 헤더
empty line 공백라인
body

으로 구성되어있다.

⚠️ 요청 메세지의 경우 서버에게 보낼 데이터의 유무에 따라 body의 포함 유무를 결정한다.

1. Start-line / Status-line
➰ 요청 메세지 - Start-line
HTTP메소드 , 쿼리 또는 경로 , HTTP version으로 구성
ex . GET /search?q=http HTTP/1.1

➰ 응답 메세지 - Status-line
HTTP version , 상태코드 , 상태를 나타내는 문구로 구성
ex. HTTP/ 1.1 200 OK

2. Header 
HTTP전송에 필요한 모든 부가정보를 담고있다.

⚒️ HTTP 메소드

• 주요 메소드

  • GET : 리소스 조회
  • POST : 요청 데이터 처리. 주로 등록에 사용 -> 응답 메세지의 header필드에 Location값이 추가됨
  • PUT : 리소스를 완전히 대체. 해당 리소스가 없으면 생성
  • PATCH : 리소스를 부분 변경
  • DELETE : 리소스 삭제

• 기타 메소드

  • HEAD : GET과 동일하지만 메세지 부분을 제외하고, 상태줄과 헤더만 반환
  • OPTIONS : 대상 리소스에 대한 통신 가능 옵션을 설명(주로 CORS에 사용)
  • CONNECT : 대상 자원으로 식별되는 서버에 대한 터널을 설정
  • TRACE : 대상 리소스에 대한 경로를 따라 메세지 루프백 테스트를 수행

⚠️ POST와 PUT의 차이점

더보기

PUT의 경우 리소스를 완전히 대체하거나 해당 리소스가 없으면 생성하므로 리소스의 주소를 정확히 알고 있어야한다.

POST / users HTTP/ 1.1

PUT / users/11 HTTP/ 1.1


⚒️ HTTP 상태코드

클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능

• 100번대 (정보) : 요청을 받았으며 프로세스를 계속 처리중임 -> 거의 사용하지 않음

• 200번대 (성공) : 요청을 성공적으로 처리

• 300번대 (리다이렉션) : 요청 완료를 위해 웹 브라우저에서 추가 작업 조치(리다이렉션)이 필요

• 400번대 (클라이언트 오류) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없음

• 500번대 (서버 오류) : 서버가 정상적 요청을 처리하지 못함

 

🔍 리다이렉션

 응답의 결과에 Location 헤더가 있으면 Location위치로 이동한다.

종류

  • 영구적인 리다이렉션 : 특정 리소스의 URI가 영구적으로 이동 - 301, 308
  • 일시적인 리다이렉션 : 일시적인 변경 - 302, 303, 307
  • 특수한 리다이렉션 : 결과대신 캐시를 사용 - 304

https://developer.mozilla.org/ko/docs/Web/HTTP/Status

 

HTTP 상태 코드 - HTTP | MDN

HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 응답은 5개의 그룹으로 나누어집니다: 정보를 제공하는 응답, 성공적인 응답, 리다이렉트, 클라이언트 에러, 그리고

developer.mozilla.org

 

728x90