본 내용은 Computer Networking: A Top-down Approach 를 읽고 공부한 내용입니다.
목차
1. FTP
1) FTP란?
2) FTP와 HTTP 비교
3) FTP 명령어 - 참고
4) Active Mode vs Passive Mode
2. electronic mail
1) SMTP
2) POP3
3) IMAP
1. FTP
1.1 FTP란?
FTP는 HTTP와 맥락이 비슷한 프로토콜이라고 생각하면 된다. 모두 인터넷에서 데이터를 전송하기 위한 규약이지만, FTP는 파일 전송을 위한 표준 프로토콜이다.
1.2 FTP와 HTTP 비교
<공통점>
1. 둘 모두 TCP에서 동작한다.
2. 응답 메시지가 존재한다(HTTP에서의 200, 404 응답). 하지만 형식은 다르다
<차이점>
1. FTP는 일반적으로 파일 전송 및 관리에 사용되고, HTTP는 웹 페이지 및 웹 어플리케이션을 로드하는 데 사용된다.
2. FTP는 파일 전송을 위해 전용 클라이언트 소프트웨어가 필요하지만, HTTP는 웹 브라우저를 통해 데이터를 전송할 수 있다.
3. FTP는 한 파일을 전송하는 데 두 TCP 연결, 즉 제어 연결(control connection)과 데이터 연결(data connection)을 동시 사용한다.
제어 연결은 두 호스트 간에 제어 정보, 즉 사용자 계정/비밀번호/원격 디렉토리를 바꾸는 명령/파일을 보내고 가져오는 명령들(put,get)을 보내는 데 사용된다.
데이터 연결은 실제 파일을 보내는 데 사용된다.
4. FTP는 제어 연결을 별도로 하기 때문에 제어 정보를 아웃밴드(out-of-band, 대역 외)로 보낸다고 표현하고, HTTP는 인밴드(in-band)로 보낸다고 표현한다.
5. FTP는 HTTP와 달리 사용자에 대한 state를 유지해야 한다. 반면 HTTP는 stateless 어플리케이션이다.
1.3 FTP 명령어 - 참고
USER username: 사용자 계정을 서버에 보내는 명령어
PASS password: 사용자 비밀번호를 서버에 보내는 명령어
LIST: 현재 원격 디렉터리에 있는 모든 파일에 대한 리스트를 보내달라고 서버에게 요청하는 명령어
RETR filename: 원격 호스트의 현재 디렉토리로부터 파일을 추출(get)하는 데 사용
STOR filename: 파일을 원격 호스트의 현재 디렉터리에 저장(put)하는 데 사용
1.4 Active Mode vs Passive Mode (아래 그림 참조)
Active Mode: 서버가 Active하게 관장한다는 모드이다. 클라이언트는 서버에게 5151을 데이터 포트로 쓸 것이라고 말하며 5151 포트를 열어준다. 이후 데이터를 주고 받게 된다. 하지만 이때 클라이언트 5151포트에 방화벽이 있다면 포트 안에서 밖으로 나가는 것은 허용해주지만 밖에서 안으로 들어오는 것은 문제가 생길 수 있다.
쉽게 말해, Server는 Client에게 접근하려면 Client 관리자에게 방화벽을 열어달라고 계속 말해야 한다. active하게 server에서 관장하므로 보안 상에서는 매우 유리할 수 있지만 방화벽 문제가 생길 수 있다는 단점이 있다.
Passive Mode: active 모드가 클라이언트에서 서버로 데이터 연결을 열었다면, passive는 서버에서 클라이언트로 연결을 연다. 즉, 서버는 임시의 데이터 포트를 하나 열고 제어 채널을 통해 포트번호를 준다. 이후 Client는 Server의 hole을 통해 계속해서 데이터를 주고받을 수 있다. 이 모드에서는 방화벽 문제가 없다는 장점이 있다.
요즘에는 EPSV 를 주로 사용한다고 한다. (Extended Passvie Mode)
2. 인터넷 전자메일
2.1 SMTP
25포트를 사용하며, 메시지는 7비트 ASCII 코드로 이루어져 있다. 보통 우리는 8비트 ASCII를 많이 쓰는데 historical하게 7비트 ASCII를 사용한다. 사실 이 7비트 ASCII 제한은 문제를 일으킨다.
아래 그림의 초록색은 메시지큐를, 노란색 부분은 mail box를 의미한다. SMTP의 서버측은 앨리스의 메일 서버 속 메시지 큐에 있는 메시지들을 밥의 메일 서버 속 메일박스에 놓는다. 서버들 간에는 TCP 연결로 데이터가 전송된다.
여기서 SMTP가 메일을 보내는 데 두 메일 서버가 먼 거리에 있더라도 중간 메일 서버를 사용하지 않음을 이해하는 것이 중요하다. 이 TCP 연결은 앨리스가 미국에 있고, 밥이 한국에 있더라도 미국과 한국 사이의 직접 연결이다. 따라서 밥의 메일 서버가 죽어 있다면 메시지는 중간 메일 서버에 저장되어 있는 것이 아니라 앨리스의 메일 서버에 남아 대기하게 된다.
SMTP 상호작용의 예시는 다음과 같다.
클라이언트는 메일서버 crepes.fr(프랑스에 있는 크레페 씨..) 로부터 메일 서버 hamburger.edu로 케찹과 피클을 좋아하냐고 메시지를 보낸다. 클라이언트는 이 과정에서 HELO, MAIL FROM, RCPT TO, DATA, QUIT 명령어를 사용한다. 그리고 클라이언트가 보내는 '.' 하나의 점으로 된 라인은 서버에게 메시지의 끝을 나타낸다.
http와의 비교
1. http는 pull 프로토콜임에 비해 smtp는 push 프로토콜이다.
2. smtp는 각 메시지의 몸체를 포함하여 메시지가 7비트 ASCII 포맷이다. 그러므로 메시지가 7비트 ASCII가 아닌 문자(악센트가 있는 프랑스어 문자)나 이진 데이터(이미지 파일)를 포함한다면, 그 메시지는 7비트 ASCII로 인코딩되어야 한다. 반면 http는 이런 제한이 없다.
3. HTTP는 텍스트나 이미지로 구성된 문서를 다룰 때 각 객체를 응답 메시지에 캡슐화한다. 하지만 인터넷 메일은 모든 메시지의 객체를 한 메시지로 만든다.
메일 메시지 포맷과 MIME
헤더에는 To, From, Subject 의 내용을 쓸 수 있고 이후 Body에는 메시지를 담는다. 멀티미디어를 담고 싶다면, 멀티미디어를 지원하는 MIME 헤더를 사용하면 되는데 비-ASCII 텍스트 메시지는 SMTP가 이해할 수 있도록 ASCII 포맷으로 인코딩되어야 한다. Content-Transfer-Encoding: 헤더 등을 통해 메시지 몸체가 사용된 코드 타입을 알려준다(ex. base 64) 그리고Content-Type: 헤더를 이용해 메시지 몸체에 어떤 행동을 취해야 하는지 알려준다(ex. image/jpeg)
2.2 POP3
이 또한 telnet을 사용하여 통신하는 구조로, 포트 110번을 쓴다. 한 가지 단점이 있다면 사용자가 메일을 PC로 읽으면 휴대폰에서는 다시 읽을 수 없고, 지워지게 된다. 그 현상을 극복하고자 만들어진 것이 아래 IMAP 방식이다.
2.3 IMAP
모든 메일 정보가 서버에 남아있다. IMAP 서버는 폴더에 각각의 메시지를 연결시킨다. mail 박스가 folder로 구성되어 계층 구조를 이룬다. 서버는 메세지를 받아 폴더간 메시지를 옮길 수 있다.
'CS > 네트워크' 카테고리의 다른 글
[네트워크] 애플리케이션 계층-4 (0) | 2023.04.21 |
---|---|
[네트워크] 애플리케이션 계층-3 (2) | 2023.04.17 |
[네트워크] 애플리케이션 계층-1 (0) | 2023.04.16 |
[네트워크] 컴퓨터 네트워크와 인터넷 (2) | 2023.04.15 |
[네트워크] OSI 모델과 TCP/IP 프로토콜 (0) | 2023.03.31 |