본문 바로가기

CS/기술면접 예상질문&답변

[CS기술면접] 네트워크 예상 질문&답변 정리

지금 실제 면접에서 질문이 들어와서
내가 직접 말로 대답하는 상황이라 가정하고,
구어체로 간결하게 일목요연하게 작성하기.

Layered Protocol Reference Model

OSI 7 layer에 대해 설명해주세요.

https://cuffyluv.tistory.com/98

더보기

OSI 7 layer은 ISO에서 만든 대표적인 레이어드 프로토콜 참조 모델입니다. 다소 학문적이고 이론적인 성격이 있으며, 현대 네트워크에서는 TCP/IP 모델이 사실상의 표준으로 사용됩니다.

 

OSI 7 layer는 7개의 레이어로 되어 있으며, 위에서부터 응용 계층, 표현 계층, 세션 계층, 전송 계층, 네트워크 계층, 데이터 링크 계층, 물리 계층으로 이루어져 있습니다.

 

OSI 7 layer의 레이어링은 각 레이어를 독립적으로 만들어 줍니다. 따라서, 통신이 일어나는 과정을 단계별로 파악할 수 있고, 특정 계층에 문제가 발생하더라도 다른 계층의 장비 및 소프트웨어를 건드리지 않고, 문제가 발생한 계층만 고치면 되게 되었습니다.

 

결국 이러한 레이어링을 통해 우리는 프로토콜을 더 쉽게 이해하고 설계할 수 있게 되었습니다. 

 

(각 계층에 대한 구체적인 설명은 생략. 여기서 대답하기엔 굳이임.)

TCP/IP protocol suite에 대해 설명해주세요. (또는 TCP/IP model이라고 물어볼 수도 있음)

https://cuffyluv.tistory.com/98

더보기

TCP/IP protocol suite은 인터넷에서 사용되는 프로토콜들의 모음입니다. 실용성에 중점을 두고 개발되었으며, 현대 네트워크에서 사실상의 표준으로 사용됩니다.

 

OSI 7 layer와 달리 5계층으로 이루어져 있으며, 위에서부터 응용 계층, 전송 계층, 네트워크 계층, 데이터 링크 계층, 물리 계층으로 이루어져 있습니다.

 

TCP/IP protocol suite의 레이어링은 각 레이어를 독립적으로 만들어 줍니다. 따라서, 통신이 일어나는 과정을 단계별로 파악할 수 있고, 특정 계층에 문제가 발생하더라도 다른 계층의 장비 및 소프트웨어를 건드리지 않고, 문제가 발생한 계층만 고치면 되게 되었습니다.

 

결국 이러한 레이어링을 통해 우리는 프로토콜을 더 쉽게 이해하고 설계할 수 있게 되었습니다. 

 

(각 계층에 대한 구체적인 설명은 생략. 여기서 대답하기엔 굳이임.)

캡슐화와 역캡슐화에 대해 설명해주세요.

https://cuffyluv.tistory.com/99

더보기

캡슐화는 각 계층에서 데이터에 헤더를 붙여 하위 계층으로 전달해나가며 데이터 구조를 만드는 과정으로, 데이터 송신 측에서 이루어집니다.

헤더에는 네트워크 전송에 필요한 각종 정보들이 들어 있습니다.

 

역캡슐화는 캡슐화된 데이터의 헤더를 제거해 상위 계층으로 전달해나가며 원래의 데이터를 복원하는 과과정으로, 데이터 수신 측에서 이루어집니다.

 

SDU는 특정 계층이 상위 계층으로부터 전달받은 데이터를,

PDU는 특정 계층에서의 현재 데이터 단위를 의미합니다.


HTTP&웹


https://cuffyluv.tistory.com/104

https://cuffyluv.tistory.com/108

HTTP의 개념에 대해 설명해주세요

더보기

HTTP는 월드 와이드 웹 상에서 데이터를 주고받기 위해 사용되는 어플리케이션 레이어의 프로토콜입니다.

클라이언트-서버 모델이며, 웹 브라우저와 웹 서버간의 통신에 사용됩니다.

여기서 웹 페이지는 object들로 이루어져 있기에, HTTP에서도 이런 object들을 주고받게 됩니다.

 

대표적인 HTTP 버전으로는 HTTP/1, HTTP/1.1, HTTP/2, HTTP/3 등이 있으며, 우리가 흔히 사용하는 대부분의 웹사이트들이 HTTP/2 이상을 지원합니다.

 

HTTP는 버전 2 기준으로 TCP 위에서 작동하며, persistent connection 방식을 사용하고, 기본적으로 stateless합니다.

 

HTTP는 버전 2까지 TCP 위에서 작동하는데, 그 이유는 object들이 file 형태로 되어있으니 그 loss를 최소화하기 위함입니다.

그리고 HTTP는 stateless한데, 이는 서버가 클라이언트의 이전 요청에 대한 정보를 유지하지 않는다는 것입니다. 이 때 cookie를 도입하면 일부 정보들에 대해 서버가 stateful하도록 만들 수 있습니다.

또한 HTTP는 1.1 버전부터 persistent conntection 방식을 사용해, 서버는 response를 보낸 후에도 연결을 끊지 않고 유지해둡니다.

HTTP/1 -> HTTP/1.1 -> HTTP/2 발전 과정에 대해 설명해주세요.

더보기

HTTP/1은 non-persistent connection 방식을 사용해, 응답 이후 다음 request를 보내기 위해선 다시 TCP connection을 수립해야 했습니다.

 

이후 발표된 HTTP/1.1은 Persistent connection을 도입해, 서버는 response를 보낸 후에도 연결을 끊지 않고 유지해 두었습니다.

여러 클라이언트들과 최대 6개의 connection을 병행할 수 있었습니다.

또한 piplining을 도입해 response가 오기 전에도 메시지들을 전송할 수 있었고,

손실된 TCP segment들을 재전송하는 Loss recovery 기술이 적용되었습니다.

 

그러나 이러한 HTTP/1.1은 무조건 보낸 순서대로 응답을 받아야 했기 때문에, Head of line blocking 문제가 발생했습니다.

결국 앞에서 큰 사이즈의 object를 받아야 하면, 뒤에 있는 object들은 앞에 꺼 response가 끝날 때까지 대기해야 했습니다.

 

이러한 배경 하에 HTTP/2에서는 모든 데이터를 작은 단위인 프레임으로 쪼개 전송하여, Head of line blocking 문제가 어느정도 완화되었습니다.

앞에 큰 object가 있어도 이를 뒤의 object들과 순차적으로 전송하게끔 바뀌었습니다.

 

HTTP/2는 이 외에도  여러 변경이 있었는데,

HTTP message를 Binary message 형태로 다루었습니다. 거기에 헤더 압축까지 적용해서, 사람이 읽고 이해하기 어렵게 되었습니다.

그리고 스트림에 우선순위를 적용해, 기존에 먼저 도착한 순서대로 response 보내던 방식이 아닌, request의 우선순위에 따라 더 중요한 request에 먼저 response하는 방식을 도입하였습니다.

또한 서버가 아직 request받지 않은 object에 대해서도, 다음번엔 이 object가 request되겠지? 하고 예상해서 알아서 object를 push하는 Server PUSH 방식도 도입하였습니다. 

 

이는 모두 데이터 전송의 효율성 및 성능 최적하를 목표로 한 것이었습니다.

HTTP/3의 등장 배경에 대해 설명해주세요.

더보기

2015년에 발표된 HTTP/2는 한계가 있었습니다. TCP는 복잡하고 시간도 오래걸리는 단점이 있었고, HTTP는 기본적으론 secure한 특성이 없어서 TLS의 도입이 추가로 필요했습니다.

 

따라서, UDP 기반의 자체적으로 secure한 HTTP 버전을 만들어보자는 계획 아래 QUIC이 개발되었고, 이는 2022년 표준화되면서 HTTP/3로 이름이 변경되었습니다.

 

이러한 HTTP/3은 UDP 기반의 빠른 속도를 자랑하면서도, TCP처럼 신뢰성을 가지며 TLS처럼 security를 가집니다. 

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

더보기

HTTP 메시지들은 따로 암호화 과정이 없이 사람이 읽고 이해할 수 있는 아스키 텍스트로 작성됩니다. 따라서 누구든지 패킷을 가로채서 읽고 악용할 수 있습니다. 

 

그런 배경 아래 등장한 HTTPS는 HTTP의 익스텐션으로, HTTP와 TCP 사이에 TLS 또는 SSL이라는 암호화 프로토콜을 추가하여 통신을 secure하게 만들어 줍니다.

 

이제 HTTP 메시지들은 전송되기 전에 암호화되어 전송되고 도착 후에는 복호화됩니다.

이러한 HTTPS는 TLS 연결 수립 시간과  암호화 및 복호화 오버헤드 때문에 이론적으로는 HTTP보다 약간 더 느리나, 오늘날에는 사실상 차이가 없습니다.

stateful와 stateless의 차이점에 대해 설명하세요

SSL(Secure Socket Layer), TLS(Transport Layer Security)가 무엇인가요?

SSL/TLS Handshaking에 대해 설명해보세요

HTTP 메서드와 이것이 하는 역할에 대해서 설명해보세요.(빈출인듯?)

HTTP 상태코드란 무엇이며 어떤 것들이 존재하는지 설명해보시오.(빈출인듯?)

GET과 POST의 차이점에 대해서 설명해보세요.

PUT과 PATCH의 차이에 대해 설명해주세요.

HTTP keep-alive / TCP keep-alive

REST, RESTful이란 무엇일까요?

URL과 URI는 뭐가 다를까?

웹 통신의 큰 흐름: https://www.google.com/ 을 접속할 때 일어나는 일 (빈출인듯?)

 


UDP&TCP


IP


Data link

 

 

 

 

 

 

 

 

 

 

 

 


References

https://github.com/Seongwon97/tech-interview/blob/main/Q&A/Network_Q&A.md

 

tech-interview/Q&A/Network_Q&A.md at main · Seongwon97/tech-interview

면접 준비를 위한 CS 개념 저장소 🧑🏻‍💻. Contribute to Seongwon97/tech-interview development by creating an account on GitHub.

github.com