GitHub – ksundong/backend-interview-question: 백엔드 개발자 입사를 준비하면서 받은 질문, 기대되는 품질
백엔드 개발자로 입사 준비하면서 받은 질문, 예상 질문, 웹상 질문(CC BY-NC) – GitHub – ksundong/backend-interview-question: 백엔드 개발자로 입사 준비하면서 받은 질문 백엔드 개발자, 예상 질문이 있습니다.
github.com
Github의 “CS 관련 지식”에 대해 회로망 관련 질문을 링크하여 직접 만들 수 있는 간단한 답글입니다.
https://www.google.com을 방문하면 어떻게 되나요?
1. 사용자가 브라우저에 www.google.com을 입력합니다.
2. 브라우저는 4개의 다른 캐시에서 DNS 항목을 확인합니다.
1) 브라우저 캐시
2) OS 캐시(운영 체제의 캐시)
3) 라우터 캐시(라우터만 생각)
4) ISP 캐시(ISP == 인터넷 서비스 공급자)
3. 2-4)를 모두 확인하여도 IP 주소를 찾을 수 없는 경우 ISP의 DNS 리졸버 DNS 조회를 수행합니다.
1) 루트 서버
2) TLD 서버
3) 네임서버
4. www.google.com에서 IP 주소는 DNS 확인자에게 반환되고 웹 브라우저는 해당 IP 주소로 응답합니다.

5. 브라우저는 TCP/IP 프로토콜을 사용하여 서버에 연결합니다. – 3방향 핸드쉐이킹
6. 웹 브라우저가 서버에 연결되면 페이지의 내용을 요청하기 위해 서버에 HTTP 요청을 보냅니다.
7. 서버는 요청을 처리하고 HTTP 응답을 생성하여 웹 브라우저로 보냅니다.
8. 웹 브라우저는 수신된 콘텐츠를 렌더링합니다.
TCP와 UDP의 차이점을 설명하시오.
- 전송 제어 프로토콜(TCP)
– 패키지 사이의 순서를 확인하십시오.
– 연결 지향 프로토콜을 사용하여 연결이 설정되고 수신 확인을 위해 신뢰성이 설정됩니다(3-way handshaking).
-‘가상 회선을 위한 패킷 스위칭 방법‘.
– 이메일, 파일 전송 및 웹 브라우징과 같은 매우 안정적인 애플리케이션에 사용됩니다. - 사용자 데이터그램 프로토콜(UDP)
– 주문이 보장되지 않으며 수령이 확인되지 않습니다. (데이터가 전송되기 전에 연결도 설정하지 않음)
– 그냥 날짜를 줘’데이터그램 패킷 교환‘.
– TCP보다 빠르기 때문에 온라인 게임, 스트리밍과 같은 실시간 응용 프로그램에 사용됩니다.

– 가상 회선에 대한 패킷 교환 절차: 각각의 패킷에는 Virtual Circuit Identification Number(VCI: Virtual Cricuit Identifier)가 포함되어 있으며 모든 패킷이 전송되면 가상 회선이 해제되고 패킷은 보낸 순서대로 도착합니다.
– 데이터그램 패킷 교환 : 패킷은 최적의 경로를 선택하여 독립적으로 이동합니다. 여러 패킷이 서로 다른 경로를 통해 전송될 수 있으며 도착 순서와 전송 순서가 다를 수 있습니다.
TCP 3, 4방향 핸드셰이크에 대해 설명하십시오.
3-way handshake: TCP 연결 설정 과정

1. SYN 단계
클라이언트는 클라이언트의 ISN이 포함된 서버에 SYN을 보냅니다. ISN은 새로운 TCP 연결의 첫 번째 패킷에 할당된 임의의 시퀀스 번호를 나타냅니다.
2. SYN + ACK 단계
서버는 클라이언트의 SYN을 수신하고 서버의 ISN을 전송하며 클라이언트의 ISN + 1을 인증 번호로 전송합니다.
3. ACK 단계
클라이언트는 서버의 ISN + 1 확인 번호와 함께 ACK를 서버로 보냅니다.
이 3방향 핸드셰이크 프로세스가 끝나면 안정성이 설정되고 데이터 전송이 시작됩니다.
4방향 핸드셰이크: TCP 연결 종료 프로세스

- 1: 클라이언트가 연결을 끊고자 할 때 먼저 FIN으로 설정된 세그먼트를 보냅니다. 그런 다음 클라이언트는 FIN_WAIT_1 상태로 들어가고 서버의 응답을 기다립니다.
- 2단계: 서버는 ACK라는 승인 세그먼트를 클라이언트에 보냅니다. 그리고 CLOSE_WAIT 상태가 됩니다. 클라이언트가 세그먼트를 수신하면 FIN_WAIT_2 상태가 됩니다.
- 3: 서버는 ACK를 보내고 일정 시간 후에 FIN이라는 세그먼트를 클라이언트로 보냅니다.
- 4단계: 고객 시간이 기다립니다 상태를 확인하고 서버에 다시 ACK를 보내면 서버가 CLOSED 상태가 됩니다. 클라이언트가 일정 시간 대기한 후 연결이 닫히고 모든 클라이언트 및 서버 리소스의 연결이 끊어집니다.
시간이 기다립니다 : 소켓이 바로 사라지지 않고 일정시간 유지되는 상태(유지시간은 운영체제별로 조금씩 다름)
– 늦은 패키지의 경우 : 택배가 늦게 도착하여 처리가 불가능한 경우 데이터 무결성문제 발생
– 두 장치가 연결을 닫았는지 확인하십시오. : LAST_ACK 상태에서 닫히면 새로운 연결을 시도할 때 연결 오류가 발생합니다.
HTTP와 HTTPS의 차이점을 설명하십시오.
HTTP는 HTML 문서와 같은 리소스를 검색하는 데 사용할 수 있는 프로토콜입니다. HTTP는 웹상의 모든 데이터 교환의 기반입니다. *클라이언트-서버 프로토콜와서 해 (*수신자 측에서 요청을 시작하는 프로토콜)
- 무국적자
- 비연결

HTTPS는 TCP를 통해 전 세계 인터넷 구석구석에 암호화되지 않은 HTTP 메시지를 보내는 대신 TCP를 통해 HTTP 메시지를 보내기 전에 먼저 HTTP 메시지를 암호화합니다. 암호화하다 보안 계층보내다
HTTPS 및 SSL 핸드셰이크에 대해 설명하십시오.
- HTTPS: 애플리케이션 계층과 전송 계층 사이의 신뢰 계층입니다. SSL/TLS 레이어를 사용한 신뢰할 수 있는 HTTP 요청말한다
- SSL(Secure Socket Layer)/TSL(Transport Layer Security Protocol): 전송 계층에서 보안을 제공하는 프로토콜입니다.
클라이언트와 서버가 통신할 때, 제3자가 메시지를 듣거나 조작하는 것을 방지합니다. - SSL 핸드셰이크는 보안 세션을 생성합니다.

1. “클라이언트 안녕하세요” 메시지 : 클라이언트는 서버에 “hello” 메시지를 전송하여 핸드셰이크를 시작합니다. 이 메시지에는 클라이언트에서 지원하는 TLS 버전, 지원되는 암호화 제품군 및 “client random”이라는 임의 바이트 시퀀스가 포함됩니다.
2. “서버 안녕하세요” 메시지: 클라이언트의 hello 메시지에 대한 응답으로 서버는 다음을 보냅니다. SSL 인증서서버에서 선택한 암호화 제품군 및 서버에서 생성한 또 다른 임의의 바이트 시퀀스인 “서버 임의”.
3. 인증: 클라이언트는 발급 기관을 통해 서버의 SSL 인증서를 확인합니다.. 이는 서버가 인증서에 지정된 서버이고 클라이언트가 상호 작용하는 서버가 실제로 도메인을 소유하고 있음을 확인합니다.
4. 마스터 비밀번호 예약: 클라이언트는 “임시 마스터 암호”라고 하는 또 다른 무작위 바이트 시퀀스를 보냅니다. 임시 마스터 암호는 공개 키로 암호화되며 개인 키로 서버에서만 해독할 수 있습니다. (클라이언트는 서버의 SSL 인증서를 통해 공개 키를 얻습니다.)
5. 개인 키 사용: 서버는 임시 마스터 암호를 해독합니다.
6. 세션 키 생성: 클라이언트와 서버 모두 클라이언트-랜덤, 서버-랜덤 및 예비 마스터 암호를 사용하여 세션 키를 생성합니다. 모두 동일한 결과를 제공해야 합니다.
7. 고객 준비: 클라이언트는 세션 키로 암호화된 “완료” 메시지를 보냅니다.
8일. 서버 준비: 서버는 세션 키로 암호화된 “완료” 메시지를 보냅니다.
9. 안전한 대칭 암호화 성공: 핸드셰이크가 완료되고 세션 키를 사용하여 통신이 계속됩니다.
GET과 POST의 차이점을 설명하시오.
받다
- 리소스에 대한 정보를 클라이언트에서 서버로 요청하는 데 사용되는 방법입니다.
- GET 요청은 URL 주소 끝에 파라미터로 삽입되어 전달됩니다.이 부분 쿼리 문자열 그것은이라고.
- 따라서 중요한 정보는 다루지 않아야 합니다.
우편
- 리소스를 생성하거나 업데이트하기 위해 클라이언트가 서버에 데이터를 보내는 데 사용하는 방법입니다.
- 전송할 데이터를 HTTP 본문에 압축하여 서버로 보냅니다.
| 받다 | 우편 | |
| HTTP 요청 메시지 BODY | 엑스 | 영형 |
| 멱등성 | 영형 | 엑스 |
멱등원
서버에서 단일 요청의 의도된 효과가 여러 동일한 요청의 효과와 동일한 경우 HTTP 메서드는 멱등적입니다.
HTTP 메소드와 이들이 수행하는 작업을 설명합니다.
HTTP 메서드는 요청 메시지의 시작 줄 시작 부분에 있으며, 서버에 수행할 작업을 알려줍니다.
| 받다 | 서버에서 클라이언트로 지정된 리소스 보내기 |
| 머리 | 지정된 리소스에 대한 응답으로, HTTP 헤더 부분만 보내다 |
| 우편 | 서버가 처리할 데이터를 보냅니다. |
| 세트 | 클라이언트에서 서버로 보낸 데이터를 지정된 이름의 리소스로 저장합니다. |
| 끄다 | 서버에서 지정된 리소스를 삭제합니다. |
| 추구하다 | 서버에 도달하기 위해 프록시를 통해 메시지의 진행 상황을 추적합니다. |
| 옵션 | 섬기는 사람 사용할 수 있는 방법 확인 |
모든 서버가 모든 메서드를 구현하는 것은 아닙니다.
RESTful이란 무엇이며 그에 대해 알고 있는 바를 설명하십시오.
RESTful은 REST가 적용된 상태라고 볼 수 있습니다.
- REST: 대표 상태 이전
REST는 애플리케이션 간의 결합을 줄이기 위해 설계된 아키텍처 스타일이며 6가지 제한 사항이 있습니다.
- 고객 서버 : 자원이 있는 서버, 클라이언트가 자원을 요청
- 무국적자 : HTTP 프로토콜은 Stateless 프로토콜이므로 REST도 Stateless를 가지고 있습니다.
– 서버는 각 요청을 완전히 별개로 인식하고 처리합니다. - 캐시 가능: 웹의 표준 HTTP 프로토콜을 그대로 사용하기 때문에 캐싱도 적용할 수 있습니다.
- 균일한 인터페이스: 균일하고 제한된 인터페이스를 사용하여 URI로 표시된 리소스에 대한 작업을 수행합니다.
- 레이어 시스템 : 구성 요소 동작에 제약을 가함으로써 아키텍처가 계층 구조로 구성됩니다.
- 주문형 코드 (선택 과목): 요청 시 서버에서 클라이언트로 실행 가능한 코드를 전송하여 클라이언트 기능을 확장하는 기능.
OSI 7계층, 존재 이유 및 TCP/IP의 4계층에 대해 설명하십시오.
인터넷 프로토콜 제품군컴퓨터가 인터넷에서 정보를 교환하기 위해 사용하는 프로토콜 집합으로 OSI 7계층 모델 또는 TCP/IP 4계층 모델이라고 합니다.
계층적 기능
– 레이어마다 처리 역할이 다르기 때문에 레이어별로 간섭을 최소화할 수 있습니다.
– 특정 레이어에 문제가 발생했을 때 해당 레이어를 확인할 수 있어 유지보수가 편리합니다.
– 서로 다른 계층에서 데이터 전송 프로세스를 자세히 알아야 함 x -> 데이터를 캡슐화하고 숨길 수 있음
OSI 7 레이어 : 시스템 간 개방형 통신(OSI Layer 7이 등장하기 전에는 표준이 없어 서로 다른 시스템 간 데이터 전송이 어려웠음)
1. 물리적 계층
- 데이터는 주로 전기적, 기계적 및 기능적 속성을 사용하여 통신 케이블을 통해 전송됩니다.
- 통신 단위는 비트(0 또는 1)
- 데이터만 전달 데이터가 무엇인지, 어떤 오류가 있는지 등은 중요하지 않습니다.
- 대표장비 : 통신케이블, 중계기, 허브 등
2. 데이터 링크 계층
- 파일의 물리적 전송, 오류 감지 및 흐름 제어책임 계층
- MAC 주소로 통신
- 데이터 단위: 액자
- 대표 장비: 브리지, 스위치
3. 네트워크 계층
- 목적지까지 가장 빠른 경로를 사용하여 패킷을 전송(라우팅)하기 위한 계층입니다.
- 데이터 단위: 패키지
- 대표 장비: 라우터, L3 스위치
4. 전송 계층
- 안정적이고 정확한 end-to-end 데이터 전송을 담당
- 데이터 전송을 위해 포트 번호사용
- 데이터 단위: 세그먼트
- 대표 프로토콜: TCP 및 UDP
5. 세션 계층
- 통신 장치 간의 상호 작용 및 동기화 제공
- 연결 세션 실패 시 데이터 교환 및 복구 관리
6. 프레젠테이션 수준
- 데이터를 제시하는 방법 파일 형식결정하는 레이어
- 다양한 Application Layer Syntax(7계층)를 공통 포맷으로 변환, 암호화, 압축 등 수행
ex) 파일의 확장자가 생성되는 레벨
7. 애플리케이션 계층
- 사용자 다음 계층으로서의 인터페이스 역할(서비스 제공)
- 지원 프로세스 간의 정보 교환을 담당합니다.
TCP/IP 계층 4 : 프로토콜의 네트워킹 범위에 따라 4개의 추상화 계층으로 구성
| L4: 애플리케이션 계층 | – OSI 7 계층의 세션 계층, 프레젠테이션 계층 및 응용 계층에 해당합니다. – FTP, HTTP, SSH |
| L3: 전송 계층 | – OSI 7계층의 전송계층에 해당 – 통신 참가자 간의 연결을 제어하고 안정적인 데이터 전송을 담당합니다. – TCP, UDP |
| L2: 인터넷 계층 | – OSI-7 계층의 네트워크 계층에 해당 – 통신 노드와 라우팅 기능 간의 IP 패킷 전송을 담당 |
| L1: 네트워크 액세스 | – OSI-7계층의 물리계층과 데이터링크계층에 해당 – MAC을 물리적 주소로 사용 |
웹 서버 소프트웨어(Apache, Nginx)가 7개의 OSI 계층에서 작동하는 위치를 설명하십시오.
웹 서버는 HTTP 서버라고도 합니다. 웹 브라우저에 대응하여 서버 측에서 정보를 제공하는 소프트웨어.
웹 브라우저(클라이언트)로부터 HTTP 요청을 수신하고 HTML 문서와 같은 정적 콘텐츠를 제공하는 프로그램입니다. 응용 프로그램 수준에서 작동합니다.
웹 서버 소프트웨어(Apache, Nginx)의 서버 간 라우팅 기능이 7개의 OSI 계층 사이에서 작동하는 위치를 설명하십시오.
라우팅은 주어진 규칙에 따라 최적의 경로를 선택하는 프로세스입니다. 서버 간 라우팅 기능은 라우터를 포함하는 네트워크 계층에서 작동합니다.

