[Interview] 면접준비 - 네트워크

Kim Hyen Su·2024년 10월 28일

면접질문

목록 보기
15/27
post-thumbnail

네트워크

참고 : https://mangkyu.tistory.com/91

💡 웹동작 방식

  1. 사용자가 브라우저에 URL을 입력

  2. 브라우저는 DNS를 통해 실제 주소를 찾음

  3. HTTP 프로토콜을 사용해 HTTP 요청 메시지를 생성

  4. TCP/IP 연결을 통해 HTTP 요청이 주소의 서버로 전달

  5. 서버는 요청 처리 결과를 HTTP 프로토콜을 사용해 HTTP 응답 메시지를 생성

  6. TCP/IP 연결을 통해 요청한 컴퓨터로 전송

  7. 도착한 HTTP 응답 메시지는 웹페이지 데이터로 변환되고, 웹브라우저에 의해 출력되어 사용자가 볼 수 있게됨

💡 TCP와 HTTP 차이

  • HTTP 비연결형 프로토콜인 반면에 TCP는 연결형 프로토콜이다.
  • HTTP는 단방향 통신만 가능한 반면에 TCP는 양방향 통신이 가능하다.
  • HTTP는 응용 계층 프로토콜인 반면에 TCP는 존송 계층 프로토콜이다.

💡 TCP와 UDP 차이

  • TCP는 연결형 서비스로 3-way handshaking 과정을 통해 연결을 설정한다. 그렇기 때문에 높은 신뢰성을 보장하지만 속도가 느리다는 단점이 있다. UDP는 비연결형 서비스로 3-way hand-shaking을 수행하지 않기 때문에 신뢰성이 떨어지지만 속도가 빠르다. TCP는 신뢰성이 필요한 데이터 전송 시, UDP는 빠른 전송이 필요한 경우 사용한다.

💡 GET과 POST 차이점

GET은 조회 용도로 일반적으로 사용되며, 데이터가 URL에 노출되므로 보안적으로 중요한 데이터 전송시에는 부적합하다. 하지만 상대적으로 빠르다. POST는 바디에 데이터를 담아서 보낼 때 사용하며 보안적으로 안전이 필요한 데이터 전송 시 사용되며, 데이터 추가 또는 수정 시 사용되는 방식이다.

💡 OSI 7계층


출처 : https://mangkyu.tistory.com/91

  • 7계층(응용) : 사용자와 직접 상호작용하는 응용 프로그램들이 포함된 계층
  • 6계층(표현) : 데이터의 형식이 결정되는 계층
  • 5계층(세션) : 컴퓨터 간의 통신을 위한 세션을 만드는 계층
  • 4계층(전송) : 최종 수신 프로세스로 데이터의 전송을 담당하는 계층
  • 3계층(네트워크) : 패킷을 목적지까지 가장 빠른 길로 전달하기 위한 계층
  • 2계층(데이터링크) : 데이터의 물리적인 전송과 에러 검출, 흐름 제어를 담당하는 계층
  • 1계층(물리) : 데이터를 전기 신호로 바꾸어주는 계층

💡 HTTP 프로토콜이란?

  • HTTP란 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다. HTTP는 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 동작한다. HTTP는 상태를 가지고 있지 않는 Stateless 프로토콜이며, Method, Path, Version, headers, Body 등으로 구성된다.

💡 HTTP vs. HTTPS

HTTP는 평문 자체를 전달하기 때문에 보안적으로 위험에 노출될 수 있다. 이를 방지하고자 암호화가 추가된 프로토콜이 HTTPS이다. HTTPS는 대칭키 암호화와 비대칭키 암호화가 모두 사용된다. 비대칭키 암/복호화는 비용이 매우 크기 때문에 서버와 클라이언트가 주고 받는 모든 메시지를 비대칭키로 암호화하면 오버헤드가 발생할 수 있다. 그래서 서버와 클라이언트가 최초 1회로 서로 대칭키를 공유하기 위한 과정에서 비대칭키 암호화를 사용하고, 이후에 메시지를 주고 받을 때에는 대칭키 암호화를 사용한다. 이러한 과정을 정리하면 다음과 같다.

  • 클라이언트가 서버로 최초 연결 시도함
  • 서버는 공개키를 전달함
  • 클라이언트는 인증서의 유효성을 검사하고 세션키를 발급함
  • 클라이언트는 서버의공개키로 세션키를 암호화하여 서버로 전송함
  • 서버는 암호화된 세션키를 개인키로 복호화하여 세션키를 얻음
  • 클라이언트와 서버는 동일한 세션키를 공유하므로 데이터를 전달 시 세션키로 암호화/복호화를 진행.

출처 : https://mangkyu.tistory.com/91

💡 3 Way-HandShake

3 Way-Handshake란 TCP 네트워크에서 통신을 하는 장치가 서로 연결이 잘 되었는지 확이하기 위한 방법이다. 송신자와 수신자는 총 3번에 걸쳐 데이터를 주고 받으며 통신이 가능한 상태인지를 확인한다.

  • Server에서 TCB 수동 open
  • Client에서 TCB 자동 open -> SYN 전송
  • Server에서 Syn을 받고 Ack 전송
  • Client에서 Ack을 받고 Ack 전송
  • Server에서 Ack을 받고 3 Way-Handshake 종료

TCB란

  • TCP 연결의 상태 정보를 저장하는 데이터 구조를 말한다. 각 TCP 연결마다 하나의 TCB가 생성되며, 연결 종료될 때까지 유지된다.

💡 HTTP1 vs. HTTP2

  • HTTP1는 연결 당 하나의 요청/응답을 처리하여 비효율적인 방식이었다.
    • RTT(Round Trip Time) 증가 : 패킷 왕복 시간의 지연 발생.
  • HTTP1.1은 지속 연결과 파이프라이닝 등으로 보완했지만 한계 존재
    • HOL(Head Of Line) Blocking : 클라이언트의 요청과 서버의 응답이 동기화되어 지연 발생(여러 요청이 동시에 진행되지 않고, 하나의 요청이 끝나야 처리됨)
    • 헤더 크기의 비대 : 연속된 요청에 대해 동일한 헤더를 전송하게 됨.
  • HTTP2는 아래의 기술을 사용하여 HTTP1의 성능 이슈 해결함.
    • Multiplexed Streams : 하나의 커넥션으로 여러 개의 메시지를 순서 상관없이 동시에 주고 받을 수 있음.
    • Stream Prioritization : 리소스간의 전송 우선 순위를 설정할 수 있음.
    • Header Compression : 헤더 정보를 HPACK 압축 방식을 이용하여 압축 정송함, HPack은 허프만을 사용함
    • Server Push : HTML 문서 상에 필요한 리소스를 클라이언트 요청 없이 보내줄 수 있음.
profile
백엔드 서버 엔지니어

0개의 댓글