Redirect: 사용자가 입력한 URL에 리다이렉션 설정이 되어 있다면, 다른 URL로의 리디렉션
Caching: 캐시된 값이 존재한다면, 서버에 요청을 보내지 않고 캐시된 값을 사용하여 페이지를 빠르게 로드
- 브라우저 캐시: 사용자의 브라우저 내에 콘텐츠를 저장하는 것
- 쿠키, 로컬 스토리지 및 브라우저가 다운로드한 리소스(이미지, 스타일 시트, 스크립트 파일 등)
- 공유 캐시: 클라이언트와 서버 사이에 위치하며, 다수의 사용자 간에 콘텐츠를 공유할 수 있는 캐시
- Nginx와 같은 리버스 프록시 서버를 사용하여 구현
DNS: 인터넷에서 사용되는 도메인 주소를 실제 IP 주소로 변환하여 컴퓨터 간에 통신할 수 있도록 해주는 시스템
- 계층적인 도메인 구조를 이용하여, 요청한 FQDN(Fully Qualified Domain Name)을 IP주소로 변환
→ FQDN: Host(www) + Domain(naver.com)
- DNS는 분산되어 세계 곳곳에 존재하며 계층 구조를 가지고 있어 다음과 같은 이점을 제공한다.
- 트래픽 분산: DNS 서버가 분산되어 있기 때문에 트래픽이 골고루 분산되어 서비스를 안정적으로 제공할 수 있다.
- 고장 대처: 여러 DNS 서버가 존재하므로 특정 서버의 고장 시 다른 서버로 자동으로 트래픽을 전환하여 서비스의 영속성을 유지할 수 있다.
- 유지보수: DNS는 중앙 집중적으로 도메인 이름과 IP 주소의 매핑 정보를 관리하고 분산된 방식으로 업데이트하거나 변경할 수 있다.
- 성능 향상: DNS는 지역에 따라 가장 가까운 서버의 IP 주소를 반환하여 사용자가 빠르게 서비스를 받을 수 있도록 도움을 주어 성능을 향상시킬 수 있다.
→ 물리적 거리 뿐만아니라, 네트워크 성능을 고려하여 사용자가 최적의 서버에 연결할 수 있도록 도와준다.
- 계층 구조
- 사용자가 도메인 이름을 입력하면, Local DNS Name Server에게 도메인에 대한 IP 주소를 찾아달라는 요청을 보낸다.
- Local DNS name server : 사용자가 도메인 이름을 입력하면 해당 도메인에 대한 IP 주소를 찾기 위해 가장 먼저 찾는 DNS 서버이며, 자주 호출되는 DNS name에 대해서 캐싱을 한다.
- 만약 로컬 DNS 네임 서버에 도메인에 대한 정보가 없다면, 해당 DNS 서버는 Root DNS Server에게 쿼리를 전송한다.
- Root DNS Server: 계층 구조의 최상위에 위치하며, 모든 도메인에 대한 정보를 갖고 있지는 않지만, TLD에 대한 DNS 서버 정보를 가지고 있다
- Top-Level Domain (TLD): 최상위 도메인을 관리하고 해당 도메인 아래에 있는 도메인의 DNS 정보를 저장하고 제공하는 역할
→ 도메인 네임은 계층 구조로 표현되고 뒤쪽에 위치할수록 상위 계층에 해당하는 도메인이다.
→ 국가 코드 최상위 도메인(ccTLD)와 일반 최상위 도메인(gTLD)- 루트 DNS 서버는 TLD에 대한 정보를 로컬 DNS 네임 서버에게 제공한다.
- 로컬 DNS 네임 서버는 이제 TLD DNS 서버로 쿼리를 전송하고, TLD DNS 서버는 해당 도메인의 DNS 서버 정보를 제공한다.
- 로컬 DNS 네임 서버는 해당 도메인의 DNS 서버에 질의를 보내고, 도메인 이름에 해당하는 IP 주소를 받아옴으로써 도메인 네임에 해당하는 IP 주소를 사용자에게 반환해준다.
- 예시
- 로컬 DNS 네임 서버로부터 Root DNS Server정보를 받아온다.
- 루트 DNS 서버에게 질의를 하고 TLD에 대한 DNS 서버 정보를 가져온다.
→ .com- com DNS의 DNS Server는 갖고 있는 도메인 중에서 yahoo.com에 대한 DNS Server를 제공한다.
- yahoo.com의 DNS Server는 해당하는 도메인에 대한 IP주소를 제공한다.
- DNS name resolution: DNS 서버를 여러 개 거치면서 주소를 알아내는 과정
- Iterated query: Contacted server가 다음으로 Contact 해야하는 서버 정보를 제공해주는 방식
→ Local DNS name server가 IP 주소를 찾기 위해 root DNS server에게 요청을 보내면 root DNS server는 TLD DNS server 정보를 제공해준다.
- Recursive query: Contacted server로부터 계속적인 재귀 요청을 통해 Authoritative DNS server로부터 IP 주소를 가져와서 Local DNS name server에게 전달해주는 방식
→ 상위 계층 DNS 서버에 상대적으로 큰 부하를 줄 수 있다.
→ Authoritative DNS server: 정확한 도메인 주소에 해당하는 IP 주소를 관리하는 server
- DNS Caching: Local DNS name server는 자주 사용되는 DNS 정보를 캐싱하여 저장한다.
→ TLD서버와 같이 빈번하게 사용되는 정보는 local DNS name server에 캐싱함으로써 요청되는 정보를 빠르게 제공할 수 있다.
→ Time-to-Live(TTL) 값에 따라 일정 기간 동안 유지되며, TTL이 만료되면 정보가 삭제된다.
IP Routing & ARP
- IP Routing: 목적지 IP 주소를 기준으로 데이터를 안전하고 효율적으로 목적지까지 보내기 위한 경로를 결정
- ARP: IP 주소를 물리적인 MAC 주소로 매핑
TCP 연결: TCP 핸드셰이크 및 SSL 설정 등을 통해 연결 설정
콘텐츠 다운로드 및 TTFB(Time To First Byte): 서버는 클라이언트의 요청에 대한 응답으로 웹 페이지의 콘텐츠를 전송한다.
- TTFB (Time To First Byte): 서버가 클라이언트의 요청을 받아 첫 번째 바이트를 전송하기까지 걸린 시간
브라우저 랜더링: 수신한 데이터를 기반으로 브라우저 랜더링 과정을 거쳐 하나의 이미지로 랜더링을 하여 사용자에게 화면 제공