네트워크/HTTP 완벽 가이드
19. 리다이렉션과 부하 균형
리다이렉션은 현대 웹에서는 피할 수 없습니다. HTTP 애플리케이션은 언제나 이 세가지를 원하기 때문입니다. 신뢰할 수 있는 HTTP 트랜잭션의 수행 지연 최소화 네트워크 대역폭 절약 이러한 이유때문에 웹 컨텐츠를 여러 장소에 배포해놓습니다. 그래서 이렇게 개선이 가능합니다! 한쪽에 이상이 생겨도 다른쪽이 커버를 할 수 있다. -> 신뢰성 개선 여러 장소 중 가장 가까운 리소스에 접근을 할 수 있다. -> 지연 최소화 목적지 서버가 분산 -> 대역폭 절약 하지만 컨텐츠를 마구잡이로 분산시킬 수는 없습니다. 사용률이 정말 적은곳에 많은 배포를 했다면, 나머지의 서버에 트래픽이 집중이 될 것이기 때문입니다. 이렇게 최적의 컨텐츠 분산을 찾는 부하균형과 그 컨텐츠를 찾는 최적의 방법들을 찾는 알고리즘을 리다이..
18. 웹 호스팅
아주 작은 점 하나의 텍스트부터, 고화질의 동영상까지 리소스들은 정말 다양합니다. 이러한 리소스들을 웹 사이트에 편하게 배포하거나, 성능과 가격 모두 만족할만한 웹서버에 배치하는 것은 매우 중요합니다. 이렇게 리소스를 저장, 중개, 관리하는 일을 통틀어 웹 호스팅이라고 합니다. 이번에는 웹 호스팅에 대해 알아봅시다! 호스팅 서비스 초창기에는 각 회사가 컴퓨터 하드웨어 구매를 시작으로 컴퓨터 망 구축, 네트워크 연결 확보, 웹 서버 소프트웨어 관리까지 자체적으로 행했습니다. 하지만 점점 기술력이 높아 짐에 따라 그에 대한 필요 자원이 증가하고 또 많은 사람들에게 배포를 하다 보니 각 회사가 이를 감당하기가 힘들어졌습니다. 그래서 이들을 전문적으로 관리하는 웹 호스팅 서비스 회사가 생겨나게 되었습니다! 1...
17. 내용협상과 트랜스코딩(2) - 트랜스코딩
서버가 클라이언트가 요구하는 조건에 맞는 컨텐츠를 아예 가지고 있지 않을 수 있습니다. 에러로 응답하는 것이 가장 노멀한 방법이지만, 트랜스코딩이라는 대체제도 있습니다. 기존의 문서를 클라이언트가 사용할 수 있는 무언가로 변환하는 방식을 트랜스코딩이라고 합니다. 트랜스 코딩에는 포맷 변환, 정보 합성, 컨텐츠 주입 세 종류가 존재합니다! 포맷 변환 데이터를 클라이언트가 볼 수 있도록 한 포맷에서 다른 포맷으로 변환하는 방식입니다. (예를들어 모바일이 PC 전용 문서에 접근하려고 한다면, HTML을 WML로 변환해 줄 필요가 있습니다.) 이러한 트랜스코딩은 내용 협상 헤더에 의해 주도됩니다. 주의사항 (컨텐츠 + 전송) 인코딩과는 다른 개념임을 주의해야 합니다. 인코딩은 효율적이고 안전한 전송을 위한 기술..
16. 내용협상과 트랜스코딩(1) - 내용협상
글로벌한 기업이 제공하는 웹사이트를 들어가 보면 다양한 언어를 제공해 전 세계적인 사용자들을 만족시키고 있습니다. 사용자들이 관여하지 않는 내부에서는 서버가 컨텐츠를 어떤 방법으로 사용자들에게 전달할지 역시 적절한 선택을 하게 되죠. 이렇게 HTTP가 클라이언트와 서버가 적절한 컨텐츠 종류(Variant)를 선택하게끔 내용 협상(Content-Negotiation) 방법을 제공합니다! 내용 협상 기법 서버에 있는 페이지들 중 어떤 것이 클라이언트에게 맞는지 판단하는 세 가지 다른 방법이 있습니다. 첫 번째로 클라이언트에게 선택지를 주는 방법(클라이언트 주도 협상). 두번째로 서버가 자동으로 판단하는 방법(서버 주도 협상). 마지막으로 중개자에게 선택하도록 부탁하는 방법(투명한 협상)입니다. 기법 동작 원..
15. 국제화
인터넷은 전 세계 사람들을 묶는 목적으로 탄생했습니다. WWW(World-Wide-Web)이 그 정신을 나타내는 좋은 예시이죠. 전 세계 사람들을 묶기 위한 선행조건이 필요합니다. 바로 언어의 장벽을 허물어야 하는 것인데요. HTTP는 이러한 언어의 문제를 해결하기 위해, 국제 문서들의 처리 및 전송을 여러 언어(문자)로 지원하는데, 이를 '국제화'라고 합니다. 기본 메커니즘 컴퓨터의 데이터들은 결국 비트들로 이루어져있기 때문에, 기본 메커니즘은 생각보다 간단합니다. 1. 클라이언트가 자신이 알고있는 언어, 문자 정보를 제공한다. - 무슨 언어/문자를 지원하는가 - 무슨 언어를 선호하는가? 2. 서버들은 클라이언트들에게 컨텐츠의 정보를 알려준다. - 무슨 컨텐츠 인가? - 어떻게 비트를 글자로 바꿀 수 ..
14. 엔티티와 인코딩 - 인코딩 편
Content-Encoding HTTP는 여러 가지 이유로 인해 컨텐츠 전송 전 인코딩을 합니다. (전송 시간을 줄이기 위해 압축, 다른 사람이 볼 수 없도록 암호화) 1. 인코딩 과정 1st. 웹 서버가 원본 'Content-Type'과 'Content-length' 헤더를 수반한 원본 응답 메시지 생성 2nd. 인코딩 서버가 인 코딩된 인코딩 된 메시지를 생성했다면, 'Content-Encoding' 헤더를 인코딩 된 메시지에 추가해, 수신 측 애플리케이션이 이를 확인 해 성공적으로 디코딩할 수 있도록 한다. - 이때 'Content-Type'은 인코딩 전의 타입을, 'Content-Length'는 인코딩 후의 길이를 가집니다. 3rd. 수신 측 프로그램은 인코딩 메시지를 받아 디코딩을 실시 해 원본..
13. 엔티티와 인코딩 - 엔티티 편
HTTP는 매일 셀 수 없는 미디어 객체들을 실어 나릅니다. 그리고 이러한 객체들을 변질 없이 정확하게 전달하기 위해, 메시지 전달, 식별, 추출, 처리를 보장합니다. 엔티티 헤더 필드 이전장에 메시지를 배웠었습니다. 데이터들을 여러 헤더와 함께 묶어 메시지에 담고, 이 메시지들을 TCP 세그먼트에, 이 TCP 세그먼트들을 IP 패킷에 담아서 통신을 한다고 했었습니다. 이렇게 포장에 포장을 거쳐서 데이터들을 전송합니다. 이번에는 데이터와 메시지 범위까지만 알아보겠습니다. 먼저 메시지 형태부터 다시 한번 떠올려봅시다. ============요청 메시지============ ==> 시작줄 ==> 헤더 ==> 본문 ============응답 메시지============ ==> 시작줄(상태줄) ==> 헤더 ==..
12. 보안 HTTP
드디어 이전 장부터 노래를 부르던 보안 HTTP입니다! 이전에 배운 보안들은 중요한 데이터를 맡기기에는 보안의 강력함이 부족했습니다. 중요한 트랜잭션을 위해서는 HTTP에 디지털 암호화 기술을 결합할 필요가 있었는데 이의 완성본이 보안 HTTP입니다! 보안 HTTP는 다음 요건을 만족해야 합니다. 필요 요건 설명 서버 인증 클라이언트는 위조된 서버가 아닌 진짜 서버와 통신을 하고 있음을 알아야 한다! 클라이언트 인증 서버는 위조된 클라이언트가 아닌 진짜 클라이언트와 통신을 하고 있음을 알아야 한다! 무결성 통신 도중 데이터는 위조로부터 안전해야 한다! 암호화 도청에 대한 걱정 없이 서로 통신할 수 있어야 한다! 효율 하드웨어적 제한요건이 적어야 한다. (저렴한 장비에도 보안 알고리즘이 충분히 빨라야 한다..