본문 바로가기

OSI Model

29. SMTP (7계층 Application Layer 응용 계층)

(7계층 Application Layer 응용 계층)


SMTP(Simple Mail Transfer Protocol)

 

인터넷에서 전자메일 전송은 SMTP(Simple Mail Transfer Protocol)를 지원하는 호스트 사이에 이루어지며, SMTP 호스트는 SMTP 명령과 그에 따른 응답 과정을 반복해 메일을 전송한다.

 

메일을 보내는 과정은 절차상 세 단계로 구분할 수 있다. 먼저 연결 설정 단계에서는 SMTP 클라이언트가 TCP를 이용해 SMTP 서버와 세션을 설정한다.

 

연결 설정이 완료되면 SMTP 서버에 메일을 보내는 데이터 전송 단계를 진행할 수 있다.

 

이 단계에서 송신자의 메일 주소, 수신자의 메일 주소, 메일 제목 등과 같은 헤더 정보를 포함하여 메일의 전체 내용이 순차적으로 전송된다.

 

마지막으로 메일 전송을 완료하면 TCP 연결을 종료하는 연결 해제 단계가 진행되고, SMTP 세션이 종료된다.

 

 

SMTP연결

TCP 연결 설정이 정상적으로 이루어지면 과 같은 SMTP 세션의 연결 설정 절차가 진행된다.

25번 포트에서 대기 중인 SMTP 서버는 TCP 연결 요청이 들어오면 응답 코드 220을 회신하여 메일을 수신할 준비가 되었음을 알린다

 

서비스가 준비되지 않았으면 코드 421을 전송하여 후속 작업이 진행되지 않도록 한다. 

 

SMTP 서버로부터 응답이 없으면 SMTP 세션 연결에 실패한 것이다.

 

응답 코드 220을 수신한 클라이언트는 HELO 명령과 함께 송신자의 호스트 이름을 전송한다. 

 

수신자(서버)는 그에 대한 완료 코드 250을 전송함으로써 SMTP 세션 연결 절차가 완료된다

 

SMTP 데이터 전송

데이터 전송 단계는 크게 송수신자의 메일 주소 확인, 메일 헤더 정보 전송, 메일 메시지 전송 과정으로 구분할 수 있다.

 

메일 주소 확인 과정

송수신자의 메일 주소 확인 과정에서는 SMTP 클라이언트가 SMTP 서버에 송신자와 수신자의 메일 주소를 전달한다.

 

먼저 MAIL 명령을 사용해 송신자 메일 주소를 서버에 전달하는데, 서버에서 오류 상황이 발생하면 이 주소로 오류 내용을 회신받을 수 있다

 

MAIL 명령이 성공적으로 처리되면 RCPT 명령을 이용해 수신자 메일 주소를 전송한다.

 

SMTP서버에는 수신자 메일주소가 서버에 호스트로 등록이 된 사용자인지 확인하여 등록된 경우에만 응답을 한다

 

만약 등록된 사용자가 아닌 경우 코드550을 회신하여 오류로 처리한다

 

 

헤더 정보 전송 과정

헤더 정보를 전송하는 과정은 사용자의 메일 헤더를 서버에 전송하기 위한 것이며, DATA 명령에 의해 시작된다.

From, To, Date 등과 같이 전송하려는 헤더 정보를 순차적으로 한 행씩 전송하는데, 모든 헤더 정보를 보내야 하는 것은 아니다.

 

 

메시지 전송 과정

메시지 전송 과정은 송신자의 메일 내용을 전송하는 단계며, 메시지를 원하는 만큼 순차적으로 전송할 수 있다.

 

더 이상 전송할 데이터가 없으면 마지막을 의미하는 점(.)을 전송해 데이터 전송을 완료한다. 올바르게 완료되면 SMTP 서버로부터 응답 코드 250을 수신한다.