본문 바로가기

면접준비

CS 지식 정리 - 네트워크(2)

HTTP와 HTTPS

  1. HTTP의 특징
  2. HTTP와 HTTPS의 차이점
  3. HTTP Method에는 어떤 것들이 있는지
  4. 멱등성에 대해 설명하고, HTTP 메소드에서는 어떤 메소드가 멱등성 메소드인지 설명
  5. HTTP의 Kepp-alive 헤더에 대해 설명
  6. HTTP 1.0 vs HTTP 1.1 vs HTTP 2.0을 각각 비교해서 설명
  1. HTTP는 world wide web에서 정보를 주고받을 수 있는 프로토콜, client-server간의 request-response 프로토콜, 주로 HTML 문서를 주고 받는데 사용함
  2. HTTP와 HTTPS의 차이점은 HTTP는 데이터를 평문으로 전송하여 보안에 취약하며, HTTPS는 SSL/TLS로 암호화하여 보안 강화
  3. HTTP는 클랄이언트가 서버에 요청할 때 다양한 메소드를 사용한다. GET은 데이터를 조회할 때 사용하며 서버의 자원을 변경하지 않는다. POST는 서버에 데이터를 생성하거나 전송할 때 사용, PUT은 기존 데이터를 완전히 대체하며, 데이터 생성에도 사용, PATCH는 데이터를 부분적으로 업데이터, DELETE는 서버의 데이터를 삭제
  4. 멱등성은 같은 요청을 여러 번 보내더라도 결과가 항상 동일한 특성을 말한다. 예를 들어, GET 요청은 데이터를 조회하는 데 사용되며, 몇 번 요청하더라도 서버 상태에 영향을 주지 않아 멱등성을 가진다. 또한 PUT, DELETE, HEAD, OPTIONS도 멱등성을 가지며, 여러 번 요청해도 서버 상태는 동일하게 유지된다.
    POST는 멱등성을 가지지 않는데, 동일 요청을 반복하면 데이터가 중복 생성될 수 있기 때문
  5. HTTP 1.1에서는 Keep-alive 헤더를 사용해 연결을 지속적으로 유지할 수 있다. keep-alive를 활성화하면 요청과 응답마다 연결을 끊지 않고, 여러 요청을 같은 연결로 처리할 수 있어 성능이 향상된다.
  6. HTTP 프로토콜은 성능 향상을 위해 발전해 왔다. HTTP 1.0에서는 요청당 하나의 연결만 사용해, 요청-응답 후 연결이 종료되었다, HTTP 1.1은 keep-alive를 통해 연결을 재사용할 수 있게 하였고, 여러 요청을 한 번에 처리할 수 있는 파이프라이닝을 도입, HTTP 2.0은 한 단계 더 발전해 멀티플렉싱을 도입하여 하나의 연결로 여러 요청을 동시에 처리할 수 있다. 또한, 헤더 압축으로 데이터를 더 효율적으로 전송하며, 웹 페이지 로딩 속도가 크게 개선

CORS와 REST API

  1. CORS가 무엇?
  2. REST API와 RESTful 하다는 것이 무엇인지
  1. CORS는 브라우저의 보안 정책으로, 다른 도메인에서 리소스를 요청할 때 이를 제어하는 메커니즘이다.
    한 도메인에서 다른 도메인의 API를 호출하면 기본적으로 차단되지만, 서버가 특정 도메인을 허용하면 요청이 가능해진다. 이를 통해 보안과 접근을 동시에 관리한다.
  1. REST API는 HTTP를 기반으로 자원을 URL로 표현하고, GET, POST, PUT, DELETE 같은 메소드로 자원에 접근하는 방식이다. RESTful은 REST의 원칙을 잘 준수하는 API를 말한다. 자원을 명확히 표현하고, HTTP 메소드를 적절히 사용하며, 상태를 저장하지 않는다는 점에서 RESTful이라고 한다.

쿠키와 세션, 인증 방식

  1. 쿠키와 세션이 왜 필요하고 어떻게 다른지
  2. session의 값을 가져오는 key를 "user"라고 할 때, 사용자 A와 B가 다른 값을 받을 수 있는 이유?
  3. session은 서버에 저장되고, Cookie는 클라이언트에 저장되는데, 쿠키가 안되는 상황에서 세션은 사용할 수 있을까?
  4. JWT Token이 무엇인지 설명
  5. 세션 기반 인증과 토큰 기반 인증은 각각 어느 경우에 적합한지 설명
  1. 쿠키와 세션은 클라이언트의 상태를 유지하기 위해 필요하다. 쿠키는 클라이언트 측에 저장되며, 브라우저가 서버에 자동으로 보내는 방식이다. 세션은 서버에 저장되며, 클라이언트는 세션 ID를 통해 서버의 데이터를 참조한다. 주요 차이는 저장 위치와 보안성으로, 세션은 서버에 저장되기 때문에 보안이 더 강하다.
  2. 세션은 각 사용자에게 고유한 세션 ID를 발급한다. 이 세션 ID는 쿠기를 통해 클라이언트와 서버 간에 전달되므로, 서버는 이 ID로 사용자를 구분하고 각각의 세션 데이터를 반환한다.
  1. 쿠키가 동작하지 않는다면, 세션 ID를 클라이언트와 서버 간에 전달할 다른 방법이 필요하다. 이 경우, URL 파라미터나 헤더를 통해 세션 ID를 전달하여 세션을 사용할 수 있다.
  1. JWT(JSON Web Token)는 정보를 JSON 형식으로 담아 서버와 클라이언트 간 인증에 사용하는 토큰이다. 토큰에는 헤더, 페이로드, 서명이 포함되며, 서명을 통해 데이터의 무결성을 보장한다. 서버는 토큰을 저장하지 않아도 되므로 무상태성을 유지한다.
  1. 세션 기반 인증은 서버가 상태를 유지하며, 보안성이 중요하고 클라이언트 수가 적은 환경에 적합하다, 토큰 기반 인증은 서버가 상태를 저장하지 않기 때문에 확장성이 뛰어나고, 분산 시스템이나 모바일 환경에서 적합하다.

URI, URL, HTTP 메소드

  1. URI와 URL이 무엇이 다른지
  2. GET과 POST가 다른점
  1. URI(Uniform Resource Identifier) -> 자원을 식별하는 모든 방법을 포함하는 개념, URL(Uniform Resource Locator) -> URI의 한 형태로, 자원의 위치를 나타내며 자원에 접근할 수 있는 방법을 포함한다.
    쉽게 말해, 모든 URL은 URI이지만, URI 중 위치를 나타내는 경우에만 URL이라고 부른다.
  1. GET은 데이터를 서버에서 가져올 때 사용하며, 요청 데이터가 URL에 포함된다, 주로 조회 작업에 사용되고, 브라우저 캐싱이 가능하다. POST는 데이터를 서버에 전송하거나 생성할 때 사용하며, 요청 데이터가 본문에 포함된다, 주로 생성 작업에 사용되며, 민감한 데이터를 보낼 대 적합하다.

GET은 데이터 조회, POST는 데이터 전송 및 생성에 적합하며, GET은 URL에 데이터를 노출하지만 POST는 본문에 데이터를 숨긴다.

네트워크 설정 및 기타

  1. Connection Timeout과 Read Timeout의 차이
  2. 공인 IP와 사설 IP의 차이에 대해 설명
  1. Connection Timeout은 서버와 연결을 시도할 때, 연결이 설정되지 않는 경우 기다리는 최대 시간을 설정 / Read Timeout은 연결은 성공했지만, 서버가 데이터를 보내지 않을 때 응답을 기다리는 최대 시간을 설정
  2. 공인 IP는 인터넷에서 고유하게 식별되는 IP 주소로, 전 세계적으로 유일하며 인터넷에 직접 연결, 사설 IP는 내부 네트워크에서만 사용되는 IP 주소로, 라우터가 NAT(Network Address Translation)를 통해 공인 IP와 연결한다.

공인 IP는 인터넷에서 유일한 주소, 사설 IP는 내부 네트워크용 주소로 외부에서 직접 접근할 수 없다.