CS/Network 12

HTTP: 리다이렉션과 부하 균형

도서 HTTP 완벽 가이드를 읽고 알게 된 지식을 정리한 글입니다. 이번에는 리다이렉션 기법들과 해당 기법들이 부하 균형을 맞추는 방법에 대해 알아봅니다. 1. 왜 리다이렉트인가? 리다이렉션은 다음의 장점을 가진다. 신뢰성 개선 -> 한 서버에서 실패한 경우 다른 서버를 이용할 수 있기 때문에 신뢰성이 개선된다. 지연 최소화 -> 클라이언트가 보다 가까운 리소스에 접근할 수 있게 되기 때문에 응답시간이 줄어든다. 네트워크 대역폭 절약 -> 목적지 서버 분산을 통해 네트워크 대역폭을 절약한다. 리다이렉션이란 최적의 분산된 콘텐츠를 찾는 것을 도와주는 기법의 집합이다. 대부분의 리다이렉션 장치들은 부하 균형(들어오는 메시지의 부하를 서버 집합에 분산하는 것)을 포함한다. 반대로 모든 부하 균형도 리다이렉션을..

CS/Network 2023.04.10

HTTP: 엔터티와 인코딩

도서 HTTP 완벽 가이드를 읽고 알게 된 지식을 정리한 글입니다. 엔터티 HTTP 메시지를 인터넷 운송 시스템의 컨테이너라고 생각한다면, HTTP 엔터티는 메시지의 실질적인 화물이다. 엔터티 본문 가공되지 않은 데이터만을 담고 있다. 때문에 엔터티 헤더에서 엔터티 본문 데이터의 의미에 대해 설명한다. 여기에는 Content-Type, Content-Length, Content-Language, Content-Encoding, Content-Location, Content-Range, Content-MD5, Last-Modified, Expires, Allow, ETag, Cache-Control 등이 있다. Content-Length 메시지의 엔터티 본문의 크기를 바이트 단위로 나타낸다. 만약 인코딩된..

CS/Network 2023.03.27

HTTP: 보안 HTTP

도서 HTTP 완벽 가이드를 읽고 알게 된 지식을 정리한 글입니다. 비밀키 암호화 공개키 암호 암호 알고리즘은 누구에게나 열려 있지만, 키는 닫혀 있다. 비밀 키 암호 대칭 키 암호라고도 불린다. 발송자와 수신자 모두 동일한 키를 갖는다. 인코딩할 때 키 == 디코딩할 때 키 공개키 암호 두 개의 비대칭 키를 사용한다. 인코딩 키는 모두에게 공개되어 있다. 메시지를 디코딩하는 능력은 소유자에게만 보유한다. RSA는 유명한 공개 키 암호 방식이다. 그래서...? 공개 키 암호 방식은 더 안전하지만 알고리즘 계산이 느리기 때문에, 실제로는 두 가지 방식을 섞은 것을 쓴다. 예를 들어, 노드들 간의 안전한 의사소통 채널을 수립할 때는 공개 키 암호화 방식를 사용하고, 이후에 전송 데이터를 암호화할 때는 대칭 ..

CS/Network 2023.03.24

HTTP: 기본 인증

도서 HTTP 완벽 가이드를 읽고 알게 된 지식을 정리한 글입니다. 인증이란 사용자 스스로를 증명하는 것이다. HTTP의 기본 인증 방식을 다뤄본다. 기본 인증 예 사용자가 게시판에 글을 쓰는 페이지에 요청한다. 서버가 글쓰기 페이지에 접근하는 데 필요한 인증 정보를 요구한다. 브라우저가 사용자를 로그인 페이지로 리다이렉트시킨다. 사용자가 로그인을 완료하면, 브라우저는 그것들을 이어 붙인 뒤 인코딩한다. 서버가 사용자 이름과 비밀번호를 디코딩하여 그 값이 정확한지 검사한 후, 문제가 없다면 200 OK 상태 코드와 함께 글쓰는 페이지를 반환한다. 인증과 관련된 헤더 헤더 이름 헤더 설명 WWW-Authenticate realm은 요청 받은 문서 집합의 이름을 따옴표로 감싼 것으로, 사용자는 이 정보를 보..

CS/Network 2023.03.20

HTTP: 클라이언트 식별과 쿠키

도서 HTTP 완벽 가이드를 읽고 알게 된 지식을 정리한 글입니다. HTTP는 Stateless(비상태성) 특징을 가지고 있어 요청을 보낸 클라이언트를 식별할 수 없다. 그러나 현대의 웹 사이트들은 개인화된 서비스를 제공하고 싶어한다. 때문에 클라이언트를 식별하기 위한 새로운 방법이 필요하다. 이 방법들에는 HTTP 헤더, 클라이언트 IP 주소, 사용자 로그인 인증, fat URL, 쿠키 등이 있다. HTTP 헤더 사용자에 대한 정보를 전달하는 HTTP 요청 헤더가 있다. FROM 사용자의 이메일 주소이다. 각 사용자가 서로 다른 이메일 주소를 가지므로, 사용자 식별이 가능하다. 악의적인 서버가 이메일 주소를 모아 스팸 메일을 발송할 수 있기 때문에, 요청을 보내는 브라우저 측에서 잘 사용하지 않는 헤더..

CS/Network 2023.03.20

HTTP: 캐시

도서 HTTP 완벽 가이드를 읽고 알게 된 지식을 정리한 글입니다. 웹 캐시란 자주 쓰이는 문서의 사본을 자동으로 보관하는 HTTP 장치이다. 간단하게 말해, 캐시된 사본이 존재한다면, 원 서버가 아닌 캐시로부터 문서를 제공받는 것이다. 캐시의 장점 불필요한 데이터 전송을 줄여 네트워크 요금을 줄일 수 있다. 네트워크 병목을 줄여준다. 원 서버에 대한 요청을 줄여준다. 거리로 인한 지연을 줄여준다. 캐시 적중/부적중 적중률 캐시가 요청을 처리하는 비율이다. 적중률은 캐시의 크기, 캐시 사용자들의 관심사 일치 정도, 데이터 변경 주기, 캐시 설정 방식에 따라 달라진다. 적중률 40%면 웹 캐시로 괜찮은 편이다. 바이트 적중률 큰 객체는 덜 접근되지만, 그 크기 때문에 전체 트래픽에는 더 크게 기여할 수 있..

CS/Network 2023.03.13

HTTP: 웹 서버

도서 HTTP 완벽 가이드를 읽고 알게 된 지식을 정리한 글입니다. 웹 서버 HTTP 요청을 처리하고 응답을 제공한다. 기능, 형태, 크기가 다양하다. -> 네트워크에 연결된 컴퓨터에서 동작하는 경우, 가전제품에 내장되는 경우 등 표준 컴퓨터 시스템에서 동작하는 웹 서버의 경우 Apache, nginx 서버가 많이 사용된다. apache 하나의 클라이언트 요청을 하나의 스레드가 처리한다. 요청이 많으면 시스템 자원 낭비가 심하다. nginx 모든 클라이언트 요청을 이벤트 핸들러를 통해 정해진 개수의 스레드가 비동기적으로 처리한다. 문맥 교환 비용이 적고 시스템 자원 낭비가 적다. 동시 접속자 수가 많아져도 추가적인 스레드 생성 비용이 들지 않는다. 참고 아파치 HTTP 서버, Apache와 NginX 비..

CS/Network 2023.03.13

HTTP: HTTP 메시지

도서 HTTP 완벽 가이드를 읽고 알게 된 지식을 정리한 글입니다. 메시지의 흐름 메시지가 서버 방향으로 흐르는 것은 인바운드로 이동하는 것이고, 모든 처리가 끝난 뒤에 클라이언트 방향으로 돌아오는 것은 아웃바운드로 이동하는 것이다. 요청·응답 메시지 관계없이 모든 메시지는 다운스트림으로 흐른다. 메시지 문법 메시지는 시작줄, 헤더, 본문으로 이뤄진다. 시작줄: 어떤 메시지인지 서술한다. 헤더: 속성 정보를 가진다. 본문: 데이터를 담는다. 요청 메시지와 응답 메시지 형식 요청 메시지 응답 메시지 시작줄 헤더 본문 메서드 요청의 시작줄은 메서드로 시작한다. 서버에게 무엇을 해야 하는지 알려준다. 메서드에 따라 요청 메시지의 본문 여부가 나뉜다. 메서드 설명 메시지 본문 여부 GET 서버에서 어떤 문서를 ..

CS/Network 2023.03.06

HTTP: URL과 리소스

도서 HTTP 완벽 가이드를 읽고 알게 된 지식을 정리한 글입니다. URL의 정의 리소스의 위치를 가리킨다. URL을 통해 리소스를 찾고, 사용하고, 공유할 수 있다. URI의 한 부분이다. URL의 문법 스킴, 사용자 이름, 비밀번호, 호스트, 포트, 경로, 파라미터, 질의, 프래그먼트 컴포넌트가 있다. 스킴 URL을 해석하는 애플리케이션이 어떤 프로토콜을 사용하여 리소스를 요청해야 하는지 알려준다. 특징 알파벳으로 시작한다. URL의 시작 부분이다. ':' 문자 이전까지이다. 대소문자를 구분하지 않는다. 스킴별 특징 스킴 특징 http HTTP용 스킴 기본 포트 값: 80 형식: http://:/?# 예: http://github.com/kkumta/Time-Deal-Shop/blob/main/REA..

CS/Network 2023.02.26

HTTP: HTTP 개관

도서 HTTP 완벽 가이드를 읽고 알게 된 지식을 정리한 글입니다. HTTP가 무엇인가? HTTP는 웹 상에서 클라이언트와 서버가 소통할 수 있도록 하는 프로토콜이다. 웹에서, 클라이언트와 서버는 HTTP라는 양식에 맞춰 리소스를 요청하고 응답한다. 리소스 웹 서버가 관리하고 제공하는 자원이다. 웹 리소스에는 정적 파일과 동적 리소스가 있다. 텍스트 파일, 워드 파일, 이미지 파일, HTML 파일 등은 정적 파일이다. 동적 리소스는 요청에 따라 각기 다른 콘텐츠를 생산한다. 이는 주식 거래, 전자 상거래, 검색엔진 등에 활용된다. 미디어 타입 웹은 수천 가지의 데이터 타입을 다룬다. 때문에 모든 HTTP 객체에는 MIME(Multipurpose Internet Mail Extensions) 타입이 필요하..

CS/Network 2023.02.22