DevOps BootCamp/네트워크 기초 14

Proxy Server Sprint

- proxy_temp_path : ● 프록시 요청과 관련된 임시 파일이 저장되는 경로 ★ 리버스 프록시일 경우, NGINX는 백엔드 서버에서의 데이터를 버퍼링 하거나 캐시 하기 위해 임시 파일이 필요 why? 클라이언트를 대신하여 백엔드 서버(예: 애플리케이션 서버 또는 다른 웹 서버)로 요청을 전달하기 때문에 - proxy_cache ${mycache} : > 프록시 서버에서 응답을 캐싱하여, 동일한 요청이 반복될 때 백엔드 서버에 재요청하는 대신 캐시된 응답을 반환함으로써 성능을 향상 - keepalive : > 클라이언트와 서버 간의 여러 HTTP 요청과 응답을 하나의 TCP 연결에서 처리하는 기술로, 연결을 재활용하여 네트워크 지연과 서버 리소스 사용을 줄이는데 도움을 줍니다. event 기반

CDN

Content Delivery Network > 콘텐츠를 빠르고 효율적으로 제공하기 위해 등장한 서비스 ★ CDN 특징 > 원본을 복사하여 여러 개의 캐시 서버로 구성 > 콘텐츠를 요청 받은 경우 데이터를 전달하기 유리한 캐시 서버에서 콘텐츠 제공 - 제공할 콘텐츠를 가지고 있는 위치 상으로 가장 가까운 캐시 서버가 콘텐츠 제공 1. CDN 네트워크는 요청한 곳과 가장 가까운 데이터 센터가 해당 콘텐츠를 저장하고 있는지 확인 2. 지도와 같은 경우라면 중국에 위치한 데이터 센터가 확인 3. 만약 해당 데이터 센터가 전달 할 콘텐츠를 가지고 있지 않다면, 다른 데이터 센터가 해당 콘텐츠를 가지고 있는지 확인 4. 이때 콘텐츠가 없는 데이터 센터를 제외한 나머지 중 지리적으로 가장 가까운 데이터 센터를 선택..

프록시 캐시

프락시: 클라이언트와 서버 사이에 대리로 통신을 수행하는 것 > 그 중계 기능을 하는 서버를 프락시 서버 장점 > 클라이언트, 혹은 반대로는 서버가 다른 네트워크에 간접적으로 접속 > 보안 > 캐싱을 통한 성능 > 트래픽 분산 ★ 프록시 캐시 지시어 ★ 캐시 무효화 ● no-cache와 must-revalidate 차이 > no-cache - 서버와 네트워크 단절되어 있는 경우, 오래된 데이터를 보여주는 개념으로 200ok 사용 > must-revalidate - 서버 접근 불가할 때 504 Gateway Timeout 오류 사용(통장 잔고 등 중요한 정보)

캐시

캐시 > 데이터나 값을 미리 복사해 놓는 임시 장소 > 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용 > 브라우저에 캐시를 저장할 땐 헤더에 cache-control 속성을 통해 캐시가 유효한 시간을 지정할 수 있음 캐시 검증 헤더와 조건부 요청 > 캐시의 유효시간이 초과하면 다시 서버에 요청을 보내 새로운 데이터로 캐시를 업데이트 > 하지만 캐시의 유효기간이 지났지만, 데이터의 변경이 없는 경우? > 검증 헤더 사용 ★ 검증 헤더 ● If-Modified-Since: ${data}(요청) -> Last Modified: ${data}(응답) > 데이터가 마지막으로 수정된 시간 정보를 헤더에 포함 1. 데이터가 수정되었는지..

로드밸런서(Load Balancer)

서비스 가용성(availability)를 높이기 위해서 하나의 서비스는 보통 두 대 이상의 서버로 구성하는데 각 서버 IP주소가 다르므로 사용자가 서비스를 호출할 때는 어떤 IP로 서비스를 요청할지 결정해야 함 사용자에 따라 호출하는 서버의 IP가 다르면, 특정 서버에 장애가 발생했을 때, 전체 사용자에게 영향을 미치지 않아 장애 범위는 줄어들겠지만 여전히 부분적으로 서비스 장애가 발생 > 해결책 : 로드밸런서 로드 밸런서 > 서비스를 위한 가상 IP를 하나 제공하고, 사용자는 각 서버의 개별 IP 주소가 아닌 동일한 가상 IP를 통해 각 서버로 접근, 또한 각 서버의 서비스 상태를 체크해 서비스가 가능한 서버로만 사용자의 요청을 분산 > 서버에서 장애가 발생하더라도 기존 요청을 분산하여 다른 서버에서 ..

프록시

프록시(Proxy)란? > 프록시(Proxy)의 사전적 의미는 대리, 대리권을 의미 > 프록시 서버는 원 서버를 대리하여 통신하며 캐시, 로드밸런서, 보안 등 중계 역할을 하는 하는 서버 > 프록시 서버가 중간에 위치하기 때문에 클라이언트는 프록시 서버를 ‘서버’라고 인식하고, 서버 입장에서는 프록시 서버를 ‘클라이언트’로 인식 ● 프록시 종류 포워드 프록시(forward proxy) 혹은 리버스 프록시(reverse proxy) ★ 포워드 프록시 > 일반적인 프록시 서버는 포워드 프록시를 말하며, > 클라이언트-서버 구조에서 클라이언트 쪽을 대리하며, 클라이언트에서 서버로 리소스를 요청할 때 직접 요청하지 않고 프록시 서버를 거쳐서 요청 ★ 리버스 프록시 > 리버스 프록시는 포워드 프록시와 반대의 개념..

두 번째 발표

[C514] 다음의 헤더를 보고 유추할 수 있는 내용을 모두 작성하세요. 1. 응답 헤더 ● HTTP/1.1 버전을 사용하고 있으며, 상태코드는 200으로 응답 완료 상태입니다. ● 브라우저가 구동되는 웹 서버 환경은 nginx이며, 데이터는 2022년 12월 6일 화요일 4:41:09초에 만들어졌습니다 ● 데이터 타입은 text / html 형식이며, 브라우저는 내가 작성한 데이터를 utf-8형식으로 변환한다는 것을 알 수 있습니다. ● 데이터 압축 방식은 chunked인 것으로 보아 대용량의 데이터를 여러 조각으로 쪼개서 보내는 것으로 보입니다. ● connection 부분에서 연결을 유지 한다는 것을 알 수 있으며, keep-alive 구문에서 연결 허용 시간은 60초인 것을 알 수 있습니다. ● ..

첫 번째 발표

[C511] 소켓과 포트의 특징을 작성하고, 그 차이점을 설명하세요. 소켓(Socket): 소켓은 네트워크 상에서 프로세스 간에 통신을 가능하게 해주는 소프트웨어 인터페이스입니다. 소켓은 특정 프로토콜(예: TCP, UDP)을 사용하여 네트워크를 통해 데이터를 송수신할 수 있습니다. 소켓은 프로세스가 네트워크에서 데이터를 보내고 받을 수 있는 커넥션의 엔드포인트입니다. 소켓은 IP 주소와 포트 번호의 조합으로 고유하게 식별되며, 클라이언트와 서버 간의 통신을 가능하게 합니다. 소켓은 일반적으로 프로그래밍 언어에서 제공하는 라이브러리를 통해 사용됩니다. 포트(Port): 포트는 컴퓨터 네트워크에서 특정 프로세스를 식별하는 논리적인 개념입니다. 포트는 프로세스가 네트워크 상에서 데이터를 주고 받을 수 있는 ..

Physical Layer - 네트워크 액세스 계층

> 물리적 연결과 관련된 정보를 정의, 물리적 장비를 통해 전기 신호를 전달 - 허브(Hub), 케이블(Cable), 리피터(Repeater), 트랜시버(Tranceiver) 등 허브와 리피터 : 네트워크 통신을 중재 케이블과 커넥터 : 케이블 본체를 구성하는 요소 트랜시버 : 컴퓨터의 랜카드와 케이블을 연결하는 장비로 다양한 외부신호를 컴퓨터 내부 전기신호로 바꾸어주는 역할

Data Link Layer - 데이터 링크 레이어

- 한 명과 통신하는 것이 아니라 동시에 여러 명과 통신할 수 있다는 것이기 때문에 무작정 데이터를 주고 받는 것이 아니라, 받는 사람이 데이터를 받을 수 있는지 확인하는 작업부터 해야 함 > 플로우 컨트롤(flow control) 네트워크 인터페이스 카드(Network Interface Card, NIC) > 랜 카드 라고 부르기도 하고, 네트워크 카드, 네트워크 인터페이스 컨트롤러(Network Interface Controller), 네트워크 어댑터(Network Adapter) 등으로 부르기도 함 > 컴퓨터를 네트워크에 연결하기 위한 하드웨어 장치 네트워크 인터페이스 카드의 주요 역할 - 직렬화(Serialization) : NIC는 전기적 신호를 데이터 신호 형태로, 혹은 그 역으로 변환 - M..