Home interview - network
Post
Cancel

interview - network

OSI 7계층이란?
  • 네트워크에서 통신이 일어나는 과정을 단계별로 나눈 것

  • 물리계층
    • 전기적, 물리적 세부 사항을 정의하는 계층
    • 리피터, 허브
  • 데이터링크
    • 같은 LAN 안의 연결된 컴퓨터들끼리 MAC 주소로 통신이 가능하게 해준다.
    • 스위치
  • 네트워크
    • 데이터를 목적지까지 안전하고 가장 빠른 경로로 전달해준다.
    • IP 주소를 이용해 다른 LAN에 속한 컴퓨터로 데이터를 전송할 수 있다.
    • 라우터
  • 전송
    • 양 끝단의 사용자들이 신뢰성 있는 데이터를 주고 받을 수 있도록 해준다.
    • 포트번호로 데이터의 목적지를 식별할 수 있다.
    • TCP, UDP
  • 세션
    • 양 끝단의 응용 프로세스가 통신을 하기 위한 방벙블 제공
    • TCP/IP 세션을 생성하고 없앤다.
  • 표현
    • 데이터 표현에 대한 독립성 제공화 암호화 역할을 담당
  • 응용
    • 최종 목적지로 응용 프로세스와 직접 관계하여 일반적인 응용 서비스 수행
https://www.google.com 을 접속했을 때 일어나는 일

1) 브라우저가 URL에 적힌 값을 파싱해서 HTTP Request Message를 생성하고, OS에 전송 요청을 한다. 이때, Domain으로 요청을 보낼 수 없기 때문에 DNS LookUp을 수행한다. 2) 캐싱된 DNS 기록을 확인한다

  • 브라우저 캐시 확인
  • OS 캐시 확인
  • 라우터 캐시 확인
  • ISP 캐시확인 (Internet Service Provider) 3) 모든 캐시가 존재하지 않으면 ISP가 Dns Query통해 검색 4) 브라우저는 전달받은 IP 주소로 TCP/IP 연결 (3 way handshaking) 5) TCP 연결이 완료되면 브라우저가 웹 서버에 HTTP 요청 6) 서버에서 요청을 처리하고 reponse 반환
  • 정적인 작업은 웹서버가 처리
  • 동적인 작업은 WAS가 처리
  • WAS의 작업이 끝나면 웹서버로 결과 전송 8) 브라우저가 Html content를 사용자에게 보여줌
HTTP란?
  • 클라이언트와 서버가 데이터를 주고받을 수 있는 프로토콜이다.
  • 비연결 지향: 클라이언트가 request를 서버에 보내고 서버가 응답을 보내면 연결을 끊는다.
  • 무상태성: 연결을 끊는 순간 클라이언트와 서버의 통신은 끝나며 상태 정보를 유지하지 않는다.
HTTP vs HTTPS
  • HTTP
    • 암호화 없음: 데이터 평문 전송
    • 포트 번호: 80
    • 보안 위험 존재: 패킷 탈취시 데이터 그대로 노출
  • HTTPS
    • 암호와 있음: SSL/TLS 프로토콜을 사용해 데이터 암호화
      • 공개키/대칭키를 통한 암복호와
    • 포트 번호: 443
    • Http Body 암호화 Header는 암호화 x
    • 전송 계층과 응용 계층 사이에서 암호화 진행
    • 암호화 통신방법
      1. A에서 B로 접속 요청
      2. B에서 공캐키를 A로 전달
      3. A는 자신의 대칭키를 공개키 A로 암호화하여 전달
      4. B는 개인키로 복호화하여 A의 대칭키 획득
      5. 얻어낸 대칭키를 이용하여 요청 획득
HTTP 버전별 특징
  • HTTP 0.9
    • 요청 및 응답 헤더가 존재하지 않고 HTML 문서만 전송 가능
    • GET 메서드만 사용 가능
  • HTTP 1.0
    • 커넥션마다 TCP 연결 시도
    • Content-Type 도입으로 HTML 이외의 문서 전송 가능
    • GET, POST, HEAD 메서드 사용 가능
  • HTTP 1.1
    • Keep-Alive 기능을 통해 일정 시간 또는 횟수 동안 연결을 닫지않고 유지
    • 반복되는 핸드쉐이크 과정을 줄여 속도 개선
  • HTTP 2.0
    • 멀티플렉싱으로 하나의 연결 안에서 여러 응답과 요청을 동시에 처리
GET과 POST 차이
  • GET
    • 요청 데이터가 HTTP Request Message의 Header 부분에 url 이 담겨서 전송된다.
    • 전송할 수 있는 데이터의 크기가 제한적이다.
    • 보안이 필요한 데이터에 대해서는 적절하지 않다.
  • POST
    • 요청 데이터가 HTTP Request Message의 Body 부분에 데이터가 담겨서 전송된다.
    • 서버의 상태를 변경시키기 때문에 멱등성이 유지되지 않는다.

부수적인 차이점을 좀 더 살펴보면 GET 방식의 요청은 브라우저에서 Caching 할 수 있다.
때문에 POST 방식으로 요쳥해야 할 것을 보내는 데이터가 작고 보안적인 문제가 없다는 이유로 GET 방식으로 요청한다면,
기존에 캐싱 되었던 데이터가 응답될 가능성이 존재한다.

TCP와 UDP의 차이
  • TCP(Transmission Control Protocol)
    • 신뢰성 있는 데이터 전송을 위한 연결 지향성 프로토콜
    • UDP에 비해 속도가 느리다
    • 파일 전송, 이메일 전송과 같은 신뢰성이 중요한 서비스에 사용된다.
  • UDP(User Datagram Protocol)
    • 연걸 설정 및 확인 단계 없이 데이터 전송하는 비연결 지향성 프로토콜
    • 데이터 손실이나 순서 변경 가능성이 존재하며, 수신 확인 또는 재전송을 처리하지 않는다.
    • 실시간 스트리밍, 온라인 게임, DNS 등과 같은 서비스에 사용.
HTTP 프로토콜에 대해 설명
  • Hypertext Transfer Protocol을 의미
  • 컴퓨터 간의 데이터 전달을 위한 약속을 나타내며, 데이터를 요청하는 쪽은 클라이언트, 받는 쪽은 서버라고 지칭
  • 기존에는 Hypertext를 의미하는 HTML 문서를 교환했지만, 이제는 다양한 미디어 리소스를 주고받는 형태로 발전
HTTP 메서드 종류
  • GET(리소스 조회)
    • 보통 리소스를 조회할 때 사용하며, 서버에 전달하고 싶은 데이터는 query를 통해서 전달한다.
    • 메시지 바디를 사용해서 데이터를 전달할 수는 있지만, 지원하지 않는 곳이 많아서 권장하지 않는다.
  • POST(요청 데이터 처리, 데이터 등록에 사용)
    • 데이터 요청을 처리하고, 메시지 바디를 통해 서버로 데이터를 전달한다.
    • 주로 신규 리소스를 등록하거나 프로세스 처리에 사용된다.
  • PUT(리소스를 대체, 해당 리소스가 없으면 생성)
    • 소스가 있으면 대체하고 리소스가 없으면 생성한다. 쉽게 말해 데이터를 덮어쓴다.
  • PATCH(리소스를 일부만 변경)
    • PUT과 마찬가지로 리소스를 수정하지만, 리소스를 일부분만 변경할 수 있다.
  • DELETE(리소스 삭제)
    • 리소스 삭제할때 사용
HTTP 메서드 특징
  • 안전(Safe Method)
    • 계속해서 메서드를 호출해도 리소스를 변경하지 않는다.
    • 주요 메서드 중에는 GET 메서드가 안전하다고 볼 수 있다.
  • 멱등(Idempotent Method)
    • 메서드를 계속 호출해도 결과가 동일함
    • GET,PUT,DELETE는 멱등하지만, POST, PATCH는 멱등하지 않다.
  • 캐싱(Caching)
    • GET,HEAD,POST,PATCH 모두 캐시가 가능하다.
    • 실제로는 GET과 HEAD만 주로 캐싱이 사용된다.
HTTP Status Code 설명
  • 1XX (information - 조건부 응답)
    • 클라이언트가 서버에 정보를 요청했지만 아직 처리중임을 의미
  • 2XX (Successful - 성공)
    • 서버가 브라우저의 요청을 수신하고 성공적으로 처리했음을 의미
  • 3XX (Redirection - 리디렉션)
    • 요청된 페이지가 일시적으로 또는 영구적으로 이동되었음을 클라이언트에 알림
    • 원래 요청한 리소스를 더 이상 사용할 수 없다.
  • 4XX (Client Error - 요청 오류)
    • 잘못된 요청으로 서버가 이해를 못해 요청을 수행할 수 없음을 의미
  • 5XX (Server Error - 서버 오류)
    • 서버 오류로 인해 서버가 요청을 정상 처리 하지 못함을 의미
중요한 HTTP Status Code
  • 200 (OK)
    • 모든 것이 정상적으로 수행 되었음을 의미
  • 301 (Moved Permanently)
    • URL이 영구적으로 다른 위치로 이동했음을 의미
    • 해당 요청 및 이후의 모든 요청은 다른 URL로 리디렉션 되어야 한다.
  • 302 (Found / Moved Temporarily)
    • URL이 일시적으로 다른 위치로 이동했음을 의미
  • 401 (Unauthorized)
    • 클라이언트가 인증되지 않았거나, 유효한 인증 정보가 부족하여 요청이 거부됨
    • ex) 사용자가 로그인되지 않은 경우
  • 403 (Forbidden)
    • 서버가 해당 요청을 이해했지만, 권한이 없어 요청이 거부됨
    • ex) 사용자가 권한이 없는 요청을 하는 경우
  • 500 (Server Error)
    • 서버가 사용자의 리소스 요청을 처리할 수 없을 때 나타난다.
    • 서버 구성 에러로 인해 발생하는 일반적인 에러입니다
  • 503 (Service Unavailable)
    • 버를 현재 사용할 수 없으며 그 결과 클라이언트의 요청을 처리할 수 없음을 나타낸다.
프록시 서버란?
  • 클라이언트와 서버 사이에 위치한 중계 서버
  • 클라이언트의 요청을 받아 서버로 전달하고, 서버의 응답을 받아 클라이언트로 전달한다.
  • 프록시 서버를 통해 클라이언트의 IP 주소를 숨길 수 있다.
  • 캐싱을 통해 빠른 데이터 전송이 가능하다.
쿠키와 세션의 차이
  • 쿠키
    • 클라이언트 로컬에 저장되는 키-밸류 형태의 데이터
    • 클라이언트의 상태 정보를 로컬에 저장하고, 서버에 전송한다.
    • 클라이언트가 요청을 보낼 때마다 서버에 전송된다.
    • 클라이언트에 저장되기 때문에 보안에 취약하다.
  • 세션
    • 서버에 저장되는 클라이언트의 상태 정보
    • 클라이언트가 서버에 접속하면 서버에서 세션을 생성하고, 클라이언트에게 세션 ID를 부여한다.
    • 세션 ID를 쿠키에 저장하고, 클라이언트가 요청을 보낼 때마다 세션 ID를 서버에 전송한다.
    • 서버에 저장되기 때문에 보안에 강하다.
REST API란?
  • REST(Representational State Transfer)
    • 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 것
    • HTTP URI를 통해 자원을 명시하고, HTTP Method를 통해 자원에 대한 CRUD Operation을 수행한다.
    • RESTful API는 REST 아키텍처를 따르는 API를 의미한다.
rabbitMQ란
  • rabbitMQ
    • AMQP(Advanced Message Queuing Protocol)를 구현한 오픈소스 메시지 브로커 소프트웨어
    • 메시지 지향 미들웨어로서 메시지 큐를 통해 메시지를 교환한다.
    • 메시지를 보내는 쪽을 Producer, 받는 쪽을 Consumer라고 한다.
Kafka란?
  • Kafka
    • 분산 스트리밍 플랫폼
    • 대용량의 데이터를 높은 처리량으로 처리할 수 있다.
    • Producer가 데이터를 보내면, Consumer가 데이터를 받아 처리한다.
    • Topic을 통해 데이터를 구분한다.
CORS란?
  • CORS(Cross-Origin Resource Sharing)
    • 다른 도메인 간의 자원 공유를 허용하는 메커니즘
    • 웹 브라우저의 동일 출처 정책(Same-Origin Policy)로 인해 다른 도메인 간의 자원 공유가 제한되는데, CORS를 통해 이를 해결할 수 있다.
    • 서버에서 헤더를 설정하여 다른 도메인에서 자원을 요청할 수 있도록 허용한다.
    • Access-Control-Allow-Origin 헤더를 통해 허용할 도메인을 설정한다.
CSRF란?
  • CSRF(Cross-Site Request Forgery)
    • 사용자가 의도하지 않은 요청을 통해 공격자가 사용자의 권한을 이용해 특정한 동작을 하도록 유도하는 공격
    • 사용자가 웹사이트에 로그인한 상태에서 공격자가 악의적인 요청을 전송하여 사용자의 권한을 이용하는 공격
    • CSRF 토큰을 사용하여 방어할 수 있다.

참고

This post is written by PRO.