{"componentChunkName":"component---src-templates-blog-post-js","path":"/Computer-Network/2020-09-30-네트워크-전자메일/","result":{"data":{"site":{"siteMetadata":{"title":"Hun's Footsteps 🥷","author":"전여훈","siteUrl":"https://jeonyeohun.netlify.app","comment":{"disqusShortName":"","utterances":"jeonyeohun/jeonyeohun.github.io"},"sponsor":{"buyMeACoffeeId":"jeonyeohun"}}},"markdownRemark":{"id":"2f17ec95-16a1-5d44-9efe-02903e5c45a6","excerpt":"참고도서: 컴퓨터 네트워킹 : 하향식 접근. 7판. James F. Kurose , Keith W.Ross…","html":"<p><em><strong>참고도서: 컴퓨터 네트워킹 : 하향식 접근. 7판. James F. Kurose , Keith W.Ross 지음</strong></em></p>\n<h2 id=\"인터넷-메일-시스템의-구조\" style=\"position:relative;\"><a href=\"#%EC%9D%B8%ED%84%B0%EB%84%B7-%EB%A9%94%EC%9D%BC-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%98-%EA%B5%AC%EC%A1%B0\" aria-label=\"인터넷 메일 시스템의 구조 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>인터넷 메일 시스템의 구조</h2>\n<ul>\n<li>인터넷 메일 시스템은 크게 세 가지 구성요소로 이루어져 있다.</li>\n<li><code class=\"language-text\">사용자 에이전트</code> : 사용자 에이전트는 사용자들이 사용하는 메일 어플리케이션을 말한다. 지메일, 야후메일 처럼 사용자 에이전트를 통해서 사용자들은 메일을 작성하고, 읽고, 보낼 수 있다.</li>\n<li>\n<p><code class=\"language-text\">메일 서버</code> : 메일 서버는 각 사용자가 가지게 되는 메일을 실제로 주고받는 서버를 의미한다.</p>\n<ul>\n<li>메일 서버 안에는 <code class=\"language-text\">메일박스(mailbox)</code> 가 존재해서 사용자에게 전달된 메일들이 저장되고 관리할 수 있게한다.</li>\n<li>메일 서버에는 <code class=\"language-text\">메세지 큐(message queue)</code> 또한 존재한다. 한 사용자의 메일 서버가 다른 사용자의 메일 서버로 메세지를 보내는데 실패한다면, 해당 메세지는 메세지 큐에 저장되어 이후에 다시 전송을 시도하게 된다.</li>\n</ul>\n</li>\n<li><code class=\"language-text\">SMTP(Simple Mail Transport Protocol)</code> : 인터넷 메일 전송을 위해 사용되는 어플리케이션 계층 프로토콜이다.</li>\n</ul>\n<h2 id=\"smtpsimple-mail-transport-protocol\" style=\"position:relative;\"><a href=\"#smtpsimple-mail-transport-protocol\" aria-label=\"smtpsimple mail transport protocol permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>SMTP(Simple Mail Transport Protocol)</h2>\n<ul>\n<li>SMTP는 송신자의 메일서버로부터 수신자의 메일서버까지 메시지를 전송하는 역할을 한다.</li>\n<li>\n<p>SMTP는 다음과 같은 과정으로 메일을 송수신한다.</p>\n<ol>\n<li>사용자 에이전트에서 작성된 메세지가 송신자의 메일서버로 보내지고, 메세지 큐에 들어간다.</li>\n<li>송신자의 메일 서버에 있는 SMTP 클라리언트가 메세지 큐에 있는 메일을 확인하고 수신자의 메일 서버와 TCP 연결을 수행한다.</li>\n<li>핸드셰이킹 이후에 송신자의 메세지가 수신자의 메일 서버로 전달된다.</li>\n<li>수신자의 메일 서버는 수신한 메세지를 메일 박스에 저장한다.</li>\n<li>수신자는 수신자 에이전트에서 언제든지 메일 박스 안에 있는 메세지를 확인 할 수 있게 된다.</li>\n</ol>\n</li>\n<li>SMTP의 가장 큰 단점은 <code class=\"language-text\">7비트 ASCII</code> 로 메일의 내용 표현해야한다는 것이다. 요즘은 사용자 에이전트에서 파일을 메일에 첨부하는 것을 허용하기 때문에, 이런 이진파일들을 ASCII로 바꿔서 전송하는 기술이 고안되었다.</li>\n<li>SMTP는 <code class=\"language-text\">25번 포트</code> 로 TCP 연결을 설정한다. 이때 TCP는 지속연결을 사용하게 된다. 따라서 송신 메일 서버가 같은 수신 메일 서버로 여러 개의 메일을 보내게 되면 한 번의 연결 설정으로 모든 메일을 보낼 수 있다.</li>\n<li>SMTP의 핸드셰이킹 과정에서 SMTP 클라이언트는 송신자의 메일 주소와 수신의 메일 주소를 전달한다.</li>\n<li>HTTP 와 SMTP는 지속 연결을 사용한다는 점에서 비슷하지만, SMTP 는 정보를 송신자에게 수신자로 보낸다는 점에서 <code class=\"language-text\">푸쉬(Push) 프로토콜</code> 이라 할 수 있고, HTTP는 정보가 수신자 측에서 송신자에게 다시 응답으로 보내줘야 하는 구조이기 때문에 <code class=\"language-text\">풀(pull) 프로토콜</code> 이라고 할 수 있다.</li>\n</ul>\n<h2 id=\"메일-접속-프로토콜\" style=\"position:relative;\"><a href=\"#%EB%A9%94%EC%9D%BC-%EC%A0%91%EC%86%8D-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C\" aria-label=\"메일 접속 프로토콜 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>메일 접속 프로토콜</h2>\n<ul>\n<li>사용자 에이전트는 사용자의 로컬 PC에 존재하지만 사용자의 메일 서버는 그럴 수 없다. 일반적으로 메일 서버는 ISP에서 관리한다.</li>\n<li>그렇다면 어떤 메세지가 수신자에 메일 서버에 있을 때, 그것을 사용자 에이전트로 가져오는 방법이 필요하다. SMTP를 사용하면 될 것 같지만, SMTP는 정보를 보내는 푸쉬 프로토콜이기 때문에 메일 서버에서 메세지를 가져오는 용도로 사용할 수는 없다.</li>\n<li>따라서 사용자 에이전트에서 메일 서버에 있는 메세지를 가져오기 위한 <code class=\"language-text\">메일 접속 프로토콜(Mail Access Protocol)</code> 이 필요로 된다</li>\n</ul>\n<h3 id=\"pop3\" style=\"position:relative;\"><a href=\"#pop3\" aria-label=\"pop3 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>POP3</h3>\n<ul>\n<li>POP3는 사용자 에이전트가 메일 서버의 포트 110번으로 TCP 연결을 설정할 떄 함꼐 시작된다.</li>\n<li>\n<p>POP3는 세 단계에 걸쳐서 작업을 수행한다.</p>\n<ol>\n<li><code class=\"language-text\">인증</code> : 사용자 에이전트가 사용자를 인증하기 위해서 사용자의 이름와 비밀번호를 보낸다.</li>\n<li><code class=\"language-text\">트랜잭션</code> : 사용자 에이전트가 메세지를 가져오거나 삭제표시를 메일에 지정할 수 있다.</li>\n<li><code class=\"language-text\">갱신</code> : 사용자 에이전트가 POP3 연결을 종료한 뒤에 메일 서버는 트랜잭션 단계에서 표시되었던 삭제표시된 메세지를 삭제한다.</li>\n</ol>\n</li>\n</ul>\n<h3 id=\"imapinternet-mail-access-protocol\" style=\"position:relative;\"><a href=\"#imapinternet-mail-access-protocol\" aria-label=\"imapinternet mail access protocol permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>IMAP(Internet Mail Access Protocol)</h3>\n<ul>\n<li>IMAP 는 POP3 보다 조금 더 복잡한 일들을 처리할 수 있도록 한다.</li>\n<li>사용자는 원격 폴더를 생성하고 메일 서버에 있는 메세지들을 각 폴더들에 연결시킬 수 있는 기능을 제공한다.</li>\n<li>이를 위해서 IMAP는 세션을 통해 사용자 정보의 상태를 유지시킨다.</li>\n<li>IMAP 는 사용자 에이전트가 메일의 특정한 요소만 골라서 정보를 얻을 수 있게 한다. 메세지의 일부만 얻거나, 파일을 제외하고 읽는 기능들을 제공한다.</li>\n</ul>\n<h3 id=\"웹-기반-전자메일\" style=\"position:relative;\"><a href=\"#%EC%9B%B9-%EA%B8%B0%EB%B0%98-%EC%A0%84%EC%9E%90%EB%A9%94%EC%9D%BC\" aria-label=\"웹 기반 전자메일 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>웹 기반 전자메일</h3>\n<ul>\n<li>웹기반 전자메일은 메일 서버에서 메세지에 접근 할 때, POP3 나 IMAP를 사용하는 것이 아니라 HTTP 프로토콜을 사용해서 메세지에 접근한다.</li>\n<li>메일의 송신은 여전히 SMTP를 사용하고 사용자 에이전트가 메일 서버에 접근할 때만 HTTP를 사용한다.</li>\n</ul>","frontmatter":{"title":"[네트워크] 인터넷 전자메일","date":"September 30, 2020"}}},"pageContext":{"slug":"/Computer-Network/2020-09-30-네트워크-전자메일/","previous":{"fields":{"slug":"/Computer-Network/2020-09-18-네트워크-네트워크-계층구조/"},"frontmatter":{"title":"[네트워크] 프로토콜 계층과 서비스 모델","category":"Computer-Network","draft":false}},"next":{"fields":{"slug":"/Computer-Network/2020-09-30-네트워크-웹과-HTTP/"},"frontmatter":{"title":"[네트워크] 웹과 HTTP","category":"Computer-Network","draft":false}}}},"staticQueryHashes":["2486386679","3128451518"]}