개발일기

네트워크 질문 본문

면접대비

네트워크 질문

한둥둥 2025. 1. 4. 20:29

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

OPTIONS, HEAD, TRACE가 존재함. => OPTONS, HEAD 정도만 자세히 알아두기 

OPTIONS는 해당 uri에 대해 서버가 허용하는 메서드를 확인할 때 사용한다. 

HEAD는 GET 비슷하나 header만 가져온다. 

 

- GET 요청은 서버에 데이터를 요청하는 것입니다. CRUD에서 R의 역할을 하고 있습니다. 

- POST 요청은 데이터를 생성하는 것을 요청하는 것입니다. CRUD로 따지면 C입니다. 

- PUT 요청은 서버에 존재하는 데이터를 수정하거나 존재하지 않으면 생성한다. CRUD 에서 C,U 역할을 한다. 

- DELETE 요청은 서버에 데이터를 제거 할 것을 요청한다. 존재하지 않아도 동일하게 동작. CRUD에서 D역할 

- PATCH 요청은 서버에 존재하는 데이터를 일부 수정한다. CRUD 따지면 U이다. 

 

Restful란 무엇이고, RESTful하게 API 디자인한다는 것은 무엇인지 설명하세요.

- REST는 Respresentational State Transfer의 약자

- HTTP URI 통해 자원 표시, HTTP Method 통해 자원에 대한 처리를 표현 

 

단점으로 명확한 표준이 존재하지 않는다는 점, RESTful 완전히 만족하는 API를 만들기는 매우 까다롭다는 점입니다. 

 

HATEOS 개념이 있음, 동적인 API를 제공할 수 있음. 즉, 클라이언트가 API 변화에 일일이 대응하지 않아도 된다는 장점을 가짐. 

 

CORS란 무엇이며 이것에 대해서 설명하세요. 

CORS는 웹 개발을 하다가 흔히 만날 수 있는 이슈이다. 

서로 다른 도메인간에 자원을 공유하는 것을 뜻합니다. 대부분의 브라우저에서 이를 기본적으로 차단하여, 서버측에서 헤더를 통해서 사용가능한 자원을 알려줍니다 

 

preflight request는 실제 요청을 보내도 안전한지 판단하기 위해 사전에 보내는 요청입니다. 

OPTIONS 메서드로 요청하며 CORS를 허용하는지 확인합니다. 

CORS가 허용된 웹서버라면 사용 가능한 리소스를 헤더에 담아 응답합니다. 

 

OSI  7계층과 그 존재 이유, TCP/IP 4계층에 대해 설명해보세요. 

OSI 7계층은 네트워크, 통신을 구성하는 요소들 7개의 계층을 표준화 한 것입니다. 

이렇게 표준화하는 것의 장점은 통신이 일어나는 과정을 단계별로 파악할 수 있어, 문제가 발생하면 해당 문제를 해결하기 용이 해진다. 

 

실제로 우리가 대부분 사용하는 네트워크는 TCP/IP 4 계층입니다.  통신에 실제로 사용되는 계층이고 1,2 계층이 1계층 5,6,7계층이 4계층으로 운영된다. 

 

7계층 - 응용 계층  | HTTP , FTP, Telnet, DHCP

6계층 - 표현 계층 | ASCII, MPEG, JPEG

5계층 - 세션 계층 | SSH, TLS, RPC

4계층 - 전송 계층 | TCP, UDP 

3계층 - 네트워크 계층 | IP, ICMP

2계층 - 데이터 링크 계층 | 이더넷, PPP, UART

1계층 - 물리 계층 | 1000BASE-T, RS-232, RS-485

 

웹 서버 소프트웨어(Apache, Nginx)는 OSI 7계층 중 어디서 작동하는지 설명해보세요. 

Apache와 NGINX는 HTTP 웹 서버로, 이들이 동작하는 HTTP 프로토콜은 OSI 7 Layer중 7계층인 애플리케이션 Layer에 해당하는 프로토콜입니다. 

HTTP 프로토콜은 TCP/IP 프로토콜을 통해 동작 

TCP/IP 프로토콜은 OSI 7 Layer중 4게층인 Transport Layer에서 동작 

웹서버 소프트웨어는 4계층의 TCP/IP 프로토콜과 7계층의 HTTP 프로토콜을 활용하여 동작한다. 

 

Layer4 (Transport Layer), 그리고 Layer7 (Application Layer)입니다. 

L4에서는 TCP/UDP 포트 정보를 토대로 라우팅 기능이 제공된다. 

L7에서는 TCP/UDP 뿐만 아니라 HTTP의 URI등을 토대로 라우팅 기능이 제공 

L4에서 라우팅 기능을 사용 한 예시를 들자면, Nginx의 경우 여러 포트들을 하나의 upstream블록으로 묶어서 로드 밸런싱, 즉 특정 경로로 전달되는 요청을 각 포트 별로 분산해서 전달하도록 설정 해 줄 수 있습니다. 

L7에서 라우팅 기능을 사용한 예시를 들자면, Apache, nginx 각각에서 서브 도메인에 대해 라우팅 설정을 해 둘 수 있습니다. 

브라우저에서 /test 와 같은 서브 도메인으로 HTTP 프로토콜을 통한 요청을 보낸다면, 웹서버 내 Config 파일에 설정 된 경로 정보를 토대로 요청에 대한 라우팅을 제공하여 스태틱 파일을 전달하거나 API 서버에 대해 리버스 프록시 역할을 해 줄 수 있다