백엔드/네트워크

계층별 프로토콜(1)

테크리빗 2024. 3. 7. 00:30

OSI 7 계층에서 주요 프로토콜인 FTP, SMTP, POP3, IMAP, ICMP에 대해 간단히 정리해 보겠습니다.

 

(참고) 네트워크 관련 업무를 수행할 때는 Well-known 포트를 외워두거나, 각 프로토콜의 역할과 특징을 정확히 이해하는 것이 도움이 됩니다.

 

 

애플리케이션 계층(L7)

 

FTP(File Transfer Protocol)

이름 그대로  파일(file)을 송수신(transfer) 할 때 사용하는 프로토콜입니다.
 

  • Well-known 포트: 20(데이터 채널), 21(제어 채널)
  • OSI 7 계층에서에서 응용계층에 해당합니다.
  • 암호화 기능이 없습니다.

 

 

제어채널(Control Channel)과 데이터 채널(Data Channel)

FTP(File Transfer Protocol)는 제어채널(Control Channel)과 데이터 채널(Data Channel) 두 가지 채널을 사용합니다.

 

제어 채널(Control Channel)
클라이언트와 서버가 서로 명령어를 주고받는 데 사용되는 채널입니다. 예를 들어, "연결 요청", "파일 전송 시작" 등의 통신 제어 명령어가 이 채널을 통해 전달됩니다.

 

데이터 채널(Data Channel)

실제 파일 데이터를 전송할 때 사용되는 채널입니다. 즉, 파일을 주고받는 실질적인 작업이 이 채널을 통해 이루어집니다.

 

※ FTP를 정상적으로 사용하기 위해서는 두 채널 모두 열려 있어야 합니다.



FTP의 두 가지 모드: Active 모드와 Passive 모드

FTP는 Active Mode(능동 모드)Passive Mode(수동 모드) 두 가지 동작 모드를 지원합니다.
이 두 모드는 데이터 채널(Data Channel)을 설정하는 방식과 사용하는 포트 번호에 따라 구분됩니다.

 

 

1. Active Mode

서버가 클라이언트의 데이터 포트로 연결을 시도하는 방식(기본값)

 

  • FTP 서버 제어 채널: 서버 → 포트 21번
  • FTP 서버 데이터 채널: 서버 → 포트 20번

 

동작 흐름:

 

  1. 클라이언트는 임의의 포트(예: 6120)에서 서버의 제어 포트(21)로 연결을 요청과 함께 데이터 전송용으로 사용할 자신의 포트정보(6121)를 함께 전달합니다.
  2. 서버는 요청을 수락하고 ACK(응답 확인)를 보냅니다.
  3. 서버는 자신의 데이터 포트(20번)에서 클라이언트의 6121 포트로 연결을 시도합니다.
  4. 연결이 완료되면 파일 전송이 시작됩니다.

 

보안 장비나 방화벽이 클라이언트로의 역방향 연결을 차단하면 Active 모드는 실패할 수 있습니다.

 

2. Passive Mode

클라이언트가 서버의 데이터 포트로 직접 연결하는 방식

 

  • FTP 서버 제어 채널 : 서버 → 포트 21번
  • FTP 서버 데이터 채널 : 서버 → 임의의 포트(1024 이상)

 

 

동작 흐름:

  1. 클라이언트는 제어 채널(예: 6120)에서 서버의 21번 포트로 접속하고, PASV 명령을 전송합니다.
  2. 서버는 ACK 응답과 함께 사용할 데이터 포트 번호(예: 1025)를 클라이언트에게 전달합니다.
  3. 클라이언트는 자신의 데이터 포트(예: 6121)에서 서버의 1025 포트로 연결을 시도합니다.
  4. 연결이 완료되면 파일 전송이 시작됩니다.

※ 방화벽을 사용하는 환경에서는 Passive 모드가 더 안정적으로 작동합니다.

 

 

이메일 송수신 프로토콜 SMTP, POP3, IMAP

 

메일 시스템 구조

메일 시스템은 서버-클라이언트 구조로 되어있습니다. A, B, C는 메일 서버에 해당하며, 메일서버는 메일을 저장하는 공간인 메일 박스를 가지고 있습니다. PC1과 PC2는 메일 클라이언트에 해당하며, 메일을 송수신하는 기능을 합니다. 대표적인 메일 송신 프로토콜은 SMTP가 있고 메일 수신 프로토콜은 POP3와 IMAP이 있습니다.
 
만약 Sunny라는 사용자가 Sally에게 메일을 보낼 때 Sunny에서 메일서버 A에게 송신할 때와 메일서버A에서 메일서버B로 송신할때 모두 SMTP 프로토콜이 동작합니다. 이후에는 Sally가 메일서버를 통해 메일을 수신하므로 POP3와 IMAP이 동작합니다.
 

SMTP(Simple Mail Transfer Protocol)

메일을 송신하는 데 사용되는 프로토콜입니다.
 

  • Port: TCP 25
  • 암호화 기능을 제공하지 않습니다.

 

POP3(Post Office Protocol version3), IMAP(Internet Message Access Protocol)

두 프로토콜은 메일을 수신하는 데 사용되는 프로토콜입니다.
POP3는 110 포트를 사용하고, IMAP은 143번 포트를 사용합니다.
 
 
두 프로토콜은 어디서 메일이 관리되는지에 따라 나누어집니다.
POP3는 메일서버의 메일박스에서 메일 클라이언트로 메일을 다운로드하여 저장합니다. 다운로드 이후에는 메일박스에 있는 메일은 삭제됩니다. 하지만 IMAP은 메일서버의 메일박스에서 메일을 저장하고 인터넷을 통해서 접근 및 관리합니다.
 
POP3는 메일이 로컬에 저장돼있기 때문에 오프라인 환경에서도 접근이 가능합니다.
 
IMAP은 서버에서 메일을 관리하므로 메일 정보가 동기화되어 여러 기기에서 접근할 수 있어 관리하기에 편리합니다. 하지만 서버가 취약하다면 메일정보가 탈취될 수 있는 위험이 존재합니다.
 

ICMP(Internet Control Message Protocol)

ICMP는 IP레벨의 통신이 잘되고 있는지 진단하거나 네트워크 내에서 발생하는 오류 메시지를 전달하는 프로토콜입니다.
 

  • 네트워크 계층의 프로토콜
  • IP와 ICMP는 함께 구현됨
  • Type과 Code를 통해서 메시지를 파악할수 있음
  • IP 통신을 확인하는 명령어로는 ping이 있음

ICMP 헤더구조

ICMP의 헤더구조는 매우 단순하며 Type과 Code를 통해서 패킷정보를 파악할수 있습니다.
 

ICMPv4 주요 메세지

ICMPv4 외에도 ICMPv6도 있으며 전반적인 의미를 파악하기 위해 Code 부분은 생략하였습니다.

 
타입 0번과 8번은 통신이 잘되고 있는지 확인하는 타입으로 8번이 요청하는 부분으로 0번이 응답하는 부분입니다.
 
3, 5, 11번은 에러 관련 타입으로
3번은 목적지에 도달하지 못했을 때 발생하는 문제로 보통 출발지에서 목적지까지의 경로설정을 잘못했을 때 발생합니다. 11번은 생존시간 TTL이 초과 됐을 때 일어나는 문제로 보통 도착지에 방화벽이 있어 막히는 경우가 있습니다.
8번은 원격지의 경로를 저장하고 있는 라우팅 테이블을 수정할 때 사용합니다. 라우팅 테이블을 조작할 수 있기 때문에 보안적인 문제가 있으며 최근에는 잘 사용되지 않습니다. 
 

참고자료

728x90