FTP
FTP란 File Transfer Protocol의 약자이다.
멀리 떨어진 호스트에게 파일을 전달할 때 사용한다.
FTP는 TCP를 사용하여 통신을 하고 연결할 때는 컨트롤 커넥션은 21번 포트를, 데이터 커넥션은 20번 포트를 사용한다.
클라이언트가 컨트롤 커넥션을 통해서 명령을 보내면 서버는 이 명령을 받아서 데이터 커넥션을 열어주는 것이다.
파일을 보내면 서버는 데이터 커넥션을 닫는다.
FTP는 Active mode와 Passive mode가 있다.
Active mode
Active mode의 진행 과정은 다음과 같다.
1. 클라이언트가 서버에게 데이터 포트로 5151번을 써달라고 요청을 보낸다.
2. ok 응답을 받는다.
3. 서버는 5151번으로 데이터 채널을 연다.
4. 데이터를 주고 받는다.
이 방법의 경우 방화벽 때문에 제대로 동작을 하지 않을 수도 있다.
클라이언트를 기준을 방화벽은 나가는 데이터에는 관대하지만 들어오는 데이터에는 엄격하기 때문이다.
이 방법을 보완한 것이 Passive mode이다.
passive mode
1. 클라이언트가 passive mode를 사용하겠다고 서버에게 알린다.
2. 서버는 20번이 아닌 임시로 데이터 포트(위의 그림에서는 3267)를 열고 포트 정보를 보낸다.
3. 클라이언트는 서버쪽으로 데이터 채널을 연다.
4. 데이터를 주고 받는다.
Active mode와는 달리 클라이언트쪽에서 데이터가 나가기 때문에 방화벽 문제가 없다.
그러나 열린 데이터 채널로 누군가가 접근할 가능성이 있어서 보안에 취약하다.
이러한 보안 문제를 보완하기 위해 Extended Passive Mode(EPSV)가 존재한다.
passive mode의 경우 IP 주소와 포트 번호를 보내기 때문에 탙취당하게 되면 위험하다.
extended passive mode의 경우 IP 주소를 보내지 않고 포트 번호만 보내기 때문에 보안이 좋다.
electronic mail
전자 메일의 3가지 주요 요소는 user agents, mail servers, SMTP(simple mail transfer protocol)
user agents(mail reader)
메시지를 읽고 편집할 수 있다.
mail servers
메일 박스는 메시지를 가지고 있다. SMTP 프로토콜이 메일을 보낼 때 사용된다.
SMTP(simple mail transfer protocol)
서버 간에 메일을 전송하는 프로토콜.
통신 순서
- handshaking (채널 생성)
- 메시지를 주고 받는다.
- 채널을 끊는다.
아스키로 커맨드를 보내면 그에 해당하는 응답이 온다.
메시지는 7비트 아스키 코드이다.
옛날 미국에서는 영어를 표현할 때 문자열이 7비트로 표현이 가능했기 때문에 SMTP에서 7비트만 허용을 했다고 한다.
그러나 인터넷이 발전함에 따라 8비트 데이터를 보내야 하는 일이 생기면서 8비트를 7비트로 인코딩하여 보내고 받는 쪽에서는 7비트를 8비트로 디코딩하는 방식을 사용하게 된다.
특히 한글은 한 문자가 8비트 두 개로 이루어져 있기 때문에 Base 64와 같은 인코딩을 해야한다.
이제 메일을 보내는 과정을 순서대로 살펴본다면
- user agent를 사용하여 메시지를 메일 서버에 보낸다.
- 메일 서버는 메시지 큐에 메시지를 보관한다. 메일 서버는 메시지 큐에 존재하는 메시지를 차례대로 보내게 된다.
- 메일 서버가 메시지를 보낼 때는 TCP connection을 맺고 SMTP를 사용하여 수신인의 메일 서버에 메시지를 보낸다.
- 수신인의 메일 서버는 수신인의 메일 박스에 메시지를 보관한다.
- 수신인은 user agent를 사용하여 메시지를 읽는다.
메일을 보낼 때 메시지도 header, body 형식이 존재한다.
header에는 수신인, 발송인 등의 부가 정보가 들어가고 body에는 메시지가 들어간다.
Mail access protocols
SMTP는 메일을 전달하는 프로토콜이고 이러한 메일에 접근하는 프로토콜을 Mail access protocol이라고 한다.
POP3(Post Office Protocol), IMAP(Internet Mail Access Protocol), HTTP 등이 있고
- POP3 : 메일을 읽은 다음 메일을 삭제한다.
- IMAP : 메일을 읽은 다음 메일을 보관한다.
- HTTP : POP과 IMAP과 다르게 메일을 가져오는 클라이언트가 존재하는 게 아니라 브라우저에서 메일을 가져오고 웹 메일에 사용된다.
'공부 > Network' 카테고리의 다른 글
[Network] 소켓 프로그래밍 (TCP/UDP) 개념 및 실습 (0) | 2023.04.07 |
---|---|
[Network] Video Streaming and CDNs (0) | 2023.04.05 |
[Network] P2P applications (0) | 2023.04.03 |
[Network] DNS (0) | 2023.03.27 |
[Network] 네트워크 코어 (패킷 스위칭과 서킷 스위칭) (0) | 2023.03.17 |
댓글