본문 바로가기
Programming/기술 면접

[CS Study] Networking (네트워크)

by Mandy's 2025. 8. 11.

지난 주 복습

  1. OOP 4가지 핵심
  • 추상화(Abstraction): 핵심만 드러내고 구현 세부는 감춘다. 공통 인터페이스로 복잡도를 줄이고, 변경 영향을 최소화한다.
  • 다형성(Polymorphism): 같은 메시지(메서드 호출)에 대해 객체 타입에 따라 다른 동작이 실행된다. 대표적으로 서브타입 다형성(오버라이딩), 제네릭(파라메트릭 다형성), 오버로딩(애드혹 다형성).
  • 캡슐화(Encapsulation): 데이터와 그 데이터를 다루는 메서드를 한 덩어리로 묶고, 외부에는 필요한 인터페이스만 공개한다(정보 은닉).
  • 상속(Inheritance): 기존 타입을 확장해 속성과 행동을 재사용한다. is-a 관계일 때 적합.
  1. SOLID 원칙
  • SRP(Single Responsibility Principle, 단일 책임): 클래스는 변경 이유가 하나여야 한다.
    • ex. 결제 처리와 영수증 출력을 한 클래스에 두지 말고 분리.
  • OCP(Open/Closed Principle, 개방-폐쇄): 확장에는 열려 있고 수정에는 닫혀 있어야 한다.
    • ex. 새 결제 수단 추가 시 기존 코드 수정 대신 새 클래스만 추가(전략 패턴).
  • LSP(Liskov Substitution Principle, 리스코프 치환): 하위타입은 상위타입을 대체 가능해야 한다.
    • ex. Rectangle을 상속한 Square가 setWidth/setHeight에서 제약을 깨면 위반.
  • ISP(Interface Segregation Principle, 인터페이스 분리): 클라이언트가 쓰지 않는 메서드에 의존하지 말라.
    • ex. 거대한 인터페이스를 필요한 역할별로 쪼갠다.
  • DIP(Dependency Inversion Principle, 의존성 역전): 구체가 아닌 추상에 의존하라. 생성은 DI 컨테이너/팩토리에 맡긴다.

네트워크

1. 웹 동작 방식에 대해 설명하세요.

  1. 사용자가 브라우저에 URL 입력
  2. 브라우저는 DNS를 통해 해당 도메인의 IP를 알아냄
  3. 브라우저는 HTTP 프로토콜을 사용하여 HTTP 요청 메세지를 생성함
  4. TCP/IP 연결을 통해 HTTP 요청이 서버로 전송됨
  5. 서버는 HTTP 프로토콜을 활용해 HTTP 요청 메세지를 생성함.
  6. TCP/IP 연결을 통해 요청한 컴퓨터로 전송
  7. 도착한 HTTP 응답 메세지는 웹페이지 데이터로 변환되고, 웹 브라우저에 의해 출력되어 사용자가 볼 수 있게 됨
  • 브라우저 -> DNS -> IP -> HTTP 요청 -> 서버 응답 -> 렌더링

2. http 와 https 의 차이에 대해 설명해주세요.

  • http: 서버/ 서버/ 클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜 (80번 포트)
  • https: http+암호화 (443번 포트)
    • 로그인, 결제처럼 민감한 정보
    • 인증서 기반으로 동작, 클라이언트와 서버가 키를 주고 받음

3. OSI 7 계층에 대해서 설명해주세요.

  • 물리, 데이터링크, 네트워크, 전송, 세션, 표현, 응용 계층 (물데네전세푱)
  • 7단계 중 특정한 곳에 이상이 생기면 다른 단계의 장비 및 소프트웨어를 건들이지 않고도 이상이 생긴 단계만 고칠 수 있음.
  • 7계층 (Application): 사용자가 직접 접하는 계층. 웹 브라우저, HTTP, SMTP, FTP 같은 애플리케이션 프로토콜이 동작.
    • 예: Nginx, Apache 같은 웹 서버, 로드 밸런서(L7), 역프록시가 여기서 동작.
  • 6계층 (Presentation): 데이터 표현/변환 계층. 인코딩, 암호화, 압축 수행.
    • 예: HTTPS 암호화, UTF-8 변환.
  • 5계층 (Session): 통신 세션을 관리. 연결 유지, 동기화.
    • 예: 로그인 세션, 스트리밍 연결.
  • 4계층 (Transport): TCP/UDP로 데이터 전송. 연결 지향(TCP), 비연결(UDP). 로드 밸런싱(L4)도 여기서 가능.
  • 3계층 (Network): IP 주소 기반 경로 결정(라우팅). 라우터가 동작하는 계층.
  • 2계층 (Data Link): MAC 주소 기반 통신, 스위치 동작. 프레임 단위 전송.
  • 1계층 (Physical): 실제 케이블, 전파, 전기 신호. 비트 단위 전송.
  • 흐름
    • 웹사이트 접속 시 7 → 1로 캡슐화되어 내려가고, 전송 시 반대편에서 1 → 7로 역캡슐화되어 처리됨.
    • 즉, 브라우저에서 HTTP 요청(7계층)을 만들면, 하위 계층이 하나씩 헤더를 붙여서(캡슐화) 최종적으로 전기 신호(1계층)로 전송.

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

  • OSI 7계층을 좀 더 단순화
  • 네트워크 인터페이스(1-2), 인터넷(3), 트랜스포트(4), 애플리케이션 계층(5-7)
  • 데이터의 캡슐화와 은닉이 가능

5. DNS 가 무엇인가요?

  • Domain Name System
  • 사람이 읽을 수 있는 도메인 이름 -> 머신이 읽을 수 있는 IP주소로 변환

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

  1. 사용자가 웹 브라우저를 열어 주소 표시줄에 www.example.com을 입력하고 enter
  2. www.example.com 에 대한 요청은 일반적으로 케이블 인터넷 공급업체, DSL 광대역 공급업체 또는 기업 네트워크 같은 인터넷 서비스 제공업체 (ISP)가 관리하는 DNS 해석기로 라우팅 됨
  3. ISP의 DNS 해석기는 www.example.com에 대한 요청을 DNS 루트 이름 서버에 전달
  4. ISP의 DNS 해석기는 www.example.com 에 대한 요청을 이번에는 .com의 도메인의 TLD 이름 서버 중 하나에 다시 전달
  • .com 도메인의 이름 서버는 example.com 도메인과 연관된 4개의 Amazon Route 53 이름 서버의 이름을 사용하여 요청에 응답
  1. ISP의 DNS 해석기는 Amazon Route 53 이름 서버 하나를 선택해 www.example.com에 대한 요청을 해당 이름 서버에 전달
  2. Amazon Route 53 이름 서버는 example.com 호스팅 영역에서 www.example.com 레코드를 찾아 웹 서버의 IP 주소 192.0.2.44 등 연관된 값을 받고 이 IP 주소를 DNS 해석기로 반환
  3. ISP의 DNS 해석기가 마침내 사용자에게 필요한 IP 주소를 확보
  • 해석기는 이 값을 웹 브라우저로 반환
  • DNS 해석기는 다음에 누군가가 example.com을 탐색할 때 좀 더 빠르게 응답할 수 있도록 사용자가 지정하는 일정 기간 example.com의 IP 주소를 캐싱(저장)함
  1. 웹 브라우저는 DNS 해석기로부터 얻은 IP 주소로 www.example.com 에 대한 요청을 전송
  • 콘텐츠가 있는 곳
  • 예를 들어 웹 사이트 엔드포인트로 구성된 Amazon S3 버킷 또는 Amazon EC2 인스턴스에서 실행되는 웹 서버

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

  • TCP: 연결 지향, 순서 보장, 데이터 손실 시 재전송. 신뢰성 높은 통신. (HTTP, 메일, 파일 전송)
  • UDP: 연결 없이 전송, 순서 보장X, 손실 복구X. 빠른 속도. (스트리밍, 게임, VoIP)
    • 스트리밍은 약간 끊겨도 괜찮으므로 UDP가 유리.
  • TCP는 클라이언트와 서버가 연결된 상태에서 데이터를 주고 받고, UDP는 연결을 위해 할당되는 논리적인 경로가 없고 각각의 패킷은 다른 경로로 전송되며 독립적인 관계를 지님
  • TCP는 신뢰성, UDP는 빠르고 네트워크 부하가 적지만, 신뢰성 있는 데이터 전송을 보장하지 않음.

8. MTU 가 무엇인가요?

  • Maximum Transmission Unit, 최대 전송 단위
  • TCP/IP 네트워크 등과 같은 패킷 또는 프레임 기반의 네트워크에서 전송될 수 있는 최대 크기의 패킷 또는 프레임
  • 한 번에 전송할 수 있는 최대 전송량(Byte)인 MTU 값은 매체에 따라 달라짐
    • ex) MTU 1500 - IP Header 20byte - TCP Header 20 byte = MSS (Maximum Segment Size) 1460

9. 서버-클라이언트 메시지 전송 후에 수신 확인은 어떻게 하나요?

  • ACK (Acknowledgement) 메시지를 사용하여 확인

10. 3-way hand shake, 4-way hand shake 흐름에 대해서 설명해주세요.

  • 3-way handshake는 TCP/IP 프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정
  • 3-way handshake는 TCP의 연결을 초기화할 때 사용
    • 클라이언트가 SYN -> 서버가 SYN-ACK -> 클라이언트가 ACK -> 연결 성립
  • 4-way handshake는 세션을 종료하기 위해 수행
    • 클라이언트가 FIN -> 서버가 ACK -> 서버가 FIN -> 클라이언트가 ACK -> 연결 종료

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

  • Hypertext Transfer Protocol
  • 인터넷 상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 프로토콜
  • 기본적으로 상태를 저장하지 않음 (stateless)
  • 애플리케이션 레벨 ; TCP/IP 위에서 작동
  • HTML 문서, 이미지, 동영상, 오디오, 텍스트 문서 등 여러 종류
  • 어떤 데이터든지 보낼 수 있음
  • 메서드: GET, POST, PUT, DELETE

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

  • HTTPS = HTTP + SSL/TLS 암호화
    • 이전에는 보안 소켓 계층(SSL)으로 알려졌지만, 전송 계층 보안(TLS라고 함.
  • 비대칭 공개 키 인프라로 알려진 것을 사용하여 통신을 보호함
    • 두 개의 서로 다른 키
    • 개인 키: 웹 사이트 소유자가 관리. 웹 서버.
    • 공개 키: 안전한 방식. 서버와 상호작용하고자 하는 모든 사람이 사용. 공개 키로 암호화된 정보는 개인 키로만 해독 가능
  • HTTPS 동작 방식 (TLS + RSA)
    1. 클라이언트가 서버에 연결 요청.
    2. 서버는 공개키와 인증서를 클라이언트에 전달.
    3. 클라이언트는 CA(신뢰할 수 있는 인증기관) 목록으로 인증서의 유효성 검증.
    4. 클라이언트는 대칭키를 랜덤 생성 → 서버의 공개키로 암호화해서 전송.
    5. 서버는 개인키로 이를 복호화하여 대칭키 획득.
    6. 이후 통신은 해당 대칭키로 암호화 (빠른 속도).

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

  • HTTP 본문(body) 및 요청/응답에 대한 정보를 포함
  • 본문에 대한 정보는 본문 컨텐츠 길이 등 본문 컨텐츠와 관련이 있음
  • HTTP 1.1 헤더
    • 일반 헤더 (General Header): 요청/응답이 생성된 날짜 및 시간, 요청과 응답 메시지에 공통으로 사용
    • 요청/응답 헤더 (Request / Response Header)
      • 요청 헤더: URL, 메소드, 브라우저 및 기타 정보
      • 응답 헤더: 사용자가 특정 페이지 또는 리소스에 대한 요청 -> 서버에서 브라우저에 의해 수신: 컨텐츠에 사용 된 인코딩, 서버 시스템에서 응답을 생성하는 데 사용되는 서버 소프트웨어 및 기타 정보.
    • 엔터티 헤더 (Entity Header): 실제 메시지 또는 전송중인 HTTP 본문
      • 컨텐츠 길이, 컨텐츠 언어, 인코딩, 만료 날짜 및 기타 중요한 정보
      • 부가적인 정보
  • Authorization 헤더: 인증 정보 전달
    • 예: Authorization: Bearer <token>
    • Basic Auth: username:password를 Base64로 인코딩해 전송. (보안 취약, HTTPS 필요)
    • JWT: JSON Web Token, 서버-클라이언트 간 인증 상태를 유지하지 않고 서명된 토큰으로 신뢰 검증.

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

  • http header와 관련된 값.
  • 한 번 TCP 연결을 맺으면 여러 요청/ 응답을 재사용할 수 있도록 함.
  • 오버헤드를 줄이고 성능을 개선
  • 최소 특정 시간 동안 (timeout) 최대 요청 request(max)

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

  • GET: 데이터 조회, 파라미터가 URL에 노출, 캐싱o
    • 서버에서 어떤 데이터를 가져와서 보여줄 떄: 어떤 값이나 내용, 상태 등을 바꾸지 않는 경우에 사용
    • body가 없음 (데이터가 URL에 저장)
  • POST: 데이터 생성하거나 수정, 요청 본문(body)에 데이터를 담아 보냄, 캐싱x
    • body가 있음
    • 서버상의 데이터 값이나 상태를 바꾸기 위해서 사용

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

  • 쿠키: 클라이언트에 저장되는 작은 데이터, 브라우저가 서버에 자동으로 전송
    • 클라이언트에 저장되어 필요시 정보를 참조하거나 재사용 가능
  • 세션: 서버에 저장되는 사용자 상태 정보, 클라이언트는 세션 ID만 쿠키로 갖고 서버와 통신
    • 일정 기간 동안 같은 사용자로 부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 일정하기 유지시키는 기술
  • 쿠키는 클라이언트 저장, 세션은 서버 저장
  • ex. 쿠키: 쇼핑몰 장바구니 기능, 세션: 로그인 같이 보안상 중요한 작업

17. 웹 브라우저에 google.com 을 치는 순간 일어나는 일을 설명해주세요.

  1. 브라우저 캐시 확인
  2. DNS 조회로 IP 획득
  3. TCP 3-way handshake
  4. if HTTPS, SSL/TLS handshake
  5. HTTP 요청 전송
  6. 서버 응답 수신
  7. 브라우저 랜더링 (HTML 파싱, CSS 적용, JS 실행)
  • 캐시 -> DNS -> TCP -> SSL/TLS -> HTTP 요청 -> 렌더링

18. CORS 란 무엇인가요?

  • Cross-Origin Resource Sharing 교차 출처 리소스 공유
  • 다른 도메인 간 리소스 요청을 제어하는 브라우저 보안 정책
  • 서버가 허용한 도메인만 자원 접근이 가능
  • 추가 HTTP 헤더를 사용
  • 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제
  • 웹 애플리케이션은 리소스가 자신의 출처(도메인, 프로토콜, 포트)와 다를 때 교차 출처 HTTP 요청을 실행
    • Protocol + Host + Port 3가지가 같으면 동일 출처
  • CORS & SOP
    • SOP: (Same-Origin Policy): 동일한 도메인/포트/프로토콜에서만 요청 허용.
    • CORS (Cross-Origin Resource Sharing): 다른 도메인 간 요청 허용을 위해 서버에서 Access-Control-Allow-Origin 헤더로 허용할 출처(origin) 명시.

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

  • 웹 서버; 정적 파일 (HTML, CSS, JS, 이미지) 제공 ex. Nginx/Apache
  • WAS; 동적 로딩 처리 ex. Tomcat/Spring Boot
  • 웹 서버는 HTTP 프로토콜을 기반으로 클라이언트가 웹 브라우저에서 어떠한 요청을 하면 그 요청을 받아 정적 컨텐츠를 제공
  • WAS는 DB 조회 혹은 다양한 로직 처리를 요구하는 동적 컨텐츠를 제공하기 위해 만들어진 애플리케이션 서버
    • HTTP 프로토콜을 기반으로 사용자 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어
    • 주로 데이터베이스 서버와 같이 수행
    • JSP, Servlet 구동환경을 제공해주기 떄문에 서블릿 컨테이너 혹은 웹 컨테이너로 불림
  • WAS는 Web server + Webcontainer의 역할을 모두 수행
    • WAS와 웹 서버를 모두 사용하는 이유? 서버 부하 방지, 보안 강화, 여러 대의 WAS 연결 가능 (로드 밸런싱, 장애 극복 대응), 여러 웹 어플리케이션 서비스 가능
    • 웹 서버가 정적을 처리하는 동안 WAS는 동적 로직을 처리 → 전체 응답 속도 향상.

20. Restful API 에서 리소스란 무엇일까?

  • 데이터와 관련된 정보를 가지고 있는 객체
  • 네트워크 상의 가치 있는 정보의 단위
  • HTTP 프로토콜을 사용하여 리소스를 생성, 읽기, 업데이트, 삭제하는 기능 제공

21. REST API 란 무엇인지 설명해주세요.

  • Representational State Transfer API
  • HTTP 프로토콜을 기반으로 하는 API 기술
  • 웹 기술의 표준인 HTTP 메서드 (GET, POST, PUT, DELETE)를 사용하여 리소스를 생성, 조회, 수정, 삭제하는 기술
  • 다양한 플랫폼과 언어와 통신할 수 있는 유연한 구조를 제공

22. MQTT 프로토콜에 대해서 설명해보세요.

  • Message Queuing Telemetry Transport
  • IoT 디바이스 간의 메시지 전송을 위한 프로토콜
  • 저전력, 낮은 대역폭, 낮은 처리능력의 디바이스에 최적화
  • 클라이언트와 브로커 간의 경량 메시지 교환을 지원함.