ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CS - 네트워크 정리
    CS 2023. 10. 26. 09:13

    📝 Basic

    📝 OSI 7계층 

    Application - Presentation - Session - Transport - Network - DataLink - Physical

     

    📝 MAC 주소와 IP주소에 대해 설명해주세요. 

    • MAC 주소 : NIC에 할당된 고유 주소로, 물리적으로 기기에 부여, 네트워크 장치 통신에 사용 
    • IP 주소 : 컴퓨터 및 기타 장치들이 인터넷에서 통신할 때 사용되는 논리적인 주소 

     

    📝 URL URI 차이 

    • URI : 특정 리소스를 식별하는 통합 자원 식별자, 논리적, 물리적인 리소스를 식별하는 고유한 문자열
    • URL : 리소스를 어떻게 얻고 어디에서 가져와야하는지 명시하는 URI

     

    📝 NAT란 무엇인가요? 

    네트워크 주소 변환 기술로, 사설 네트워크에 속한 여러 호스트가 하나의 공인 IP 주소를 사용하도록 함으로써 IP주소 부족문제를 해결하고, 사설 네트워크의 보안상 이점이 있어 사용합니다. 

     

     

    📝 DNS가 무엇인가요? 

    • 사람이 쉽게 기억하고 읽을 수 있는 주소를 IP 주소로 변환하여 사용자의 컴퓨터가 서버로 접근할 수 있도록 하는 서비스

     

    📝 가상회선 패킷교환 방식 VS 데이터그램 패킷 교환 방식? 

    2가지 모두 패킷 교환 방식이다. 패킷 교환 방식이란, 메시지를 패킷이라는 작은 단위로 쪼갠 후 주소를 붙여 전송하는 방식이다. 

    • 가상회선 패킷 교환 방식 : 패킷이 전송되기 전에 송수신 측 간에 하나의 회선을 설정, 회선 교환 방식과는 달리 회선이 독점되지 않고 공유되며 설정된 경로를 통해서 송신된 데이터들은 순서에 맞게 수신측에 전달된다. 
    • 데이터그램 패킷 방식 : 패킷이 독립적으로 전송되고 패킷을 수신한 라우터는 최적의 경로를 찾아서 패킷을 목적지로 전송, 동일 목적지 패킷이어도 다른 경로로 전송될 수 있음, 송신 측 순서와 수신 측 순서가 다를 수 있다. 

     

    📝 로드밸런서가 사용하는 알고리즘은 어떤 것들이 있나요?

    • Round Robin : 서버로 들어온 요청을 순서대로 배분해주는 알고리즘
    • IP Hashing : 클라이언트 IP 주소를 특정 서버로 매핑하여 요청 처리 
    • Least Connection : 가장 적은 트래픽 보이는 서버에 우선적으로 요청을 할당해주는 알고리즘 

     

    📝 AS 내부와 외부에서 사용하는 라우팅 프로토콜에 대해 설명해주세요. 

     

    AS 내부에는 RIP, OSPF 2가지 방식이 있습니다. 

    • RIP는 distance vector 알고리즘 방식으로 인접 라우터 간 정보를 기반으로 홉카운트가 가장 적은 경로를 선택합니다. 15홉 이상은 지원하지 않으며, 연결된 라우터끼리는 30초 간격으로 정보를 주고 받습니다. 네트워크 상태는 고려하지 않으므로 비효율적인 경로로 전달할 수도 있으며, 라우팅 테이블의 변화를 모든 라우터가 알기까지 시간이 오래 소요됩니다. 
    • OSPF는 link state 알고리즘 방식으로 모든 라우터끼리 정보를 알고 있으며, 최저시간을 최적 경로로 선택합니다. 변화가 생기면 flooding 하여 빠르게 변화를 알아차릴 수 있습니다.  대신 정보를 유지하는 자원이 많이 소요됩니다. 

    AS 외부에서 사용하는 알고리즘은 BGP가 있습니다.

    • distance vector 알고리즘과 link state 알고리즘을 혼합해서 사용하는 방식으로 하이브리드 또는 path vector 방식이라고도 합니다. 단순 거리만이 아닌 AS 간 정책과 경로를 기반으로 주변과 정보를 교환합니다. 

     

     


     

    ☁️ HTTP 관련

    ☁️ HTTP 1.0 ~ 3.0 각 버전에 대해 설명해주세요. 

    HTTP 1.0 

    • 한 번의 연결에서는 한 가지 요청만 처리할 수 있음
    • HTTP Header의 도입 

    HTTP 1.1

    • 한 번 연결이 이루어지면 필요한 자원들을 요청하고, 모든 자원에 대한 응답이 돌아온 후 연결을 종료하는 방식을 기본으로 채용, 첫번째 요청에 대한 응답이 완전히 전송되기 이전에 두번째, 세번째 요청 전송을 가능하게 한다. 

    HTTP 2.0 

    • HOL blocking 현상을 해결하기 위해 멀티 플렉싱을 도입, 하나의 연결에 여러 요청 / 응답 병렬처리가 가능하며 서버가 필요한 리소스 미리 푸시하는 것도 가능하다.

    HTTP 3.0

    • TCP를 채택한 이전의 버전과 달리, UDP 프로토콜 위에서 동작한다. 

    주로 1.1, 2 버전을 많이 사용한다. 

     

    ☁️ HOL Blocking 현상에 대해 설명해주세요.

    네트워크에서 같은 큐에 있는 패킷이 그 첫 번째 패킷에 의해 지연될 때 발생하는 성능 저하 현상을 의미합니다. 뒤에 있는 패킷이 먼저 끝나더라도 앞의 패킷 지연으로 인해 전송되지 못하는 현상을 의미합니다. HTTP1.X 버전까지의 문제점이었으며, HTTP2에서 멀티플렉싱 (여러 개의 스트림을 사용하여 송수신) 통해 이를 해결하였습니다. 

     

     

    ☁️ HTTP와 HTTPS의 차이점에 대해 설명해주세요. 

    • HTTP는 암호화가 되지 않은 평문 데이터를 전송하이므로, 제 3자가 도청 가능하다는 문제점이 있었습니다. 
    • HTTPS는 SSL/TLS라는 암호화 프로토콜을 이용하여 통신 내용을 암호화합니다. (처음 연결 시 비대칭 키 암호화, 데이터 주고받을 때 대칭 키 암호화)
    • 80번 포트를 사용하는 HTTP와 달리 443 포트를 사용합니다. 

     

    ☁️ HTTP Method의 PUT과 PATCH는 어떤 차이점이 있나요?  

    • 자원에 모든 상태(필드)에 대한 값을 대입하지 않은 경우(일부 빠진 경우)  PUT 메소드는 오지 않은 값에 NULL을 대입하여 변경합니다. PATCH의 경우, 오지 않은 값은 기존 값 그대로 두고 바뀐 부분만 변경합니다. 
    • 요청한 URI에 자원이 존재하지 않는 경우 PUT 메소드는 새롭게 자원을 생성하고, PATCH는 존재하지 않는다는 메시지를 리턴합니다. 
    • 멱등성 관점에서, PUT은 멱등성을 가지고 PATCH는 멱등성을 가지지 않습니다. (정확히는 가지게 설계할수도, 가지지 않게 설계할 수도)
    더보기

    멱등성 : 첫 번째 수행을 한 뒤 여러 차례 적용해도 결과를 변경시키지 않는 작업 또는 기능의 속성

    - 멱등한 작업의 결과는 한 번 수행하든 여러 번 수행하든 같습니다. 

    - 참고로 서버의 상태코드 (200, 204 등)가 다르더라도 서버 상태 동일하면 멱등성 가진다고 판단.  

     

    * PATCH 메소드를 PUT처럼 요청 BODY에 덮어쓸 내용만 포함한 경우 멱등성을 가질수도 있다. 하지만 아래 접은글처럼 동작을 지정해줄수도 있는데, 이 경우 멱등성을 가지지 않는다. PATCH 메소드가 HTTP 스펙 상 구현 방법에 제한이 없어서 요청 바디에 꼭 덮어쓸 데이터가 있어야만 하는 것은 아니므로, 동작을 지정해줄 수 도 있다. 

     

    ☁️ HTTP의 무상태성과 비연결성 특성에 대해 설명해주세요. 

    • 무상태성 : 클라이언트의 요청과 관련된 정보는 저장하지 않으며, 클라이언트의 각 요청은 독립적으로 처리됩니다. 
    • 비연결성 : 클라이언트와 서버 간 연결이 단방향성을 가지고 있음을 의미합니다. 

     

    ☁️ CORS란 무엇인가요? 

    추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제로, 기본적으로 프로토콜 - 세션 - 포트번호가 모두 같아야 같은 출처로 판독하는데, 신뢰할 수 있는 사이트에 예외를 둬서 다른 출처 자원을 허용합니다. 

     

    ☁️ HATEOAS란 무엇인가요?

    Hypermida를 통해 어플리케이션의 상태 전이가 가능하게 하는 매커니즘으로, 클라이언트와 서버가 동적인 상호작용을 가능하게 한다. 

    (리소스 전달 시 해당 리소스에서 할 수 있는 모든 동작에 대한 URI들을 함께 전달)

     

     

     


     

    🌊 TCP 와 UDP

    🌊 TCP, UDP의 차이와 각각의 장단점에 대해 설명해주세요. 

    • TCP
      • 3-way handshaking을 통해 연결을 수립하고 순서대로 패킷을 전달함으로써 신뢰성 있는 전송을 지원
      • 혼잡제어 / 흐름제어를 통해 패킷 전송 속도를 조절하여 안정적인 전송 가능
      • 프로토콜 차원에서 안정적이고 신뢰성 있는 전송을 보장하지만, 그만큼 TCP Header에 많은 정보가 필요하여 무겁고, 속도가 UDP에 비해 느리다. 
    • UDP 
      • 연결을 수립하지 않으며 패킷을 순서대로 전달할 의무가 없다
      • 그렇기 때문에 TCP에 비해 빠르고, UDP 헤더는 매우 간단하다.
      • user datagram protocol인 만큼, TCP에 비해 프로그래머의 최적화가 용이하다.  
      • 대신 프로토콜 차원에서 안정성과 신뢰성을 보장해주지는 않으므로, 따로 오류에 관한 처리나 재전송 요청 등은 상위 계층에서 해야 한다. 

    🌊 TCP는 어떻게 신뢰성을 제공해주나요? 

    • 패킷에 순서 번호를 부여하여 패킷의 순서를 보장하고, 확인 응답을 통해 온전한 수신을 확인합니다. 
    • checksum 방식을 통해 훼손 여부를 검사하고 중복데이터는 버리며, 수신 측 상황과 네트워크 상황을 보고 전송 속도를 조절합니다. 

     

    🌊 TCP에서 흐름제어란 어떤 것인가요? 

    • 수신 측의 속도보다 송신 측의 속도가 빨라 데이터가 손실된 위험을 줄이기 위해 송신측이 데이터 전송량을 수신측에 맞춰 조절하는 것
    • stop & wait 방식과 sliding window 방식이 존재합니다. 

     

    🌊 TCP가 연결 종료하는 방식?

    • 4 - way handshaking 
      • 클라이언트가 FIN FLAG 요청을 보냄
      • 서버가 확인 메시지 (ACK) 보내고 close_wait 상태가 된다.
      • 통신이 끝나면 연결 종료되었다고 FIN flag를 클라이언트에게 보냄
      • 클라이언트가 확인 메시지 보냄 

     

    🌊 UDP의 장점이 무엇인가요? 

    • TCP처럼 3-way handshaking 과정을 진행하지 않으며, 동일 목적지 패킷이어도 그때 그때 최적의 경로를 선택하여 각각 다른 경로로 패킷을 전송하는 것이 가능하므로, TCP에 비해 속도가 빠르다.  
    • UDP의 헤더에는 출발지와 도착지, 패킷의 길이, 체크섬(최소한의 데이터 상태 체크용으로만 사용함) 정도만 정의되어 있는, 데이터 전송 자체만을 목적으로 만들어져서 TCP에 비해 사용자가 최적화하기에 좀 더 용이하다. ( 따라서 HTTP/3에서 UDP 기반의 QUIC을 채택한 것이기도 하다. )

     

     


     

     

    🍪 쿠키 & 세션 & 토큰

    🍪 로컬 스토리지, 세션 스토리지, 쿠키의 공통점과 차이점은 어떤 것이 있을까요? 

    • 로컬 스토리지 : 로컬 파일을 지우지 않는 한 영구적으로 저장 
    • 세션 스토리지 : 브라우저를 닫으면 소멸 
    • 쿠키 : 서버에 자동 전송되며 Session Cookie, Persistent Cookie 처럼 만료 기한을 설정할 수 있음

    클라이언트 측에 저장된다는 공통점이 있다.  

     

     

    🍪 쿠키 & 세션방식과 비교하여 토큰 인증방식이 가지는 장점이 어떤 것이 있을끄요?

    쿠키 & 세션 방식과 달리 토큰 자체가 인증에 필요한 정보를 가지고 있기 때문에 따로 서버의 관리가 필요하지 않다.

    또한, CORS 이슈로부터 자유로워 확장성이 좋다는 장점이 있습니다. 

    더보기
    닫기

     세션도 결국 쿠키를 사용하기 때문에 역할, 동작 원리가 거의 비슷, 차이점이라면 정보가 저장되는 위치, 라이프사이클이다. 

    쿠키 : 서버의 자원 사용 X, 클라이언트 로컬에 저장된다. 변질되거나 탈취 가능성 있지만 속도가 빠름(쿠키에 정보가 있으므로), 라이언트 로컬에 파일로 저장되므로 브라우저 종료해도 정보가 유지된다. 만료기간 따로 지정도 가능 
    세션 : 쿠키 활용해서 session-id만 클라이언트 측에, 나머지 정보들은 서버에 저장, 비교적 보안이 우수하나(세션id털려도 서버측에서 삭제하는 등 무효처리하면 된다) 속도가 느리고, 만료기간과 상관없이 브라우저 종료 시 삭제된다. 

     

    물론 세션ID 같은 정보가 쿠키에 실려오므로 세션이나 쿠키나 탈취당해 사용한다면 보안이 비

     

     

     


     

     

     

     

     

    🏰 서버 구조 

    🏰 CDN이란 무엇인가요? 

    콘텐츠 전송 네트워크의 약자로, 서버 자체를 여러곳에 두고 이용자가 요청했을때 제일 근접한 서버에서 처리하는 기술입니다. 사용자와 가까운 곳에 데이터 서버를 배포하여 트래픽이 많은 웹 사이트가 빨리 표시되는 등 서비스가 신속히 제공되도록 지원합니다.

     

    🏰 프록시 서버란 무엇인가요? 

    클라이언트와 서버 사이의 ‘중계 서버’를 의미합니다.

    프록시 서버가 중간에 위치함으로써 클라이언트는 프록시 서버를 ‘서버’라고 인식하고, 서버 입장에서는 프록시 서버를 ‘클라이언트’로 인식하게되며, 클라이언트에서 서버로 요청을 보낼 때 직접 요청하지 않고 프록시 서버를 거쳐 요청하게 됩니다.

    주로 보안, 캐싱 등의 목적으로 사용합니다. 

    • 캐싱 : 정적 데이터 저장해두고 동일 요청인 경우 웹서버까지 가지 않음 
    • IP 우회 : 서버 측은 클라이언트의 IP가 아닌 프록시 서버의 IP를 전달받음. 
    • 사내망 : 정해진 사이트에만 연결할 수 있도록 설정 

    추가 참고사항 ) 리버스 프록시 (nginx, apache web server) ? 

    더보기

    위의 정의된 내용은 포워드 프록시(일반적으로 프록시라고 하면 이것을 의미)이다.

    리버스 프록시는 애플리케이션 서버의 앞에 위치하여 클라이언트가 서버를 요청할 때 리버스 프록시를 호출하고, 리버스 프록시가 서버로부터 응답을 전달받아 다시 클라이언트에게 전송하는 역할을 합니다. 

    • 로드밸런싱 : 리버스 프록시 뒤에 여러개의 was를 둠으로써 사용자 요청을 분산, 엔드포인트마다 호출 서버를 설정할 수 있어 역할에 따라 서버 트래픽 분산 가능
    • 보안 : 서버에 직접 접근하는 것을 막기 위해 dmz같은 네트워크에 리버스 프록시 구성하여 접근

     


    👩🏻‍💻 기타 

    👩🏻‍💻공인 IP 주소와 사설 IP 주소에 대해 설명해주세요 

     

    공인 IP 

    • ISP가 제공하는 IP 주소로 외부에 공개되어 있으며, 유일한 IP 주소를 갖는다. 

    사설 IP 

    • 일반 가정 / 회사 내에 할당된 네트워크 IP 주소로 라우터가 할당하여 하나의 네트워크 안에서만 유일한 IP 주소를 갖는다. 

     

    👩🏻‍💻 네이버를 검색하여 페이지가 보여지기까지 거치는 과정에 대해 설명해주세요. 

    • 브라우저에 네이버를 검색 / 또는 URL 입력
    • 브라우저가 DNS 서버에 IP 주소를 요청 
    • IP 주소로 TCP 연결 / 요청 메시지 보냄 
    • 네이버 웹 서버가 HTTP 응답 메시지 보냄
    • 도착한 메시지를 웹 브라우저가 페이지 형태로 출력 

    'CS' 카테고리의 다른 글

    CS - Java & Spring 정리  (0) 2023.11.09
    CS - 운영체제 정리  (0) 2023.11.02
    CS - 데이터베이스 정리  (0) 2023.10.19
    CS 스터디 운영체제 Q&A (2)  (0) 2023.10.04
    소프트웨어 공학 및 알고리즘 Q&A  (0) 2023.09.27
Designed by Tistory.