-
[2주차] 컴퓨터 네트워크 모의면접 과제컴퓨터네트워크 2024. 11. 7. 17:16
📎 HTTP 면접 예상 질문
⭐️1. HTTP 프로토콜에 대해서 설명해주세요.
애플리케이션 계층에서 동작하는 프로토콜로 인터넷 상에서 웹 클라이언트와 웹 서버 간 데이터를 전송할 때 사용하는 프로토콜. 텍스트 파일을 다운로드하기위한 목적의 간소한 프로토콜이었으나, 지금은 파일 송수신,실시간 메시지교환, 동영상 송출 등 다양한 용도로 사용함.
*특히 가장 최근 HTTP/3은 TCP가 아닌 UDP를 사용해 3way핸드셰이크에 걸리는 시간을 줄이고 더 많은 데이터를 보낼 수 있도록 뛰어난 성능향상을 목표로 설계되었는데, 크롬이나 유튜브 등 사용시 HTTP/3로 연결되고 있고 향후 많은 사이트들이 이를 채택할 예정.
2. HTTP의 요청/응답 모델에 대해 설명해주세요.
클라이언트가 서버에게 HTTP 요청을 보내면, 서버가 요청에 대한 HTTP 응답을 클라이언트에게 보내는 구조로 동작함
* HTTP에서 교환하는 정보를 HTTP메시지라고 부르는데 리퀘스트 메시지와 리스폰스 메시지 2가지 종류가 있음.
리퀘스트 메시지는 리퀘스트 라인, 메시지 헤더, 메시지 바디 3개로 구성되고 리퀘스트 라인에 메소드, 리퀘스트 URI, HTTP버전이 나타남.
*리퀘스트 URI는 서버의 장소나 파일 이름, 파라미터등 다양한 리소스를 식별하기 위해 사용하는 문자열, URI중 URL이 있는데 이는 웹사이트에 접속할 때 입력하는 주소로 네트워크에서 서버의 위치를 나타냄.3. HTTP 메서드중 GET과 POST의 차이점에 대해 설명해주세요.
get은 서버로부터 데이터를 얻을 때 사용되는 메소드, post는 서버로 데이터를 전송할 때 사용되는 메소드입니다.
get 리퀘스트를 보낼 때는 쿼리 파라미터로 요청하는 데이터의 정보를 담고, post 리퀘스트를 보낼때는 body에 데이터를 넣어서 보낸다.
4. HTTP 메서드중 PUT과 PATCH의 차이점에 대해 설명해주세요.
PUT 메서드는 리소스 전체를 업데이트해야 된다는 특징이 있음. 즉, 리소스 일부만 수정하고 싶어도 전체 필드 데이터를 요청 본문에 포함해야 함.
PATCH 메서드는 클라이언트의 요청에 따라 리소스를 수정하고 부분 업데이트를 함. 일반적으로 PATCH 요청은 변경이 필요한 필드만 요청 본문으로 보내고, 변경하고 싶지 않은 필드는 요청 본문에서 생략. 멱등하지 않고 안전하지 않음(PATCH 메서드가 동시에 호출되면 리소스의 데이터가 손실될 수 있음.)
PATCH에 넣을 데이터가 PUT에 넣을 데이터보다 크다면, PUT이 더 적합한 메서드.
5. HTTP 상태 코드가 뭔가요? 알고 있는 상태 코드 몇가지 설명해주세요.
처리결과의 개요를 숫자로 나타낸것.
일반적으로 200은 정상적으로 처리하고 종료했다는 의미, 400번대 에러는 클라이언트 에러, 500번대 에러는 서버 에러를 의미함.
프로젝트를 수행하며 자주 마주했던 에러로는 인증 실패한 401에러, 리소스가 존재하지 않음을 의미하는 403 에러가 있음.
6. HTTP 헤더가 뭘까요? 알고 있는 헤더 몇 가지 설명해주세요.
Accept 헤더: 웹 브라우저가 처리할 수 있는 파일의 종류와 상대적 우선도를 웹서버에 전달하기 위해 사용되는 리퀘스트 헤더.
Host 헤더: 하나의 ip주소로 여러 도메인을 운용하는 virtual host기능을 사용할 때 웹서버는 Host헤더에 설정된 도메인 이름을 보고 대상이 되는 virtual host에 리퀘스트를 분배하고 알맞는 컨텐츠를 응답함.
7. ⭐️ HTTP의 무상태성(Stateless)에 대해서 설명해주세요.
stateful은서버가 클라이언트의 이전 상태를 보존한다는 의미이다. 반대로 무상태(stateless)는 서버가 클라이언트의 이전 상태를 보존하지 않는다는 의미.
- 장점 : 서버의 확장성이 높다 → 서버에 상태를 저장하지 않으므로 서버 확장이 용이하다.
- 단점 : 클라이언트가 데이터를 추가 전송해야 한다.
* 로그인한 사용자의 경우 로그인 했다는 상태를 서버에 유지할 필요가 있음. 이러한 경우 웹 브라우저의 쿠키, 서버 세션 등을 이용하여 상태(State)를 유지할 수 있다.
8. HTTP Keep-Alive에 대해서 설명해주세요.
persistence-connection을 맺는 기법중 하나
불필요한 연결의 맺고 끊음을 최소화 시켜 네트워크 부하를 줄이기 위해 클라이언트의 요청이 처리된 후에도 계속 커넥션을 유지함.
9. HTTP 파이프라이닝에 대해서 설명해주세요.
HTTP Pipelining 이란 클라이언트와 서버간 요청과 응답의 효율성을 개선하기 위해 만들어진 개념이다.
클라이언트는 서버로 보냈던 Request 들에 대한 응답을 기다리지않고 여러개의 HTTP 리퀘스트를 하나의 TCP/IP Packet 으로 연속적으로 Packing 해서 요청을 보낸다.
파이프라이닝이 적용되면, 하나의 Connection 으로 다수의 Request 와 Response 를 처리할 수 있게끔 Network Latency 를 줄일 수 있다
=> 하지만 문제가 있음. 완전한 멀티플렉싱이 아닌 응답처리를 미루는 방식이므로 각 응답의 처리는 순차적으로 처리되며, 결국 후순위의 응답은 지연될 수 밖에 없음. 그래서 http파이프라이닝은 HTTP/2 가 등장하면서 멀티플렉싱 알고리즘으로 대체됨
10. HTTP/1.1, HTTP/2, HTTP/3 각각의 특징에 대해 설명해주세요.
HTTP/1.1
- 지속 연결(Persistent Connections): 기본적으로 연결을 유지하여 여러 요청을 하나의 TCP 연결로 처리할 수 있습니다. HTTP/1.0에서는 매 요청마다 새로운 연결이 필요했으나, HTTP/1.1에서는 이 방식이 기본으로 변경되어 성능이 향상되었습니다.
- 파이프라이닝(Pipelining): 동일한 연결에서 여러 요청을 순차적으로 보낼 수 있지만, 서버가 순차적으로 응답해야 해서 병목 현상이 발생할 수 있습니다. 대부분의 브라우저는 이 기능을 비활성화했습니다.
HTTP/2
- 멀티플렉싱(Multiplexing): 하나의 연결에서 동시에 여러 요청을 보낼 수 있습니다. 이를 통해 요청 간 병목 현상이 줄어들고 성능이 크게 향상됩니다.
- 헤더 압축: HPACK 헤더 압축 방식을 사용해 헤더 크기를 줄여 네트워크 대역폭을 절약하고, 요청/응답 속도를 개선했습니다.
- 서버 푸시(Server Push): 서버가 클라이언트가 요청하지 않은 리소스를 미리 전송하여 필요한 리소스를 클라이언트가 빠르게 사용할 수 있도록 합니다.
HTTP/3
- QUIC 프로토콜 기반: HTTP/3는 TCP가 아닌 UDP 위에서 구동되는 QUIC 프로토콜을 사용해 연결 지연을 줄이고 패킷 손실에 대한 효율성을 높였습니다. 이를 통해 네트워크 지연이 있는 환경에서도 더 빠른 응답을 제공합니다.
- 더 빠른 연결 설정: QUIC는 TCP의 3-way handshake가 아닌 단일 패킷 핸드셰이크로 빠르게 연결을 설정합니다.
- 개별 스트림 제어: HTTP/2의 멀티플렉싱은 연결 상의 하나의 스트림에서 문제가 생기면 다른 스트림에도 영향을 주었으나, HTTP/3는 각 스트림이 독립적으로 관리되어 문제가 발생해도 다른 스트림에 영향을 주지 않습니다.
- 보안 강화: QUIC는 TLS 1.3을 기본으로 통합하여 더 안전한 연결을 제공합니다.
📎 HTTPS 면접 예상 질문
1. HTTPS에 대해서 설명해주세요.
웹 통신 프로토콜인 HTTP의 보안 버전을 의미한다. 데이터의 안전한 전송을 위해 사용되며, 웹 사이트와 웹 브라우저 간의 통신을 암호화하여 보호한다.
HTTPS는 대칭키 암호화와 공개키 암호화를 조합하여 작동한다. SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화합니다.
2. SSL/TLS이 뭔가요?
애플리케이션을 암호화하는 프로토콜. 데이터를 암호화하거나 통신 상대를 인증하는 등으로 중요한 데이터를 보호함.ssl은 암호화, 해시화, 디지털 인증서라는 3가지 기술을 조합해 사용함. 암호화는 정해진 규칙에 기반해 데이터를 변환. 제 3자가 데이터를 엿보는 도청을 방지. 해시화는 해시함수에 기반해 해시값을 추출하는 기술. 제3가자 데이터를 바꾸어 쓰는 변조를 감지할 수 있음. 디지털인증서는 단말이 진짜임을 증명하는 파일로 신분 위조를 방지할 수 있음.
3. 대칭키 암호화 방식에 대해 설명해주세요.
클라이언트와 서버가 미리 같은 키를 공유하고 암호화한뒤 공유했던 키로 복호화하는 방법. 장점은 처리속도가 빠르고 처리부하가 적다는것. 단점은 키 전송시 유출 문제가 있음4. 비대칭키(공개키) 암호화 방식에 대해서 설명해주세요.
공개키와 비밀키 키페어를 만들어 공개키를 암호화키로 사용해 데이터를 암호화함. 한쪽 키에서 암호화한 데이터는 다른 한쪽 키로만 복호화 할 수 있어서 비밀키는 보관하고 공개키를 전송하는 과정에서 유출되어도 문제가 없음. 단점은 처리속도와 처리부하. 처리가 복잡해서 시간소요 많고 부하도 많음
5. 전자 서명에 대해서 설명해주세요.
전자 서명은 디지털 문서나 메시지의 무결성과 신뢰성을 보장하기 위해 사용되는 기술로, 해당 문서나 메시지가 작성자의 동의 하에 작성되었음을 증명함
생성 과정:
- 전자 서명은 일반적으로 해시 함수와 비대칭 키 암호화를 이용해 생성됩니다. 전자 서명이 필요한 문서(메시지)는 해시 함수를 통해 해시 값(고정된 길이의 값)으로 변환됩니다.
- 생성된 해시 값은 송신자의 개인 키로 암호화되어 전자 서명으로 생성됩니다.
확인 과정:
- 전자 서명이 포함된 문서(메시지)를 받은 수신자는 송신자의 공개 키를 사용해 전자 서명을 복호화하여 원래의 해시 값을 확인합니다.
- 문서(메시지) 본문에서 다시 해시 값을 계산한 뒤, 이를 복호화된 해시 값과 비교하여 무결성과 작성자의 신원을 검증합니다.
6.⭐️ HTTPS 암호화 과정에 대해 설명해주세요. (SSL Handshake의 동작 과정을 설명해 주세요.)
SSL/TLS 핸드셰이크는 클라이언트와 서버가 보안 연결을 협상하여 세션 키를 생성하는 단계.
서버는 CA에 사이트 정보와 공개 키를 전달하여 인증서를 받음 → 클라이언트는 브라우저에 CA 공개 키가 내장되어 있다고 가정 → ClientHello(암호화 알고리즘 나열 및 전달) → ServerHello(암호화 알고리즘 선택) → Server Certificate(인증서 전달) → Client Key Exchange(데이터를 암호화 할 대칭 키 전달) → Client / ServerHello done (정보 전달 완료) → Finished(SSL Handshake 종료)
📎 DNS 면접 예상 질문
1. ⭐️ DNS가 뭔가요?
ip주소와 도메인 이름을 상호교환하는 프로토콜. dns는 ip주소에 도메인 이름이라는 이름을 붙여 사람이 이해하기 쉬운형태로 통신할 수 있게 함.
2.DNS 작동 방식에 대해 설명해주세요.
- 도메인 이름 입력: 사용자가 브라우저에 도메인 이름을 입력하면, 이 요청이 DNS 시스템으로 전송됩니다.
- DNS 캐시 확인: 사용자의 로컬 컴퓨터 또는 운영 체제의 캐시에 해당 도메인에 대한 IP 주소가 저장되어 있는지 확인합니다. 캐시에 IP 주소가 있다면 캐시된 값을 사용.
- DNS 서버 질의: 로컬 캐시에 없으면, 인터넷 서비스 제공업체(ISP)의 리졸버 DNS 서버로 요청이 전송됩니다.
- 계층적 DNS 서버 조회:
- 리졸버 서버는 최상위 DNS 서버인 루트 네임 서버에 도메인 정보를 요청
- 루트 네임 서버는 해당 도메인의 최상위 도메인(TLD) 서버(예: .com, .org 등) 위치 제공
- 리졸버는 TLD 서버에 다시 질의하여, 최종적으로 도메인에 대한 권한 DNS 서버 주소를 획득
- IP 주소 반환: 권한 DNS 서버에서 해당 도메인의 IP 주소를 확인하여 리졸버 DNS 서버에 반환하고, 리졸버 서버는 사용자에게 최종 IP 주소를 제공함
- 접속 완료: 브라우저는 IP 주소를 이용해 웹 서버와 연결하고, 사용자는 웹사이트 접속
3. DNS 질의 종류에 대해 설명해주세요.
- 재귀 질의(Recursive Query): 클라이언트(예: 사용자 컴퓨터)가 리졸버 DNS 서버에 요청을 보내면 최종 IP 주소가 반환될 때까지 DNS 서버가 전체 과정을 책임지는 질의 방식입니다.
- 반복 질의(Iterative Query): 리졸버 DNS 서버가 최종 IP 주소를 찾지 못할 경우, 클라이언트에 다음 DNS 서버의 위치를 알려주며 클라이언트가 스스로 필요한 서버로 반복적으로 질의하게 하는 방식입니다.
- 비재귀 질의(Non-Recursive Query): 리졸버 DNS 서버가 캐시에 해당 도메인의 IP 주소 정보를 이미 가지고 있을 때 바로 응답하는 질의 방식입니다.
4. DNS 서버에게 IP 주소를 요청할 때, 왜 UDP를 사용하나요?
- 속도: UDP는 연결 설정 과정이 없기 때문에, TCP보다 요청-응답의 속도가 빠릅니다. DNS는 짧은 메시지(일반적으로 512바이트 이하)를 주고받기 때문에 빠른 응답이 중요합니다.
- 간결성: DNS는 단순한 요청과 응답을 주고받기 때문에, 패킷 손실 시 재전송하거나 다시 질의하는 방식으로 대응할 수 있어, 연결 기반인 TCP의 신뢰성보다는 UDP의 효율성이 더 큽니다.
- 오버헤드 최소화: TCP는 3-way 핸드셰이크 등 연결 설정에 오버헤드가 발생하지만, UDP는 이러한 추가 과정이 없어 더 효율적입니다.
5. DNS 레코드가 무엇인가요?
DNS 레코드는 웹사이트가 호스팅되는 방식과 웹사이트에 액세스할 수 있는 항목을 정의합니다. 웹사이트를 찾을 수 있는 위치와 상호 작용하는 방법을 알려줌. IP 연결 설정을 할 수 있는 A레코드, 메일연결을 위한 MX레코드 등 여러가지 레코드 값이 존재함.
레코드 종류
A 레코드 (Address Record): 도메인 이름을 IPv4 주소와 연결합니다.
AAAA 레코드: 도메인 이름을 IPv6 주소와 연결합니다.
CNAME 레코드 (Canonical Name Record): 하나의 도메인 이름을 다른 도메인 이름에 매핑하여, 별칭을 설정할 때 사용합니다.
MX 레코드 (Mail Exchange Record): 도메인에 대한 메일 서버 정보를 지정합니다.
TXT 레코드: 도메인에 대한 텍스트 정보를 저장하며, 보안 인증 정보(DKIM, SPF) 등을 포함할 수 있습니다.
NS 레코드 (Name Server Record): 도메인의 권한 DNS 서버 위치를 지정합니다.
PTR 레코드 (Pointer Record): IP 주소를 도메인 이름으로 매핑하여 역방향 조회에 사용됩니다.
'컴퓨터네트워크' 카테고리의 다른 글
컴퓨터 네트워크 과제 5주차 (0) 2024.11.26 [4주차] 컴퓨터 네트워크 (0) 2024.11.21 [컴퓨터네트워크] 3주차 과제 (2) 2024.11.14 컴퓨터네트워크 1주차 (1) 2024.10.31