KOWC 강의 중 '네트워크및보안' 강의에서 다루지 않는 부분에 대한 공부 기록입니다.
: 메시지 작성하고 편집하고 읽고하게 해주는 프로그램입니다. (ex. Gmail 프로그램)
: 작성한 메시지나 전달되는 메시지 전부를 mail server가 받습니다.
: 서버는 두 가지 data structure를 갖는데 'mail box'는 우리에게 전달되는 메시지를 담고 있고 'message queue'는 발송하는 메시지를 담고 있습니다.
: 서버를 통해서 메시지를 보내달라고 서버에 요청을 하면, 서버 안의 하나의 큐에 들어가게 되는데 이때 사용자 구분이 안됩니다.
: 하지만 메일 박스는 여러가지가 있는 것으로 보아, 사용자별로 있음을 확인할 수 있습니다.
: 메일 시스템은 보내는 측의 agent, 받는 측의 agent가 있고
: 보내느 측의 메일 서버와, 받는 측의 메일 서버가 있습니다.
: agent -> 서버에서도 SMTP를 사용하고
: 서버 -> 서버에서도 SMTP를 사용합니다.
: 서버 -> agent에는 POP이나 IMAP 혹은 HTTP와 같은 프로토콜을 사용합니다.
1. sender가 User Agent(UA) 이용해서 receiver에게 메시지 작성
2. UA는 sender가 속한 메일 서버로 메시지 보내서, 그 메시지는 메시지 큐에 들어감.
3. 서버가 receiver 서버로 보냄. (SMTP 프로토콜은 TCP위에서 동작하므로 TCP 커넥션을 맺어야합니다.)
4. TCP 커넥션 끝내고
5. POP과 같은 프로토콜을 이용하여 메일을 읽어옵니다.
: SMTP도 HTTP와 마찬가지로 TCP 위에서 동작한다.
: SMTP 서버 프로세스는 PORT 번호 25에서 대기한다.
: (보편적인 서비스이기 때문에)
: SMTP의 client는 commands를 보내고 서버의 메시지에는 response가 들어가있습니다. (HTTP와 유사)
: 메시지는 7bit의 ASCII 코드로 구현되어있습니다.(User의 이메일 메시지는)
: 즉, 텍스트 메시지만 가능합니다. (초기버전의 SMTP는 그렇다.)
: 근데 지금은 다양한 형태의 사용자 메시지 전달이 가능하도록 진화하였습니다.
: 메일 서버 + 25번 포트에 타이핑 하는 내용이 전달이됩니다.
: 위의 세가지 줄의 액션으로 handshaking이 이루어집니다.
: sender와 receiver를 명시해주고
: data를 보냅니다.
: 응답에 따라 그 끝을 '.'으로 표현합니다.
: (+) 한 번 handshaking하면, 여러개의 메시지를 전달할 수 있습니다.(HTTP는 한개의 object만 보낼 수 있는 것과는 차이가 있습니다.)
: 전송을 다 한 후, close 단계를 거칩니다.
: SMTP, HTTP의 가장 큰 차이점은
: HTTP는 pull protocol이고 (서버로부터 데이터를 가지고 옴)
: SMTP는 push protocol입니다. (서버에게 데이터를 보냄)
: HTTP 메시지는 response에 object 하나를 보내지만
: SMTP는 한 유저의 메일 메시지가 여러 파일들로 구성되었을 때도 한꺼번에 보낼 수 있습니다.