HTTP & HTTPS
Q. HTTP/2를 설명하고 장점 두가지를 설명해주세요.
Q. HTTP와 HTTPS의 차이점은 무엇인가요?
TCP vs UDP
Q. TCP와 UDP의 차이를 설명해주세요.
Q. TCP의 Flow Control 방법에 대해 알려주세요.
TCP HandShake
Q. 3-way handshake 과정에 대해 설명해주세요
A. 3-way handshake는 TCP를 통한 데이터 전송 과정에서 신뢰성 있는 연결을 수립하는 절차입니다.
1. 먼저, 클라이언트가 서버에게 연결을 요청하며 클라이언트의 SYN(시작 시퀀스 번호)를 보냅니다.
2. 서버가 클라이언트의 연결 요청을 받고 클라이언트에 SYN-ACK(서버의 시작 시퀀스 번호 - 클라이언트 시작 시퀀스 번호 + 1) 패킷을 보내 요청을 수락함을 알림니다.
3. 마지막으로 클라이언트가 SYN-ACK 패킷을 받고 서버로 ACK (서버의 시작 시퀀스 번호 + 1)패킷을 보내 연결 수립을 완료합니다.
Q. 4-way handshake 과정에 대해 설명해주세요
A. 4-way handshake는 세션을 종료하기 위해 수행되는 절차입니다.
1. 먼저, 클라이언트는 서버에 연결을 종료한다는 FIN flag를 전송합니다.
2. 서버는 전송받은 FIN을 받고 확인했다는 ACK 패킷을 클라이언트에 전송합니다. (Close_Wait 상태)
3. 서버가 데이터를 모두 보냈다면 연결을 종료한다는 FIN flag를 전송합니다.
4. 클라이언트는 FIN을 받고 확인했다는 ACK 패킷을 서버로 전송합니다.(TIme_Waite 상태 : 서버로부터 받지 못한 데이터가 존재할까봐)
OSI 7 계층
Q. OSI 7계층이란 무엇인가요?
A. OSI 7계층이란 ISO에 의해 개발된 네트워크 통신이 일어나는 과정을 7단계로 나눈 네트워크 표준 모델입니다.
Q. OSI 7 계층을 왜 사용하나요?
A. 특정한 기능별로 단계를 나누어 흐름을 파악하기 쉽고 오류가 발생했을 때 처리가 용이하기 때문입니다.
또한, 표준화된 인터페이스를 제공해 서로 다른 네트워크 장비 및 프로토콜 간의 상호 운용성을 보장합니다.
Q. OSI 7 계층의 각 단계에 대해 설명해주세요
A. 가장 첫번째로 물리 계층입니다. 수신된 신호를 비트 신호로 변환해 데이터 링크 계층에 전송합니다.
두번째는 데이터 링크 계층입니다. 데이터 전송에서 오류, 흐름, 액세스를 제어하며 MAC 주소를 통해 통신합니다.
세번째로 네트워크 계층입니다. 라우팅과 논리적 주소인 IP 주소를 지정합니다. 네번째로 전송 계층입니다. 포트번호와 전송 방식을 결정합니다. 다섯번째로 세션 계층입니다. 연결을 설정하고 세션을 유지 및 인증을 담당합니다. 여섯번째로 표현 계층입니다. 전송하는 데이터의 표현방식을 결정합니다. 암호화, 압축, 번역 등을 수행합니다. 마지막으로 응용 계층입니다. 응용 프로세스와 직접 관계해 일반적인 응용 서비스를 수행합니다.
Q. 포트 번호란 무엇이고 왜 사용하나요?
A. 포트 번호란 네트워크 상에서 컴퓨터의 특정 프로그램이나 서비스를 식별하기 위해 사용되는 숫자입니다.
포트 번호로 프로그램이나 서비스를 식별할 수 있기 때문에 하나의 IP 주소를 가진 컴퓨터에서 동시에 여러 개의 네트워크 서비스를 운영 가능합니다.
DNS 서버
Q. DNS 서버에 대해 말해주시고, DNS가 왜 필요한지에 대해서도 말씀해주세요.
A. DNS 서버는 사람이 읽기 쉬운 도메인 주소를 IP주소로 변환해주는 서버입니다. DNS가 없다면 사용자는 사이트에 접속할 때 매번 복잡한 IP주소를 사용해 들어가야 하기 때문에 이는 사용자 친화적인 방법이 아닙니다. 따라서 DNS 가 주소에 대한 번역을 해줌으로서 사용자의 웹 접근성을 높이기 때문에 필요합니다.
Q. 웹브라우저에 naver.com 를 입력할 때 DNS가 어떻게 동작하는지 과정을 설명해주실래요?
A. 먼저 웹 브라우저는 DNS에 도메인 네임에 대한 IP주소를 요청합니다. DNS는 해당하는 IP 주소를 찾아 웹 브라우저에 응답을 보내주고, 웹 브라우저는 응답받은 IP주소의 서버에 인덱스 파일을 요청합니다. 응답받은 HTML파일로 브라우저 렌더링 엔진이 렌더링 과정을 진행해 실제 화면에 그려줍니다.
쿠키, 세션, 토큰
Q. 쿠키, 세션, 토큰은 왜 사용할까요?
A. 서버가 클라이언트를 식별하기 위해 사용합니다. 기존의 HTTP 통신의 stateless함을 보완하기 위함입니다.
Q. 쿠키와 세션의 차이점에 대해 말해주세요.
A. 먼저, 쿠키는 웹 브라우저에 사용자 정보를 저장하지만 세션은 서버에서 사용자 정보를 저장합니다.
따라서 쿠키는 속도가 빠르지만 보안에 취약하다는 단점이 있습니다. 세션은 속도는 느리지만 쿠키에 비해 상대적으로 보안에 강합니다.
대칭키 & 공개키
Q. 대칭키가 무엇이고 장단점은 무엇인지 설명해주세요
A. 대칭키는 암호화와 복호화에 같은 암호키를 사용하는 알고리즘입니다.
같은 키를 사용하기 때문에 연산 속도가 빠르지만 키를 교환해야 하는 문제가 발생합니다. 또한, 사용자가 증가할 수록 관리해야 하는 키가 방대해진다는 단점이 있습니다.
Q. 공개키가 무엇이고 장단점은 무엇인지 설명해주세요
A. 공개키는 암호화와 복호화에 쓰이는 암호키를 분리한 알고리즘입니다. 키 전달 문제를 해결해 더 안전하지만 연산 속도가 느리다는 단점이 있습니다.
Q. 대칭키와 공개키의 공통적인 단점과 이를 해결할 수 있는 방법에 대해 말씀해주세요
대칭키는 기밀성만 제공하고 공개키 알고리즘은 기밀성, 인증, 부인 방지를 제공합니다. 따라서 두개의 알고리즘은 무결성을 제공하지 못하여 전자 서명을 추가해 해결할 수 있습니다.
Blocking/Non-blocking & Synchronous/Asynchronous
Q. Blocking / Non-blocking에 대해 각각 어떻게 동작하는지 설명해주세요
A. Blocking은 호출된 함수가 할 일을 모두 마칠때까지 제어권을 가지고 있습니다. Non-blocking은 호출된 함수가 제어권을 먼저 넘겨주어 호출한 함수가 호출된 함수가 마무리할 때까지 기다리지 않고 다른 일을 수행할 수 있습니다.
Q. Synchronous / Asynchronous에 대해 각각 어떻게 동작하는지 설명해주세요
A. Synchronous는 함수 A가 함수 B가 일을 하는 중에 기다리면서 현재 상태를 계속해서 확인합니다. Asynchronous는 함수 B의 수행 상태를 B가 콜백함수로 처리합니다.
흐름제어
Q. TCP 흐름 제어 방법에 대해서 설명해주세요.
A. TCP 흐름 제어 방법에는 크게 두가지가 있습니다.
첫 번째는 stop and wait 방식입니다. 송신자는 수신자에게 ACK 패킷을 받을 때까지 기다린 후 데이터를 전송하는 방식입니다. 두번째는 sliding window 방식입니다. 수식 측의 윈도우 사이즈를 고려해 데이터 패킷을 전송하는 방식입니다.
'면접질문' 카테고리의 다른 글
[면접질문] 데이터베이스 면접 질문 정리 (0) | 2024.04.02 |
---|---|
[면접질문] OS 면접 질문 정리 (1) | 2024.02.26 |
[면접질문] 컴퓨터 구조 면접 질문 정리 (0) | 2024.02.19 |