delpho

네트워크에 대하여 - 2 본문

CS

네트워크에 대하여 - 2

delpho 2022. 6. 25. 00:23

_1. HTTP와 HTTPS의 차이점에 대해서 설명해보세요.

 

 

[ HTTP (Hyper Text Transfer Protocol) ]

  • 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜
  • HTTP는 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로, 80번 포트를 사용하고 있다.
  • 따라서 HTTP 서버가 80번 포트에서 요청을 기다리고 있으며, 클라이언트는 80번 포트로 요청을 보내게 된다.
  • 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜

 

[ HTTP 구조 ]

  • HTTP는 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동
  • HTTP는 상태를 가지고 있지 않는 Stateless 프로토콜이며 Method, Path, Version, Headers, Body 등으로 구성

 

 

 

 

[ HTTPS (Hyper Text Transfer Protocol Secure) ]

  • HyperText Transfer Protocol over Secure Socket Layer, HTTP over TLS, HTTP over SSL, HTTP Secure 등으로 불림
  • HTTP에 데이터 암호화가 추가된 프로토콜
  • HTTP와 다르게 443번 포트를 사용
  • 네트워크 상에서 중간에 제3자가 정보를 볼 수 없도록 암호화를 지원

 

 

[ 대칭키 암호화와 비대칭키 암호화 ]

HTTPS는 대칭키 암호화 방식과 비대칭키 암호화 방식을 모두 사용

 

  1. 대칭키 암호화
    • 클라이언트와 서버가 동일한 키를 사용해 암호화/복호화를 진행함
    • 키를 양쪽에 공유하기위해서 한번은 한쪽에서 다른쪽으로 전송해야함
      • 노출 위험
    • 키가 노출되면 매우 위험하지만 연산 속도가 빠름
  2. 비대칭키 암호화
    • 1개의 쌍으로 구성된 공개키와 개인키를 암호화/복호화 하는데 사용함
      • 공개키: 모두에게 공개가능한 키
      • 개인키: 나만 가지고 알고 있어야 하는 키
    • 키가 노출되어도 비교적 안전하지만 연산 속도가 느림
    • 어떤 키를 암호화할지에 따라 효과가 다름
      • 공개키 암호화: 공개키로 암호화를 하면 개인키로만 복호화할 수 있다. 👉👉 개인키는 나만 가지고 있으므로, 나만 볼 수 있다. 
      • 개인키 암호화: 개인키로 암호화하면 공개키로만 복호화할 수 있다. 👉👉 공개키는 모두에게 공개되어 있으므로, 내가 인증한 정보임을 알려 신뢰성을 보장할 수 있다.

 

 

 

 

 

 

 

 

 


_2. HTTPS에 대해서 설명하고 SSL Handshake에 대해서 설명해보세요.

 

 

 

 

 

 


_3. GET과 POST의 차이점에 대해서 설명해보세요.

 

 

 

# GET 방식

  • 클라이언트에서 서버로 어떠한 리소스로 부터 정보를 요청하기 위해 사용되는 메서드
  • 요청을 전송할 때 필요한 데이터를 쿼리스트링을 통해 전송
  • 불필요한 요청을 제한하기 위해 요청이 캐시될 수 있음
    • js, css, 이미지 같은 정적 컨텐츠는 데이터양이 크고, 변경될 일이 적어서 반복해서 동일한 요청을 보낼 필요가 없음
    • 정적 컨텐츠를 요청하고 나면 브라우저에서는 요청을 캐시해두고, 동일한 요청이 발생할 때 서버로 요청을 보내지 않고 캐시된 데이터를 사용 
      • 그래서 프론트엔드 개발을 하다보면 정적 컨텐츠가 캐시돼 컨텐츠를 변경해도 내용이 바뀌지 않는 경우가 종종 발생
  • 데이터를 Header(헤더)에 포함하여 전송
    • 바디는 보통 빈 상태로 전송
    • 헤더의 내용 중 Body의 데이터를 설명하는 Content-type 헤더필드도 들어가지 않음
  • URL에 데이터가 노출되어 보안에 취약
  • 데이터를 보내는 양에 한계가 있음
  • POST 방식보다 상대적으로 전송 속도가 빠름
  • Idempotent하게 설계
    • Idempotent : 동일한 연산을 여러 번 수행하더라도 동일한 결과
    • GET으로 서버에게 동일한 요청을 여러 번 전송하더라도 동일한 응답이 돌아와야 한다는 것을 의미
      • 서버의 데이터나 상태를 변경시키지 않기 때문!

 

 

 

 

# POST 방식

  • 클라이언트에서 서버로 리소스를 생성하거나 업데이트하기 위해 데이터를 보낼 때 사용 되는 메서드
  • 전송해야될 데이터를 HTTP 메세지의 Body에 담아서 전송
  • Body는 길이의 제한없이 데이터를 전송할 수 있음
    • 최대 요청을 받는 시간인 Time Out이 존재하므로 클라이언트에서 페이지를 요청하고 기다리는 시간이 존재
  • URL에 데이터가 노출되지 않아서 GET방식보다 보안이 되어있음
    • 다만, 크롬 개발자 도구 및 Fiddler와 같은 툴로 확인가능하기때문에 민감한 정보라면 암호화 필요
  • 요청 헤더의 Content-Type에 요청 데이터의 타입을 표시해야함
  • 캐싱할 수 없다.
    • 데이터가 노출되지않기때문
  • Non-idempotent하게 설계
    • 서버에게 동일한 요청을 여러 번 전송해도 응답은 항상 다를 수 있습니다
      • POST는 서버의 상태나 데이터를 변경시킬 때 사용하기때문

 

 

# GET vs POST

캐시 ⭕️
브라우저 기록 ⭕️
북마크 추가 ⭕️
데이터 길이 제한 ⭕️
HTTP 응답 코드 200(Ok) 201(Created)
언제 주로 사용하는가? 리소스 요청 리소스 생성
리소스 전달 방식 쿼리스트링 HTTP Body
idempotent ⭕️

 

 

 

 


_4. HTTP 메서드와 이것이 하는 역할에 대해서 설명해보세요.

 

 

 

# HTTP 메서드

  • HTTP 프로토콜을 사용하는 클라이언트가 서버에 요청을 보내는 방법

 

# 종류

  1. GET : 리소스 조회
  2. POST : 요청 데이터 처리, 주로 등록에 사용
  3. PUT : 리소스를 대체, 해당 리소스가 없으면 생성
  4. PATCH : 리소스 부분 변경
  5. DELETE : 리소스 삭제

 

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

 

 

 

 

 

 

 

 


출처

https://mangkyu.tistory.com/98

 

[Web] HTTP와 HTTPS의 개념 및 차이점

1. HTTP란? [ HTTP(Hyper Text Transfer Protocol)란? ] HTTP(Hyper Text Transfer Protocol)란 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다. 즉, HTTP는 인터넷에서 하이퍼텍스트를 교환..

mangkyu.tistory.com

 

 

https://mangkyu.tistory.com/17

 

[Web] GET과 POST의 비교 및 차이

사용자가 어떤 홈페이지로 이동하기 위해서 URL을 브라우저 주소창에 작성하고 엔터를 누르면 원하는 페이지로 이동합니다. 사용자는 단순히 URL(Uniform Resource Locator)을 입력하였을 뿐이지만 서버

mangkyu.tistory.com

https://hongsii.github.io/2017/08/02/what-is-the-difference-get-and-post/

 

GET과 POST의 차이

HTTP HTTP는 웹상에서 클라이언트와 서버 간에 요청/응답으로 데이터를 주고 받을 수 있는 프로토콜입니다. 클라이언트가 HTTP 프로토콜을 통해 서버에게 요청을 보내면 서버는 요청에 맞는 응답을

hongsii.github.io

https://velog.io/@songyouhyun/Get%EA%B3%BC-Post%EC%9D%98-%EC%B0%A8%EC%9D%B4%EB%A5%BC-%EC%95%84%EC%8B%9C%EB%82%98%EC%9A%94

 

Get과 Post의 차이를 아시나요?

제 질문에 답을 하지 못하겠다면, 이 글을 읽어보시는 걸 적극적으로 추천합니다.

velog.io

https://takoyummy.tistory.com/109

 

HTTP 메서드와 그 역할

HTTP 프로토콜은 TCP와 UDP프로토콜을 기반으로 하여 웹에서 사용하는 프로토콜로 클라이언트와 서버 사이에 이루어지는 요청과 응답 데이터를 전송하는 방식을 의미합니다. HTTP 메서드는 그 중에

takoyummy.tistory.com

https://www.jaeme.dev/web-http4/

 

4. HTTP 메서드

HTTP API 만들어보기 HTTP 메서드를 알아보기 전 요구사항을 보고 생각나는 대로 API를 설계해보겠습니다. 요구사항 : 회원 정보 관리 API 를 만들어라 회원 목록 조회 회원 조회 회원 등록 회원 수정

www.jaeme.dev

 

'CS' 카테고리의 다른 글

자료구조에 대하여 - 1  (0) 2022.07.05
네트워크에 대하여 - 3  (0) 2022.06.29
네트워크에 대하여 - 1  (0) 2022.06.22
DB에 대하여 - 1  (0) 2022.06.19
Spring에 대하여 - 5  (0) 2022.06.19