면접 준비를 해보자 - 네트워크

americano4ever·2021년 11월 10일
5

네트워크

질문 리스트

https://mangkyu.tistory.com/91

https://hyonee.tistory.com/136

https://ko.myservername.com/top-60-networking-interview-questions

https://minhamina.tistory.com/234

https://juicyjerry.tistory.com/196

네트워크란 무엇인가? 네트워크 종류는? 인터넷이란?

컴퓨터 네트워크란 컴퓨터끼리 케이블이나 적외선, 전파 등 어떤 수단을 사용하여 연결해

다양한 데이터를 주고 받을 수 있는 상태로 되어 있는 것을 의미한다.

네트워크 종류에는 LAN,WAN, 인터넷이 있다.

LAN(인트라넷)은 비교적 좁은 공간인 학교, 기업, 연구소 등의 컴퓨터 끼리 이어 구성한 네트워크를 말하고, 구리선을 짜넣은 LAN 케이블을 사용한다.

WAN은 지리적으로 떨어져 있는 기기 끼리 연결한 비교적 대규모의 네트워크를 말하며, 광섬유 케이블이나, 회선을 이요한다.

인터넷이란 LAN, WAN을 연결한 전세계 규모의 네트워크이다.

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

나눈 이유 :계층화를 하게 됨으로써 통신이 일어나는 과정을 단계별로 알수있고, 문제가 생기면 그 단계만 수정하면 됨

물리 : 데이터를 전기 신호, 광신호로 변경하여 전송 ex) 리피터, 케이블, 허브

데이터링크 : 물리 계층으로 송수신되는 정보 관리, 해당 네트워크 내의 Mac 주소로 통신 ex) 브릿지, 스위치

네트워크 : 데이터를 목적지까지 전달, 라우터로 경로를 선택해 IP 지정,(라우팅) 경로에 따라 패킷 전달(포워딩) ex) IP

전송transport : 받은 데이터를 어떤 프로세스에 줄지 포트번호로, 통신을 활성화 ex) TCP, UDP

세션 : 데이터가 통신하기 위한 응용프로그램 or 네트워크간 연결 담당 ex) X.225, ISO 8327

표현 : 데이터를 컴퓨터가 인식 할수 있도록 데이터 표현 방식을 알려줌(압축화, 암호화) ex) MIMEXDRASN.1

응용 : 최종 목적지, 응용프로그램과 연관하여 서비스 수행 ex) HTTP, FTP, DNS

https://mindnet.tistory.com/entry/네트워크-쉽게-이해하기-13편-물데네전세표응-ㅡ-응표세전네데물-OSI-7계층?category=702276

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

TCP/IP 모델은 기존의 4계층 모델과 업데이트된 5계층 모델이 존재한다.

Original

1계층 네트워크 액세스 : 물리+데이터링크, MAC주소 사용
2계층 인터넷 : 네트워크, 통신 노드간의 IP패킷을 전송하는 기능과 라우팅 기능 담당
3계층 전송 : 전송, 통신 노드간의 연결 제어 및 신뢰성 있는 데이터 전송 담당
4계층 응용 : 세션+표현+응용, 응용 프로그램 구현

Updated

1계층 물리:

2계층 데이터 링크

3계층 네트워크:

4계층 전송:

5계층 응용:

MAC주소란?

TCP/IP 계층 모델과 OSI 계층 모델의 차이

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

3 way handshake(연결 시작시)

TCP/IP 프로토콜을 사용해 통신을 진행할떄, 두 종단간 정확한 데이터 전송 보장하기 위해 연결을 설정SYN(Synchronize Sequence Number)ACK(Acknowledgement)

클라이언트 → 서버 : 서버 접속 요청 SYN 패킷 보냄

서버 → 클라이언트 : 요청 수락 응답 ACK 패킷과 포트 열어달라는 SYN 패킷 보냄

클라이언트 → 서버 : 확인 응답으로 ACK 패킷 보냄

4 way handshake(연결 종료시)

연결 설정 해제함

클라이언트→ 서버 : 연결 해제하겠다는 FIN 패킷 보냄

서버 → 클라이언트 : 응답으로 ACK 패킷 보냄

서버 → 클라이언트: 처리해야할 모든 통신 끝내고 연결 종료하겠다는 FIN 패킷 보냄

클라이언트→ 서버 : 확인 응답으로 ACK 패킷 보냄

TCP란 무엇인가?

신뢰성 있는 데이터 연결을 지원하는 연결지향형 프로토콜이다.

신뢰성은 3way handshaking 과 4way handshaking을 통해 보장해준다.

파일전송, 이메일 전송 등 손실이 일어나면 안되는 경우에 사용한다

TCP와 UDP의 차이점은?

Tcp 3way handshaking 손실없이 신뢰할 수 있는 데이터전송

UDP 신뢰성 없는 데이터 요청, 영상 스트리밍 등 손실이 발생해도 되는 경우에 사용한다

TCP
신뢰성 있는 데이터 전송을 지원하는 연결 지향형 프로토콜(손실이 없음)

흐름제어, 혼잡제어, 오류제어 지원

연결 설정시 3 way handshake를, 연결 해제시 4 way handshake 진행

UDP보다 속도가 느리다

EX) 웹 http 통신, 이메일, 파일 전송

UDP
데이터를 데이터그램 단위로 처리하는 프로토콜

신뢰성 낮음속도가 빠르고 부하가 적다EX) WebRTC, Real Time Protocol(RTP), Multicast, DNS

항상 많은 클라이언트를 수용하는 dns 서버에게는 연결 상태를 유지 하지 않아 정보 기록을 최소화 하는 udp가 알맞다.

TCP 헤더에 대해서 설명해 주세요.

TCP헤더 에는 여러 정보가 담기게된다.

우선 출발지 포트와, 도착지 포트.

그리고 handshaking 및 응답확인을 위한 sequence number와 ack이 담긴다.

그리고 데이터 시작위치를 나타내는 data offset, 정보 검출을 위한 flag 변수들이 있다.

또 데이터 누락 및 정보확인을 위한 checksum, 긴급한 정보인지 확인하기 위한 urgent pointer 등이 있다.

TCP/IP의 흐름제어/혼잡제어에 대해 설명해보세요

흐름 제어란 수신 측에서 처리할 수 있는 정보에 비해 송신 측의 속도가 빠를 경우에, 송신 측과 수신 측의 데이터 처리 속도 차이를 해결하기 위한 기법이다.

receiver가 sender에게 현재 자신의 상태를 feedback 하는 것을 통해 eceiver가 packet을 지나치게 많이 받지 않도록 조절한다.

구체적으로 Stop and Wait, Sliding Window, Window 방식이 있다.

Stop and Wait 방식은 매번 전송한 패킷에 대해 확인 응답을 받아야만 그 다음 패킷을 전송하는 방법이다.

Sliding Window 방식은 일정한 윈도우 크기 내에서 한번에 여러 패킷을 송신하고,

한번의 ACK로 수신확인을 하며, 윈도우 크기를 변경시키며 흐름제어 하는 기법이다.

혼잡제어란 네트워크의 혼잡을 피하기 우해 송신측에서 보내는 데이터의 전송속도를 강제로 줄이게 되는데, 이러한 작업을 혼잡제어라 한다.

    네트워크에 전달되는 패킷이 많으면 일정 수준까지는 good output이 증가하나, 일정 수준을 넘어가게 되면, loss가 발생하는 경우가 더 많아지므로 혼잡제어를 수행한다.

혼잡제어의 대표적인 방법으로는 AIMDSlow Start가 있다. ****

AIMD 방식은 트워크에 아직 별 문제가 없어서 전송 속도를 더 빠르게 하고 싶다면 혼잡 윈도우 크기를 1씩 증가시키지만, 중간에 데이터가 유실되거나 응답이 오지 않는 등의 혼잡 상태가 감지되면 혼잡 윈도우 크기를 반으로 줄인다.

초기에 네트워크의 높은 대역폭을 사용하지 못하여 오랜 시간이 걸리게 되고, 네트워크가 혼잡해지는 상황을 미리 감지하지 못하는 문제가 있다.

Slow Start 방식은 본적인 원리는 AIMD와 비슷하지만 윈도우 크기를 증가시킬 때는 지수적으로 증가시키다가 혼잡이 감지되면 윈도우 크기를 1로 줄여버리는 방식이다. AIMD 방식에 비해 초기에 지수적으로 증가하기 때문에 높은 대역폭을 활용할 수 있다는 장점이 있다.

fast retransport

fast recovery (exponential하게 임계치 전까지)

브라우저에서 주소창에 url 입력시 어떤일이 일어나는가?

사용자는 www.google.com을 브라우저 주소창에 친다.

브라우저는 캐싱된 DNS 기록을 통해 www.google.com에 대응되는 IP 주소가 있는지 확인한다.

브라우저 캐시 확인, OS 캐시 확인, 라우터 캐시 확인, ISP 캐시 확인

요청한 URL이 캐시에 없으면 ISP의 DNS 서버가 www.google.com을 호스팅하고 있는 서버의 IP 주소를 찾기 위해 DNS query를 날림

브라우저가 IP 주소를 받으면 서버와 TCP 연결을 한다. (3 way handshaking)TCP 연결이 완료되면 브라우저가 웹 서버에 HTTP 요청을 한다.

    GET 요청을 통해 www.google.com의 웹페이지를 요구한다.

서버가 요청을 처리하고 response를 생성한다.

서버가 HTTP response를 보낸다.

브라우저가 HTML content를 보여준다.

DNS가 무엇인가요?

Domain Name System으로

IP주소를 문자로 표현한 주소로 바꾸는 시스템 혹은 서버를 의미한다.

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

Recursive Query를 통해 접근 : Local DNS 서버 -> Root DNS 서버 -> com DNS 서버(TLD 서버) -> naver.com DNS 서버

  1. 로컬 DNS서버에 해당 url이 등록되어있는지 확인
  2. 캐싱이 안되어 있는 경우, 로컬 DNS 서버는 루트 DNS서버에 문의 후 최상위 도메인 .com이 등록된 네임 서버의 IP주소 전달
  3. 로컬 DNS서버는 com DNS 서버에 해당 url을 문의함. com DNS 서버는 로컬 DNS서버에 naver.com DNS 서버의 IP 주소 알려줌
  4. 로컬 DNS 서버는 naver.com DNS 서버에 해당 url 문의함. 로컬 DNS는 IP 주소를 응답으로 받아 캐싱한다.
  5. 로컬 DNS 서버는 캐싱한 후, 사용자에게 ip 주소를 응답으로 전달한다.

MTU가 무엇인가요?

Maximum Transmission Unit

  • 패킷이나 프레임의 최대 크기
  • 데이터의 크기가 크다면 단편화해야함
  • MTU가 크면 오버헤드가 줄어들지만, 지연이 발생할 수 있고,
  • MTU가 작으면 지연은 줄어들지만 헤드 및 송수신으로 인한 오버헤드가 커지는 trade-off 관계에 있다.
  • 우리가 주로 사용하는 이더넷의 디폴트 mtu는 1500으로 설정되어 있다.

~ 윈도우 사이즈??

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

텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜.

특징 비연결성, 무상태

비연결성은 클라이언트와 서버가 한 번 연결을 맺은 후, 클 라이언트 요청에 대해 서버가 응답을 마치면 맺었던 연결을 끊어 버리는 성질이다.

Connectionless로 인해 서버는 클라이언트를 식별할 수가 없는데, 이를 Stateless라고 합니다.

비연결성을 보완하기 위해 keep-alive헤더 사용.

비연결성을 보완하기 위해 쿠키, 세션, 토큰을 통해 상태기억.

HTTP와 HTTPS 의 차이는 무엇인가요?

HTTP 동작 순서 : TCP → HTTP

HTTPS 동작 순서 : TCP → SSL → HTTP (SSL을 거친다)

SSL(Secure Socket Layer)를 쓰냐 안쓰냐의 차이다. SSL 프로토콜은 정보를 암호화시키고 이때 공개키와 개인키 두가지를 이용한다.

HTTPS는 인터넷 상에서 정보를 암호화하기 위해 SSL 프로토콜을 이용해 데이터를 전송하고 있다는 것을 말한다. 즉, 문서 전송시 암호화 처리 유무에 따라 HTTP와 HTTPS로 나누어지는 것

모든 사이트가 HTTPS로 하지 않는 이유는, 암호화 과정으로 인한 속도 저하가 발생하기 때문이다.

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

SSH handshake이후에 통신을 시작한다. 구체적인 ssh hanshaking과정은 다음과 같다.

  1. Client Hello

브라우저 마다 지원하는 암호화 알고리즘과 TLS 정보를 전송하며, 클라이언트에서 생성한 난수값, 세션 ID를 전송합니다.

  1. Server Hello

사용할 TLS 버전, 사용할 암호화 알고리즘, 서버에서 생성한 난수값, 서버의 공개키, 서버의 인증서를 전송합니다.

  1. Client

브라우저에 내장되어있는 CA의 공개키로 서버가 보낸 인증서를 복호화 합니다.

복호화 되면 CA에 의해 인증서가 발급된 것이므로 서버의 신원이 확보됩니다.

클라이언트 난수값과 서버 난수 값을 통해 pre-master-key 라는 것을 전송합니다.

pre-master-key를 서버의 공개키를 통해 암호화 합니다(서버의 비공개키로만 복호화 가능합니다)

이 값을 대칭키로 사용합니다.

  1. Server

클라이언트로 부터 전송받은 pre-master-key를 정상적으로 복호화 후 master-key(대칭키)로 승격시킵니다.

  1. 상호 통신

위 과정을 통해서 공개키 방식으로 대칭키를 안전하게 설정하여 대칭키를 통해 데이터를 송, 수신하게됩니다.

https://opentutorials.org/course/228/4894

HTTP 1.0과 1.1의 차이는 무엇인가요?

https://withbundo.blogspot.com/2021/02/http-http-10-http-11.html

https://developer.mozilla.org/ko/docs/Web/HTTP/Connection_management_in_HTTP_1.x

헤더의 차이.

  1. 커넥션 유지 (Persistent Connection)

: HTTP1.0은 요청시 마다 새로 커넥션을 맺어야 하나, HTTP1.1은 지속적인 연결상태 유지가 가능하다.

  1. 호스트 헤더 (Host Header)

: HTTP1.0에서는 ip주소 하나마다 하나의 도메인만 설정 가능했으나,

HTTP1.1에서는 호스트 헤더(ip주소가 호스트) 추가로 하나의 ip에 여러개의 도메인이 가능하다. 즉 버츄얼 호스팅이 가능해졌다.

  1. 강력한 인증 절차 (Improved Authentication Procedure)

:프록시 인증에 대한 헤더의 추가로, 프록시 서버에서 인증처리가 가능해졌다.

HTTP2와 그 특징에 대해서 설명해 주세요.

HTTP2의 핵심은 HTTP1의 문제점들을 어떻게 개선시켰는가 이다.

A. HOL 블로킹과 RTT 지연을 일으키는 하나의 요청만을 한번에 처리할 수 있는 HTTP1.1의 문제를, HTTP 2.0에서는 멀티플렉싱을 지원함으로써 개선하였다.(하나의 연결로 여러개 메시지 전송가능)

B. 무거운 헤더로 인한 중복 정보 전달문제를 HTTP2.0에서는 HPACK(Header Table, 허프만 인코딩)을 이용해 헤더를 압축 시켰다.

C. 이외의 HTTP 2.0의 핵심적인 변화는 Server Push와 바이너리 프레이밍 계층이며, 이들 또한 성능향상에 도움을 주었다.

(Server Push: 클라이언트가 요청하지 않았으나 필요한 정보 보내줌)

(바이너리 프레이밍: 더 작은 메시지와 프레임으로 분할해서 더 많은 정보 전달.)

HTTP2 vs HTTP1

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

1) 자주 사용되는 Header 정보

Host- 요청이 전송되는 target의 호스트의 URL 주소를 알려 주는 헤더.

User-Agent- 요청을 보내는 클라이언트에 대한 정보 (ex. 웹 브라우저에 대한 정보)

Accept- 해당 요청이 받을 수 있는 respons body 데이터 타입을 알려 주는 헤더.

Connection- 해당 요청이 끝난 후에 클라이언트와 서버가 계속해서 네트워크 연결을 유지할 것인지 아닌지에 대해 알려주는 헤더.

Content-Type- HTTP 요청이 보내는 메시지 body의 타입을 알려주는 헤더.

Content-Length- HTTP 요청이 보내는 메시지 body의 총 사이즈를 알려주는 헤더.

TCP/UDP 헤더 구조


  • HTTP 상태 코드에는 어떤 것이 있나요?
  • 1xx(정보) : 요청을 받았으며 프로세스를 계속 진행합니다.
  • 2xx(성공) : 요청을 성공적으로 받았으며 인식했고 수용하였습니다.
    - 200 OK: 성공적으로 처리했을 때 쓰인다. 가장 일반적으로 볼 수 있는 HTTP 상태.
    - 201 Created: 요청이 성공적으로 처리되어서 리소스가 만들어졌음을 의미한다.
    - 202 Accepted: 요청이 받아들여졌지만 처리되지 않았음을 의미한다.
  • 3xx(리다이렉션) : 요청 완료를 위해 추가 작업 조치가 필요합니다.
    - 300 Multiple Choices(복수 응답): 서버에서 여러 개의 응답이 있음을 알릴 때 사용할 의도로 만들어졌으나, 정작 응답을 선택하는 방법은 표준화되지 않아 사용되지 않는다.
    - 301 Moved Permanently(영구 이동): 영구적으로 컨텐츠가 이동했을 때 사용된다.
  • 4xx(클라이언트 오류) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없습니다.
    - 400 Bad Request(잘못된 요청): 요청 자체가 잘못되었을 때 사용하는 코드이다.[3]
    - 401 Unauthorized(권한 없음): 인증이 필요한 리소스에 인증 없이 접근할 경우 발생한다. 이 응답 코드를 사용할 때에는 반드시 브라우저에 어느 인증 방식[4]을 사용할 것인지 보내야 한다. 단순히 권한이 없는 경우 이 응답 코드 대신 아래 403 Forbidden을 사용해야 한다.
    - 403 Forbidden(거부됨): 서버가 요청을 거부할 때 발생한다. 관리자가 해당 사용자를 차단했거나 서버에 index.html 이 없는 경우에도[5] 발생할 수 있다. 혹은 권한이 없을 때(로그인 여부와는 무관하다)에도 발생한다.
    - 404 Not Found(찾을 수 없음): 찾는 리소스가 없다는 뜻으로, 가장 흔하게 볼 수 있는 오류 코드이다.
    - 408 Request Timeout(요청 시간 초과) : 요청 중 시간이 초과되었을때 사용하는 코드이다.
  • 5xx(서버 오류) : 서버가 명백히 유효한 요청에 대한 충족을 실패했습니다.
    - 500 Internal Server Error(내부 서버 에러): 서버에 오류가 발생해 작업을 수행할 수 없을 때 사용된다. 보통 설정이나 퍼미션 문제. 아니면 HTTP 요청을 통해 호출한 문서가 실제 HTML 문서가 아니라 JSP, PHP, 서블릿 등의 프로그램일 경우 그 프로그램이 동작하다 세미콜론을 빼먹는 등의 각종 에러로 비정상 종료를 하는 경우 이 응답코드를 보낸다.
    - 502 Bad Gateway(게이트웨이 불량): 게이트웨이가 연결된 서버로부터 잘못된 응답을 받았을 때 사용된다.
    - 503 Service Temporarily Unavailable(일시적으로 서비스를 이용할 수 없음): 서비스를 일시적으로 사용할 수 없을 때 사용된다. 주로 웹서버 등이 과부하로 다운되었을 때 볼 수 있다.
    - 504 Gateway Timeout(게이트웨이 시간초과): 게이트웨이가 연결된 서버로부터 응답을 받을 수 없었을 때 사용된다.

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

HTTP 1.0은 매번 연결을 끊고 새로 생성함

HTTP 1.1부터는 Keep/alive를 지원

특정 시간까지는 access가 없더라도 기다리고 연결된 상태를 유지함, 이미 열려있는 곳에 요청

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

GET : 정보 요청, body에 담지않고 파라미터 쿼리로 전송

POST : 데이터를 body에 담아서 리소스를 생성하거나 변경

GET의 특징

  • URL에 데이터를 포함시켜 요청한다.
  • 데이터를 헤더에 포함하여 전송한다.
  • URL에 데이터가 노출되어 보안에 취약하다.
  • 전송하는 길이에 제한이 있다.

POST의 특징

  • URL에 데이터를 노출하지 않고 요청한다.
  • 데이터를 Body에 포함시킨다.
  • URL에 데이터가 노출되지 않아서 기본 보안은 되어있다.
  • 전송하는 길이에 제한이 없다.

Optional: QUIC에 대한 설명

REST API에 대해서 설명해 주세요.

HTTP를 통해 자원을 주고 받을 때 HTTP URI를 통해 자원을 명시하고 HTTP Method를 통해 자원의 CRUD를 수행하는 것을 말합니다.

REST는 Representational State Transfer의 약자입니다. 간단히 말해서 URI와 HTTP 메소드를 이용해 객체화된 서비스에 접근하는 것입니다. REST의 요소로는 크게 리소스, 메소드, 메세지 3가지 요소로 구성됩니다. 예를 들어 "이름이 Tom인 사용자를 생성한다." 라는 호출이 있을 때 "사용자"는 생성되는 리소스, "생성한다."라는 행위는 메소드, 그리고 "이름이 Tom인 사용자"는 메세지가 됩니다. 즉 리소스는 http://myweb/users라는 형태의 URI로 표현되며, 메소드는 HTTP Post, 메세지는 JSON 문서를 이용해서 표현됩니다. HTTP에는 여러가지 메소드가 있지만 REST에서는 CRUD에 해당하는 4가지의 메소드 GET, POST, PUT, DELETE를 사용합니다. REST는 리소스 지향 아키텍쳐 스타일이라는 정의에 맞게 모든 것을 명사로 표현하며 각 세부 리소스에는 id를 붙입니다.

url만으로 해당 요청이 어떤기능을 수행하는지 알수있다.

요청의 구체적인 행위는 http method를 이용하여 표현한다.

그렇기 때문에 url에서 동사를 사용하면 안된다.

출처:

https://wooaoe.tistory.com/51

[개발개발 울었다]

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

쿠키 : 클라이언트의 웹 브라우저가 지정하는 메모리/하드디스크

세션 : 로컬에는 세션id, 서버의 메모리에 저장

쿠키는 보안에 취약 - 세션은 쿠키를 이용해서 세션id만 저장하고 그것으로 구분해 서버에서 처리하기 때문에 보안성 높음

라이프 사이클, 쿠키는 브라우저를 종료해도 사용자가 삭제할 때까지 파일로 남아있음 - 세션은 브라우저가 종료되면 삭제됨

세션인증과 토큰인증에 대해서 설명해주세요

CORS란 무엇인가요?

서로 다른 도메인간에 자원을 공유하는 것을 의미하며 기본적으로 차단되어있습니다.

서버에서 응답 헤더에 특정 헤더를 포함하는 방식으로 해결하거나 프록시 서버를 구성하여 서버와 서버간의 요청으로 변경함으로써 해결할 수 있습니다.

Same-Origin Policy (동일 출처 정책)은 웹브라우저 보안을 위해 프로토콜, 호스트, 포트가 동일한 서버로만 ajax 요청을 주고 받을 수 있는 정책이다.

CORS (Cross-Origin Resource Sharing) Policy 교차 출처 리소스 공유 정책, 서로 다른 도메인 간에 리소스를 공유해 줄 수 있는 정책

https://xiubindev.tistory.com/115

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

웹 서버는 정적 콘텐츠만 제공

웹 어플리케이션 서버는 비즈니스 로직 처리, DB접속, 트랜잭션 등을 통해서 동적인 콘텐츠 제공.

웹 서버

  • 항상 동일한 데이터를 주는 정적 콘텐츠를 제공
  • 동적 콘텐츠 제공을 위해 WAS에 클라이언트의 요청을 보내고 결과를 전달
  • 정적 콘텐츠만 처리해 서버 부담을 줄임

웹 어플리케이션 서버(WAS)

  • WAS = 웹서버(정적 콘텐츠 수행) + 웹컨테이너(로직수행)
  • 동적인 컨텐츠를 제공
  • DB 접속/트랜잭션 관리/비즈니스 로직 수행
  • 요청에 맞는 콘텐츠를 제공하기 위해 필요함, 단순한 정적 콘텐츠는 웹 서버에 맡겨 부하를 줄임

https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html

API Gateway란 무엇인가요?

API Gateway는 API 서버 앞단에서 모든 API 서버들의 엔드포인트를 단일화 해주는 또 다른 서버입니다.

API에 대한 인증과 인가 기능을 가지고 있으며, 메세지의 내용에 따라 어플리케이션 내부에 있는 마이크로서비스로 라우팅하는 역할을 담당합니다.

API Gateway가 다운되면 모든 API를 사용 못할지도 모르는데, 어떤 방안을 마련해야 할까요?

Optional: MSA vs Monolithic Architecture

CSRF란? 해결방안은?

XSS란?

유니캐스트, 브로드캐스트, 멀티캐스트

유니캐스트 : 특정 대상과 1:1 통신

정보를 전송하기 위한 프레임에 자신의 MAC 주소와 목적지의 MAC 주소를 첨부하여 전송하는 방식

멀티캐스트 : 특정 다수와 1:N 통신

네트워크에 연결되어 있는 시스템 중 일부에게만 정보를 전송하는 것으로 특정 그룹에 속해 있는 시스템에게만 한 번에 정보를 전송할 수 있는 방법

브로드캐스트 : 네트워크에 있는 모든 대상과 통신

브로드캐스트 방식은 로컬 네트워크에 연결되어 있는 모든 시스템에게 프레임을 보내는 방식

네트워크 Layer 라우팅 알고리즘

⓵라우팅은 송신측에서 패킷을 전송하기 위해 목적지까지의 경로를 설정하고 경로에 따라 패킷을 전송하는 일 련의 과정(네트워크 정보를 생성, 교환, 제어하는 프로토콜을 총칭해 라우팅 프로토콜)

⓶ 라우터는 라우팅 기능을 수행하며 네트워크 계층 주소를 참조해 가능한 여러 경로 중에서 최적의 경로를 결정

⓷ 라우팅 알고리즘은 라우팅 기능을 수행할 때 가장 비용이 싼 최적의 경로를 찾는 방법. 구성 방식에 따라 정적, 동적으로 구분된다. (반드시 동적으로 갱신되어야 한다)

⓸ 정적 라우팅 알고리즘은 관리자가 직접 라우팅 테이블 정보를 설정해야 하기 때문에 간단하지만 네트워크 상황이 변할 경우 수동으로 재설정 해야 하므로 비효율적

⓹ 동적 라우팅 알고리즘은 네트워크 토플로지와 같은 환경 변화 정보를 분석하여 라우팅 테이블을 갱신하고 갱신 메시지를 주변에 전달하여 네트워크 환경 변화에 능동적으로 대처

출처:

https://djvaspirit.tistory.com/25

[달시의 반복되는 하루]

https://wogh8732.tistory.com/32

로드 밸런싱이란 무엇인가요?

분산식 웹 서비스로 여러 서버에 부하(Load)를 나누어 줌, Round Robin, Least Connection, Response Time, Hash 등의 기법이 있음

1) Round Robin : 각 서버에 session을 순서대로 연결하는 방식, 모든 클라이언트를 똑같이 취급 하고, 서버별 처리량을 기억하고 있어야 함

2) Least Connextion : 클라이언트와 서버별 연결된 connection 수를 고려하여 가장 적은 서버에 연결하는 방식

로드 밸런싱은 api gateway나 proxy서버 등에서 주로 처리한다.

1대의 서버가 모든 트래픽을 감당하기 힘들기 떄문에 하드웨어의 성능을 높이거나, 여러대의 서버가 나눠서 일을 하도록 한다.

이 때 여러 서버가 균등하게 트래픽을 감당하는 것을 로드 밸런싱이라고 한다.

처리방식

  1. Round Robbin: CPU 스케쥴링 방식처럼 시간을 두고 돌림
  2. Least Connections: 연결 개수가 가장 적은 서버 선택
  3. Source: 사용자IP를 해싱해서 분배 - 특정 사용자가 항상 같은 서버로 연결

장애 대비

  • 로드 밸런서 자체에 문제가 생길 수 있기 때문에 로드 밸런서를 이중화 하여야함
  • 많은 트래픽이 발생할 경우 어떤식으로 대처할 수 있나요?
      

Scale-out 과 Scale-up 방식을 사용할 수 있음.

Scale Up 방식은 말그대로 고성능 CPU, 메모리 확장, SSD 등 서버의 스펙을 높이는 수직 확장 방식입니다.

스케일아웃은 비슷한 스펙의 서버를 여러대로 증설하여 로드밸런싱을 통한 병렬처리가 가능한 수평 스케일업 아키텍처

Scale-out시 로드밸런서도 함께 적용하여 한 서비스에 부하가 걸리지 않도록 조정.

실제 적용

https://engineering.linecorp.com/ko/blog/how-line-messaging-servers-prepare-for-new-year-traffic/

https://d2.naver.com/helloworld/6070967

SSL/TLS란?

SSL은 Secure Socket Layer의 약자로 웹서버와 웹 브라우저 간의 암호화 통신을 위하여 응용계층과 TCP/IP 계층에서 동작하는 프로토콜이며, Netscape사에서 만들었으며 ISO표준 정식명칭은 TLS(Transport Layer Security)이다.

대칭키와 공개키는 무엇인가요?

대칭키 암호화 :암호화와 복호화에 사용하는 키가 같은 암호화 알고리즘

공개키 암호화: 개인키로 암호화하면 공개키로 복호화, 공개키로 암호화하면 개인키로 복화하 가능한 알고리즘.

네트워크 공격의 종류

  1. 스캐닝 공격(Scanning Attack)
  2. 스니핑 공격(Sniffing Attack)
  3. 스푸핑 공격(Spoofing Attack)
  4. 플러딩 공격(Flooding)

https://com24everyday.tistory.com/260

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

서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하는 것을 가리켜 '프록시', 중계 기능을 하는 것을 프록시 서버라한다.

프록시 서버는 요청된 내용을 캐시에 저장하고 다음에 같은 요청이 들어오면 캐시에 저장된 정보 를 제공해 전송시간을 단축함

TCP tahoe와 TCP reno + 다른 혼잡제어 정책 간단히

3 ack duplicated timeout

빠른회복, 빠른재전송

Optional: DES vs AES

[https://liveyourit.tistory.com/196](https://liveyourit.tistory.com/196)

Optional: SHA-256 암호화 설명

Optional: RSA 알고리즘 설명

공인ip와 사설 ip, 포트포워딩

VPN이란?

CDN

CDN은 지리적 제약 없이 전 세계 사용자에게 빠르게 콘텐츠를 전송하는 기술

프록시 서버에서 출반한 웹 캐시의 클라우드

ipv4 와 ipv6

uri,urn,url

포워드 프록시 리버스 프록시

서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하는 것을 가리켜 '프록시', 중계 기능을 하는 것을 프록시 서버라한다.

프록시 서버는 공통적으로 요청된 내용을 캐시에 저장하고 다음에 같은 요청이 들어오면 캐시에 저장된 정보 를 제공해 전송시간을 단축함

포워드 프록시는 클라이언트와 인터넷 사이에서 위치해서 클라이언트가 한 요청을 캐싱하고, 서버는 응답 요청을 누가보냈는지 알지 못하게 한다.

리버스 프록시는 인터넷과 서버 사이에서 위치해서 클라이언트 요청을 캐싱하고 서버 정보를 클라이언트에게 숨기며 요청에대한 부하분산의 역할을 한다.

ex) Nginx, CDN 등도 프록시의 일종!, gateway랑은 다른 개념.

프록시 서버의 예시

프록시 패턴이란?

로드밸런싱이란

로드밸런서의 종류(L4,L7)

TCP 혼잡제어 흐름제어 : Stop and Wait,Sliding Window, Slow Start, 합증가 뭐시기(AIMD)

서브넷, 서브넷 마스킹

서브넷(Subnet)이라는 것은 하나의 네트워크가 분할되어 나눠진 작은 네트워크

scale-out, scale-in,scale-down, scale-up 비교, 예시

TCP 쉽게 정리 : https://evan-moon.github.io/2019/11/10/header-of-tcp/#:~:text=TCP는 여러 개의 필드,세그먼트의 정보를 나타낸다.

로드 밸런싱 관련 자료: https://d2.naver.com/helloworld/284659

0개의 댓글