티스토리 뷰

나의 공부방

[기술면접] CS 기술면접 질문 - 네트워크 (4/8)

망나니개발자 2020. 9. 18. 17:11
반응형

4. 네트워크


[ 웹 동작 방식 ]

  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는 응용 계층(7) 프로토콜인 반면에 TCP는 전송 계층(4) 프로토콜

 

 

[ TCP와 UDP 차이 ]

TCP는 연결형 서비스로 3-way handshaking 과정을 통해 연결을 설정합니다. 그렇기 때문에 높은 신뢰성을 보장하지만 속도가 비교적 느리다는 단점이 있습니다. UDP는 비연결형 서비스로 3-way handshaking을 사용하지 않기 때문에 신뢰성이 떨어지는 단점이 있습니다. 하지만 수신 여부를 확인하지 않기 때문에 속도가 빠릅니다. TCP는 신뢰성이 중요한 파일 교환과 같은 경우에 쓰이고 UDP는 실시간성이 중요한 스트리밍에 자주 사용됩니다.

 

 

 

[ GET과 POST 차이 ]

GET은 데이터를 조회하기 위해 사용되는 방식으로 데이터를 헤더에 추가하여 전송하는 방식입니다. URL에 데이터가 노출되기 때문에 보안적으로 중요한 데이터를 포함해서는 안됩니다.

POST는 데이터를 추가 또는 수정하기 위해 사용되는 방식으로 데이터를 바디에 추가하여 전송하는 방식입니다. 완전히 안전하다는 것은 아니지만 URL에 데이터가 노출되지 않아 GET보다는 안전합니다.

 

 

[ 공인 IP와 사설 IP 차이 ]

  • 공인 IP
    • 전세계에서 유일한 IP로 ISP(인터넷 서비스 공급자)가 제공하는 IP주소
    • 외부에 공개되어 있기 때문에 인터넷에 연결된 다른 장비로부터 접근이 가능하다.
    • 그에 따라 방화벽 등과 같은 보안 설정을 해주어야 한다.
  • 사설 IP
    • 어떤 네트워크 안에서 사용되는 IP주소
    • IPV4의 부족으로 인해 모든 네트워크가 공인 IP를 사용하는 것이 불가능하기 때문에 네트워크 안에서 라우터를 통해 할당받는 가상의 주소이다.
    • 별도의 설정 없이는 외부에서 접근이 불가능하다.

 

 

[ 웹 접근성의 국제표준 ]

웹 접근성을 높이기 위해 고안된 웹 표준은 웹에서 표준적으로 사용되는 기술이나 규칙을 의미합니다. 웹 표준을 정하기 위하 W3C(World Wide Web Consortium)이 설립되었으며 웹 표준으로 구조 언어인 HTML, 표현 언어인 CSS, 동작 언어인 Script를 지정하였습니다.

-> 작성한 내용이 틀렸다면 지적해주세요!!

 

 

[ OSI 7계층 ]

 

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

 

 

 

[ HTTP 프로토콜이란? ]

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

[ HTTP vs HTTPS ]

HTTP는 평문 데이터를 전송하는 프로토콜이기 때문에, HTTP로 비밀번호나 주민번호 등을 주고 받으면 제3자에 의해 조회될 수 있습니다. 이러한 문제를 해결하기 위해 HTTP에 암호화가 추가된 프로토콜이 HTTPS입니다. HTTPS에는 대칭키 암호화와 비대칭키 암호화가 모두 사용됩니다. 비대칭키 암/복호화는 비용이 매우 크기 때문에 서버와 클라이언트가 주고받는 모든 메세지를 비대칭키로 암호화하면 오버헤드가 발생할 수 있습니다. 그래서 서버와 클라이언트가 최초 1회로 서로 대칭키를 공유하기 위한 과정에서 비대칭키 암호화를 사용하고, 이후에 메세지를 주고 받을 때에는 대칭키 암호화를 사용합니다. 이러한 과정을 정리하면 다음과 같습니다.

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

 

공개키로 암호화된 메세지는 개인키를 가지고 있어야만 복호화가 가능하기 때문에, 서버(기업)을 제외한 누구도 원본 데이터를 얻을 수 없습니다.



 

 

[ 3 Way-Handshake ]

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

 

 

[ HTTP 1 vs HTTP 2 ]

  1. HTTP1는 연결 당 하나의 요청/응답을 처리하여 상당히 비효율적인 방식이였음
    • RTT(Round Trip Time) 증가: 패킷 왕복 시간의 지연 발생
  2. HTTP1.1는 지속 연결(Persistence Connection)과 파이프라이닝 등으로 보완했지만 한계 존재
    • HOL(Head Of Line) Blocking: 클라이언트의 요청과 서버의 응답이 동기화되어 지연 발생(여러 요청을 동시에 보내지만 첫 요청이 끝나지 않으면 나머지 요청도 블로킹 됨)
    • 헤더 크기의 비대: 연속된 요청에 대해 동일한 헤더를 전송하게 됨
  3. HTTP2는 아래의 기술을 사용하여 HTTP1의 성능 문제를 해결하였음
    • Multiplexed Streams: 하나의 커넥션으로 여러 개의 메세지를 순서 상관없이 동시에 주고 받을 수 있음
    • Stream Prioritization: 리소스간의 전송 우선 순위를 설정할 수 있음
    • Header Compression: 헤더 정보를 HPACK 압축 방식을 이용하여 압축 전송함, HPack은 허프만을 사용함
    • Server Push: HTML문서 상에 필요한 리소스를 클라이언트 요청없이 보내줄 수 있음
  4. HTTP3는 아래의 특징을 갖고 있음
    • QUIC라는 계층 위에서 돌아가며, 이는 UDP를 기반으로 돌아감(RTT 감소)
    • 순방향 오류 수정 메커니즘(FEC, Forworad Error Correction)으로 전송한 패킷이 손실되었다면 수신 측에서 에러를 검출하고 수정하는 방식
 

 

 

 

 

 

 

혹시 내용에 빠진 좋은 면접질문 있으면 댓글로 남겨주세요! 빠르게 추가하도록 하겠습니다:)

 

기술 면접 준비를 위해 기술 문제 질문을 메일로 발송해주는 서비스를 구현하였습니다. 혹시 도움이 필요하신 분은 아래 링크를 통해 자세한 내용을 확인해주세요!

https://mangkyu.tistory.com/200

 

 

관련 포스팅

  1. CS 기술면접 질문 - 프로그래밍 공통 (1/8)
  2. CS 기술면접 질문 - 자료구조(2/8)
  3. CS 기술면접 질문 - 알고리즘 (3/8)
  4. CS 기술면접 질문 - 네트워크 (4/8)
  5. CS 기술면접 질문 - 운영체제 (5/8)
  6. CS 기술면접 질문 - 데이터베이스 (6/8)
  7. CS 기술면접 질문 - 개발 언어 (7/8)
  8. CS 기술면접 질문 - 백엔드 (8/8)
  9. 기술 외 공통 면접 질문
  10. CS 기술 면접 준비를 위한 문제 구독 서비스

 

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함