본문 바로가기
면접준비

[기술 면접] 네트워크

by 킹명주 2022. 12. 19.

API를 다루는 백엔드 개발자에게 네트워크 지식은 필수이다. 그래서 네트워크와 관련한 질문을 뽑아보고 실제로 면접에서 들었던 질문을 정리하면서 복습해보자!

 

👉 예상질문

Network

1. (실제질문) https://www.google.com/ 을 접속했을 때 일어나는 일에 대해 설명해주세요.

더보기

1. 가장 먼저 도메인 주소를 DNS(Domain Name System) 서버에 요청하여 URL을 IP주소로 변환합니다.

2. IP주소를 바탕으로 접속하고자하는 서버로 요청을 보내게 됩니다.

3. IP주소가 어떻게 가야할지 경로를 알 수 없으므로 네트워크 장비인 라우터의 라우팅을 통해 어떤 경로를 통해 가야할지 경로를 지정해줍니다.

4. 실질적인 통신을 하기 위해서 ARP를 통해 논리 주소인 IP주소를 물리 주소인 MAC 주소로 변환합니다.

5. 이제 서버와 통신하기 위해 TCP 소켓 연결을 진행합니다. (3-way handshake)

6. 연결이 되었으니, 서버에서 해당 요청이 유효한지 또는 수락할 수 있는지 검사 후 요청에 대한 응답을 전달합니다.

7. 응답을 해석하여 브라우저에 나타냅니다. (서버에서 HTML, CSS, Javascript 등으로 응답)

 

2. TCP와 UDP의 차이점은 무엇인가요?

더보기

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

TCP는 오류 제어, 흐름 제어 등의 신뢰성을 보장하기 위해 3-way handshaking의 과정을 사용합니다. 그러다보니 UDP보다 속도가 느린편입니다. 그러므로 파일 전송과 같이 연속성보다 신뢰성 있는 전송이 중요한 곳에 사용됩니다.

UDP는 신뢰성을 보장하지 않고 비연결형 서비스이기 때문에 TCP보다 속다가 빠릅니다. 즉, 신뢰성보다는 연속성이 중요한 스트리밍 을 사용하는 곳에서 자주 사용됩니다.

 

3. TCP 3, 4 way handshake에 대해서 설명해주세요.

더보기

3-way handshake는 TCP 접속, 4-way handshake는 TCP의 접속 해제 과정입니다.

즉, 3-way handshake는 클라이언트가 서버에 요청을 전송할 수 있는지, 서버는 클라이언트에게 응답을 전송할 수 있는지 확인하는 과정입니다. ( SYN[C to S] -> SYN+ACK[S to C] -> ACK[C to S])

4-way handshake는 클라이언트가 서버에게 연결해제를 통지하고 서버가 이를 확인하고 클라이언트에게 이를 받았음을 전송하면서 접속을 해제하는 과정입니다.

 

4. (실제질문) HTTP와 HTTPS의 차이점은 무엇인가요?

더보기

HTTP와 HTTPS의 차이점은 데이터 암호화입니다. HTTP는 따로 암호화 과정을 거치지 않기 때문에 중간에 패킷을 가로채서 데이터를 확인 및 수정할 수 있습니다. 이를 보안적 측면에서 보완하기 위해 나온 것이 HTTPS입니다. 중간에 암호화 계층을 거쳐 패킷을 암호화하여 HTTP의 문제점을 개선했습니다.

 

5. GET과 POST의 차이점은 무엇인가요?

더보기

GET은 서버에 존재하는 정보를 요청하는 것이고 POST는 서버에 정보 생성을 요청하는 것입니다. 일반적으로 GET은 Request Body를 사용하지 않고, URI 파라미터 또는 request parameter를 활용해서 사용하고 있습니다. 그리고 POST의 경우에는 생성하고자 하는 정보를 Request Body에 담아 전송합니다.

 

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

더보기

GET, POST, DELETE, PUT, PATCH가 대표적인 HTTP 메서드입니다.

GET은 서버에 존재하는 데이터를 요청하는 것입니다.

POST는 서버에 데이터 생성을 요청하는 것입니다.

PUT/PATCH는 서버에 데이터 수정을 요청하는 것입니다. PUT은 데이터 전체를 수정하고자할 때 사용하고 PATCH는 데이터 일부를 업데이트할 때 사용합니다.

DELETE는 서버에 데이터 삭제를 요청하는 것입니다.

 

7. "RESTful하다."의 의미가 무엇이라고 생각하시나요?

더보기

HTTP URI를 통해 자원을 표시하고 HTTP Method를 통해 자원에 대한 처리를 표현하는 것입니다. 

RESTful하게 설게된 API의 특징은 클라이언트가 읽고 URI에 이런 자원이 있겠다 그리고 어떤 요청이 필요하겠다라는 것을 이해할 수 있다는 것입니다.

 

※ 참고

URI(Uniform Resource Identifier): URL를 포함한 개념으로 자원을 식별한다.

URL(Uniform Resource Locator): 자원이 어디에 있는지 알려주기 위한 규약이다.

ex)

http://kingmj.com 은 URL이자 URI이다.

http://kingmj.com/page=1 과같이 query 파라미터를 활용한 경우에는 URI이다. (자원을 식별하는 유일한 주소이므로)

 

8. CORS에 대해서 설명해주세요.

더보기

서로 다른 도메인간에 자원을 공유하는 것을 뜻합니다. 대부분 브라우저에서는 SOP 정책을 준수하기 때문에 때문에 이를 기본적으로 차단합니다.

자바에서는 @OriginCross 또는 WebMVcconfigurer 을 상속받아 해결할 수 있습니다.

 

CORS ERROR가 왜 발생하는가?

SOP(Same-Origin Policy) 정책을 지키지 않았기 때문이다.

 

SOP: 같은 출처(도메인, 프로토콜 등)의 리소스만 공유할 수 있다는 동일 출처 정책

 

9. (실제질문) REST API 통신의 프로토콜과 OSI 7계층 중 어디에 속하는지 설명해주세요

더보기

HTTP 프로토콜을 사용하며 OSI의 응용 계층에 속합니다.

 

10. OSI 7계층과 TCP/IP 4계층에 대해 설명해주세요.

더보기

OSI 7계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈것으로 과정을 단계별로 파악할 수 있기 때문에 문제 발생 시 빠르게 해결이 가능합니다. 7계층은 물리 계층(리피터, 허브) -> 데이터 링크계층(MAC, Ethernet) -> 네트워크 계층(IP, ARP) -> 전송 계층(TCP, UDP) -> 세션 계층(NetBIOS, SSH) -> 표현 계층 (JPEG, ASCII)-> 응용 계층(HTTP, FTP, SMTP, POP3, Telnet ...)으로 구성되어 있습니다.

 

TCP/IP는 TCP/IP 프로토콜 통신 과정에 초점을 두어 OSI 7계층을 단순화 시킨 계층입니다. 4계층은 네트워크 액세스 계층(Ethernet, WIFI) -> 인터넷 계층(IP, ARP) -> 전송 계층(TCP, UDP) -> 응용 계층(HTTP ..)

 

11. (실제질문) HTTP 2.0과 1.1의 차이에 대해 알고있으신가요?

더보기

http 1.1의 경우 기본적으로 연결 당 하나의 요청을 처리하도록 설계되었습니다. 그래서 동시 전송이 불가능하고 요청과 응답이 순차적으로 이루어지고 있습니다.

http 2.0의 경우 멀티플렉스 스트림 방식으로 한 커넥션으로 동시에 여러 개의 메세지를 주고 받을 수 있고 응답은 순서에 상관없이 스트림으로 주고받습니다.

 

12. (실제질문) 쿠키와 세션 그리고 캐시의 차이점에 대해 알고있으신가요?

더보기

쿠키는 웹사이트 접속 시 사용자의 브라우저에 저장되는 작은 텍스트 파일입니다. 그러므로 누구나 쿠키 값을 쉽게 확인 가능하므로 보안성이 낮습니다.

세션은 클라이언트가 아니라 서버에 저장하는 쿠기입니다. 쿠키의 보안성 을 개선한 방식입니다.

캐시는 리소스 파일들의 임시 저장소로 동일한 주소에 연속으로 request를 보내면 이전에 사용했던 결과를 로컬PC의에 임시 저장하여 다음번 호출할 때는 이것을 불러오는 것입니다.

 

13. 유니케스트, 멀티캐스트, 브로드캐스트의 차이점에 대해 알고있으신가요?

더보기

유니캐스트는 1대1 통신으로 송신자와 수신자의 MAC 주소를 알고 있을 때 전달하는 방식입니다.

브로트캐스트는 같은 네트워크에 있는 모든 장비에게 보내는 통신입니다. 수신자가 특정하지 않을 때 사용할 수 있습니다.

멀티케스트는 1대다 통신으로 한번의 송신으로 여러 컴퓨터에 전송하는 방식입니다.

 

14. 폴링, 스프리밍, 소켓의 차이에 대해 설명해주세요.

더보기

폴링은 클라이언트가 지속적으로 request를 보내어 서버가 데이터를 보내는 방식입니다. 구현이 쉽지만 서버의 오버헤드 발생 가능성이 높습니다.

스트리밍 방식은 클라이언트가 request를 보내면 연결을 하고 계속해서 서버가 데이터를 보내는 방식입니다.

소켓은 클라이언트와 서버가 양방향 통신하는 방식으로 실시간 통신이 가능합니다.

 

15. TCP/IP에 대해 설명해주세요.

더보기

TCP/IP란 데이터가 의도된 목적지에 닿을 수 있도록 보장해주는 통신 규약을 말합니다. TCP와 IP 두 가지의 프로토콜로 이루어져 있습니다. 

클라이언트와 서버는 각각 IP 주소를 가지고 지정한 IP 주소에 패킷을 전송합니다. 그러나 IP 프로토콜에는 몇 가지 한계가 있습니다. 먼저 클라이언트에서는 대상 서버가 패킷을 받을 수 있는 상태인지 확인할 수 없습니다. 따라서 받을 대상이 없거나 서비스가 불가능해도(연결이 되지 않은 상태) 패킷을 전송합니다. 또한, 인터넷 망 내 노드에 문제가 생기는 경우 패킷이 안전하게 도달하지 못하거나 전송 순서가 바뀔 수 있습니다(비신뢰성). 이런 문제를 해결해주는 것이 TCP 프로토콜입니다.

 

'면접준비' 카테고리의 다른 글

[기술 면접] 스프링 / 보안  (0) 2022.12.23
[기술 면접] 데이터베이스  (0) 2022.12.22
[기술 면접] 자료구조  (0) 2022.12.21
[기술 면접] 운영체제  (0) 2022.12.20
[기술 면접] 객체 지향 프로그래밍  (0) 2022.12.16