-
[네트워크] 5. FTP와 Electronic Mail(SMTP, POP3, IMAP)CS/네트워크 2023. 3. 16. 23:59
1. FTP
ftp 프로토콜은 보안상 이슈로 현재는 잘 사용하지 않는 형식입니다.
ftp는 다음과 같은 특징을 가집니다.
- TCP 통신 방식
- 2개의 포트 사용 : control 포트로 21번을, data 전송 포트로 20번을 사용합니다.
이러한 방식을 out of band라고 합니다. (제어와 데이터 채널이 분리) - 하나의 파일을 전송한 후, data connection을 종료합니다.
- stateful : server는 현재 디렉토리, 이전 인증 정보 등의 상태를 저장합니다.
1.1 FTP commands, responses
ftp 통신을 하는 방법은 ftp앱을 사용하는 방법과, telnet을 이용해 직접 프로토콜을 사용하는 방법이 있습니다.
아래는 통신의 commanddㅘ responses의 예시 입니다.
commands
- 아스키 코드를 control channel로 보냅니다.
- USER username
- PASS password
- LIST : 현재 디렉토리의 파일들의 리스트를 반환합니다.
- RETR filename : 파일을 전달 받습니다.
- STOR filename : 파일을 호스트로 보냅니다.
- PASV / EPSV : passive모드와 암호화된 passive 모드 입니다.
return codes
- HTTP통신과 구조가 비슷합니다.
- 331 Username OK, password required
- 125 data connection already open;
- 425 Can't open data connection
- 452 Error writing file
1.2 FTP Active mode vs Passive mode
Active모드의 경우 방화벽 문제로 서버에서 클라이언트로 데이터를 받는 3번 과정이 문제가 생깁니다.
Passive 모드의 경우 클라이언트가 미리 PASV 커맨드를 주어 서버가 다른 포트를 열게 됩니다.
이 포트를 클라이언트로 전달해서 해당 포트로 데이터를 전달하게 됩니다.
이 방법은 다른 사람이 포트 번호를 알면 위험하기 때문에 해킹의 위험이 있습니다.
1.3 Passive Mode
PASV 커맨드는 보안상의 문제로 EPSV로 암호화된 통신을 하게 됩니다.
PASV 커맨드를 보내게 되면 서버는 다음과 같이 ip 주소와 포트 번호를 주게 됩니다.
- Client : PASV
- Server : 192, 168, 123, 5, 12, 195
앞의 4개는 ip 주소를 나타내고, 12, 195는 각각 16bit로 256진수로 표현된 포트 번호입니다.
따라서 포트 번호는 256 * 12 + 195 = 3267 이 됩니다.
2. Electronic mail ( SMTP, POP3, IMAP)
Electronic mail은 아래 3가지로 구성됩니다.
user agents
사용자를 대신해서 돌아가는 프로그램입니다.
사용자가 메세지를 읽고, 수정하고, 구성하게 해줍니다. (예 : Outlook)mail servers
서버에 mailbox가 있어 메세지를 저장합니다.
보낼 메세지를 담을 message queue가 있습니다.
서버와 서버 사이 SMTP 통신을 통해 이메일을 보냅니다.SMTP
simple mail transfer protocol로 메일 전송 프로토콜입니다.
무결성 보장을 위해 TCP통신을 사용합니다.
포트는 25번을 사용합니다.
3가지 순서로 메세지 전송을 합니다(handshaking, transfer of messages, closure)
command는 아스키 코드로, response는 상태 코드로 이루어져 있습니다.메세지는 반드시 7bit 아스키코드로 이루어져 있습니다.
2.1 시나리오 : Alice가 Bob에게 메세지를 보냈을 때
- Alice 는 user agent를 사용해서 메세지를 보냅니다.
- Alice의 user agent는 메일 서버로 메세지를 보냅니다. 이 때 메세지 큐에 메세지가 들어갑니다.
- client 쪽 SMTP가 Bob의 메일 서버와 TCP 통신을 시작합니다.
- SMTP 클라이언트는 Alice의 메세지를 TCP로 보냅니다.
- Bob의 메일 서버는 메세지를 메일 박스에 저장합니다.
- Bob은 자신의 User Agent를 사용해서 메일 서버의 박스를 보고 메세지를 확인합니다.
다음 사진은 SMTP 상호작용에 대한 예시입니다.
2.2 SMTP 와 HTTP 비교
SMTP는 persistent 연결을 사용합니다.
SMTP는 header과 body를 7bit아스키 코드로 될 것을 요구합니다.
공통점
두 프로토콜 모두 아스키로 된 command / response 상호작용을 하며, 상태 코드가 있습니다.
차이점
HTTP는 서버에서 가져오는 PULL방식을, SMTP는 서버로 보내는 PUSH 방식을 사용합니다.
HTTP는 각각의 object는 응답 메세지 내에 캡슐화가 됩니다.
SMTP는 여러 object들이 다른 메세지로 전달이 됩니다.
2.3 Mail message format
header에는 다음과 같은 내용이 포함되어야 합니다.
- To:
- From:
- Subject:
body에는 아스키 문자로 된 메세지가 들어갑니다.
2.4MIME (Multipurpose Internet Mail Extensions)
8bit Non-ASCII 로 된 데이터는 Base64 인코딩을 통해 6bit로 변환할 수 있습니다.
이 방법을 통해 영어가 아닌 다른 문자도 보낼 수 있게 됩니다.
2.5 Mail acceess protocols
POP : Post Office Protocol, 다운로드와 삭제가 기본 모드로, 한번 읽은 후 클라이언트를 변경하면 다시 읽지 못합니다. stateless합니다.
IMAP : Internet Mail Access Protocol로 사용자가 메세지를 저장할 폴더를 제어할 수 있습니다. 상태가 세션을 통해 저장됩니다.
이 두 방식의 예로 Outlook이 있습니다. 반대로 HTTP를 사용하는 웹 메일의 예로 gmail, Hotmail 등이 있습니다.
본 글은 Computer networking : a top-down approach 라는 책을 통해 작성되었습니다.
'CS > 네트워크' 카테고리의 다른 글
[네트워크] 7. P2P와 Video Streaming (0) 2023.03.25 [네트워크] 6. DNS (0) 2023.03.21 [네트워크] 4. Web and HTTP (0) 2023.03.15 [네트워크] 3. Protocol stack과 Application Layer (0) 2023.03.09 [네트워크] 2. Network core와 delay, loss, throughput (0) 2023.03.08