본문 바로가기

FrontEnd+

네트워크 면접질문 총정리

 

 

 

Get Post 메서드를 비교해주세요


GET과 POST 모두 클라이언트가 서버로 요청을 보낼 때 사용하는 HTTP 메서드입니다.


GET은 CRUD의 R 즉, 리소스의 조회를 할 때 사용하고, POST는 CRUD의 C 즉, 리소스를 생성해서 서버에 저장할 때 사용합니다.

POST의 경우 GET과 달리 바디에 내용을 담아 보낼 수 있어, 단순히 URL로 리소스를 요청하는 GET 뿐만 아니라 대부분의 메서드를 대체할 수 있지만 특별한 경우가 아니라면 각각의 메서드에 맞는 역할로 사용하는 것이 좋습니다.
(POST, GET, PUT, DELETE 이 4가지의 Method를 가지고 CRUD를 할 수 있습니다.)

 

 

 

TCP UDP 방식을 비교해주세요


TCP와 UDP 모두 네트워크 계층 중 전송계층에서 사용하는 프로토콜 입니다.


TCP는 3-way handshaking과정을 통해 연결을 설정해서 신뢰도를 확보해서 순서를 보장하는 대신 속도가 느리고,
UDP는 순서를 보장하지 않고 신뢰도가 낮은 데이터 전송을 하는 대신, 단방향 데이터 전송으로 속도가 빠르다는 차이가 있습니다. 따라서 TCP는 신뢰도가 필요한 HTTP 통신, 이메일 등에 사용되고, UDP는 빠른 속도가 중요한 스트리밍 서비스에 사용됩니다.


TCP: Transmission Control Protocol
UDP: User Datagram Protocol

 

 

HTTP HTTPS를 비교해주세요

 

HTTP는 HyperText Transfer Protocol 의 약자로, 웹상에서 데이터를 주고받을 수 있도록 해주는 프로토콜입니다. 전 세계에 존재하는 제각각의 클라이언트와 서버가 서로 데이터를 주고받을 수 있는 것은, 미리 약속한 HTTP 명세에 따라 통신하기 때문입니다.

 

HTTPS는 이 HTTP에 보안성을 강화한 프로토콜입니다. HTTPS에서는 HTTP 레이어 바로 밑단에 SSL을 추가해서, HTTP 메세지를 TCP로 보내기 전에 먼저 SSL에서 모든 데이터를 암호화해줍니다. 이로써 주고받는 데이터를 암호화하지 않아 공격에 취약한 HTTP와 달리, 데이터의 송수신 과정에서 데이터를 가로채려는 공격 등으로부터 대응할 수 있게 됩니다.

 

 

TCP/IP 프로토콜 4계층을 설명해주세요

 

TCP/IP 프로토콜은 '인터넷 기반의 효율적인 데이터 전송'을 위한 프로토콜의 모음입니다.
가장 상위부터 '응용계층', '전송계층', '인터넷 계층', '네트워크 액세스 계층' 이렇게 4개의 계층으로 나누어집니다.

 

가장 상위의 '응용계층'은 HTTP, FTP 를 예로 들 수 있고, TCP/UDP기반의 응용프로그램을 구현할 때 사용합니다.
바로 그 아래의 '전송계층'은 TCP, UDP를 예로 들수 있고, 통신 노드 간 연결을 제어하고 데이터 전송을 담당합니다.
그 아래의 '인터넷 계층'은 통신 노드 간 IP 패킷을 전송하는 것과 라우팅 하는 기능을 담당합니다.
가장 아래의 '네트워크 액세스 계층'은 네트워크의 하드웨어를 제어를 담당합니다.

 

 

HTTP의 비연결성에 대해 설명해주세요

 

HTTP의 특징 중 하나 비연결성(Connectionless) 은 클라이언트가 보낸 요청에 대해 서버가 응답을 한 후 바로 연결이 끊어지는 특징을 의미합니다. 이러한 비연결적인 특성을 바탕으로 HTTP 무상태성(Stateless) 특징을 띄기도 합니다. 연결이 해제됨과 동시에 서버와 클라이언트는 이전에 요청한 결과에 대해서 잊어버려 '상태'를 유지하지 않는다는 의미입니다.

따라서, 만일 클라이언트가 이전 요청과 같은 데이터를 원한다면, 다시 서버와 연결해서 동일한 요청을 시도해야 합니다.

장점은 서버의 부담을 줄일 수 있다는 점이고, 단점은, 사용자의 상태를 유지시켜줄 수 없다는 점입니다. 따라서 개인화된 사용자 경험을 제공하기 위해서는 쿠키 또는 세션 등이 필요합니다.

 

 

쿠키 세션을 비교해주세요


쿠키와 세션 모두 인증방식 중 하나입니다.

 

쿠키와 세션의 가장 큰 차이점은 정보가 저장되는 위치입니다. 쿠키는 클라이언트 측에서, 세션은 서버 측에 저장되고 관리됩니다.

정보의 특성에 따라, 사용자의 편의를 위하되 지워지거나 가로채거나 했을 때 큰 문제가 생기지 않을 만한 정보들은 쿠키에, 사용자나 다른 누군가에게 노출되어서는 안 되고 서비스 제공자가 직접 관리해야 하는 정보는 세션에 저장하게 됩니다.
모두 세션에 저장하게 된다면 접속자가 많을 때 서버에 부담이 커지므로 개발자의 판단하에 적절하게 분배해서 저장해주어야 합니다.


참고영상: 쿠키, 세션, 캐시가 뭔가요?

 

 

CORS에 대해 설명해주세요


CORS란 Cross-Origin Resource Sharing의 약자로, 출처가 다른 리소스도 공유할 수 있도록 하는 정책을 말합니다.

보안상의 이유로 원칙적으로는 오직 출처가 동일한 리소스만 공유할 수 있습니다. (Same-Origin Policy)
출처가 동일하다는 것은, 스킴, 호스트, 포트가 모두 동일하다는 말입니다. 하지만 웹에서는 출처가 다른 리소스와의 상호작용이 반드시 필요하기 마련입니다. 따라서 CORS 정책을 지키는 리소스 요청이라면 출처가 다르더라도 허용됩니다.

 

클라이언트가 요청메세지의 Origin헤더 해당 출처를 적어보내고, 그 응답으로 서보로부터 받은 응답메세지의 Access-Control-Allow-Origin의 내용을 자신이 보냈던 Origin헤더 내용을 비교해본 후 유효한 응답인지 아닌지를 결정하는 메커니즘으로 동작합니다.

 

 

 

 

Kraken-Addicts/HTTP-The-Definitive-Guide

HTTP/Network Group Study. Contribute to Kraken-Addicts/HTTP-The-Definitive-Guide development by creating an account on GitHub.

github.com