면접 예상 질문(5)(컴퓨터 네트워크(2))

최동혁·2023년 4월 10일
0

면접 질문

목록 보기
8/9

HTTP가 뭔지 설명해주세요.

  • HTTP는 HyperText Transfer Protocol의 약자로 서버-클라이언트 모델을 따르며 request/response 구조로 웹 상에서 정보를 주고받을 수 있는 프로토콜입니다.
  • TCP/IP 기반으로 작동하며, HTTP의 가장 큰 특징은 Connectionless와 Stateless입니다.

HTTP는 왜 Connectionless와 Stateless인지 설명해주세요.

  • HTTP는 많은 사람들의 동시 접속을 최소화해서 더 많은 요청을 처리하기 위해 요청을 한 후, 응답을 받으면 연결을 끊어버리기 때문에 Connectionless입니다.
  • 응답을 받고 연결을 끊었기 때문에 클라이언트의 이전 상태를 알 수가 없어 Stateless한 특성을 가집니다.

HTTPS가 무엇인가요?

  • HTTPS는 HTTP 프로토콜의 보안 버전이며 암호화된 연결을 사용하여 데이터를 안전하게 전송합니다.
  • HTTPS는 3가지 보안 기능을 제공해줍니다.
  • 데이터 암호화, 신원 보호, 그리고 데이터 무결성 보호입니다.
  • 데이터를 암호화 하기 때문에 제 3자가 데이터를 볼 수 없습니다.
  • 그리고 https는 공개키 인증서를 사용하여 웹 서버의 신원을 검증하기 때문에 중간자 공격을 방지할 수 있습니다.
  • 마지막으로 https는 데이터가 전송 중에 변경되지 않았는지를 확인하여 데이터 무결성을 보호해줍니다.

HTTP의 Connectionless, Stateless 특성이 가지는 단점을 해결하기 위한 방안으로는 무엇이 있을까요?

  • cookie, session 그리고 jwt 등이 있습니다.

cookie, session 그리고 jwt에 대해 간략하게 설명해주세요.

  • 쿠키
    • client의 상태 정보를 저장하기 위한 기술입니다.
    • 서버가 응답으로 쿠키라는 작은 데이터 파일을 전송해줍니다.
    • client는 이를 저장하고, 회원 인증과 같은 상태를 필요할 때마다 서버에 전송합니다.

  • 세션
    • server가 client의 상태 정보를 저장하기 위한 기술입니다.
    • server가 client에게 고유한 세션 ID를 생성하고 client는 이를 받아 쿠키에 저장해, 필요할 때마다 server에 세션 ID를 보내줍니다.
    • 서버 측에서 관리하기 때문에 보안성이 높고 쿠키와 달리 만료 기간을 설정하지 않아도 됩니다.
  • JWT
    • client의 상태 정보를 저장하기 위한 기술입니다.
    • JSON Web Token의 약자로 JSON 형식으로 토큰을 생성해 HTTP 요청 헤더에 실어서 보냅니다.
    • header, payload, signature로 이루어져있으며 header에는 token의 암호화 알고리즘과 같은 정보를 포함합니다. payload에는 client의 정보와 server에 전달하고자 하는 정보들이 담겨져 있습니다. signature에는 payload와 header를 암호화한 값이 포합됩니다. client는 서버로부터 발급된 비밀키를 사용해 검증 후 유효성을 확인합니다.
    • 세션이나 쿠키와 달리 서버에 저장되어 있지 않아 더 경량화되어 있는 솔루션입니다.

쿠키와 세션의 차이점에 대해서 설명해 주세요.

  • 쿠키는 클라이언트 로컬에 key-value 쌍으로 저장되는 데이터 파일입니다 유효시간 내에서는 브라우저가 종료되어도 계속 유지됩니다.
  • 세션은 브라우저가 종료되거나, 서버에서 해당 세션을 삭제할 수 있기 때문에 쿠키보다 보안성이 좋습니다. 또한 서버에 데이터를 저장하므로 서버 용량이 허용하는 한에서 제한 없이 데이터를 저장할 수 있다는 장점이 있지만, 서버의 부하가 커진다는 단점이 될 수 있습니다.

session의 인증 과정을 설명해주세요.

  1. 클라이언트가 로그인을 하면 서버는 회원정보를 대조하여 인증을 합니다.(authentication)
  2. 회원 정보(클라이언트 정보)를 세션저장소에 생성하고 session ID를 발급합니다.
  3. http response header 쿠키에 발급한 session ID를 담아서 보냅니다.
  4. 클라이언트에서는 session ID를 쿠키 저장소에 저장하고 이후에 http request를 보낼 때마다 쿠키에 session ID를 담아서 보냅니다.
  5. 서버에서는 쿠키에 담겨져서 온 session ID에 해당하는 회원 정보를 세션 저장소에서 가져옵니다.(authorization)
  6. 응답 메시지에 회원 정보를 바탕으로 처리된 데이터를 담아서 클라이언트에 보냅니다.

인증과 인가에 대해서 설명해주세요.

  • 인증은 사용자가 누구인지 확인하는 절차입니다. 회원가입과 로그인 과정이 인증의 대표적인 예시입니다.
  • 인가는 사용자가 요청하는 것에 대한 권한이 있는지 확인하는 절차입니다. 보통 게시글을 수정하거나 삭제, 혹은 관리자 권한이 필요한 경우 대표적인 예시입니다.

HTTP request method 중 GET과 POST를 비교 설명해주세요.

  • GET 메소드는 클라이언트가 서버에게 리소스를 요청할 때 사용하는 메소드이고, POST 메소드는 서버에게 데이터 처리를 요청할 때 사용하는 메소드입니다.
  • GET 요청 경우 URL 뒤에 쿼리 스트링을 추가하여 정보를 조회하고, POST 요청 경우에는 전달할 데이터를 Body 부분에 포함하여 통신합니다.
  • 그리고 GET은 URL 뒤에 쿼리스트링을 포함하여 브라우저에 히스토리가 남게 되고 캐시가 가능하지만, POST는 히스토리도 남지 않고 캐시도 불가능합니다.

HTTP request method 중 PUT과 PATCH를 비교 설명해주세요.

  • put 메소드는 리소스를 대체하는 메소드입니다. 만일 요청 메세지에 리소스가 있으면 완전히 덮어쓰고, 없으면 새로 생성합니다.
  • patch 메소드는 리소스를 수정하는 메소드입니다. put과 다른 점은 put은 모든 것을 완전히 대체한다면 patch는 일부분만 수정합니다.
  • 그리고 put은 멱등성을 보장하지만, patch는 멱등성을 보장하지 않는 경우가 있습니다.

HTTP status code에 대해서 설명해 주세요.

  • http status code는 클라이언트가 보낸 http 요청에 대한 서버의 응답 코드로 요청의 성공/실패 여부를 판단할 수 있습니다.
  • 5개의 클래스로 구분이 됩니다.
  • 100번대
    • 요청을 받았으며 작업을 계속합니다.
  • 200번대
    • 클라이언트가 요청한 동작을 성공적으로 처리했다는 코드입니다.
    • 흔히 200(성공), 201(생성)이 많이 쓰입니다.
  • 300번대
    • 리다이렉션 코드로 요청을 완료하기 위해 추가 작업 조치가 필요합니다.
  • 400번대
    • 클라이언트측 오류 코드입니다.
    • 흔히 401(인증), 403(권한), 404(not found)코드가 많이 쓰입니다.
  • 500번대
    • 서버측 오류 코드입니다.
    • 흔히 500(internal server error), 502(Bad Gateway)가 있습니다.

웹 동작 방식을 도메인 입력부터 백엔드 서버까지 간략하게 설명해주세요.

  1. 유저가 브라우저에서 www.google.com(URL)을 입력을 하면 HTTP request message를 생성합니다.
  2. IP주소를 알아야 전송을 할 수 있으므로, DNS lookup을 통해 해당 domain의 server IP주소를 알아냅니다.
  3. 반환된 IP주소(구글의 server IP)로 HTTP 요청 메시지(request message) 전송 요청을 합니다.
    1. 생성된 HTTP 요청 메시지를 TCP/IP층에 전달합니다.
    2. HTTP 요청 메시지에 헤더를 추가해서 TCP/IP 패킷을 생성합니다.
  4. 해당 패킷은 전기신호로 랜선을 통해 네트워크로 전송되고, 목적지 IP에 도달합니다.
  5. 구글 server에 도착한 패킷은 unpacking을 통해 message를 복원하고 server의 process로 보냅니다.
  6. server의 process는 HTTP 요청 메시지에 대한 response data를 가지고 HTTP 응답 메시지(response message)를 생성 합니다.
  7. HTTP 응답 메시지를 전달 받은 방식 그대로 client IP로 전송을 합니다.
  8. HTTP response 메시지에 담긴 데이터를 토대로 웹브라우저에서 HTML 렌더링을 하여 모니터에 검색창이 보여집니다.
profile
항상 성장하는 개발자 최동혁입니다.

0개의 댓글