오늘하루도 우힣ㅎ

CH2. Application Layer (2) 본문

네트워크/강의정리

CH2. Application Layer (2)

우힣 2019. 12. 23. 23:48

3. Electronic Mail(SMTP, POP3, IMAP)

 - Electronic Mail

 

  - Three major componets

    -> user agents

         : 메일을 사용하는 user를 의미한다.

         : 메일을 쓰고, 읽는데 사용되어 진다.

    -> mail server

         : mailbox에는 유저에게 온 메세지를 저장하고 있다.

         : message queue 에는 보낼 메세지들이 존재하고 있다.

   -> simple mail transfer protocol(SMTP)

         : TCP 통신을 이용하여 통신을 하게 된다.

         : port 번호는 25번을 사용 한다.

         : persistent connection을 사용 하게 된다

           => 계속해서 연결이 지속되는 것을 의미한다.

         : message는 반드시 7-bit ASCII코드이다.

         : command/response interaction

           => command의 경우 ASCII (client쪽에서의 보내는 형식)

           => response의 경우 status code와 phrase를 사용(server쪽) 

 - E-mail scenario

 - Comparision with HTTP

-> HTTP 1.1 and SMTP : 둘다 persistent connection을 사용을한다.

    => HTTP : pull protocol (client측에서 데이터를 요청할때에만 서버에서 데이터를 보낸다.)

    => SMTP : push protocol (client측에서 데이터를 요청하지 않더라도 상대방은 데이터를 보내게 된다.)

-> 둘다 ASCII command/response interaction, status code를 사용 하도록 한다.

    => HTTP : each object encapuslated in its own HTTP response msg

    => SMTP : multiple objects sent in multipart msg

 

 - Mail message format

-> messge의 경우 7-bit ASCII코드를 사용하여야 한다.(필수)

-> MIME extension : ASCII형식을 사용하지 않는것들을 (8bit 이상을 사용하는 2진 파일들을) ASCII형식으로 바꾸어 주기 위해사용되어지는 형식을 의미한다.

-> MIME content type이 MIME header에 적히게 되는데 해당 데이터의 타입과 서브타입을 나타내게 된다.

      (ex. Contetnt-Type : image/jpeg)

-> message format

     => Base64 encoding : 바이너리 데이터를 입력받아서 이를 6bit씩잘라 이에 해당하는 문자를 base64 encoding 표에서 찾아 치환을 하는 방식이다.

(참고 : https://effectivesquid.tistory.com/entry/Base64-%EC%9D%B8%EC%BD%94%EB%94%A9%EC%9D%B4%EB%9E%80)

     => Quoted-printable : ASCII data와 Non-ASCII data(해당 data의 MSB가 1일때 non ascii가 된다.) 가 섞여있을때 이를 모두 ASCII code로 만들기 위해서 만드는것

    ex)

     => 1001 1101의 경우 non-ascii data이다. 이것을 ASCII data로 바꾸기 위해서 구분자인(=)를 넣고 각각의 데이터를 16진수로 표현을 하도록 한다. 여기서의 경우 00111101(구분자 =) 00111001(16진수로 표현된 9) 01000100(16진수로 표현된 D)로 바뀌게 되는 것이다.

     => 1byte가 3byte로 표현이 되게 되는것

 

 - Web-based e-mail

-> web-based e-mail의 경우 두가지의 경우가 있다. 하나는 receiver측에서만 HTTP를 사용하는것이고 하나는 sender와 receiver측에서 HTTP를 사용하게 되는 것이다. 이때 mail server간에는 SMTP를 사용 하여야 한다.

4. DNS (Domain Name Service)

 - DNS

-> Name & Address

     Name : 사람들이 이용하기 쉽도록 하기 위해 만들어진것. ex) www.eory96study.tistory.com     

     Address : 기계에서 사용이 되어지는것 (IP address)

     => 이 둘은 서로 변환이 되어 사용이 되어진다.

          (name 이 address로 맵핑되거나 address가 name으로 맵핑 되는것을 name-address resolution이라고 한다.)

 

-> Name Resolution 

  • Solution1 : Static Mapping (Hostname to address mapping file or hosts file, 파일에 저장하여 사용을 하는 것을 의미한다.)
  • Solutino2 : Dynamic Mapping (DNS)

-> Solution2 : DNS

  • The internet has too many objects for a single management center
  • 분산된 DB 시스템을 사용을 하게 된다 (확장성, 유지가 쉽다.)
  • 계층적 구조를 통해 관리가 되어진다. (Domain hierarchy)

 - Overview of DNS

-> Client가 www.amazon.com의 IP를 알고 싶을때

    1. Client는 root server에 com DNS의 위치가 어딨는지 qurie 를 날리게 된다.

    2. Client는 com DNS에 amazon.com DNS의 위치가 어딨는지 묻는다.

    3. Client는 amazon.com DNS에 www.amazon.com의 위치가 어딨는지 묻게 된다. 

    4. Client는 해당 IP address를 얻게 된다.

-> Root DNS server

    : server farm형식으로 총 13개의 root server가 전세계에 존재하게 된다. (각 서버는 복제된 서버의 cluster이다,)

-> TLD servers

    : Responsible for com, org, net, edu, etc, and all top-level country domains uk,fr,ca, jp.

-> Authoritative DNS servers

    : 조직이나 서비스 제공자에 의해 관리가 되어진다.

    : 각 조직의 DNS 서버로 각각의 조직에 맞는 IP를 맵핑해주는 역할을 하게 된다.

 

 - Local Name Server

   : 계층적 구조에 속하지는 않는다.

   : 각각의 ISP는 하나씩 가지고 있다.

   : host 가 DNS 쿼리를 만들게 되면 일단 local DNS server로 보내진다. (프록시 처럼 이용이 되어지고, 이것이 계층적 DNS구조로 쿼리를 보낸다.)

 

 - Name Resolution

Iterative Queries 

   - 3 에서의 경우 해당 TLD DNS server에 대한 정보를 알려준다.

   - 5 에서의 경우 해당 authoritative DNS server의 위치를 알려 주게 된다.

   - 7 에서의 경우 해당 쿼리에 대한 정보가 있다고 Authoritative response를 보내게 된다.

   - 8 에서의 경우 local DNS server에서 7을 통해 받은 정보를 가지고

gaia.cs.umass.edu의 IP를 찾아내고 그 정보를 local host에게 전달하는 과정이 된다.

 

   -> 반복적으로 아는 서버까지 계층적으로 물어보는 형태

   

    - 1 번의 과정은 iterative queries와 같이 gaia.cs.umass.edu를 요청하는 쿼리를 local DNS server로 보내게 된다.

    - 이 방식의 경우 local DNS server는 root DNS server로 한번 queries를 보낸후 각각의 DNS server가 다음 계층의 DNS server로 query를 보내는 형식이다.

 

    -> 상위 계층 DNS server 에 많은 부담이 가게 된다.

 

 - DNS Caching and Update Recoreds

-> name server가 매핑하는것을 학습하면 name server에서 mapping을 하게 된다.

-> 해당 cache 엔트리는 일정 시간후에 사라지게 된다.

-> TLD server가 대게 local name server에 cache가 되기 때문에 root를 거치지 않고 바로 TLD server로 query를 날리는 형식이 된다.

 

 - Services provided by DNS

-> DNS 는 UDP 또는 TCP를 사용하는데 이때 port #은 53이 되게 된다. 

     (주로 UDP를 사용을 하게 된다. 그 이유는 TCP의 경우 connection establishment 과정에서 오버헤드가 발생하기 때문이다.)

-> DNS 가 인터넷에서 object들을 식별할수 있다.

  • Host name (canonical hostname, Alias hostnames)
  • Name server
  • Mail server
  • Information

 - DNS records

-> 형식 : (name, ttl, class, type, value)

     type : specifies the types of the value

  name value
A host IPv4 value
NS(Name server) domain name IP address of authoritative name server for this doamin
CNAME alias anme canonical name
MX(Mail server)   name of mailserver associated with name
HINFO   host information
TXT   text (uninterpreted ascii text)

ex)

-> DNS message의 경우 query와 reply가 같은 형식을 지니고 있다.

'네트워크 > 강의정리' 카테고리의 다른 글

CH3. Transport Layer(3)  (0) 2020.01.03
CH3. Transport Layer(2)  (0) 2020.01.01
CH3. Transport Layer(1)  (0) 2019.12.30
CH2. Application Layer (3)  (0) 2019.12.29
CH2. Application Layer  (2) 2019.12.21
Comments