Search
💡

기술 면접 - 네트워크

태그
기술 면접

1. 웹 통신의 흐름

브라우저는 요청을 통해 Http Request Message를 만들고 OS에 전송을 요청한다
이 과정에서 DNS LookUp 과정을 거친다
로컬 DNS 물어봄 → 루트 네임 서버 →TLD 서버 → 네임 서버
요청은 Protocol Stack을 통해 패킷에 담긴다
패킷에 제어 정보를 덧붙여 LAN Adapter에 전송하고 전기 신호로 변환한다.
패킷은 스위칭 허브 또는 각각의 라우터(인터넷 전송용 → 통신사용 → 고속)를 자나 목적지까지 흘러들어간다.
패킷은 목적지 LAN에 도달하고 방화벽이 패킷을 검사한 후 캐시 서버로 보내 Web Server까지 갈 필요가 있는지 검사
필요가 있다면 Web Server에 보내고 도착한 패킷을 Protocol stack이 추출하여 메시지를 복원하고 Application에 넘긴다

2. TCP / UDP 차이

TCP / UDP 둘 다 전송계층에 속한 프로토콜입니다.
이 둘의 차이는
TCP는 연결 지향성, 혼잡제어 흐름제어를하고 신뢰성이 보장됩니다. 하지만 UDP에 비해 느립니다.
UDP는 반대로 비연결 지향성이며 혼잡제어, 흐름제어를 지원하지 않고 신뢰성이 보장되지 않습니다. 하지만 TCP에 비해 빠르다는 장점이 있습니다.

3. TCP 3,4 way handshake

(1) TCP 3 way
클라이언트 쪽에서 연결설정(SYN) 신호를 보냅니다. (open, syn sent)
서버측에서는 연결설정(SYN) 신호와 수신 응답(ACK) 신호를 같이 보냅니다. (syn rcvd)
그러면 클랑리언트쪽에서도 수신 응답 (ACK) 신호를 보냅니다. (established) ← 이상태면 데이터를 상호간 송수신
(2) TCP 4 way
클라이언트 쪽에서 종료 의사(FIN)를 보냅니다.
서버 측에서 수신 응답 (ACK) 신호를 보냅니다.
서버 측에서 종료 의사( FIN)를 보냅니다.
클라이언트쪽에서 수신 응답 신호를 보냅니다.
서버측 상태가 close 됩니다.

4. HTTP와 HTTPS 차이

Http란 클라이언트가 요청 시 서버가 응답하는 단방향 통신입니다.
Http는 암호화 기능 없이 단순 text 형식으로 통신하는데요
이로 인해 중간에 제 3자가 볼 수 있다는 단점이 있으며
HTTP는 신뢰할 수 있는 사이트인지 확인이 불가합니다.
이를 해결하고자 HTTPS를 사용하는데요
HTTP는 HTTP에 암호화를 추가하여 제 3자가 중간에 정보를 볼 수 없고 클라이언트는 신뢰할 수 있는 사이트를 사용할 수 있습니다.
HTTP의 포트는 80번이며 HTTPS 포트는 443번 입니다.

5. GET과 POST 차이

Get 메소드는 리소스를 요청할 때 사용을 합니다.
쿼리스트링으로 리소스를 요청하며 캐싱이 됩니다.
또한 브라우저에 요청이 남아지게 되고 데이터 길이에 제한이 있고 멱등성이라는 특징을 가지고 있습니다.
반면 Post 메소드는 리소스를 생성할때 주로 사용합니다.
Http Body를 통해 리소스를 전달하며 GET 방식과 달리 캐싱되지 않으며 브라우저에도 요청이 남지 않습니다. 또한 데이터 길이의 제한이 없으며 멱등성이라는 특징도 가지고 있지 않습니다.

6. HTTP 메서드와 이것이 하는 역할

주로 사용하는 HTTP 메서드에는
GET, POST, PUT, PATCH가 있습니다.
GET은 주로 리소스를 요청할 때 사용하며 POST는 주로 리소스를 생성할 때 사용합니다.
PUT과 PATCH는 리소스를 변경할 때 사용하며 둘의 차이는 PUT은 리소스 전체에 대해 변경하고자 할때 PATCH는 리소스의 한 부분을 변경하고자 할 때 사용합니다.

7. Restful이란 무엇인가

RESTFUL이란 REST API 설계 규칙을 올바르게 지킨 시스템을 말합니다.
REST API란 HTTP URI로 자원을 명시하고
HTTP Method를 통해 해당 자원에 CRUD 연산을 수행합니다.
REST API 특징
클라이언트 서버 구조
서버측에선 statelessness 상태 (서버측에선 클라이언트에 대한 사전정보와 상태를 저장하지 않는다)
캐시 처리 가능(HTTP 프로토콜을 그대로 사용하므로 웹에서 사용하는 기존의 인프라를 그대로 활용 가능하다)
계층화 (API server는 순수 비즈니스 로직을 수행하고 앞단에 보안, 로드밸런싱 등을 추가하여 구조상의 유연성을 줄 수 있다.)
유니폼 인터페이스 (HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하며, 특정 기술에 종속되지 않는다.)

8. CORS

내 인증정보 같은 민감한 정보들이 다른 사이트 서버로 탈취 당하지 않도록 막는것이 SOP인데
다른 출처간에 리소스를 공유할 수 있도록 하는것을 CORS라고 합니다.
CORS 문제 해결 방법으로는 프론트서버에서 해결하는 방법과 직접 헤더에 설정하는 방법,
또는 spring에서 설정하는 방법이 있습니다.
filter에 추가하여 access-control 확인하는 방법
corsOrigin 애노테이션을 컨트롤러에 붙이는 방법
webMvcConfigurer을 상속받아 coresMapping을 추가하는 방법

9. OSI 7계층과 그 존재 이유

네트워크간의 통신 과정을 물리계층, 데이터링크 계층, 네트워크 계층, 전송계층, 세션계층, 표현계층, 응용 계층으로 총 7개의 계층으로 나눈 것을 말합니다.
그 존재 이유는 복잡한 네트워크 통신에 대한 흐름 파악을 편하게 하기 위해서, 이상 발생 시 그 단계만 고치기 위해 사용됩니다.

10. TCP/IP 계층

실무에서 사용되는 계층으로
네트워크 인터페이스 계층, 인터넷 계층, 전송 계층, 응용 계층으로 이루어져 있습니다.