Reference :
컴퓨터 네트워킹 하향식 접근 [8판] / 퍼스트 북 / James F. Kurose, Keith W. Ross
건국대학교 컴퓨터 네트워크 수업 / 김기천 교수님
전자메일은 비동기적인 통신매체
애플리케이션 계층 프로토콜은 인터넷 전자메일 구조의 중심에 있다
정상적인 전자메일 송수신
수신자는 각 메일 서버 안에 메일 박스를 갖고 있음
- 송신자의 사용자 에이전트에서 메시지 전달
- 송신자의 메일 서버를 거침
- 수신자의 메일 서버로 전달됨
- 수신자의 메일 박스에 저장됨
- 수신자가 메일 박스에 있는 메시지를 보려면
- ⇒ 메일 서버는 사용자 계정과 비밀번호를 이용하여 수신자임을 인증한다
에러 상황 발생 시
수신자 메일 서버 고장이 일어났을 때
- 송신자 서버는 그 메시지를 메시지 큐에 보관하고 나중에 그 메시지를 전달하기 위해 재시도한다
- 약 30분마다 재시도가 일어남
- 여러 날 시도해도 성공하지 못하면, 서버는 그 메시지를 제거하고 송신자에게 전자메일로 이를 통보함
SMTP
역할
송신자의 메일 서버로부터 수신자의 메일 서버로 메시지를 전송함
특징
HTTP보다 오래 됨
단점
모든 메일 메시지의 body는 단순한 7bit ascii이어야 한다
⇒용량 문제
⇒*이진 멀티미디어 데이터를 보내기 전에 ascii로 변환해야
⇒ 전송 후에는 다시 ascii를 이진 멀티미디어 데이터로 변환해야
*HTTP는 멀티미디어 데이터를 ascii로 변환해야 한다는 요구가 없었음
전체적인 FLOW
- 송신자(Alice)는 수신자(Bob)에게 메시지를 작성하고 사용자 에이전트에게 메시지를 보내라고 명령
- 송신자의 사용자 에이전트는 메시지를 송신자의 메일 서버에 보내고, 메시지는 메시지 큐에 놓인다
- 송신자의 메일 서버에서 동작하는 SMTP의 클라이언트 측은 송신자 SMTP과 TCP 연결을 수행한다
- 초기 SMTP 핸드 셰이킹 이후에 SMTP 클라이언트는 송신자의 메시지를 TCP연결로 보낸다
- 수신자의 메일 서버 호스트에서 SMTP의 서버 측은 메시지를 수신하고 수신장의 서버는 그 메시지를 수신자의 메일박스에 놓는다
- 수신자는 편한 시간에 그 메시지를 읽기 위해 사용자 에이전트를 부른다
자세한 STMP 전송 FLOW
- 클라이언트 SMTP는 서버 SMTP의 25번 포트로 TCP 연결을 설정한다
- 서버와 클라이언트는 애플리케이션 계층 헨드셰이크 수행
- SMTP 클라이언트는 송신자의 전자메일 주소와 수신자의 전자메일 주소를 제공함
- 클라이언트가 메시지를 보냄
지속연결
송신메일 서버가 같은 수신 메일 서버로 보내는 여러 메시지를 갖고 있다면, 같은 TCP 연결을 통해서 모든 메시지를 전달함
HTTP와의 비교
공통점
- 한 호스트에서 다른 호스트로 파일을 전송하는데 이용
- 지속 연결
차이점
- 송수신HTTP: 웹 서버 → 웹 사용자 에이전트(브라우저)
- SMTP: 한 메일 서버→다른 메일 서버
- pull / push 프로토콜HTTP: pull 프로토콜 ⇒ 사용자가 서버로부터 정보를 가져오기 위해 사용한다
- SMTP: push 프로토콜 ⇒ 송신 메일 서버가 수신 메일 서버로 보낸다
- 제한HTTP: 제한 X
- SMTP: 7bit & ASCII
- 객체HTTP: 각 객체를 캡슐화
- SMTP: 모든 메시지의 객체를 한 메시지로 만듦
메일 메시지 포맷
- header lline과 body는 빈 줄(CRLF)로 분리됨
- 모든 header는 From: 헤더라인과 To: 헤더라인을 반드시 가져야 함
- From: alice@crepes.fr To: bob@hamburger.edu Subject: Searching for the meaning of life.
메일 접속 프로토콜
문제상황
송신자가 수신자에게 보낸 메일은 수신자의 메일 박스에 저장된다.
그런데 이때 수신자가 자신의 메일 서버에 있는 메시지는 어떻게 볼 수 있을까?
SMTP는 사용을 못한다. ⇒ SMTP가 push 프로토콜인 반면에 메시지를 얻는 것은 pull 동작이기 때문이다.
⇒ 특별한 메일 액세스 프로토콜을 통해 해결 가능!
POP3
사용자 에이전트가 메일 서버의 포트 110번으로 TCP 연결을 열 때 시작함
- 인증
- 사용자 에이전트는 메일을 다운로드하는 사용자를 인증하기 위해 사용자 이름과 비밀번호를 보낸다
- 트랜잭션
- 사용자 에이전트는 메시지를 가져오고, 메시지 삭제 표시나 그 삭제 표시를 지울 수도 있으며, 메일 통계를 얻을 수도 있다.
- 갱신
- 클라이언트가 POP3 세션을 끝내는 quit 명령이 내려진 후에 일어남
수신자가 로컬 컴퓨터로 메시지를 다운로드 할 수 있게 됨
IMAP
- 등장 배경
- POP3의 방법으로는 사용자가 다른 원격 서버에서 접속할 수 없다
- 개요
- 메일 접속 프로토콜
- POP3 보다 더 다양한 특성을 갖지만 복잡함
- 특징
- 폴더에 각각의 메시지를 연결함
- 사용자가 폴더를 생성하고 하나의폴더에서 다른 폴더로 메시지를 옮기는 명령을 제공
- 특정 조건에 맞는 운격 폴덜르 찾는 명령 제공
- IMAP 세션을 통해 사용자 상태 정보를 유지함
- 폴더의 이름과 어떤 메시지가 어떤 폴더와 연결되어 있는가
- 사용자 에이전트가 메시지의 구성요소를 얻을 수 있게 허용하는 명령을 가짐
- 메시지의 헤더만 얻기
- ⇒ 낮은 대역폭으로 연결될 때 유용함!(모든 메시지를 다운로드 안 해도 됨)
웹 기반 전자메일
- 개요
- 多사람이 웹 브라우저를 통해 전자메일을 주고받음
- 과정
- 사용자 에이전트: 일반 웹 브라우저
- 사용자는 HTTP를 통해 메일 서버에 있는 원격 메일박스와 통신
- 수신자가 자기 메일박스에 있는 메시지를 보고자 할 때, POP3나 IMAP을 이요하는 대신에 HTTP 프로토콜을 이용하여 수신자의 브라우저로 전달된다
- 송신자가 전자메일 메시지를 보내고자 할 때, 전자메일 메시지는 SMTP 대신에 HTTP를 이용하여 브라우저에서 메일 서버로 전달된다.
- 메일 서버는 여전히 SMTP를 이용하여 메시지를 다른 메일 서버로 전달하거나 다른 메일 서버로부터 수신한다
애플리케이션 계층 프로토콜은 인터넷 전자메일 구조의 중심에 있다
'컴퓨터 네트워크 > Ch2. 애플리케이션 계층' 카테고리의 다른 글
6. 비디오 스트리밍과 콘텐츠 분배 네트워크 (0) | 2023.03.22 |
---|---|
5. P2P 파일 분배 (0) | 2023.03.22 |
4. DNS: 인터넷의 디렉터리 서비스 (2) | 2023.03.22 |
2. 웹과 HTTP (0) | 2023.03.22 |
1. 네트워크 애플리케이션의 원리 (0) | 2023.03.22 |