일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- FutureBuilder
- flutter_local_notification
- flutter secure storage
- 주변에는 능력자 뿐이야!!
- 편하다요
- Null Safety
- 플러터 책
- flutter_secure_storage
- 포?코DX
- network
- flutter
- flutter-layout
- 누가 보기는 하는걸까...ㅠㅠ
- 쒸익!!!!!!!!!
- 플러터
- hero animation
- 다트 책
- 나도 코딩 잘할래!!!!!!!!!!!
- 다트&플러터
- Flutter2.8
- 코딩 잘하고 싶어!!
- 댓글이 하나도 없오...ㅠㅠ
- 크레인 인형뽑기
- dfs
- TODO
- bloc
- 프로그래머스
- open weather api
- 주니어개발자
- 이직
- Today
- Total
오늘하루도 우힣ㅎ
CH2. Application Layer (2) 본문
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 |