클라이언트 정보가 쿠키라는 일종의 작은 DB에 저장된다.
클라이언트가 서버에 최초로 요청메세지를 보내면, 서버는 클라이언트에게 set-cookie: id 를 응답메세지에 보내준다.
이제 서버는 쿠키번호:사용자 정보를 저장하게된다.
이후, 클라이언트는 서버로 요청메세지를 보낼때마다 자신의 cookie id를 함께 보낸다. 이로 인해 서버는 해당 클라이언트 쿠키를 트래킹할수있다.
HTTP프로토콜 자체는 stateless이지만 쿠키기술을 접목함으로써 stateless가 아니게 동작하게된다.
쿠키는 클라이언트 측에서 정보를 저장하는 간단한 메커니즘이며, 주로 웹사이트가 사용자를 식별하고 특정 정보를 기억하는 데 사용됩니다. 쿠키는 '키-값' 쌍의 형태로 데이터를 저장하며, 브라우저는 이 쿠키를 웹 서버에 전송하여 사용자를 식별하고 상태 정보를 유지할 수 있습니다.
쿠키의 작동 방식은 다음과 같습니다.
1. 사용자가 처음으로 웹사이트를 방문하면, 서버는 응답 메시지에서 'Set-Cookie' 헤더를 통해 쿠키를 설정합니다. 이 쿠키는 특정 ID나 다른 식별 정보를 포함할 수 있습니다.
2. 클라이언트(브라우저)는 이 쿠키를 저장하고, 이후에 같은 서버로 요청을 보낼 때마다 이 쿠키를 'Cookie' 헤더에 포함시켜 보냅니다. 이로 인해 서버는 각 요청이 동일한 클라이언트로부터 온 것임을 알 수 있습니다.
이렇게 쿠키를 활용하면, HTTP가 원래 가지고 있던 'stateless'라는 특징을 보완하여 'stateful'하게 동작하게 할 수 있습니다. 즉, 쿠키를 통해 서버는 사용자의 상태 정보를 기억하고, 사용자 간 세션을 관리할 수 있게 됩니다.
그럼에도 불구하고, 쿠키가 서버에게 사용자에 대한 일부 정보를 제공할 수 있음에도 불구하고, HTTP 프로토콜 자체는 여전히 stateless합니다. 서버가 클라이언트의 상태를 유지하려면 클라이언트가 매 요청마다 쿠키를 전송해야 합니다. 이렇게 각 요청이 독립적이며 서로간에 정보를 공유하지 않는 HTTP의 stateless 특성은, 쿠키가 없을 때 아주 중요합니다.
결국, 쿠키는 HTTP의 stateless 특성을 보완하여 웹 경험을 더 개인화하고 사용자 친화적으로 만드는 역할을 합니다. 이는 웹사이트가 사용자 선호도, 로그인 정보, 장바구니 상태 등을 기억할 수 있게 해줍니다.
Web Caches
웹캐시, 프록시 서버라고도 부른다.
웹캐시는 클라이언트와 원래 서버 사이에서 중간다리 역할을 한다.
클라이언트가 최초로 어떠한 오브젝트를 요청하면, origin 서버를 통해 해당 데이터를 가져온다. 이 데이터를 웹캐시에 저장해두고 클라이언트에 전달한다. 이후, 같은 데이터를 다시 요청하면 이 때는 origin 서버까지 도달하지 않고 웹캐시에서 저장되어있는 데이터를 꺼내 전달해주면 된다.
웹캐시를 이용함으로써 얻을 수 있는 장점은 다음과 같다.
1. 응답이 빠르다
2. 트래픽을 줄일 수 있다.
WebCaches(aka proxy servers)
웹 캐시, 또는 프록시 서버는 원래의 웹 서버와 클라이언트 사이에서 중개 역할을 하는 시스템입니다. 웹 캐시의 기본 작동 원리는 클라이언트의 요청을 가로채서 해당 요청에 대한 응답을 저장해 두는 것입니다.
웹 캐시의 동작은 다음과 같습니다:
1. 클라이언트가 처음으로 특정 웹 오브젝트(예: 이미지 또는 HTML 파일)를 요청하면, 이 요청은 웹 캐시를 통해 전달됩니다.
2. 웹 캐시는 이 요청을 받아 원래의 웹 서버(origin server)에 전달합니다. 웹 서버는 요청된 데이터를 제공하고, 이 데이터는 웹 캐시를 통해 클라이언트에게 전달됩니다.
3. 웹 캐시는 이 데이터를 저장해둡니다. 그리고 클라이언트가 다음 번에 같은 오브젝트를 요청하면, 웹 캐시는 웹 서버에게 요청을 보내지 않고 자신이 저장해둔 데이터를 클라이언트에게 직접 전달합니다.
웹 캐시를 사용함으로써 얻을 수 있는 주요 이점은 다음과 같습니다:
1. **빠른 응답 시간:** 웹 캐시는 클라이언트와 원 서버 사이의 거리를 줄여주어 응답 시간을 대폭 줄일 수 있습니다. 특히 같은 데이터를 반복적으로 요청하는 경우, 웹 캐시는 이 요청에 대해 즉시 응답할 수 있어 사용자 경험을 향상시킵니다.
2. **트래픽 감소:** 웹 캐시는 원 서버에게 요청을 보내는 횟수를 줄여줍니다. 이는 네트워크 트래픽을 줄이고, 원 서버의 부하를 감소시켜 서버의 효율성을 향상시킵니다. 또한, 데이터 전송 비용을 절약하게 됩니다.
이처럼, 웹 캐시는 웹의 효율성과 성능을 향상시키는 중요한 요소입니다.
DNS(Domain Name System)
DNS는 도메인 이름(www.google.com등)를 IP주소로 변환하거나, 그 반대의 작업을 수행하는 시스템이다.
DNS는 계층적으로 분산되어있다.
가장 상위에는 Root DNS server가 위치하며, 이 밑에 다양한 최상위 도메인(TLD) 서버들이 존재한다. TLD 서버들은 .com, .edu, .kr ...등으로 나눠지고 그 안에서 또 추가적으로 DNS서버들이 계층적으로 존재한다.
root name server는 전세계에 13개 있다(논리적인 루트네임서버)
로컬 DNS 서버:
일종의 캐시와 같이 작동한다. 사용자가 최근에 접근한 웹사이트의 도메인 이름과 해당 IP주소를 임시로 저장해둔다. 이로써 동일한 웹사이트에 재접근할 때 DNS쿼리 과정을 생략하고 빠른 접근을 가능하게 한다.
DNS 쿼리는 주로 두 가지 방식으로 수행된다
**iterated query**
요청 호스트는 로컬DNS서버에 쿼리를 보낸다. 로컬 DNS서버가 요청한 정보를 가지고 있지 않다면, 이는 Root DNS 서버에 쿼리를 보낸다. 이 과정이 반복적으로 진행되며 각 DNS서버는 자신이 알고 있는 정보를 반환하며 최종적으로 요청 호스트에게 필요한 IP주소가 전달된다.
**recursive query**
요청 호스트가 로컬 DNS서버에 쿼리를 보내고, 로컬 DNS서버는 필요한 정보를 찾기 위해 Root DNS 서버에 쿼리를 보낸다. 이후 각 DNS서버는 쿼리를 다른 서버로 전달하며 최종적으로 요청한 IP주소가 로컬 DNS서버로 반환되고 이 정보가 요청 호스트에게 전달된다.
DNS 레코드는 TTL이 적용되어 일정시간이 지나면 만료되어 갱신된다 (out-of-date). DNS는 best-effort-service임
distributed database storing resource records(RR)
DNS서버는 RR이라는 항목을 저장한다.
name | value | type | TTL |
type=A
: name이 hostname임(lms.yu.ac.kr같은), value는 IP주소
type=NS
: name이 domain임(yu.ac.kr:영대 네트워크 망.), value는 호스트네임(dns.yu.ac.kr같은..)
DNS와 통신할 때는 UDP통신을 함.(오버헤드를 줄이기 위해)
'2023-1 > 컴퓨터네트워크및실습' 카테고리의 다른 글
HTTP (0) | 2023.06.13 |
---|---|
TCP congestion control (0) | 2023.06.12 |
Connection-oriented transport: TCP, TCP flow control,.. (1) | 2023.06.11 |
Go-Back-N, Selective Repeat (0) | 2023.06.11 |
Reliable Data Transfer(RDT) (0) | 2023.06.11 |
댓글