백엔드 면접 스크립트 - Network

2022. 10. 21. 01:31·BE Study
반응형

NETWORK 관련

1. www.naver.com을 주소창에 검색할때 내부적인 작동에 대해 설명해보세요.  

대기열, 캐싱, DNS, ARP, 초기연결

대기열, 캐싱, DNS, ARP, 초기연결을 거쳐 contents를 다운받게 되고 이후 브라우저 렌더링 과정을 거쳐 화면에 naver가 나오게 됩니다. 또한 이러한 과정은 비캡슐화, 캡슐화 등의 과정을 거쳐 이루어 집니다.

👉 자세한 설명

 

2. TCP와 UDP의 차이점에 대해 설명해보세요.

TCP ( 신뢰성보장, 속도 느림, 연결지향, 1:1 ) / UDP (연속성보장 ,속도 빠름, 데이터그램, 1:N )

TCP는 연결 지향형 프로토콜이고 UDP는 데이터를 데이터그램단위로 전송하는 프로토콜입니다.

TCP는 가상회선을 만들어 신뢰성을 보장하도록 하는 절차(흐름 제어, 혼잡 제어, 오류 제어)가 있지만 해당 절차가 없는 UDP에 비해 속도가 느립니다. 그러므로 TCP는 신뢰성이 요구되는 서비스에 사용되고 UDP는 스트리밍과 같이 연속성이 중요시 되는 서비스에 사용됩니다.

(하지만, UDP도 추가적인 정의를 통해 신뢰성을 보장받을 수 있다)

 

3. TCP 3, 4 way handshake에 대해 설명해보세요.

TCP가 가상회선을 만들고(3 way handshake), 제거하는 과정(4 way handshake)

TCP 3way handshake는 가상회선을 수립하는 단계로 클라이언트는 서버에 요청을 전송할 수 있는지, 서버는 클라이언트에게 응답을 전송할 수 있는지 확인합니다. SYN, ACK 패킷을 주고 받으며, 임의의 난수로 SYN 플래그를 전송하고, ACK 플래그에게는 1을 더한값을 전송합니다.

TCP 4way handshake는 TCP연결을 해제하는 단계로, 클라이언트는 서버에게 연결해제를 통보하고 서버가 이를 확인하고 다시 클라이언트에게 이를 받았음을 전송하고나서 최종적으로 연결이 해체됩니다. 여기서 서버에서 소켓이 닫혔다고 통지를 해도 클라이언트는 일정시간 대기를 하는데 이는 혹시나 이후에 도착할 수 있는 패킷을 받기위함이다.

 

4. HTTP(Hypertext Transfer Protocol) 프로토콜에 대해 설명해보세요.

기기 간의 통신은 서로 교환되는 데이터의 형식에 대하여 상호 합의를 요구합니다.
이러한 형식을 정의하는 규칙의 집합을 프로토콜이라 합니다.

인터넷 상에서 데이터를 주고 받기 위한 서버 / 클라이언트 모델을 따르는 프로토콜(조약) 입니다. 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동합니다. HTTP는 어떠한 종류의 데이터도 전송할 수 있도록 설계되었습니다.

 

5. HTTP 상태 코드에 대해 설명해보세요.

주요 상태 코드 200, 404, 503

200 : OK, 요청이 성공적으로 되어, 요청에 따른 응답이 반환된다.

404 : 서버가 요청받은 리소스를 찾을 수 없는 상태이다. 브라우저에서는 알려지지 않은 URL을 뜻한다.

503 : 서버가 요청을 처리할 준비가 되지 않은 상태이다. 유지 보수를 위해 작동이 중단되거나 과부하가 걸린 서버의 경우 발생한다.

* 100번대 ~ 500번대 상태 코드의 대략적 의미

- 1xx (정보) : 요청받았으며, 프로세스가 계속 진행된다.

- 2xx (성공) : 요청을 성공적으로 받았으며 인식했고 수용한다.

- 3xx (리다이렉션) : 요청 완료를 위해 추가 작업 조치가 필요하다.

- 4xx (클라이언트 오류) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없다.

- 5xx (서버 오류) : 서버가 명백히 유효한 요청에 대해 충족을 실패했다.

 

6. HTTP와 HTTPS의 차이점에 대해 설명해보세요.

HTTP프로토콜의 암호화

HTTP는 따로 암호화 과정을 거치지 않기 때문에 중간에 패킷을 가로챌 수 있고, 수정할 수 있습니다. 따라서  이를 보안하기 위해 나온것이 HTTPS입니다. 우선 HTTPS는 내가 사이트에 보내는 정보들을 제 3자가 못보게 해주고, 접속한 사이트가 믿을 만한 곳인지 알려줍니다. 클라이언트에서 서버를 아직 신뢰 하지 못하는 서버와 handshake를 통해 connetion이 되고, 이 과정에서 클라이언트는 서버로부터 인증서를 받게 되고 해당인증서를 가지고 공인인증기관에 인증이 되면 서버의 공개키를 갖게 되는 것이다. 해당 공개키를 이용하여 서버로부터 대칭키를 받고 해당 대칭키를 통해 안전한 데이터 교환이 가능해진다.

 

7. HTTPS와 SSL Handshake에 대해 설명해보세요.

인증, 공개키 암호화, 비밀키 암호화

HTTPS는 HTTP에 보안 계층을 추가한 것입니다. HTTPS는 제3자 인증, 공개키 암호화, 비밀키 암호화를 사용합니다.

제3자 인증은 믿을 수 있는 인증기관에 등록된 인증서만 신뢰하는 것이고, 공개키 암호화는 비밀키를 공유하기 위해 사용합니다. 비밀키 암호화는 통신하는 데이터를 암호화하는데 사용합니다.

클라이언트는 TCP 3way handshake를 수행한 이후 Client Hello를 전송합니다. 서버는 인증서를 보냅니다.(다른 정보들도 전송하나 검색을 통해 알 수 있는 부분입니다. 대개 그 정도까지는 요구하지 않습니다.)

클라이언트는 받은 인증서를 신뢰하기 위해서 등록된 인증기관인지 확인합니다. 이 인증서는 인증기관의 개인키로 암호화되어있고, 공개키로 검증할 수 있습니다.(브라우저에 내장되어있음) 클라이언트는 사이트의 정보와, 서버의 공개키를 얻을 수 있습니다.

서버의 공개키로 통신에 사용할 비밀키를 암호화해서 서버에 보냅니다. 서버는 이를 개인키로 확인하고 이후 통신은 공유된 비밀키로 암호화되어 통신합니다.

제3자 인증: 인증서, 인증기관/공개키 암호화: 인증서, 비밀키 공유/비밀키 암호화: 통신과정

왜 공개키 암호화와 비밀키 암호화를 복합적으로 사용했는지도 질문을 받았습니다.

 

8. GET과 POST의 차이점에 대해 설명해보세요.

GET, POST, PUT, PATCH, DELETE 등 요청 방식의 차이

우선 GET요청은 클라이언트에서 서버로 어떠한 리소스의 정보를 요청하기 위해 사용되는 Method 입니다. 즉, 서버에서 어떤 데이터를 가져와서 보여줄 때 값이나 내용, 상태 등을 바꾸지 않는 경우에 사용합니다.

POST요청은 리소스를 생성 / 업데이트하기 위해 서버에 데이터를 보내는데 사용되는 Method 입니다.

주된 차이점은 GET요청은 Body가 있고, 캐시에 저장이 가능하지만 POST 요청은 그렇지 않습니다.

(PUT은 데이터를 통째로 변경할때, PATCH는 데이터 중 일부를 변경할 때)

 

9. RESTfull이란 무엇이며, 이것에 대해 설명해보세요.

REST(Representational State Transfer)란 자원 기반의 구조 설계에서 HTTP Method 를 통해 중심에 있는 Resource 를 처리하도록 설계된 아키텍처를 의미한다

Software간 또는 Hardware간의 지정된 형식으로 요청, 명령을 받을 수 있는 수단을 API(Application Programing Interface)라 하고, REST는 URI와 HTTP method를 이용하여 객체화된 서비스에 접근하는 아키텍처를 의미합니다. 이 둘의 합성어인  RESTfull API는 REST 아키텍처를 준수하는 API라는 뜻으로 해석할수 있습니다. RESTfull API에서는 HTTP method 중 GET, POST, DELETE, PUT 이 4가지나 PATCH를 포함한 5가지의 method를 사용하여 요청을 보냅니다. 이렇게 지정된 메서드를 통해 데이터 요청을 하는 행위 뿐 아니라, URI는 동사가 아니라 명사로 해야한다 또는 URI path에는 불필요한 파라미터를 넣지 않아야 한다 등의 제약을 지키는것이 RESTfull API라 할 수 있습니다.

 

10. CORS란 무엇이며 이것에 대해 설명해보세요.

Cross Origin Resource Sharing

서로 다른 도메인간에 자원을 공유하는 것을 뜻합니다. 대부분의 브라우저에서는 이를 기본적으로 차단하며, 서버측에서 헤더를 통해서 사용가능한 자원을 알려줍니다. 만약 어떤 서버가 naver.com에만 cross origin domain 요청을 허용해줬다고 하면, naver는 OPTIONS라는 preflight request를 통해서 서버에 CORS origin에 대한 request 정보를 확인하고 그 다음에 browser가 자동으로 OPTIONS 라는 요청으로 서버에 보내서 cross origin 요청에 대한 허가를 받은 다음 다시 POST, GET 요청을 보내는 방식으로 cross origin 요청을 진행하게 된다.

preflight request는 실제 요청을 보내도 안전한지 판단하기 위해 사전에 보내는 요청입니다. OPTIONS 메서드로 요청하며 CORS를 허용하는지 확인합니다. CORS가 허용된 웹서버라면 사용 가능한 리소스를 헤더에 담아 응답합니다.

 
 

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

OIS7 계층은 네트워크 통신을 구성하는 7개의 요소들을 계층으로 표준화 한 것입니다. 이렇게 표준화하는 것은 통신이 일어나는 과정을 단계별로 파악할 수 있고, 문제가 발생하면 해당 문제를 해결하기 용이하기 때문입니다.

반응형
저작자표시 (새창열림)

'BE Study' 카테고리의 다른 글

백엔드 면접 스크립트 - Node.js  (0) 2022.12.06
백엔드 면접 스크립트 - Database  (0) 2022.11.15
백엔드 면접 스크립트 - 운영체제  (0) 2022.10.21
브라우저에서 네이버를 검색하고 화면이 출력 될 때 까지 내부적인 동작 (DNS 작동)  (0) 2022.10.13
BE road map  (0) 2022.09.23
'BE Study' 카테고리의 다른 글
  • 백엔드 면접 스크립트 - Database
  • 백엔드 면접 스크립트 - 운영체제
  • 브라우저에서 네이버를 검색하고 화면이 출력 될 때 까지 내부적인 동작 (DNS 작동)
  • BE road map
OverFlowBIN
OverFlowBIN
    반응형
  • OverFlowBIN
    OverFlowBIN BE Tech Blog
    OverFlowBIN
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 전체보기
      • Computer Science
      • BE Study
      • MySQL
      • Algorithm
      • Language
        • TypeScript
        • JavaScript
        • Python
        • JAVA
      • Spring Boot
      • Programing Tool
      • Group Study
      • HTTP
      • Node
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Google Cloud
    논리연산자
    일급함수
    이진검색
    단축평가
    app engine
    동작원리
    기술면접
    코딩테스트
    의존성 주입
    이분탐색
    Spring
    node.js
    일급 함수
    algorithm
    javascript
    httpie
    게시판 만들기
    bootstrap
    Nullish
    backend
    thymeleaf
    백엔드
    python #내장함수 #자료구조
    axios
    spring boot
    MongoDB
    back-end
    Java
    programers
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
OverFlowBIN
백엔드 면접 스크립트 - Network
상단으로

티스토리툴바