HTTP/네트워크/웹서버 기술면접 예상질문 정리

Janny·2022년 11월 16일
0

기술면접

목록 보기
6/16

CSR 과 SSR 의 차이점에 대해서 설명

웹사이트가 그려지는 과정인 '렌더링'을 '어디서' 하느냐의 차이가 있습니다.

SSR은 서버(백엔드)에서 렌더링을 수행합니다. CSR 은 클라이언트(브라우저;프론트엔드)에서 렌더링을 수행합니다.
SSR은 첫 화면 렌더링 속도가 빠르다는 장점이 있기 때문에 초기 로딩이 빠르고 SEO가 중요한 서비스에 권장됩니다.
CSR은 처음 로딩시간은 길지만 이후 로딩시간은 빠릅니다. 또한 상호작용 측면에서 월등한 UX 제공한다는 장점이 있습니다. 따라서 상호작용이 많은 서비스에 권장됩니다.

GET 메서드와 POST 메서드의 차이점에 대해 설명

HTTP 요청인 GET 메서드는 정보를 조회,POST 메서드는 정보를 생성합니다.

GET메서드는 서버에서 데이터를 조회할 때 쓸 수 있는 메서드 입니다. POST 메서드는 서버에서 데이터를 추가할 때 사용하는 메서드 입니다.
GET 요청은 url에 쿼리 파라미터나 path 파라미터를 이용해 필요한 정보를 전달합니다. POST 요청은 추가하고자 하는 데이터를 HTTP body에 담아 전달합니다.
(추가로 PUT(전체수정),PATCH(부분수정)정보를 수정, DELETE는 삭제할 수 있습니다.)

HTTP 메세지 구조에 대해 설명

HTTP 메세지는 크게 "요청"과 "응답"으로 나뉩니다. 요청(request)은 클라이언트가 서버로 전달해서 서버의 액션이 일어나게하는 메시지고, 응답(response)은 요청에 대한 서버의 답변입니다.

Same-Origin Policy 와 CORS 에 대해서 설명

SOP란 '같은 출처의 리소스만 공유가 가능한 정책'입니다.
CORS란 '교차 출처 리소스 공유'를 의미합니다.

여기서 '출처'란 프로토콜, 호스트, 포트로 이루어져있습니다.
CORS는 특정 외부 출처에게 특정 리소스에 접근할 수 있는 권한을 부여해주는 것 입니다.
서버의 응답 헤더에 'Access-Cotrol-Allow-Origin' 작성 등을 통해 접근 권한을 부여해 줄 수 있습니다.
쿠키를 전송해야 하는 경우 XMLHttpRequest의 withCredentials 를 true 로 설정해야 하고, 서버에서도 "Access-Control-Allow-Credentials" 헤더를 true 로 설정해야만 서버와 클라이언트 간 쿠키 전송이 가능합니다.

IP 프로토콜의 한계에 대해서 설명

IP 프로토콜은 두 사용자가 패킷 교환 방식으로 정보를 주고 받을 때 사용하는 통신 규약으로 그 한계로는 비연결성, 비신뢰성이 있습니다.

인터넷 프로토콜(IP)는 패킷 단위로 통신하며, 패킷을 받을 대상이 없거나 서비스 불능 상태여도 클라이언트는 서버의 상태를 파악할 방법이 없기 때문에 패킷을 그대로 전송하게 됩니다. 이를 비연결성이라고 합니다.

또한 데이터를 전달하던 중 장애가 생겨 패킷이 중간에 소실되더라도 클라이언트는 이를 알 방법이 없습니다. 목적지에서도 패킷의 순서가 바뀌거나 소실된 상태로 도착할 수 있습니다. 이를 비신뢰성이라고 합니다.

이러한 한계는 IP보다 높은 계층인 TCP로 보완 가능합니다. TCP는 전송제어프로토콜로 데이터 전송을 성공하면 이에 대한 응답 돌려주기때문에 IP패킷 한계인 비연결성 보완하고, 패킷이 순서대로 안오면 TCP 세그먼트에 있는 정보를 토대로 다시 패킷전송을 요청 하기 때문에 비신뢰성을 보완해 줍니다.

HTTP 프로토콜의 특징에 대해 설명

HTTP는 클라이언트가 서버에 요청을 보내면 서버는 그에 대한 응답을 보내는 클라이언트 서버 구조로 이루어져 있으며, 무상태성, 비연결성이라는 특징을 갖습니다.

무상태성은 서버가 클라이언트의 상태를 기억하지 않는다는 뜻입니다. 중간에 요청을 처리하는 서버가 바뀌어도 클라이언트가 상태를 기억해서 잘 담아서 요청을 보내면 응답을 제대로 받을 수 있습니다. 즉 필요에 따라 서버를 무한히 증설할 수 있다는 의미입니다. 무상태성이라는 특성 덕에 서버의 무한한 증설이 가능해집니다. (서버 확장성이 높음)

비연결성은 요청과 응답을 주고 받은 후에 서버와의 연결을 끊는 것을 의미합니다. 최소한의 자원으로 서버를 효율적으로 유지할 수 있다는 장점이 있습니다.

쿠키와 세션

둘은 비슷한 역할을 하며, 동작 원리도 유사합니다. 그 이유는 세션도 쿠키를 사용하기 때문입니다. 큰 차이점은 사용자의 정보가 저장되는 위치이다. 쿠키는 서버의 자원을 사용하지 않으며, 세션은 서버의 자원을 사용합니다. 보안 면에서는 서버의 자원을 사용하는 세션이 더 우수합니다. 대신 정보가 서버에 있기 때문에 비교적 속도가 느리다고 볼 수 있습니다. 쿠키는 클라이언트 로컬에 저장되기 때문에 보안은 취약하지만 속도가 빠르다는 장점이 있습니다.
라이프 사이클은 쿠키도 만료기간이 있지만, 파일로 저장되기 때문에 브라우저를 종료해도 정보가 유지될 수 있습니다. (만료기간을 지정해 그 기간까지 유지할 수도 있습니다.) 반면에 세션도 만료기간을 정할 수 있지만, 브라우저가 종료되면 그와 상관없이 삭제됩니다.

쿠키와 세션을 적절한 요소 및 기능에 병행해서 사용합니다.

profile
🐣병아리 개발자의 기록을 위한 공간

0개의 댓글