인터넷 상에서 URL로 연결된 웹문서로 정보를 교류하는 서비스가 웹이었고, 웹을 위한 프로토콜이 http였다.
이번에는 이메일 서비스와 이를 위한 프로토콜인 SMTP, POP, IMAP을 알아보자. 또 IP와 도메인 이름을 연결시켜주는 서비스인 DNS에 대해서도 알아보자. 그리고 8강 내용 P2P 아키텍쳐 내용까지 간단히 알아보자.
Electronic Mail
- 먼저 Non-Electronic Mail을 생각해보자.
- 집의 우편함과 우체국을 생각해보자.
- 각 집마다 편지를 받는 공간인 우편함이 있다.
- 발송될 편지는 우체국에 모아놨다가 한꺼번에 차에 실어 보낸다.
- Electronim Mail도 이와 비슷하지 않을까?
- 메일 서버의 구조
- Mail box : 사용자마다 따로 가지고 있는 수신메일을 담는 자료구조다.
- Message Queue : 송신될 메세지를 담는 자료구조다.
- Message Queue는 일정시간 주기로 SMTP 프로토콜로 받는 측 서버에게 보낸다.
- 받는 측 서버는 받은 메세지를 수신자 별로 알맞게 분리해서 Mail box에 넣는다.
- SMTP
- 이메일 전송을 위한 프로토콜이다.
- Http와 마찬가지로 Data Integrity가 중요하므로 TCP 위에서 작동한다.
- 커맨드 라인으로 메세지를 송수신하며
- 송신자를 지정하는 MAIL, 수신자를 지정하는 RCPT, 데이터의 시작을 알려주는 DATA 명령어등으로 구성된다.
- HTTP vs SMTP
- HTTP는 요청을 보내서 정보를 가져오는(PULL) 프로토콜이다.
- SMTP는 정보를 보내는(PUSH) 프로토콜이다.
- 그러면 수신 측 서버와 수신 측 클라이언트 간 통신은 PUSH 성격을 가지는 SMTP는 적절하지 않다.
- 수신측 서버 - 클라이언트 간 프로토콜
- Mail Access Protocol이라고 한다.
- POP, IMAP, HTTP가 사용된다.
- POP
- 인증 단계와 트랜잭션 단계로 구성된다.
- 다운로드-삭제 모드와 다운로드 - 유지 모드가 있다.
- 어쨋든 Stateless하다.
- IMAP
- 모든 메세지를 서버측에 저장해서 State를 유지한다.
- 대신 서버 부담이 커진다.
DNS
- Domain Name System의 약자이다.
- Domain : 기억하기 어려운 IP 주소 대신 www.google.com 과 같이 알기 쉬운 이름을 쓴다. 이 이름이 도메인이다.
- DNS : 숫자로 된 IP주소와 문자로 된 Domain을 연결짓는 시스템이다.
- 한 서버가 모든 IP에 대해 DNS 서비스를 제공할 수 없으므로 계층적으로 구현되어 있다.
- 분산 데이터베이스 구조로 되어있다.
- DNS는 모든 애플리케이션에서 필요할텐데 왜 코어에서 구현 안했을까?
- 인터넷의 기본 철학은 코어는 전송에만 집중해서 속도를 향상하고
- 복잡성을 키울 수 있는 시스템은 엣지쪽으로 보내는 것이다.
- 따라서 모든 네트워크 애플리케이션이 필요로 하지만 DNS 서버의 애플리케이션으로 구현돼있다.
- DNS 서비스 네가지
- Translation : 호스트 네임(도메인)을 IP 주소로 변환한다.
- Host Aliasing : www.naver.com 이 사실 mobile.main.naver.com....일 수도 있다.
- Aliasing 이름과 Canonical 이름을 매핑한다.
- 복잡한 이름의 Canonical 이름은 여러개의 간단한 별칭을 가질 수 있다.
- Mail Server Aliasing
- 이메일을 보낼 때 ~~~ @ naver.com 이라고만 입력하면 자동으로 메일서버로 매핑이 된다.
- Load Distribution
- 특정 아이피(특정한 서버)가 www.naver.com의 모든 트래픽을 감당하면 한 서버가 뻗을 수 있다.
- DNS를 이용해서 www.naver.com 으로 등록된 여러 아이피에 고르게 트래픽을 분산할 수 있다.
- DNS 는 분산 시스템이다!
- DNS가 중앙 집중된 시스템이라고 생각해보자.
- 문제점 1. 중앙 DNS 서버가 뻗어버리면 모든 DNS 서비스가 마비된다.
- 문제점 2. 중앙 DNS 서버 주위로 트래픽 과부하가 일어난다.
- 문제점 3. 가용성이 100프로에 근접해야 하는 시스템이므로 유지보수가 어렵다.
- 문제점 4. DNS 서버까지 거리가 먼 곳이 존재한다.
- 그러므로 DNS서버는 분산시스템이어야 한다.
- DNS가 중앙 집중된 시스템이라고 생각해보자.
- Hierarchical DNS
- Root DNS
- .com, .org, ....의 하위 도메인을 관리하는 서버를 알고 있다.
- Root DNS 서버는 .com을 관리하는 서버, .org를 관리하는 서버, ......의 아이피를 알고 있다.
- TLD DNS
- Top Level Domain DNS의 약자이다.
- URL 맨 뒤에 있는 .com 과 같은 도메인의 하위 도메인들을 관리한다.
- 예를들어 .com을 관리하는 TLD 서버는 google.com, naver.com, ...... 의 아이피 주소를 알고 있다.
- Top Level Domain DNS의 약자이다.
- Authorititive DNS
- TLD의 하위 도메인들을 관리한다.
- 예를들어 google.com을 관리하는 Authorititive DNS 서버는 www.google.com, mail.google.com의 IP를 알고 있다.
- Root DNS
- Local DNS
- 당연히 DNS 서버도 캐시 (프록시)서버를 둘 수 있다.
- 보통 TLD 서버의 IP주소를 알고 있어 Root를 거치지 않아도 된다.
- 이 캐시가 얼마나 유지될 것인지 Time to Leave값을 가지고 있다.
- Recursion VS Iteration
- Recursion 방식
- 호스트 -> Local -> Root -> TLD -> Authorititive -> TLD -> Root -> Local -> 호스트
- 이와 같은 과정을 각 DNS 서버를 찾을 때마다 반복한다.
- Iteration 방식
- 호스트 ->Local -> Root -> Local -> TLD -> Local -> Authorititive -> Local -> 호스트
- Recursion방식의 경우 Root의 트래픽 부담이 크므로 일반적으로 Iteration 방식을 사용한다.
- Recursion 방식
- DNS 서버의 DB
- DNS 서버 DB는 Resource Record를 가지고 있다.
- [Name, Value, Type, TTL] 형식으로 되어있다.
- TYPE의 값에 따라서 Name 과 Value의 관계가 정해진다.
- A : Name과 Value는 기본적인 IP 매핑이다.
- CName: Name과 Value는 Canonical Name(진짜 이름)과 Aliasing Name(별칭)의 매핑이다.
- MX : Name과 Value는 Host Name과 Mail Server Name의 매핑이다.
- NS : Name과 Authoritative Name Server의 매핑이다.
P2P 아키텍쳐
- P2P 아키텍쳐에서 각 Endsystem은 클라이언트이자 서버이다.
- 유저가 증가하면 Request도 늘고 Response도 는다.
- 스스로 몸집을 키워나가는 Self - Scalabilty 특징을 가지고 있다.
- Bit Torrent
- 파일은 256kb로 나뉜다.
- 토렌트 : 피어들의 그룹
- 트렉커 : 그룹에 속한 피어들의 정보를 저장한다.
- tit for tat 원칙으로 작동한다. -> 나한테 많이 전송해준 유저에게 나도 많이 전송한다.
- Starvation을 막기 위해 무작위로 최대한 전송해주고 응답을 tit for tat 원칙으로 평가한다
지금까지 네트워크의 기초 개념과 Application 계층을 쭉 살펴보면서 http와 쿠키와 웹캐시, 그리고 Email 프로토콜과 DNS 서비스를 공부했다. 다음부턴 그 아래 계층, Transport Layer에 대해서 알아보자.
더보기
본 게시물은 kocw 이화여자대학교 이미정 교수님의 컴퓨터 네트워크 강의를 듣고 정리한 글임을 밝힙니다.
내용상 틀린 부분이 있을 수도 있으며 이에 대한 책임을 지지 않습니다.
틀린 부분이나 오타 지적은 댓글로 남겨주세요.
www.kocw.net/home/cview.do?cid=e44bdd9b3a3f9bb5
'컴퓨터 네트워크' 카테고리의 다른 글
네트워크 10강 - TCP part.1 (0) | 2020.08.10 |
---|---|
네트워크 9강 - Transport Layer 개론 (0) | 2020.08.10 |
네트워크 6강 - 쿠키와 웹캐시 (0) | 2020.08.07 |
네트워크 5강 - RTT, Http의 종류와 메세지 (0) | 2020.08.06 |
네트워크 4강 - Application Layer의 소개 (0) | 2020.08.05 |