CS

[기술면접] #1 기술 면접 예상 질문 총 정리 (네트워크)

신민석 2024. 4. 24. 11:29

 

해당 포스팅은 아래 자료를 기반으로 개인적으로 공부한 내용을 정리한 글 입니다.

 

https://github.com/sinminseok/backend-interview-question

 

GitHub - sinminseok/backend-interview-question: 백엔드 개발자로 입사를 준비하며 받았던 질문, 예상했던 질

백엔드 개발자로 입사를 준비하며 받았던 질문, 예상했던 질문, 인터넷 참고한 질문(CC BY-NC) - sinminseok/backend-interview-question

github.com

 

 

🎯  OSI 7 계층에 대해 자세히 설명해주세요.

더보기

OSI 모델은 네트워크 통신을 7개의 계층으로 나누어 설명하는 표준 모델입니다. 이렇게 표준화하는 것의 장점은 통신이 일어나는 과정을 단계별로 파악할 수 있어, 문제가 발생하면 해당 문제를 해결하기 용이해집니다.

 

 

(1) 물리 계층 : 데이터의 전기적, 기계적, 절차적, 기능적 특성을 정의합니다. 네트워크 하드웨어간의 물리적인 연결을 담당합니다.

 

(2) 데이터 링크 계층 : 물리

 

(2) 네트워크 계층

 

(2) 전송 계층

 

(2) 세션 계층

 

(2) 표현 계층

 

(2) 응용 계층

 

 

 

 

 

 

 

🎯  웹 통신의 큰 흐름: https://www.google.com/ 을 접속할 때 일어나는 일을 설명해보세요. (웹 동작방식에 대해 설명하세요.)

 

  답변 

더보기
  1. URL 해석: 사용자가 브라우저에서 "https://www.google.com/"을 입력하면, 브라우저는 이를 해석하여 해당 웹 사이트에 대한 서버의 IP 주소를 찾습니다.
  2. DNS 조회: 브라우저는 도메인 이름을 IP 주소로 해석하기 위해 DNS(Domain Name System) 서버에 쿼리를 보냅니다. DNS 서버는 "www.google.com"에 해당하는 IP 주소를 찾아 응답합니다.
  3. HTTP 요청 메시지 생성: http 프로토콜을 사용해 HTTP 요청 메세지를 생성합니다.
  4. TCP/IP 연결 : TCP/IP 연결을 통해 HTTP 요청이 서버로 전송됨
  5. 응답 메시지 생성 : 서버는 HTTP 프로토콜을 활용해 HTTP 응답 메세지를 생성함
  6. 컴퓨터 전송 : TCP/IP 연결을 통해 서버에서 컴퓨터로 응답 메시지 전송
  7. 조회 : 도착한 HTTP 응답 메세지는 웹페이지 데이터로 변환되고, 웹 브라우저에 의해 출력되어 사용자가 볼 수 있게됨

 

🎯  TCP 와 HTTP 차이점을 설명해라

 

  답변 

더보기

HTTP 는 비 연결형 프로토콜, TCP 는 연결형 프로토콜

HTTP 는 단방향 통신만 가능, TCP 는 양방향 통신 가능

HTTP 는 응용계층이 7층, TCP 는 전송계층이 4층

 

🎯  TCP 와 UDP 차이점을 설명해라

 

  답변 

더보기

 TCP 는 연결 지향형 프로토콜이고 UDP 는 데이터 그램단위를 전송하는 프로토콜입니다. 

 

또한 TCP 는 UDP 와 다르게 신뢰성을 보장하는 과정이 있습니다. 3, 4 way handshake 과정을 통해 통신 연결을 확인하는 과정이 있기에 신뢰성을 보장할 수 있습니다. 하지만 이러한 과정때문에 UDP 보다 느린 속도를 가진다는 단점이 있습니다.

 

따라서 TCP 는 파일이나 이미지와 같이 신뢰성이 보장이 필요한 데이터를 전송할때 사용되고 UDP 는 동영상 스트리밍과 같은 데이터를 전송할때 많이 사용됩니다.

 

+ UDP 자체에서 신뢰성을 보장하지 않는거지, UDP 를 커스터마이징해 신뢰성을 보장할 수 있게끔 구현할 수 있습니다. 그 예시로 HTTP3.0 이 있고 최근 네이버에서 이를 도입해 UDP 기반의 매우 빠른 서비스를 제공하고 있음

 

🎯  TCP 의 3/4 way hadnshake 에 대해 설명해라

 

  답변 

더보기

💡 3 way handshake 방식이란 ?

서로의 통신을 위해 port 를 확인하기 위해 3번의 요청이 되는 것을 방식입니다. 

(1) 클라이언트 -> 서버 : 내 말 들려? (SYN)
(2) 서버 -> 클라이언트 : 잘 들려! 내말은 잘 들려? (SYN + ACK)
(3) 클라이언트 -> 서버 : 잘 들려! (ACK)

 

이 과정때문에 TCP 는 시간이 많이 소요됩니다. UDP 방식보다 속도가 느려지는 주요 원인으로 인지됩니다.

 

💡 4 way handshake 방식이란 ?

 

TCP 연결이 종료됐을때 연결을 끊는 방식입니다.

 

(1) 클라이언트 -> 서버 : 나는 요청이 끝났어! 이제 그만 통신하자 (FIN)

(2) 서버 -> 클라이언트 : 알겠워 잠깐만 (ACK)

(3) 서버 -> 클라이언트 : 이제 끊을게 (FIN)

(4) 클라이언트 -> 서버 : 알겠어 (ACK)

 

🎯 GET 과 POST 차이

 

  답변 

더보기

GET 은 데이터를 조회하기 위해 사용되는 방식으로, 데이터를 헤더에 추가해 전송하는 방식입니다. URL 에 데이터가 노출되기 때문에 보안적으로 중요한 데이터를 포함해선 안됩니다.

 

POST 는 데이터를 수정, 추가하기 위해 사용되는 방식으로 데이터를 바디에 추가해 전송하는 방식입니다. 완전히 안전한 것은 아니지만, URL 에 데이터가 노출되지 않아 GET 보단 안전합니다.

 

🎯 HTTP 프로토콜이 무엇인지 설명해보세요.

 

  답변 

더보기

HTTP 란 서버와 클라이언트 사이에서 데이터를 주고 받기 위해 만들어진 프로토콜입니다. HTTP 는 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동합니다. HTTP 는 상태를 가지고 있지 않는 Stateless 프로토콜이며 Method, Path, Version, Headers, Body 로 구성되어 있습니다.

 

https://mangkyu.tistory.com/91

 

🎯 HTTP와 HTTPS의 차이점에 대해서 설명해보세요.

 

  답변 

더보기

HTTP 는 따로 암호화 과정을 거치지 않기 때문에 중간에 패킷을 가로챌 수 있고, 수정할 수 있습니다. 따라서 보안이 취약하짐을 알 수 있습니다. 이를 보안하기 위해 나온것이 HTTPS 입니다. HTTPS 는 중간에 암호화 계층을 거쳐서 패킷을 암호화합니다.

 

🎯 HTTPS에 대해서 설명하고 SSL Handshake에 대해서 설명해보세요.

 

  답변 

더보기

HTTPS 는 HTTP에 보안 계층을 추가한 기능입니다. HTTPS 는 데이터를 암호화해 보안을 강화하며, 웹 사이트 간에 안전한 통신을 가능하게 합니다. 이를 위해 HTTP 는 보통 SSL 또는 TSL 프로토콜을 사용합니다. 

 

SSL Handshake 은 클라이언트와 서버 간에 안전한 통신을 설정하는 과정입니다. 이 과정은 다음과 같은 단계로 이루어집니다.

 

  1. Client Hello (클라이언트 인사): 클라이언트는 서버에게 SSL/TLS 버전 및 암호화 알고리즘 목록을 포함한 Client Hello 메시지를 보냅니다.
  2. Server Hello (서버 응답): 서버는 클라이언트에게 SSL/TLS 버전 및 선택된 암호화 알고리즘을 포함한 Server Hello 메시지를 보냅니다.
  3. 인증 및 키 교환: 서버는 디지털 인증서를 클라이언트에게 제공하여 자신의 신원을 증명하고, 서버에게 공개키를 전달합니다. 클라이언트는 서버의 인증서를 검증하고, 필요하다면 클라이언트의 공개키를 서버에게 전달합니다.
  4. 세션 키 생성: 클라이언트와 서버는 세션 키를 생성하고 이를 암호화하여 서로 교환합니다. 이 세션 키는 통신 동안 데이터를 암호화하고 복호화하는 데 사용됩니다.
  5. 암호화된 통신: 이제 클라이언트와 서버는 서로 암호화된 통신을 시작합니다. 이전 단계에서 교환된 세션 키를 사용하여 데이터를 암호화하고 복호화합니다.

SSL Handshake가 완료되면 클라이언트와 서버는 안전한 통신 채널을 설정하고, 이후의 데이터 전송은 암호화되어 보호됩니다. 이 과정은 HTTPS와 같은 보안 프로토콜에서 중요한 역할을 합니다.

 

🎯 HTTP 메서드와 이것이 하는 역할에 대해서 설명해보세요.

 

  답변 

더보기

HTTP 메서드란 클라이언트와 서버 사이에 이루어지는 요청(Request) 과 응답(Response) 데이터를 전송하는 방식입니다. 서버에 주어진 리소스가 어떻게 수행하길 원하는 행동, 즉 서버가 수행해야할 동작을 지정하는 요청을 보내는 방법입니다.

 

(1) GET : 리소스 조회

(2) POST : 요청 데이터 처리, 주로 등록에 사용

(3) PUT : 리소스 대체 (덮어쓰기), 해당 리소스가 없으면 생성

(4) PATCH : 리소스 부분 변경

(5) DELETE : 리소스 삭제

 

-----------------------------------------------------------------------------------------------------------------

 

(6) HEAD : GET 과 동일하지만 메시지 부분(body)을 제외하고, 상태 줄과 헤더만 반환

(7) OPTIONS : 대상 리소스에 대한 통신 가능 옵션을 설명 (CORS 에서 주로 사용)

(8) CONNECT : 대상 자원으로 식별되는 서버에 대한 터널 설정

(9) TRACE : 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트 실행

 

 

🎯 REST, REST API, RESTful 이란 무엇인지 설명해보세요.

 

  답변 

더보기

Rest란?

 

HTTP URI 를 통해 자원을 표시하고 HTTP Method 를 통해 자원에 대한 처리를 표현합니다. 사람이 읽을 수 있는 API 라는 것이 특징이고 HTTP 를 사용하기 때문에 HTTP 의 특성을 그대로 반영합니다. 또한 별도의 인프라 구축은 필요없습니다.

 

단점으로는 명확한 표준이 존재하지 않는 다는점, RESTFul 를 완전히 만족하는 API 를 만들기는 까다롭습니다. 

 

 

 

🎯 CORS 란 ?

 

  답변 

더보기

브라우저에서는 보안적인 이유로 cross-origin HTTP 요청들을 제한합니다. 그래서 cross-origin 요청을 하려면 서버의 동의하 필요합니다. 만약 서버가 동의한다면 브라우저에서는 요청을 허락하고, 동의하지 않는다면 브라우저에서 거절합니다.

 

이러한 허락을 구하고 거절하는 메커니즘을 HTTP-Header 를 이용해 가능한데, 이를 CORS (Cross-Origin Resource Sharing)라고 부릅니다.

 

즉, CORS 란 cross-origin 요청을 안전하게 할 수 있도록 하는 메커니즘입니다.

 

(orign 은 프로토콜과 포트번호의 포함 여부입니다.)

ex) 도메인 : naver.com

      오리진 : https://www.naver.com/PORT

 

🎯 OSI7 계층과 그 존재 이유, TCP/IP 4 계층에 대해 설명해보세요.

  답변 

더보기

OSI7 과 TCP/IP 4 계층 둘다 데이터 통신을 표현한 계층입니다. 하지만 OSI 7계층은 데이터 통신에 필요한 계층과 역할을 정확하게 정의하려고 한 모델입니다. 그에 반해 TCP/IP 계층은 현재 인터엣에서 사용되는 프로토콜, 좀 더 실무적이면서 프로토콜 중심으로 단순화된 모델입니다.

 

TCP/IP 4 계층 구조는 다음과 같습니다.

 

 

1. 애플리케이션 계층 (사용자와 가장 가까운 계층. 사용자-소프트웨어간 통신 담당)

2. 전송 계층 (통신 노드간 신뢰성있는 데이터 전송을 보장하는 계층)

3. 인터넷 계층 (패킷을 최종 목적지까지 라우팅하는 계층)

4. 네트워크 연결 계층 (데이터를 전기 신호로 변환한 뒤, 물리적 주소인 MAC 주소를 사용해, 알맞은 기기로 데이터를 전달하는 계층)

 

🎯 쿠키(Cookie) 와 세션(Session) 의 차이점에 대해 말해주세요.

 

  답변 

더보기

쿠키는 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일입니다. HTTP에서 클라이언트의 상태 정보를 PC 에 저장했다가 필요시 정보를 참조하거나 재사용할 수 있습니다.

 

세션은 일정 시간동안 같은 사용자로부터 일련의 요구를 하나의 상태로보고, 그 상태를 유지시키는 기술입니다.

 

즉, 방문자가 웹 서버에 접속해 있는 상태를 하나의 단위로 보고 그것을 세션이라 합니다.

 

 

🎯 HTTP Method 와 각각이 사용되는 경우에 대해서 설명해주세요.

더보기

HTTP 메소드는 클라이언트가 서버에게 사용자 요청의 목적을 알리는 '수단' 입니다.

 

 

🎯 GET 과 POST 의 차이에 대해 설명해주세요.

더보기

GET 은 데이터를 조회하기 위해 사용되는 방식으로 데이터를 헤더에 추가하여 전송하는 방식입니다. URL 에 데이터가 노출되므로 보안적으로 중요한 데이터를 포함해서느 안됩니다.

 

POST 는 데이터를 추가 또는 수정하기 위해 사용되는 방식으로 데이터를 바디에 추가하여 전송하는 방식입니다. 완전히 안전하다는 것은 아니지만 URL 에 노출되지 않아 GET 보다는 안전합니다.

 

 

 

🎯 세션 기반 인증과 토큰 기반 인증의 차이에 대해 알려주세요.

 

🎯 JWT 토큰에 대해 설명해주세요.

더보기

JWT JSON 포맷을 이용하는 Claim 기반의 웹 토큰이며, 토큰 자체를 정보로 사용하는 Self-Contained 방식으로 정보를 안전하게 전달합니다.

JWT 는 헤더(Header), 내용 (Payload), 서명(Signature)

 

🎯 대칭키, 비대칭키 암호화 방식에 대해 설명해주세요.

 

🎯 Connection Timeout 과 Read Timeout 차이에 대해 설명해주세요.

더보기

 

 

 

🎯 공인시설 IP 와 사설IP 의 차이에 대해 설명해주세요.