[SW 기술 면접] 네트워크(전산 기본, TCP/UDP, HTTP, 웹, Spring)

딱지의겨울

·

2021. 6. 9. 17:38

📌 전산 기본

🔹 OST 7계층에 대해서 설명해 주세요. 

  • OSI 7 계층은 통신 접속에서 완료까지의 과정을 7단계로 정의한 국제 통신 표준 규약입니다. 
  • 하위 계층: 물리 / 데이터링크 / 네트워크, 상위 계층: 전송 / 세션 / 표현 / 응용 
  • 물리 계층전송하는데 필요한 기능을 제공하고 장비로는 통신 케이블허브가 존재. 
  • 데이터 링크 계층송수신을 확인하고, MAC Address를 가지고 통신하며 장비로는 브릿지스위치가 존재. 
  • 네트워크 계층패킷을 네트워크 간의 IP를 통하여 데이터를 전달하고 경로 설정, 트레픽 제어 등을 수행합니다.  장비로는 라우터. 
  • 전송 계층은 상위 3계층과 하위 3계층의 인터페이스를 담당하고 두 호스트 시스템으로부터 발생하는 데이터의 흐름을 제공합니다. 
  • 세션 계층은 통신 시스템 간 사용자간의 연결을 유지 및 설정힙니다. 
  • 표현 계층은 세션 계층과 응용 계층 간의 데이터를 알맞게 변환하는 기능을 합니다. 
  • 응용 계층은 사용자가 네트워크에 접근할 수 있도록 서비스를 제공합니다. 

🔹 TCP/IP 4계층에 대해서 설명해 주세요.

  • LINK 계층
    • 물리적인 영역의 표준화에 대한 결과. 가장 기본이 되는 영역으로 LAN, WAN, MAN 과 같은 네트워크 표준과 관련된 프로토콜을 정의하는 영역. 
  • IP 계층
    • 경로 검색을 해주는 계층. IP 자체는 비연결지향적이며 신뢰할 수 없는 프로토콜이다. 데이터를 전송할 때마다 거쳐야 할 경로를 선택해 주지만, 그 경로는 일정치 않음. 경로 재설정 과정에서 데이터에 대한 오류 발생에 대한 대비가 되어있지 않은 프로토콜
  • TCP/UDP 계층
    • 데이터의 실제 송 수신을 담당함. UDP는 TCP에 비해 상대적으로 간단하고, TCP는 신뢰성 있는 데이터의 전송을 담당함. TCP는 데이터가 순서에 맞게 전송이 갔는지 확인 절차를 걸쳐서 신뢰성을 부여한 프로토콜. 
  • APPLICATION 계층
    • 프로그램의 성격에 따라 데이터 송수신에 대한 규칙들이 정해지기 마련인데 이를 가리켜 Application 프로토콜 이라고 함.

🔹 DNS가 무엇인가요?

  • IP 주소를 사

🔹 도메인 이름으로 실제 IP를 어떻게 찾을 수 있는 지 흐름을 설명해 주세요. 

  • 웹 프라우

 

📌 TCP/UDP

🔹 TCP와 UDP의 차이에 대해서 설명해주세요.

  • TCP: 연결형 서비스가상 회선 방식을 제공하고 3-way-handshaking 과정을 통해 연결을 설정하고 4-way-handshaking을 통해 해제합니다. TCP는 높은 신뢰성을 보장하기 위해 3-way-handshaking 기능 등을 하기 때문에 UDP 보다 속도가 느립니다. 그래서 연속성보다 신뢰성 있는 전송이 중요할 때 사용하는 프로토콜입니다. 
  • UDP: 비연결형 서비스데이터를 데이터그램 단위로 처리하는 프로토콜. 데이터를 주고받을 컴퓨터끼리 직접 연결하고자 할 때 UDP를 사용합니다. TCP에 비해 속도는 빠른 편이기 때문에 데이터 유실이 일어나도 큰 상관이 없는 스트리밍이나 화면 전송에 사용됩니다. 

🔹 TCP 헤더에 대해 설명해주세요. 

  • 웹 프라우

🔹 MTU가 무엇인가요?

  • 웹 프라우

🔹 3-way hand shake 가 무엇인가요?

  • TCP에서 클라이언트와 서버가 데이터 전송 준비가 되었다는 것을 보장하고, 실제로 전달이 시작되기 전에 다른 쪽이 준비된 것을 알리는 역할. 
  • (1) 클라이언트는 서버에 접속을 요청하는 SYN 패킷을 보냄. 클라이언트는 응답을 기다리는 SYN_SENT 상태가 됨. 
  • (2) 서버는 SYN 요청을 받고 클라이언트에게 요청을 수락한다는 ACK 와 SYN flag 패킷을 발송. 서버는 SYN_RECIEVED 상태가 됨. 
  • (3) 클라이언트는 서버에게 ACK패킷을 보내 데이터 송수신 상태가 됨.  

🔹 4-way hand shake 가 무엇인가요?

  • TCP에서 세션을 종료하기 위해 수행되는 절차. 
  • (1) 클라이언트가 연결을 종료하겠다는 FIN플래그 전송. 
  • (2) 서버는 확인 메시지를 보내고 자신의 통신이 끝날때까지 기다림. 
  • (3) 서버가 통신이 끝났으면 연결이 종료되었다고 클라이언트에게 FIN 패킷을 전송. 
  • (4) 클라이언트는 확인 메시지를 보냄. 

 

📌 HTTP

🔹 HTTP 프로토콜에 대해서 아는대로 말해주세요.

  • Hyper Text Tranfer Protocol의 약자로 TCP/IP를 이용하는 응용 프로토콜. 
  • 연결 상태를 유지하지 않는 비연결성 프로토콜. 

🔹 HTTP와 HTTPS 의 차이는 무엇인가요?

  • HTTP는 암호화가 추가되지 않았기 때문에 보안에 취약한 반면, HTTPS는 안전하게 데이터를 주고받을 수 있도록 암호화/복호화 과정이 포함되어 속도가 HTTP 보다 느림. 

🔹 HTTPS가 동작하는 방식에 대해서 설명해 주세요.

  • d

🔹 HTTP 1.0과 1.1의 차이는 무엇인가요?

  • d

🔹 HTTP 2와 그 특징에 대해서 설명해 주세요. 

  • d

🔹 HTTP 헤더의 구조에 대해서 설명해 주세요.

  • d

🔹 keep-alive 헤더에 대해서 설명해 주세요.

  • HTTP 기본 구조를 바탕으로 맺어진 소켓 연결이 종료된 시점부터 웹서버에 정의된 Keep alive Timeout까지 기존 연결을 유지하는 기능. 
  • 즉, 정의된 Timeout 내에 새로운 HTTP 요청이 발생한다면 연결을 유지하고 그렇지 않다면 연결을 끊는 기능. 

🔹 HTTP GET과 POST의 차이는 무엇인가요?

  • GET method는 웹 브라우저에서 웹 서버에 스트링 형태로 데이터를 전달하여 요청하는 방식이다. 
  • GET은 쿼리 스트링이 그대로 보여지기 때문에 보안성이 취약하지만 POST에 비해 상대적으로 속도가 빠른 장점이 있다. 
  • POST는 웹 브라우저가 웹 서버에 데이터를 전달할 때 사용하며, 주로 대용량 데이터 전달할 때 사용된다. 
  • 주소창에 전송하는 데이터의 정보가 노출되지 않아 보안성이 높고, 스트링 뿐만 아니라 객체들의 값도 전송할 수 있다는 장점이 있다. 

🔹 쿠키와 세션에 대해서 설명해 주세요.

  • HTTP의 비연결성이라는 특성 때문에 웹 페이지에 머물고 있는 사용자의 상태를 지속시키기 위해 쿠키와 세션을 사용한다. 
  • 세션은 사용자의 

 

📌 WEB

🔹 웹 브라우저에서 서버로 요청했을 때, 흐름을 설명해 주세요. 

  • 웹 프라우저에서 요청을 보내면 DNS를 조회하여 ip와 port 정보를 가져오고 HTTP 요청 메시지를 생성함. 
  • SOCKET 라이브러리를 통해 TCP/IP로 3 way handshake를 실행 서버와 연결함. 
  • 운영체제 TCP/IP 계층으로 데이터 전송을 하기 위해 데이터를 전달함. 
  • HTTP 메시지가 포함된 TCP/IP 패킷을 생성함. 
  • 패킷 정보가 인터넷으로 보내짐. 
  • 서버에 요청 패킷이 도착하여 패킷 껍데기는 버리고 HTTP 메시지를 서버가 해석
  • HTTP 응답 메시지를 마찬가지 방식으로 패킷을 생성하여 응답 패킷을 전달. 
  • 응답 패킷이 도착하면 웹 브라우저가 HTML 랜더링하여 화면에 보여줌. 

 

🔹 CROS란 무엇인가요?

  • 추가적인 HTTP header를 사용해서 애플리케이션이 다른 origin의 리소스에 접근할 수 있도록 하는 메커니즘을 말함. 하지만 다른 origin에서 내 리소스에 함부로 접근하지 못하게 하기 위해서 사용됨. 
  • 내가 서비스 하고 있지 않은 사이트에서 세션을 요청해 세션을 획득하는 요청을 막고 내가 허용한 origin들만 요청할 수 있도록하기 위해 필요함. 

 

🔹 웹 서버웹 어플리케이션 서버(WAS)의 차이는 무엇인가요?

  • 웹 서버는 정적인 컨텐츠를 제공하는 서버이고, 웹 어플리케이션 서버는 DB 조회 등 동적인 컨텐츠를 제공하는 서버입니다. 
  • 웹 어플리케이션 서버 앞에 웹 서버를 둬서 정적인 컨텐트를 처리하고, WAS는 애플리케이션의 로직만 수행하도록 기능을 분배하여 서버의 부담을 줄일 수 있습니다. 

 

🔹 REST

  • HTTP URI를 통해 자원을 명시하고, HTTP METHOD (POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD 연산을 적용하는 것을 의미함.
  • HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하고, 별도의 인프라를 구축할 필요가 없다는 장점이 있다. 

 

🔹 REST API 

  • REST 기반으로 서비스 API를 구현한 것. 
  • HTTP를 지원하는 프로그램 언어로 클라이언트와 서버를 구현할 수 있음

 

🔹 RESTful 하게 API를 디자인 한다는 것.

  • 이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것.
  • 동일한 URI의 행위에 맞게 POST, GET, DELETE, PATCH 등의 메소드를 사용
  • URI Path에 불필요한 파라미터를 넣지 않음. 단계를 심플하게 설계함. 

 

🔹 API Gateway란 무엇인가요?

  • 서비스로 전달되는 모든 API 요청의 관문 역할을 하는 서버시스템의 아키텍처를 내부로 숨기고 외부의 요청에 대한 응답만을 적절한 형태로 응답합니다. 
  • 클라이언트 요청을 일괄적으로 처리할 수 있고, 전체 시스템의 부하를 분산 시키는 로드 밸런서의 역할을 할 수 있다는 장점이 있습니다. 

 

🔹 API Gateway가 다운되면 모든 API를 사용 못할지도 모르는데, 어떤 방안을 마련해야 할까요?