본문 바로가기
개인 공부/TIL

[ TIL - CS ] 면접을 위한 CS 공부 7편 - 네트워크 -

by 킴도비 2024. 11. 18.

🚌 2024년 11월 18일~ 2024년 11월 23일까지의 주제는 네트워크다.

 

💡 공통으로 준비한 질문

1️⃣ 첫번째 접은 글은 내 말로 풀어쓴 정답
2️⃣ 두번째 접은 글은 해석 또는 공부한 내용 또는 추가적으로 궁금한 내용

 

1. OSI 7 Layer의 각 계층에 대해 설명해주세요.

더보기
  • 물리계층
    • 단지 데이터 전기적인 신호로 변환해서 주고받는 기능을 진행하는 공간. 즉, 데이터를 전송하는 역할만 진행
    • 예) 리피터, 케이블, 허브
  • 데이터 링크
    • 물리 계층으로 송수신되는 정보를 관리하여 안전하게 전달되도록 도와주는 역할. Mac 주소를 통해 통신한다. 프레임에 Mac 주소를 부여하고 에러검출, 재전송, 흐름제어를 진행한다.
    • 예) 브릿지, 스위치 등
  • 네트워크
    • 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능을 담당한다. 라우터를 통해 이동할 경로를 선택하여 IP 주소를 지정하고, 해당 경로에 따라 패킷에 전달해준다. 라우팅, 흐름 제어, 오류 제어, 세그먼테이션 등을 수행한다.
    • 예) 라우터, IP
  • 전송
    • TCP(신뢰성, 연결지향적)와 UDP(비신뢰성, 비연결성, 실시간) 프로토콜을 통해 통신을 활성화한다. 포트를 열어두고, 프로그램들이 전송을 할 수 있도록 제공해준다.
    • 예) TCP, UDP
  • 세션
    • 데이터가 통신하기 위한 논리적 연결은 담당한다. TCP/IP 세션을 만들고 없애는 책임을 지니고 있다.
    • 예) API, Sockent
  • 표현
    • 데이터 표현에 대한 독립성을 제공하고 암호화하는 역할을 담당한다. 파일 인코딩, 명령어를 포장, 압축, 암호화한다.
    • 예) JPEG, MPEG 
  • 응용
    • 최종 목적지로, 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다. 사용자 인터페이스, 전자우편, 데이터베이스 관리 등의 서비스를 제공한다.
    • 예) HTTP, FTP, DNS

 

2. TCP Connection 시 3-way handshaking에 대해 설명해주세요.

더보기
  • TCP는 정확한 전송을 보장해야 한다. 따라서 통신하기에 앞서, 논리적인 접속을 성립하기 위해 3 way handshake 과정을 진행한다.
  • 과정
    • 클라이언트가 서버에게 SYN 패킷을 보냄(sequence : x)
    • 서버가 SYN(x)을 받고, 클라이언트로 받았다는 신호인 ACK와 SYN 패킷을 보냄(sequence : y, ACK : x + 1)
    • 클라이언트는 서버의 응답은 ACK(x+1)와 SYN(y) 패킷을 받고, ACK(y+q)을 서버로 보냄
  • 이렇게 3번의 통신이 완료되면 연결이 성립된다.

 

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

더보기
  • TCP란?
    • 네트워크 통신에서 신뢰적인 연결방식
    • TCP는 기본적으로 unreliable network에서 reliable network를 보장할 수 있도록 하는 프로토콜
    • network congestion avoidance algorithnm을 이용
  • UDP란?
    • User Datagram Protocol의 약자로 데이터를 데이터그램 단위로 처리하는 프로토콜
    • 비연결형, 신뢰성 없는 전송 프로토콜이다.
    • 데이터그램 단위로 쪼개면서 전송을 해야하기 때문에 전송 계층이다.
    • Transport layer에서 사용하는 프로토콜
더보기

 

4. HTTP Method에는 어떤 것들이 있는지 설명해주세요.

더보기
  • GET : 조회, 리소스 요청
  • POST : 요청된 데이터를 처리하고 자원을 생성
  • PUT : 요청된 자원이 없으면 생성, 있으면 새 것으로 전체 갱신
  • PATCH : 자원의 일부분만 수정
  • DELETE : 요청된 자원을 삭제

 

5. REST API와 RESTful 하다는 것이 무엇인지 설명해주세요.

더보기
  • REST란?
    • REST 하다는 것은 Representational State Transfer(대표적인 상태 전달)의 약자로 월드와이드웹(www)과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍처의 한 형식이다.
    • REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다. 
  • REST API란?
    • REST 기반으로 서비스 API를 구현한 것
    • REST 기반으로 시스템을 분산하면 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있고, HTTP 표준을 기반으로 구현하므로, HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있다.
    • URI는 정보의 자원을 표현해야 하고, HTTP Method로 자원의 대한 행위를 표현한다. 
  • RESTful이란?
    • RESTful은 일반적으로 REST라는 악키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용오이다. 즉, REST 원리를 따르는 시스템은 RESTful이란 용어로 지칭된다.
    • 목적은 이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것이다.
    • 퍼포먼스 향상에 있는 것이 아니라, 일관적인 컨벤션을 통한 API의 이해도 및 호환성을 높이는 게 주 동기이다.
    • RESTful 하지 못하다는 것은
      • CRUD 기능을 모두 POST로 처리하는 API
      • route에 resource, id 외에 정보가 들어가는 경우(/students/updateName)

 

❔ 개인으로 준비한 질문

1. DNS가 무엇인지 설명해주세요.

더보기
  • DNS란 데이터를 교환하는 경우이다.
  • DNS는 Application Layer Protocl이며, 해당 프로토콜은 TCP, UDP 중 하나의 Transport Layer Protocl을 사용해야 한다.
  • Domain Name Server의 약자로, IP 주소를 문자로 표현한 주소로 바꾸는 시스템 혹은 서버를 의미한다.

 

2. CORS가 무엇인지 설명해주세요.

더보기
  • CORS(Cross Origin Resource Sharing)이란?
    • 웹 서버에게 보안 cross-domain 데이터 전송을 활성화하는 cross-domain 접근 제어권을 부여한다.
    • 배경
      • 처음 전송되는 리소스의 도메인과 다른 도메인으로부터 리소스가 요청될 경우 해당 리소스는 cross-origin HTTP 요청에 의해 요청된다.
      • 보안 상의 이유로, 브라우저들은 스크립트 내에서 초기화되는 cross-origin HTTP 요청을 제한한다.

 

 

3. TSL/SSL HandShake에 대해 설명해 주세요.

 

 

 

 

4. 로드 밸런싱에 대해서 설명해 주세요.