Operation/Network 19

웹소켓(WebSocket) 개념 이해하기!

WebSocket(WebSocket)은 클라이언트와 서버를 연결하고 실시간으로 통신이 가능하도록 하는 통신 프로토콜이다. WebSocket은 TCP 접속에 전이중(duplex) 통신 채널을 제공한다. 쉽게 말해, Socket Connection을 유지한 채로 실시간 양방향 통신이 가능하다. 아래 서비스에서 대표적으로 웹소켓을 많이 사용한다. SNS 실시간 채팅 화상 회의 실시간 협업 툴 온라인 게임 증권, 거래소 예시를 보면 동시간 접속자 수가 많으며, 실시간 데이터가 아주 많이 오간다는 것을 알 수 있다. vs HTTP 먼저 일반적으로 사용하는 HTTP 프로토콜과의 차이를 알아보자. 1. State HTTP는 단방향 통신이다. 클라이언트가 서버로 요청을 보내면 응답을 받는 구조로 동작하며, 어떠한 상태..

Operation/Network 2023.07.25

Network - 캐시 우회 전략 설계하기!

대규모 웹 서비스에서 캐시는 반드시 필요하다. 만약 정적 파일(HTML, CSS, Image, JavaScript, ...)을 캐시에 저장하고자 한다. 그런데 해당 파일들이 캐싱된다면 새로운 버전의 파일들을 배포했을 때 캐싱된 이전 버전의 파일을 불러오게 되지는 않을까..? 이는 어떻게 처리해야 할까? Cache-Control 토스 프론트엔드 챕터에서는 Cache-Control을 s-maxage=31536000, max-age=0로 설정한다고 한다. 왜냐하면 max-age는 브라우저 캐시의 유효 기간을 설정한다. 브라우저 캐시가 발급되면 유효 시간동안 서버에 요청을 보내지 않고 캐싱된 자원만 사용한다. 해당 브라우저 캐시는 서버 측에서 어떤 작업을 해도 지우기가 어렵다. 그래서 s-maxage만 1년으로..

Operation/Network 2022.11.05

Network - OSI 7 Layer 제대로 이해하기! (심화)

OSI7 Layer는 어떠한 의미를 가질까..? 제대로 이해해보자. 7계층으로 왜 나눌까? 책임을 분산시킬 수 있다. 특정한 곳에 이상이 생기면 해당 단계만 수정할 수 있다. 통신이 일어나는 과정을 단계별로 알 수 있다. OSI 7 계층 전체 구성도 OSI 7 계층의 전체 구성은 아래와 같다. 많은 분들은 OSI 7 계층이 책임을 분산하는 것에만 목적이 있다고 알고 있다. 하지만 각 계층은 서로 독립적인 것이 아니다. 해당 구성을 보면 1 계층으로 갈 수록 전송하는 데이터가 많은 것을 알 수 있다. 그것이 어떠한 의미를 가지는 지 생각해보자. 각 단계의 역할 아래는 각 단계가 하는 역할을 그린 것이다. 해당 과정을 이해하기 위해 HTTP 요청을 예로 들어보자. 응용 계층 (application layer..

Operation/Network 2022.10.20

HTTP 메시지(message) 원문 분석해보기!

HTTP 원문이란? 아래와 같이 HTTP 메시지 전체를 의미한다. HTTP 메시지는 어떤 구조를 가지고 있는 지 알아보자. HTTP 메시지 구조 HTTP의 Message는 아래의 구조를 가진다. 1. 시작 라인 시작 라인(start-line)은 항상 HTTP Message의 첫 번째 줄에 위치한다. 시작 라인은 요청 메시지 / 응답 메시지 인지에 따라 아래의 정보를 포함한다. 요청 메시지 - HTTP Method, 요청 대상, HTTP Version (ex. GET /background.png HTTP1.1) 응답 메시지 - HTTP Version, HTTP Status Code, Http Status Text (ex. HTTP/1.1 404 Not Found.) 요청 메시지의 경우 추가로 아래의 형식으..

Operation/Network 2022.10.20

HTTP - Cache-Control 헤더 이해하기 (+ 웹캐시 적용하기!)

이번 포스팅에서는 메일 서비스의 수신 확인 태그 API에 캐시를 적용하면서 배운 내용을 공유해드리겠습니다. 이해를 위해 메일 수신 확인 태그를 먼저 설명드리겠습니다. (해당 포스팅 내용과 관계 없습니다..!) 메일 수신 확인 태그란 A가 B에게 메일을 보냈을 때 B가 메일을 확인 했는 지와 언제 확인했는 지 등을 확인할 수 있게 도와주는 기능입니다. 메일을 보낼 때 발송 서버에서 수신 확인 태그를 이미지 형식으로 내용을 붙여서 발송해요 해당 이미지 태그의 src에는 수신 확인 태그의 end-point를 넣습니다. 수신 확인 태그의 end-point는 해당 parameter에 있는 key로 DB에서 메일을 조회해서 해당 메일에 대해 읽음을 표시를 해주고 빈 이미지를 반환합니다. 현재 메일 수신 확인 요청의..

Operation/Network 2022.10.12

Network - 대칭키, 공개키(비대칭키)란 무엇인가?!(+ SSL, HTTPS)

대칭키랑 공개키의 차이를 수도 없이 봤지만, 막상 설명해야 할 때 헷갈리는 경우가 많다. 대칭키의 장단점은 무엇이고, 어떠한 단점을 해결하기 위해 공개키가 등장하게 되었는지 등을 알아보자. 해당 포스팅에서 내용을 확실하게 정리하면서 다시는 헷갈리지 않도록 하자! 개요 대칭키 암호화 방식은 암복호화에 사용하는 키가 동일한 암호화 방식을 말한다. 공개키 암호화 방식은 암복호화에 사용하는 키가 서로 다른 암호화 방식을 말한다. (비대칭키 암호화라고도 한다.) 대칭키 대칭키는 암복호화키가 동일하므로 해당 키를 아는 사람이 문서를 복호화할 수 있게 된다. 대표적인 알고리즘은으로는 DES, 3DES, AES, SEED, ARIA 등이 있다. 공개키 암호화 방식에 비해 연산 속도가 빠르다는 장점이 있지만, 키를 교환..

Operation/Network 2022.10.12

Network - 주소 창에 www.naver.com을 치면 일어나는 일 (세분화!)

지난 포스팅에서는 DNS의 동작 원리와 과정만 다뤘습니다. https://jaehoney.tistory.com/74 이번 포스팅에서는 조금 더 상세히 세분화합니다. 세분화 주소 창에 www.naver.com을 치면 일어나는 일을 아래의 과정으로 세분화할 수 있습니다. 도메인 네임 조회 (Local) 라우팅 DNS에 도메인 정보를 질의 TCP 커넥션 HTTP 요청 컨텐츠 다운로드 브라우저 렌더링 1. 도메인 네임 조회 가장 먼저 하는 것은 해당 도메인에 대한 주소가 있는 지 검사하는 것입니다. DNS 서버에 질의하기 전에 브라우저의 DNS 캐시를 확인해서 www.naver.com에 대한 정보가 있는 지 확인합니다. 해당 캐시가 존재하지 않다면 로컬의 hosts 파일에 www.naver.com에 대한 정보가..

Operation/Network 2022.10.07

Network - TCP 통신 이해하기!

TCP 통신이란? 네트워크 통신에서 신뢰적인 연결방식 Unreliable network에서 Reliable network를 보장할 수 있도록 하는 프로토콜 Network congestion avoidance algorithm(혼잡 방지 알고리즘)을 사용한다. Reliable network Reliable network를 보장한다는 것은 아래 4가지 문제를 해결한다는 것을 의미한다. 손실: Packet이 손실될 수 있다. 순서: packet의 순서가 바뀔 수 있다. 혼잡: 네트워크가 혼잡하다. 과부하: Receiver(수신자)가 과부하 될 수 있다. TCP는 이러한 문제를 흐름 제어와 혼잡 제어 2가지 기법으로 해결한다. 흐름 제어 흐름 제어에 대한 설명이다. 흐름 제어는 송신측과 수신측의 데이터 처리 속..

Operation/Network 2022.10.03

Network - HTTP 1.1과 HTTP 2.0의 차이

HTTP 1.1 버전은 15년 동안 지속되었습니다. 하지만 하나의 웹사이트에 무수한 리소스가 존재하고 무수한 요청을 주고 받게 되면서 HTTP 1.1이 가진 문제점이 대두되면서 HTTP 2.0이 등장했습니다. HTTP 1.1과 HTTP 2.0의 차이점을 HTTP 1.1(기존)의 문제점과 HTTP 2.0의 해결 전략을 중심으로 알아보겠습니다. Multiplexed Streams HTTP 1.0에서 TCP 세션을 맺는 것을 중복해서 수행하는 성능 이슈가 있었고, HTTP 1.1에서 Keep-alive를 통해서 해당 문제를 풀어냈었습니다. https://jaehoney.tistory.com/279 HTTP 2.0에서는 Multiplexed라는 기술을 도입하는데 1개의 세션으로 여러 개의 요청을 순서 상관없이 ..

Operation/Network 2022.09.29

Network - Proxy와 Gateway의 차이!

프록시(Proxy)와 게이트웨이(Gateway)는 클라이언트와 목적지 서버 간의 중계하는 역할을 한다는 점에서 매우 유사하다. 프록시와 게이트웨이의 역할과 차이점에 대해서 알아보자. 프록시 프록시가 있는 서버에서는 아래와 같이 요청이 전달된다. 클라이언트 -> 프록시 프록시 -> 서버 프록시는 중간에서 요청을 받아서 전달하고, 응답도 받아서 클라이언트에 전달해야 하므로 커넥션을 적절히 다룰 수 있어야 한다. 프록시를 사용하는 목적은 아래와 같다. 네트워크 캐싱 보안점 역할 (방화벽) 나는 무중단 배포를 위해 Reverse Proxy(클라이언트 -> 프록시 서버 -> 내부 서버 구조의 Proxy)를 사용한 적이 있다. 참고: https://jojoldu.tistory.com/267 게이트웨이(Gateway..

Operation/Network 2022.09.29