→ Open in Slid
POP, IMAP, HTTP

수신측 서버 - 클라이언트 간 프로토콜(Mail-Access Protocols)
POP
- 인증 단계와 트랜잭션 단계로 구성된다.
- 다운로드-삭제 모드와 다운로드 - 유지 모드가 있다.
- 어쨌든 Stateless하다.
IMAP
- 모든 메세지를 서버측에 저장해서 State를 유지한다.
- 대신 서버 부담이 커진다.
DNS (Domain Name System)
Domain
- 기억하기 어려운 IP 주소 대신 www.google.com 과 같이 알기 쉬운 이름을 쓴다. 이 이름이 도메인이다.
- DNS : 숫자로 된 IP주소와 문자로 된 Domain을 연결짓는 시스템이다.
- 한 서버가 모든 IP에 대해 DNS 서비스를 제공할 수 없으므로 계층적으로 구현되어 있다.
DNS는 모든 애플리케이션에서 필요할텐데 왜 코어에서 구현 안했을까?
- 인터넷의 기본 철학은 코어는 전송에만 집중해서 속도를 향상하고
- 복잡성을 키울 수 있는 시스템은 엣지쪽으로 보내는 것이다.
- 따라서 모든 네트워크 애플리케이션이 필요로 하지만 DNS 서버의 애플리케이션으로 구현돼있다.
DNS 서비스 4가지
Translation
- 호스트 네임(도메인)을 IP 주소로 변환한다.
Host Aliasing
- www.naver.com 이 사실 mobile.main.naver.com....일 수도 있다.
- - Aliasing 이름과 Canonical 이름을 매핑한다.
- - 복잡한 이름의 Canonical 이름은 여러개의 간단한 별칭을 가질 수 있다.
Mail Service Aliasing
- 이메일을 보낼 때 ~~~ @ naver.com 이라고만 입력하면 자동으로 메일서버로 매핑이 된다.
Load Distribution
- 특정 아이피(특정한 서버)가 www.naver.com의 모든 트래픽을 감당하면 한 서버가 뻗을 수 있다.
- DNS를 이용해서 www.naver.com 으로 등록된 여러 아이피에 고르게 트래픽을 분산할 수 있다.
DNS가 중앙 집중된 시스템이라면
- 문제점 1. 중앙 DNS 서버가 뻗어버리면 모든 DNS 서비스가 마비된다.
- 문제점 2. 중앙 DNS 서버 주위로 트래픽 과부하가 일어난다.
- 문제점 3. 가용성이 100프로에 근접해야 하는 시스템이므로 유지보수가 어렵다.
- 문제점 4. DNS 서버까지 거리가 먼 곳이 존재한다.
- 그러므로 DNS서버는 분산시스템이어야 한다.

Hierarchical DNS (3단계)
- Root DNS(1): .edo .com, .org, ....의 하위 도메인을 관리하는 서버를 알고 있다.Root DNS 서버는 .com을 관리하는 서버, .org를 관리하는 서버, ......의 아이피를 알고 있다. 가장 큰 도메인을 알고 있다.
- TLD DNS(2): Top Level Domain DNS의 약자이다.
URL 맨 뒤에 있는 .com 과 같은 도메인의 하위 도메인들을 관리한다.예를들어 .com을 관리하는 TLD 서버는 google.com, naver.com, ...... 의 아이피 주소를 알고 있다. 자기 밑에 있는 기관별 도메인을 담당하는 authortitive DNS가 누군지 알고 있다.
- Authorititive DNS(3)
- - TLD의 하위 도메인들을 관리한다.
- - 예를들어 google.com을 관리하는 Authorititive DNS 서버는 www.google.com, mail.google.com의 IP를 알고 있다.
- 기관 내에 인터넷에 connect된 모든 컴퓨터에 대해 Host name to IP address mapping정보를 알고 있다.
Local DNS
- 당연히 DNS 서버도 캐시 (프록시)서버를 둘 수 있다.
- 보통 TLD 서버의 IP주소를 알고 있어 Root를 거치지 않아도 된다.
- 이 캐시가 얼마나 유지될 것인지 Time to Leave값을 가지고 있다.
DNS: root name servers

Recursion VS Iteration
- Recursion 방식
- 호스트 -> Local -> Root -> TLD -> Authorititive -> TLD -> Root -> Local -> 호스트이와 같은 과정을 각 DNS 서버를 찾을 때마다 반복한다.
- Iteration 방식
- 호스트 ->Local -> Root -> Local -> TLD -> Local -> Authorititive -> Local -> 호스트