SMTP (Simple Mail Transfer Protocol)
이름 그대로 email 전송에 직접적으로 쓰이는 응용 계층의 프로토콜입니다.
simple 함을 중요시하며 만들어졌으며 HTTP, SIP 같은 여러 프로토콜들의 디자인을 상속합니다.
전송계층 프로토콜로는 TCP를 통해 전달합니다.
실제 우체국에서 편지를 보내는 모습과 매우 유사합니다.
편지를 보낼때는 우체국에서 관리하는 우편통이나 우체국에 직접 가서 쓰죠. (요즘엔 그럴일이 없긴 합니다만)
편지를 받을 때는 그냥 집앞 우편함에 도착해있는 편지를 확인하면 됩니다.
SMTP도 마찬가지 방식으로 작동합니다!
메일을 주고받을 때
mail 서비스를 제공해주는 Mail 서버는 SMTP 을 통해 서로 메일을 주고 받습니다.
예를들어
내 메일 : abc@naver.com
상대방 메일 : def@daum.net
내가 상대방에게 메일을 보낸다고 가정해봅시다.
naver 메일 서버와 daum 메일 서버가 각각 존재합니다.
저는 naver 의 메일서버에 보낼데이터를 전송합니다. (SMTP)
naver 메일 서버는 daum 메일 서버에게 메일을 보냅니다. (SMTP)
그러면 그 메일 정보는 daum 메일 서버 보관함에 저장되고,
상대방은 daum 메일 서버 보관함에서 메일을 가져오게 됩니다. (SMTP가 아님)
메일 서버에서 메일을 가져올 때는 SMTP 를 사용하지 않고 다음과 같은 3가지 옵션중 하나로 가져옵니다.
1. Post Office Protocol(POP)
2. Internet Message Accesss Protocol(IMAP)
3. HTTP
* 왜 메일을 가져올 때는 SMTP를 이용하지 않을까?
SMTP는 심플하기 때문에 Mail Box (Po box) 까지만 갈 수 있습니다.
수신자는 태블릿, 컴퓨터, 휴대폰 등등에서 모두 메일을 확인할 수 있기 때문에,
SMTP는 메일 서버 보관함까지만 작용하고, 수신자는 위 3가지 옵션을 통해 직접적으로 메일을 가져오게 됩니다.
SMTP Format
Header, Blank line, Body
Header :
엄청 많은 정보들이 들어있습니다. From, To, Body Format 등등
Blank line : 공백
Body :
전달할 메일의 내용들이 포함되어있습니다.
직접 사용해보기
telnet을 통해 google의 메일 서버와 연결합니다.
SMTP 는 TCP, 포트 25를 이용하므로 명령어 뒤에 포트번호 25를 붙여줘야 합니다.
220, 250, 555 와 같이 세자리 숫자로 시작하는 것은 서버의 응답 코드를 뜻합니다.
응답 코드
- 1XX : 정보
- 2XX : 작업이 성공했음을 알린다.
- 3XX : redirecion, 즉 실행중임을 의미합니다. (mail 입력 시작)
- 4XX : 일시적인, 혹은 다소 지속적인 에러.
- 5XX : 완전 에러. (syntax error같은 것)
제가 명령어 하나를 칠 때마다 위 응답코드에 해당하는 응답이 오는 것을 볼 수 있습니다.
명령 목록
위 예시 명령어 해석
helo SEO
- HELO 명령어를 이용해 호스트 이름은 SEO라고 알립니다.
mail from: <ddrrpg@naver.com>
- 보낼 사람의 메일을 알립니다.
rcpt to : <ddrrpg@daum.net>
- 수신자의 메일 주소를 알립니다.
555 syntax error로 인해 (왜 인지는 모르겠네요..😒)
RCPT TO: <ddrrpg@korea.ac.kr> 로 변경했습니다.
data
- 메일을 뭐라보낼지 입력하는 창이 나옵니다.
test email.
- 내용
.
-> 내용 입력 종료를 의미합니다.
'컴퓨터 지식 > 네트워크&프로토콜' 카테고리의 다른 글
[네트워크📶] ICMP란 / ICMP Type / ICMP에 대해 ✨ (0) | 2020.06.10 |
---|---|
[네트워크📶] Tracert 작동원리 / Traceroute 작동 방식 ✨ (0) | 2020.06.10 |
[네트워크📶] DHCP 패킷 분석/ DHCP 특징 (0) | 2020.06.01 |
[네트워크📶] DHCP 역사 / RARP 프로토콜/ BOOTP 프로토콜 (3) | 2020.06.01 |
[네트워크📶] UDP pseudo-header(수도헤더) (2) | 2020.05.30 |
댓글