콘텐츠 협상과 표현
·
컴퓨터 네트워크/응용계층
콘텐츠 협상과 표현웹 서비스를 이용하다 보면, 같은 URL 에 접속했는데도 사용자 언어나 지역에 따라 다른 언어 페이지가 표시되는 경험이 있을 것이다. 예를 들어, 한국에서 접속하거나 한국어 계정으로 특정 URL에 접속하면 한국어 페이지가, 다른 지역에서 접속하거나 영어 계정으로 접속하면 영어 페이지가 표시되는 식이다.(그림 출처: 혼자 공부하는 컴퓨터 네트워크)이 현상을 가능케 하는 것이 바로 HTTP의 콘텐츠 협상(Content Negotiation) 이다. 한 마디로, 하나의 URI 가 여러 '표현(Representation)' 형태를 가질 수 있으며, 클라이언트의 선호도를 고려해 서버가 가장 적합한 표현을 골라 제공하는 메커니즘을 의미한다. 1. 콘텐츠 협상(Content Negotiation)이..
쿠키(Cookie)
·
컴퓨터 네트워크/응용계층
쿠키(Cookie)HTTP는 기본적으로 상태를 유지하지 않는(Stateless) 프로토콜이다. 이 말은, 요청을 보내고 응답을 받으면 그 후의 모든 요청에 대해 서버가 이전 요청 정보를 기억하지 않는다는 뜻이다. 하지만 실제 웹 서비스에서는 로그인 유지, 장바구니, 사용자 맞춤 정보 제공 등 클라이언트 상태를 인지하는 기능이 필수적이다. 이러한 기능을 구현하기 위해 웹 브라우저와 서버 간 쿠키(Cookie) 라는 데이터를 교환한다. 1. 쿠키의 개념쿠키(Cookie) 란, 서버에서 생성하여 클라이언트(웹 브라우저)에 저장하는 작은 데이터를 의미한다. 쿠키에는 클라이언트의 로그인 상태, 사용자 ID, 장바구니 정보 등 상태 추적을 위한 정보가 담길 수 있으며, 브라우저는 같은 서버에 요청할 때마다 이 쿠키..
캐시(Cache)
·
컴퓨터 네트워크/응용계층
캐시(Cache)현대의 웹 서비스 환경에서는 캐시(Cache) 라는 기술을 통해 대규모 트래픽과 반복 요청을 효율적으로 처리한다. 캐시는 자원의 사본을 임시로 저장하고, 동일 자원에 대한 요청이 재발생할 때 사본을 재활용함으로써 대역폭 낭비를 줄이고 응답 속도를 높여준다. 이 글에서는 캐시의 기본 개념부터 캐시 유효 기간 설정, 재검사 로직, 그리고 확장된 상세 내용까지 단계적으로 살펴본다. 1. 캐시의 기본 개념1.1 캐시(Cache)란?HTTP 요청과 응답이 오가는 과정에서, 동일 자원(예: 이미지, HTML, CSS, JS 파일 등)에 대한 요청이 반복 발생한다. 캐시가 없다면 서버는 요청 때마다 동일한 자원을 전송하게 되고, 이는 네트워크 대역폭과 서버 자원을 과도하게 소모시킨다. 캐시를 통해 자..
HTTP 헤더 (HTTP Headers)
·
컴퓨터 네트워크/응용계층
HTTP 헤더 (HTTP Headers)HTTP 헤더는 클라이언트와 서버 간의 통신을 위한 추가 정보를 전달하기 위해 사용됩니다. 요청(Request) 및 응답(Response) 메시지의 메타데이터 역할을 하며, 메시지의 처리를 세부적으로 제어하거나 상태를 전달하는 데 중요한 역할을 합니다.이 글에서는 HTTP 요청 시, 응답 시, 그리고 요청과 응답 모두에서 활용되는 주요 HTTP 헤더를 체계적으로 살펴보겠습니다.HTTP 요청(Request) 시 활용되는 헤더HTTP 요청 메시지는 클라이언트가 서버에게 특정 작업을 요청할 때 사용되며, 다음과 같은 헤더를 포함할 수 있습니다.1. HostHost 헤더는 요청 대상 호스트(도메인 네임 및 포트 번호)를 명시합니다. 이는 하나의 IP 주소에서 여러 도메인을..
HTTP 상태 코드
·
컴퓨터 네트워크/응용계층
HTTP 상태 코드HTTP 상태 코드는 서버가 클라이언트가 보낸 요청(Request)에 대해 어떤 결과가 발생했는지 나타내는 세 자리 정수입니다.예를 들어, 서버가 정상적으로 요청을 처리했다면 2xx 범위의 상태 코드를 사용할 수 있으며, 요청에 문제가 있거나 처리가 불가능하다면 4xx 또는 5xx 범위를 사용할 수 있습니다.이렇게 상태 코드를 통해 응답(Response)에 담긴 정보를 해석하고, 서버와 클라이언트 간 상호작용이 올바르게 이뤄지는지 점검할 수 있습니다.아래는 상태 코드의 범주별 특징과 세부 코드입니다:1xx(Informational): 정보 전송(요청을 계속 진행하라는 신호 등)2xx(Success): 요청 성공3xx(Redirection): 리소스 이동 또는 추가 조치 필요4xx(Cli..
HTTP 메서드
·
컴퓨터 네트워크/응용계층
HTTP 메서드HTTP(Hypertext Transfer Protocol)는 클라이언트와 서버 간에 데이터를 교환하기 위한 대표적인 프로토콜입니다. HTTP가 작동하는 방식의 핵심에는 요청(Request)과 응답(Response)의 개념이 있으며, 이때 요청의 의도를 나타내는 것이 HTTP 메서드입니다.일반적으로 사용되는 HTTP 메서드는 다음과 같습니다:GETHEADPOSTPUTPATCHDELETECONNECTOPTIONSTRACE아래 표는 이러한 메서드를 간략히 정리한 예시입니다.(출처: 혼자 공부하는 컴퓨터 네트워크)위 표 중에서도 특히 자주 사용되는 메서드는 GET, HEAD, POST, PUT, PATCH, DELETE입니다. 이하에서는 이 여섯 가지 핵심 메서드를 중심으로 살펴보겠습니다.참고 ..
HTTP 메시지 구조
·
컴퓨터 네트워크/응용계층
HTTP 메시지 구조HTTP(‘Hypertext Transfer Protocol’) 메시지는 서버와 클라이언트가 웹 상에서 데이터를 주고받을 때 사용되는 표준 형식입니다. 크게 시작 라인, 필드 라인, 메시지 본문으로 구성됩니다.필드 라인(Header Line): 0개 이상의 HTTP 헤더가 포함될 수 있음메시지 본문(Message Body): 생략될 수도 있고, 다양한 콘텐츠 타입을 담을 수 있음필드 라인과 메시지 본문 사이에는 반드시 빈 줄(공백 줄) 하나가 들어갑니다.아래 그림은 HTTP 메시지의 전반적인 구조를 보여줍니다.(이미지 출처: 혼자 공부하는 네트워크)1. 시작 라인 (Start Line)시작 라인은 HTTP 요청 메시지인지 HTTP 응답 메시지인지에 따라 달라집니다.요청 메시지(Requ..
HTTP의 특성
·
컴퓨터 네트워크/응용계층
HTTP의 특성HTTP(Hypertext Transfer Protocol)는 애플리케이션 계층(Application Layer)에서 작동하며, 클라이언트와 서버 간에 하이퍼텍스트(HTML 등)를 포함한 다양한 자원을 주고받기 위해 설계된 프로토콜이다. 이 프로토콜은 각종 웹 서비스와 API 통신의 핵심 기술로, 신뢰할 수 있는 통신을 위해 전송 계층의 TCP(Transmission Control Protocol)를 기반으로 동작한다.본 문서에서는 HTTP가 가진 대표적인 네 가지 특성에 대해 상세하게 살펴본다. 각각의 특성은 서로 연관되어 있으며, 조합되어 웹 환경에서 높은 확장성, 견고성, 그리고 유연성을 제공한다.참고HTTP 공식 문서: RFC 9110이미지 자료: 《혼자 공부하는 컴퓨터 네트워크》1..
자원을 식별하는 URI
·
컴퓨터 네트워크/응용계층
자원을 식별하는 URI네트워크 상에서 정보를 주고받을 때, 송수신 대상(자원)을 식별하기 위한 URI(Uniform Resource Identifier)의 개념을 자세히 살펴봅시다. 또한, URI가 위치를 통해 자원을 식별하는 경우(URL), 이름을 통해 자원을 식별하는 경우(URN)에는 어떤 차이가 있는지 정리합니다.자원(Resource)과 URI자원(Resource)이란?네트워크를 통해 주고받는 모든 대상을 의미예: HTML 파일, 이미지·동영상 파일, 텍스트 파일 등HTTP 통신에서 자원 = “HTTP 요청 메시지의 대상”두 호스트가 데이터를 교환할 때, 그 교환 대상이 바로 자원URI란?자원을 유일하게 식별하기 위한 “통일된 방식(Identifier)”식별하고자 하는 대상(파일, 콘텐츠 등)이 어..
계층적 네임 서버
·
컴퓨터 네트워크/응용계층
계층적 네임 서버 (Hierarchical Name Servers)네트워크 환경에서 도메인 이름을 IP 주소로 변환하는 DNS(Domain Name System)의 계층 구조와 동작 방식을 상세히 살펴봅시다. DNS는 전 세계적으로 분산된 네임 서버들을 기반으로, 사용자가 쉽고 직관적인 도메인 이름을 통해 인터넷 서비스에 접근할 수 있도록 돕습니다.DNS 기본 개념DNS는 사용자가 기억하기 쉽도록 만든 도메인 이름을 숫자로 구성된 IP 주소에 대응시키는 체계입니다. 아래와 같은 특징이 있습니다.분산 구조: 전 세계에 분산된 여러 네임 서버가 도메인 이름 정보를 관리위임(Delegation): 루트 서버는 TLD 서버에, TLD 서버는 하위 도메인을 관리하는 서버에 권한을 위임계층형 구조: 루트(“.”) ..