Computer Science/Computer Network

6. Scaling

  • -
728x90
반응형

Scalability

  • Property of a system to tolerate an increase in the workload
    • More users accessing the resource simultaneously
    • Data size that needs to be processed
  • How scalability is tackled on the Internet depends on the workload
    1. Autonomous Systems Level : 각 AS는 자체적으로 라우팅 정책과 프로토콜을 관리하며, 이렇게 분산된 구조를 통해 인터넷 전체의 확장성이 유지됩니다.
    1. Addresses and Address Aggregation : IP 주소 체계와 주소 집계(address aggregation)도 인터넷 확장성을 지원하는 중요한 요소이다. IPv4에서 IPv6로 전환하는 것은 주소 공간을 크게 확장하여 더 많은 장치를 지원할 수 있도록 하는 한 가지 방법이다.
    1. Replication and Closeness : 데이터 복제(replication)와 가까운 위치(closeness)도 인터넷 서비스의 확장성 향상에 기여한다. 데이터 센터나 CDN(Content Delivery Network) 같은 기술들이 이런 방식으로 작동하는데, 사용자가 원격 서버보다 지리적으로 가까운 위치에서 데이터(예: 웹 페이지, 동영상 등)에 액세스할 수 있도록 하는 것이다.
💡
즉, 얼마나 작업량 증가가 이루어져도 버틸 수 있는지에 대한 정보를 담고 있는 것이다.

각각 하나씩 자세히 알아보도록 하자.

Autonomous Systems Level

이전까지의 내용에서는 router끼리의 forwarding에 관한 이야기였다. 직접적으로 어떤 방식으로 routing을 하는지에 대해서는 다룬 적이 없다. 이제부터는 Internet에서 어떤 식으로 route를 결정하는지에 대해서 학습해보도록 하겠다.

자료구조때처럼 기본적으로 Network를 다음과 같이 나타낼 수 있다.

N:nodesE:edgesc(x,y):edge costN : \text{nodes} \\ E: \text{edges} \\ c(x, y) : \text{edge cost}
💡
즉, router를 하나의 노드로 보고 각각의 엣지에는 cost가 존재한다고 생각해주면 된다. 결과적으로 routing algorithm은 shortest path를 찾는 과정 이라고 생각해주면 된다.

→ Routers exchange control information to update their world view : 이러한 정보 교환은 당연하게도 protocol을 통해 이뤄지게 된다. 이를 통해 network에 대한 정보를 최신으로 유지할 수 있게 된다.

Traditional Routing Algorithms

Flooding

router는 받은 모든 packet을 그것이 들어온 interface를 제외한 모든 다른 interface로 보낸다.

💡
즉 해당 packet를 보낸 router를 제외하고 연결된 모든 router에 해당 packet을 전송하는 것이다.

Link-State

Link-State routing algorithm은 네트워크의 모든 라우터가 네트워크의 전체 지도를 가지고 있으며, 이를 바탕으로 최적의 경로를 계산하는 방식이다.

Link-State 알고리즘은 다음과 같은 단계로 작동한다:

  1. Link-State Packet (LSP) 생성: 각 라우터는 자신과 직접 연결된 링크에 대한 정보(예: 목적지, 비용 등)를 포함하는 Link-State Packet을 생성한다.
  1. LSP 홍보: 각 라우터는 자신이 만든 LSP를 네트워크 내의 모든 다른 라우터에게 전송하며, 이 과정에서 flooding 기법이 사용될 수 있다.
  1. Topological Database 구축: 각 라우터는 받은 모든 LSP를 통합하여 Topological Database라는 네트워크 전체 지도를 구축한다.
    💡
    즉, 각 router들이 보낸 정보들을 토대로 통합 database를 구축하는 것이다.
  1. Shortest Path Tree (SPT) 계산: 마지막으로, 각 라우터는 Dijkstra's algorithm과 같은 알고리즘을 사용하여 Topological Database에서 자신을 root로 하는 Shortest Path Tree를 계산하며, 이 트리가 결국 해당 라우터의 Routing Table을 형성하게 된다.

Link-State 알고리즘이 Distance-Vector 알고리즘에 비해 주요한 장점 중 하나는 "Count to Infinity" 문제가 발생하지 않는다는 것이다. 그러나 반면에 Link-State 알고리즘은 많은 메모리와 CPU 처리능력을 필요로 하며, 크기가 큰 네트워크에서는 LSP 홍보와 Topological Database 유지 관리 등이 복잡해질 수 있다.

💡
쉽게 말해서 Link-State 방식은 기존의 알고리즘에서 접근한 방식처럼 전체 node에 대한 연결상태 및 edge들의 가중치를 전지적으로 다 알고 있다고 생각하는 것이다. 해당하는 정보들을 flooding을 통해서 교환한 뒤에 각 노드 기준으로 shortest path를 계산한다는 측면에서는 dijkstra랑 유사하다.

Distance Vector

Distance Vector routing algorithm은 네트워크 내의 각 router가 자신과 직접 연결된 이웃 라우터들에 대한 정보만을 가지고 있어, 각 router는 주변에서 정보를 얻어서 그때 그때마다 최단 경로를 갱신하는 방식이다. 이는 벨만-포드 알고리즘이 작동하는 방식과 유사하다.

💡
벨만 포드 알고리즘의 경우 최단 경로를 구하기 위해서 모든 노드들을 점검한다는 측면에서 dijkstra와 결이 다르다. 즉 다시 말해서 자기와 연결된 노드들에 대한 정보만 얻을 수 있으므로 모든 노드들을 체크한다고 이해해주면 된다. 모든 노드들을 돌면서 최단 경로를 갱신하게 된다.

Distance Vector 방식은 상대적으로 구현자체는 간단하지만 "Count to Infinity" 문제 등의 한계가 있으며, 크기가 크거나 동적으로 변화하는 네트워크에서 사용하기 어렵다.

대표적으로 2가지 원인에 의해서 complexity가 증가하게 된다.

  • Scale : Large number of routers
  • Administrative autonomy : ISP(인터넷 서비스 제공자)들의 네트워크는 자체적으로 운영되며 각자 원하는 방식으로 라우팅 알고리즘을 선택하여 사용할 수 있다. 따라서 ISP는 자신의 내부 네트워크 구조를 외부로부터 숨길 수도 있다. 이럴 경우 전체 인터넷에서 일관된 경로 결정이 어려워진다.

Routing on Autonomous Systems (AS)

An ISP has one or multiple autonomous systems (AS). Each AS has an identity. Routers within the same AS run the same routing algorithm (intra-AS routing)

💡
즉, 동일한 AS에서는 동일한 routing algorithm을 사용한다. 이를 통해서 AS 내부의 router들이 효과적으로 정보를 교환하고 network traffic를 관리할 수 있게 된다.

Autonomous Systems - Tiers

  1. Tier 1 : 전 세계적으로 다른 모든 Tier-1 AS와 직접적인 연결을 가지고 있는 AS이다. 이러한 네트워크는 국제적인 범위를 가지며, 인터넷의 '백본'을 형성한다. Tier-1 네트워크는 보통 대형 통신사가 운영하며, 그들 사이에서는 보통 피어링(peering)이라고 부르는 상호 비용 없는 교환 관계를 유지한다
  1. Tier 2 : 지역적 또는 국가적 범위를 가진 네트워크로서, 일부 경로에 대해서만 직접적인 연결을 가진다. 이들은 자신들이 직접 서비스를 제공하지 않는 영역에 대해서는 상위 tier의 네트워크(일반적으로 Tier-1)에 연결되어 있드
  1. Tier 3 : 종단 사용자(end-users)에게 직접 서비스를 제공하는 ISP이다. 이러한 ISP들은 자신들의 고객 외부와 통신하기 위해 일반적으로 하나 이상의 상위 tier (Tier-2 또는 Tier-1)와 계약하게 된다.
Tier 1 Example

Border Gateway Protocol (BGP)

Goal : Announce prefix in the internet

💡
자신이 책임지고 있는 IP 주소범위 (prefix)를 internet에 알리는 것이라고 이해해주면 된다. 이 정보를 통해 다른 AS들이 해당 prefix로 packet을 보낼 때 어떤 path를 선택해야할 지 도움을 준다. 예를 들어, AS1이 192.0.2.0/24라는 프리픽스를 가지고 있다면, AS1은 BGP를 통해 이 정보를 인터넷에 알릴 수 있다("announce"). 이렇게 하면 다른 AS들은 192.0.2.x로 가는 패킷을 어디로 보내야 할지 알 수 있게 된다.

이를 위해서 다음과 같은 경로 정보를 교환하게 된다.

Route : {NEXT-HOP; AS-PATH ; prefix}

각각에 대해서 알아보면 다음과 같다.

  1. NEXT-HOP : packet이 다음에 도달해야할 router의 IP주소이다.
  1. AS-PATH : packet이 목적지까지 도달하기 위해 거쳐야하는 AS의 순서이다.
  1. PREFIX : 네트워크 대역

Determining Best Routes

Router는 다음과 같은 기준으로 경로를 설정한다.

  1. local preference. value attribute : policy decision

    → 라우팅 정책에 따른 우선 순위를 설정합니다. 높은 local preference 값을 가진 경로가 선호됩니다. 일반적으로 이 값은 하나의 AS 내에서 모든 라우터에게 동일하게 설정되며, 특정 AS로 가는 기본 경로를 제어하는데 사용됩니다.

  1. shortest AS-PATH

    → local preference 값이 동일한 여러 경로가 있다면, BGP는 가장 짧은 AS-PATH를 가진 경로를 선택합니다. 즉, 패킷이 목적지까지 도달하기 위해 거쳐야 하는 AS의 수가 최소인 경로가 선택됩니다.

  1. closest NEXT-HOP router : hot potato routing

    → local preference와 AS-PATH가 동일한 여러 경로가 있는 경우, 'hot potato routing' 원칙에 따라 자신으로부터 가장 가까운 NEXT-HOP 라우터를 갖는 경로가 선택됩니다.

  1. additional criteria

Summary of Traditional Routing

  1. intra-AS routing algorithm : 동일한 AS 내부에서의 routing을 의미힌다. 앞서 언급한 것처럼 동일한 AS 내의 모든 라우터는 동일한 routing algorithm을 사용한다.
  1. inter-AS routing algorithm : 서로 다른 AS 사이의 routing을 의미한다. 여기서 가장 중요한 protocol이 BGP (Border Gateway protocol)이다.

    → 즉 AS 사이의 경계에 위치한 gateway router에서 수행하게 된다.

Routing Policy

  • Access Networks (W, X, Y) : do not advertise path to other destinations than itself
    💡
    자신의 IP address 범위 내에서만 정보를 주고 받는다는 것이다. 즉, 다른 AS로 가는 경로에 대한 정보를 제공하지 않는다.
  • Backbone Network : Traffic flowing across an ISP’s network must have source and/or destination in a network that is a customer of that ISP
    💡
    Access Network를 연결하는 역할을 한다. 단, 서로 다른 ISP에 속한 경우에는 이러한 서비스를 제공하지 않는다.

Structure on Network Control Plane

크게 network control plane은 2가지 방식이 존재하는데

  1. per-router control (traditional)
  1. logically centralized control (software defined networking, SDN)
💡
쉽게 말해서 1번은 router별로 routing을 한다는 것이고 2번은 한번에 계산해주는 것이 존재한다는 의미이다.

즉 각각의 router는 logically-centralized routing controller로 부터 flow table 을 제공받는다.

→ 이를 기반으로 forwarding을 진행하게 된다.

Addresses and Address Aggregation

Address Aggregation

즉 여러 개의 작은 네트워크 주소를 하나의 큰 네트워크 주소로 표현하는 방법이다. 이는 CIDR(Classless Inter-Domain Routing)라는 기술을 사용하여 수행되며, 이 기술은 IP 주소를 더 효율적으로 사용하고 routing table을 단순화하는데 도움이 된다.

예를 들어, ISP가 200.23.16.0/24, 200.23.17.0/24, 200.23.18.0/24, 그리고 200.23.19.0/24라는 네 개의 /24 (즉, 각각 256개의 IP 주소를 가진) 서브넷을 관리한다고 가정하자.

address aggregation 없이 이들을 관리하려면 ISP의 라우팅 테이블에는 이 네 개의 서브넷 각각에 대한 별도의 항목이 필요하다. 그러나 address aggregation를 사용하면 ISP는 이들 모든 서브넷을 하나의 더 큰 subnet으로 볼 수 있다: 200.23.16.0/22 (즉, 1024개의 IP 주소를 가진). 이렇게 하면 ISP가 유지해야 할 라우팅 정보가 단순해진다.

💡
즉 다시 말해서 중복한 것을 최대한 만들어서 한번에 나타내겠다고 생각해주면 된다. Workshop에서 문제 푼 느낌과 거의 유사하다.

Host Address Configuration

DHCP : Dynamic Host Control Protocol

→ 해당 protocol을 이용해서 host(computer, smartphone)가 네트워크에 연결될 때 자동으로 IP 주소와 관련된 구성 정보를 받을 수 있다.

DHCP는 다음과 같은 기능을 제공한다.

  1. IP address allocation : DHCP 서버는 해당 네트워크에 연결된 host에게 IP주소를 동적으로 할당한다. 해당 IP를 통해 네트워크에서 소통할 수 있다.

    → 이러한 할당은 일정 시간동안만 유효하다.

  1. Subnet mask (network mask)
💡
DHCP server는 IP 주소와 subnet mask를 제공하므로 이를 통해 host가 자신이 속한 네트워크의 범위를 알고 packet을 올바르게 전송할 수 있게 된다.
  1. DNS setting : DHCP server는 local DNS server의 IP 주소를 제공한다. DNS는 도메인 이름 (웹사이트 주소)과 해당하는 IP 주소 간의 매핑을 담당하게 된다.

DHCP procedure

DHCP protocol은 다음과 같은 4단계의 step으로 구성된다.

  1. DHCP server discovery : host 입장에서 맨 처음으로 해야할 일은 DHCP server를 찾는 일이다. 이를 찾기 위해서 DHCP discover message 를 보낸다. 이를 위해서 UDP packet 를 port 67번으로 보낸다.

    → 문제는 현재 자신이 어떤 subnetwork에 속해있는지 알지 못하고, DHCP server의 주소 또한 알지 못한다는 것이다. 그래서 broadcast address를 사용한다. 이는 255.255.255.255이다. 추가적으로 host의 source IP address는 0.0.0.0으로 설정한다.

    💡
    단, 주의해야할 점이 subnetwork에서 host의 수를 구할 때 언급했던 broadcast와는 별개이다. 255.255.255.255는 네트워크 상의 모든 기기에 패킷을 보내는 데 사용되고, 특정 subnet의 broadcast 주소는 해당 subnet 에 속한 host에게 packet을 보내는데 사용된다.
    💡
    MAC broadcast address가 아니라 IP broadcast address 를 사용한다는 점을 주의해야 한다.
    💡
    만약 prefix가 255.255.255/24라고 가정하면 서로 다른 2개의 broadcast의 목적이 겹치는 것이 아닌가라고 생각할 수 있지만, 사용되는 상황과 목적이 다르기 때문에 실질적으로 구분할 수 있다.
  1. DHCP server offer : DHCP server가 DHCP discover message를 수신하고 이에 대한 응답으로 해당 host에게 DHCP offer message 를 보낸다. 단, 마찬가지로 이 message의 receiver의 IP는 255.255.255.255이다. 즉 broadcast시킨다. 추가적으로 도착자의 port는 68로 설정한다. (일종의 약속이다.)
    💡
    잘 생각해보면 DHCP server입장에서도 도착지의 IP주소를 모르는 상황이므로 broadcast밖에 답이 없다.

    이때 network 상에는 여러 개의 DHCP server가 존재하므로, 여러 DHCP server offer를 받게 되고 이들 중 적절한 것을 선택해야 한다.

    DHCP offer message에는 다음과 같은 정보들이 포함되어 있다.

    1. Transaction ID : Client와 server 사이의 DHCP message 교환을 추적하는데 사용된다. host가 DHCP Discover message를 보낼 때 해당 message에는 고유한 Transaction ID가 포함되는데, 이에 대한 DHCP offer message도 동일한 Transaction ID가 포함된다. 이를 통해 자신이 보낸 요청에 대한 답이라는 것을 알 수 있다.
    1. Proposed IP address
    1. Network mask
    1. IP address lease time : 얼마나 IP address를 유지시킬 것인가에 대한 정보이다. 일반적으로는 수 시간에서 몇 일 정도이다.
  1. DHCP request : 여러 DHCP offer 중 하나를 host가 선택하고 이에 대한 응답을 보낸다. 이를 DHCP request message 라고 부른다. 해당 message에는 DHCP server가 제안한 parameter (Transaction ID, Proposed IP address, etc) 가 포함된다.
  1. DHCP ACK : DHCP request를 DHCP server가 수신한 이후, 해당 parameter에 대한 승인을 의미하는 DHCP ACK message를 보냄으로써 DHCP protocol이 종료된다.
💡
host가 DHCP ACK를 수신한 이후로는 DHCP server로부터 할당받은 IP주소와 subnet mask를 lease 기간동안 사용하면 된다.

Internet Addresses

기존의 IPv4 방식으로는 4 billion 만큼의 주소를 커버할 수 있었다.

하지만, 컴퓨터와 smart phone등의 기하급수적인 증가로 인해 해당 address만으로는 충분하지 못하게 되었다. 이를 해결하기 위한 방법은 크게 2가지 존재한다.

  1. Solution 1 : IPv6

    → 32bit로 부족하니까 128bit를 사용하자

  1. Solution 2 : Private addresses

IPv6

크게 2가지 부분으로 나눠진다

  1. prefix (64bit) : 이 부분을 사용해서 network를 식별한다.
  1. Interface identifier (64bit) : 네트워크 상에서 특정 interface를 식별하게 된다.

    → 일반적으로 MAC주소를 사용한다. 왜냐하면 MAC 주소는 네트워크 카드마다 유일하게 보장되기 때문이다. 이때 MAC 주소는 48bit이다.

IPv6는 다음과 같은 기능을 제공한다.

  1. Link-local Address : 장치가 네트워크데 연결되어있을 때 해당 network segment 안에서만 통신할 수 있게끔 하는 기능이다. 이를 통해 DHCP가 필요없이 소통할 수 있게 된다. FE80::/64로 시작하는 이러한 주소가 이에 해당하며, 이는 인터넷에서 라우팅할 수 없다.
  1. IPv4-mapped IPv6 addresses : IPv4와 호환이 된다는 것

    → [::ffff:0:0/96 | IPv4 address]

추가적으로 다음과 같은 특징이 있다.

  1. 40 bytes header
  1. No packet fragmentation : 중간에 packet fragmentation을 하지 않는다. 대신 sender가 MTU (maximum transmission unit)을 사용하여 최적의 전송 단위를 결정한다.
  1. expects maximum transmission unit (MTU) of at least 1280B

    → 이는 576B인 IPv4보다 큰 값이다. 이를 통해 데이터 전송량을 증가시키고 네트워크 성능을 개선할 수 있게 된다.

Transition IPv4 to IPv6

그렇다면 IPv4에서 IPv6로 전환되는 과정에서 문제가 없을까? 더욱이 IPv4를 IPv6가 호환한다고해도, 이미 배포된 IPv4 시스템들은 IPv6 datagram을 처리할 수 없다는 지점이 문제가 될 수 있다.

이를 해결하기 위해 현재 대부분 채택하고 있는 방식은 tunneling 이다. 이 방식은 IPv6 패킷을 IPv4 네트워크를 통해 전송할 수 있게 해준다. 송신측에서는 원본 전체 IPv6 packet을 새로운 IPv4 packet의 data field(payload)에 넣어서 encapsulation하고, 이 encapsulation된 IPv4 packet을 네트워크를 통해 전송한다. 수신층에서는 이렇게 도착한 IPv4 packet으로부터 원래의 IPv6 packet을 decapsulation 하여 처리한다.

💡
즉, IPv6 datagram 전체가 IPv4의 data field (payload)로 취급해서 전송하는 것이다. 즉 IPv6의 header파일까지 전부 IPv4의 payload안에 들어가 있다.
💡
이때 중간에 있는 노드들은 현재 자신들이 처리하고 있는 IPv4 datagram이 IPv6 datagram을 포함하고 있다는 사실을 모르고 있다.
💡
단, 주의할 점은 도착지가 tunnel의 끝 으로 변경된다는 점을 주의해야 한다. (사이에 있는 destination이 E 로 바뀐 것을 잘 봐주면 된다.) 즉 다시 말해서 중간에 있는 IPv4의 header에 있는 destination IP address는 터널의 끝에 해당하는 IP address로 변경된다. 주의할 지점은 IPv6 header에 존재하는 destination IP address는 그대로 유지되므로 원래 목적지에 대한 정보는 유지할 수 있다는 점이다.

도착지 기준으로 IPv6 datagram이 data field에 포함되어있는지 여부를 체크해주면 된다.

  • Question : where is the TCP header? Where would a link layer header be?
    1. TCP header는 transport layer에 추가되는 것이다. 따라서 IPv6를 IPv4로 encapsulation하는 경우, TCP header는 IPv6 datagram의 일부인 payload 안에 존재하게 된다.
    1. Link header는 전체 datagram을 감싼다. (왜냐하면 Link layer가 Network layer보다 더 하위 layer이기 때문이다.)

Private Addresses

Problem : Private addresses are not unique

💡
즉, private address의 경우에는 특정 network 상에서만 유효하고, 전체 internet 입장에서는 고유하지 않다는 것이 문제이다.

따라서 private IP address를 직접 인터넷에 routing할 수 없다.

Solution : Private address를 가진 host를 router의 public IP address로 표현하고, 추가적으로 port number 를 통해 multiplex한다.

💡
즉, port 주소를 통해서 private network 상에서 어떤 기기인지 특정할 수 있기 때문에 가능한 접근 방법이라고 생각해주면 된다.
💡
결과적으로 private address와 port number를 통해 unique 한 port number를 대응시키게 된다.
💡
중간에 address translation하는 것을 잘 봐두면 된다.

이를 Network Address Translation (NAT) 라고 부른다. 즉 NAT는 public network address와 private network address 사이의 주소 변환 기능을 담당하게 된다.

NAT를 수행하는 라우터는 전송 계층(Transport Layer)까지 처리해야 한다. 이는 NAT가 IP address(network layer에서 처리)뿐만 아니라 포트 번호(transport layer에서 처리)를 기반으로 패킷을 변환하기 때문이다. 일반적으로 라우터는 network layer까지만 존재하지만, NAT 기능을 수행하기 위해서는 전송 계층의 정보인 포트 번호에 접근해야 하므로 이 경우에는 transport layer까지 처리한다.

💡
결과적으로 transport layer header에 존재하는 source port를 변경하고, network layer header 에 존재하는 IP address를 router의 IP address (public)으로 변경하는 작업을 수행하게 된다.
💡
추가적으로 private address를 사용하는 경우 router가 DHCP service를 제공한다고 생각해줘도 무방한다.
  • What is port?

    를 참고하자.

  • Question : What are the disadvantage of NAT?

    NAT는 IP 주소를 변경하기 때문에 두 호스트 간의 직접적인 연결(end-to-end connectivity)을 방해한다. 이로 인해 일부 Peer-to-Peer network나 VoIP 같은 애플리케이션에서 문제가 발생할 수 있다.

    💡
    Peer-to-Peer(P2P) 네트워크는 모든 컴퓨터가 동등한 위치에 있고 서버나 클라이언트 역할을 하는 특정 컴퓨터 없이 각 컴퓨터가 서로 직접 연결되는 네트워크 구조를 말한다. 이러한 구조에서 각 host는 다른 host에게 직접 데이터를 전송하거나 받을 수 있다.

Replication and Closeness

IP Anycast

Traffic is routed to closest server

→ 이 방식에서 packet은 가장 가까운(일반적으로는 네트워크 홉 수, 지연 시간 등을 기준으로) 서버로 라우팅됩니다

이때, 주의할 점은 하나의 destination IP 주소가 여러 대의 서버에 할당되어있다.

예를 들어 전 세계에 분산된 여러 데이터 센터가 모두 같은 Anycast IP 주소를 사용하고 있다고 가정해보자. 그런 다음 어떤 사용자가 그 IP 주소로 요청을 보내면, 그 요청은 사용자에게 물리적으로 가장 가까운 데이터 센터로 자동으로 라우팅됩니다.

💡
Anycast 라우팅 방식에서는 이와 다르게 여러 장치가 같은 IP 주소를 사용할 수 있다.

단, 위 방식을 따르면 동일한 연결에 속하는 다른 packet들이 서로 다른 서버로 전송될 수 있는 단점이 존재한다.

Web Cache (proxy server)

  1. Client establishes TCP connection to Web cache and requests object
  1. Web cache returns object if available in local storage
  1. Else, the Web cache opens a TCP connection to the origin server and requests the object from the server
  1. Web cache stores object in its local storage and sends copy to the client (embedded in HTTP reply)
💡
즉 다시 말해서 다이렉트로 서버에게 request하는 것이 아니라 Web cache에 먼저 있는지 체크하는 식으로 처리하는 것이다.
💡
즉 처음에 host가 Web cache에 물어본다는 측면에서는 server 역할을 수행하고 있는 것이고, 데이터가 존재하지 않으면 server에 request한다는 측면에서는 client역할을 하고 있다고 이해하면 된다.
  • Question : benefit for the user? Benefit for the network?

    Benefit for the user

    1. Improve performance : Web cache stores frequently used web pages or resources so that it can hugely reduce loading times.
    1. Offline : 오프라인 환경 속에서도 특정 웹 페이지를 읽을 수 있게 됨

    Benefit for the network

    1. Reduce Bandwidth : 중복된 데이터 전송이 줄어들게 된다.
    1. Reduce server overhead

Web and HTTP

Web page는 다음과 같은 파일들로 구성된다.

  1. base HTML file
  1. several referenced files (images, scripts, style sheets, etc)

HTTP Request-Response

Conventional HTTP는 TCP를 transport protocol로 사용한다. 또한 이러한 TCP 설정을 데이터가 교환되기 전에 설정한다.

Persistent HTTP Connections

Non-Persistent HTTP connections (default)

A new TCP connection must be established for every life

💡
non-persistent HTTP 연결에서는 각 HTTP 요청과 응답에 대해 새로운 TCP 연결이 생성된다.

클라이언트가 웹 서버에 요청을 보내면, 먼저 TCP 연결을 설정한다. 그 후 HTTP 요청을 보내고, 웹 서버는 해당 요청에 대한 응답을 반환한다. 이 과정이 완료되면 TCP 연결은 닫힌다.

따라서 만약 클라이언트가 여러 개의 리소스(예: HTML 페이지와 관련된 이미지 파일 등)를 요청하는 경우, 각각의 리소스를 가져오기 위해 별도의 TCP 연결을 설정하고 해제해야 한다.

→ 이 과정은 network resource 자원 자용에 매우 비효율적일 수 있다. 특히 많은 수의 객체를 다운로드해야하는 경우, 성능 저하는 더욱 가속화 된다.

Persistent HTTP connections

Keep established TCP alive.

💡
persistent HTTP는 하나의 TCP 연결을 여러 HTTP 요청과 응답을 할 수 있는 방식을 의미한다.
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.