본문 바로가기
면접 질문/네트워크

[네트워크] HTTP와 HTTPS, HTTP 헤더 면접 질문 및 답변 정리

by 그적 2024. 3. 7.
  • HTTP와 HTTPS에 대해 설명해주세요.
더보기

HTTP는 웹 상에서 서버와 클라이언트 사이에 데이터를 전달할 때 사용되는 프로토콜입니다. HTTP는 데이터를 평문으로 전달하기 때문에 보안에 취약하다는 단점을 가지고 있는데, 이를 개선한 방식이 HTTPS입니다. HTTPS는 SSL 인증서를 이용해 데이터의 암호화를 제공하고 있으며, CA라는 서드파티에게 SSL 인증서를 검증함으로써 클라이언트는 서버의 신뢰성을 확인하고 공개키를 전달받을 수 있습니다.

 

  • HTTP와 HTTPS는 각각 몇 번 포트를 이용하나요?
더보기

HTTP는 80번 포트, HTTPS는 443번 포트를 이용합니다.

 

  • HTTP 요청 헤더에 있는 필드를 아는 대로 말씀해주세요.
더보기

HTTP 요청 헤더에는 제일 위쪽 URL경로, HTTP 메서드, HTTP 버전을 포함한 한 줄이 있고, 그 아래에는 key-value 형태로 host, user-agent, accept-language, accept-encoding, content-type 등이 포함됩니다.

 

  • HTTP 응답 헤더에 있는 필드를 아는 대로 말씀해주세요.
더보기

HTTP 응답 헤더에는 제일 위쪽 HTTP 버전, 상태코드, 상태메시지를 포함한 한 줄이 있고, 그 아래에는 key-value 형태로 set-cookie, last-modified, e-tag, date 등이 포함됩니다.

 

  • HTTP 메서드 중 GET과 POST에 대해 설명해주세요.
더보기

HTTP 메서드는 웹 상에서 데이터를 어떻게 전달할지에 대한 규정입니다. GET은 URL 경로에 데이터를 담아 전달하기 때문에 데이터가 드러나고 캐싱될 수 있습니다. 따라서 보안에 취약하다는 단점을 가지고 있습니다. 이에 반해 POST는 HTTP 바디에 데이터를 담아 전달하기 때문에, 보안성이 좋으며 로그인 정보와 같은 중요한 데이터는 POST 메서드를 이용해야 합니다.

 

  • HTTP 상태 코드에서 500번은 서버와 클라이언트 중 어떤 쪽 에러인가요?
더보기

500번대는 서버 측 에러입니다. 200번은 성공한 상태를, 300번은 추가적인 작업이 필요한 상태를, 400번은 클라이언트 측 에러 상태를, 500번대는 서버 측 에러 상태를 의미합니다.

 

  • SSL 인증서란 무엇이죠?
더보기

SSL 인증서는 SSL 암호화를 이용할 때 CA 정보, 인증서 발급 정보 등을 포함한 데이터입니다. HTTPS에서 클라이언트가 SSL 인증서를 받으면, CA의 공개키를 이용해 SSL 인증서를 복호화합니다. 복호화가 성공적으로 이루어지면 검증된 서버라는 의미이며, 인증서 내부에 포함된 서버의 공개키를 획득할 수 있습니다. 이후 클라이언트는 대칭키를 생성하고, 대칭키를 포함한 데이터를 서버의 공개키로 암호화해 서버에 전달합니다. 서버는 자신의 개인키로 데이터를 복호화하여 대칭키를 획득할 수 있습니다.

 

  • SSL 인증서에는 어떤 데이터가 포함되어 있나요.
더보기

SSL 인증서에는 CA 정보, 도메인, 인증서 발급 날짜, 인증서 만료 날짜, SSL/TLS 버전, 공개키 등이 들어있습니다.

 

  • HTTPS 동작 방식에 대해 말씀해주세요.
더보기

HTTPS는 우선 서버와 클라이언트 사이에 3-way handshake 과정을 거쳐 TCP 연결이 수립됩니다. 이후 ssl handshake 과정을 거치는데, 구체적으로 클라이언트가 서버에게 ssl 연결을 요청합니다. 서버는 공개키를 포함한 ssl 인증서를 클라이언트에게 전달하고, 클라이언트는 CA의 공개키로 인증서를 복호화해 서버의 공개키를 얻어냅니다. 클라이언트는 공개키를 이용해 생성한 대칭키를 암호화하여 서버로 전달합니다. 서버는 받은 데이터를 자신의 개인키로 복호화해 대칭키를 얻을 수 있습니다. 이로써 서버와 클라이언트는 공개키 암호화 방식으로 대칭키를 공유했으며, 이후부터는 대칭키를 이용해 데이터를 암호화 및 복호화하여 전달합니다.

 

  • HTTPS는 어떤 암호화 알고리즘을 사용하나요?
더보기

HTTPS는 대칭키를 공유하기 위해 공개키 암호화를 이용하며, 데이터를 공유하기 위해 대칭키 암호화를 이용합니다. SSL handshake 과정에서 제일 처음 클라이언트가 서버에게 ssl 연결을 요청할 때, 클라이언트는 자신의 컴퓨터가 사용할 수 있는 암호화 알고리즘을 리스팅하여 서버로 보냅니다. 서버는 리스트들 중에서 하나를 골라 공개키를 생성합니다. 따라서 특정 암호화 알고리즘을 사용하는 것이 아닌 사전에 클라이언트와 서버가 사용할 수 있는 알고리즘을 공유하고 합의합니다.

 

댓글